Initial Commit

This commit is contained in:
Sindusk
2018-03-31 13:23:16 -04:00
commit 7f3733295f
150 changed files with 16109 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target/

9
.idea/compiler.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel>
<module name="WyvernMods_main" target="1.8" />
<module name="WyvernMods_test" target="1.8" />
</bytecodeTargetLevel>
</component>
</project>

16
.idea/gradle.xml generated Normal file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>

View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="Gradle: com.github.Sindusk:sindusklibrary:v1.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.Sindusk/sindusklibrary/v1.0/95e8659b53f48d87c063664020727bc52a298b3d/sindusklibrary-v1.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="Gradle: org.gotti.wurmunlimited:common:2613165">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.gotti.wurmunlimited/common/2613165/53b86d78248ca55a4fc0b41ee327366157671c3d/common-2613165.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="Gradle: org.gotti.wurmunlimited:server:2613165">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.gotti.wurmunlimited/server/2613165/f4850f94c5db9b248cb4b0ea930ee997b0cbe903/server-2613165.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.gotti.wurmunlimited:server-modlauncher:0.33-beta1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.gotti.wurmunlimited/server-modlauncher/0.33-beta1/98381bf8fb866aea2878faecf33f6d646fe965cb/server-modlauncher-0.33-beta1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.gotti.wurmunlimited/server-modlauncher/0.33-beta1/5e86c45328c834e303d3369cc64efc10f0a11bb9/server-modlauncher-0.33-beta1-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.javassist:javassist:3.20.0-GA">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.javassist/javassist/3.20.0-GA/a9cbcdfb7e9f86fbc74d3afae65f2248bfbf82a0/javassist-3.20.0-GA.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.javassist/javassist/3.20.0-GA/d8fdc08a455bc0b28bc0bed1f0d032d935cee8e1/javassist-3.20.0-GA-sources.jar!/" />
</SOURCES>
</library>
</component>

6
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/classes" />
</component>
</project>

10
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/WyvernMods.iml" filepath="$PROJECT_DIR$/WyvernMods.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/WyvernMods_main.iml" filepath="$PROJECT_DIR$/.idea/modules/WyvernMods_main.iml" group="WyvernMods" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/WyvernMods_test.iml" filepath="$PROJECT_DIR$/.idea/modules/WyvernMods_test.iml" group="WyvernMods" />
</modules>
</component>
</project>

18
.idea/modules/WyvernMods_main.iml generated Normal file
View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="WyvernMods:main" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="mod.sin" external.system.module.type="sourceSet" external.system.module.version="1.0" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/../../out/production/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../src/main">
<sourceFolder url="file://$MODULE_DIR$/../../src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../src/main/resources" type="java-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Gradle: org.gotti.wurmunlimited:server-modlauncher:0.33-beta1" level="project" />
<orderEntry type="library" name="Gradle: com.github.Sindusk:sindusklibrary:v1.0" level="project" />
<orderEntry type="library" name="Gradle: org.gotti.wurmunlimited:common:2613165" level="project" />
<orderEntry type="library" name="Gradle: org.gotti.wurmunlimited:server:2613165" level="project" />
<orderEntry type="library" name="Gradle: org.javassist:javassist:3.20.0-GA" level="project" />
</component>
</module>

20
.idea/modules/WyvernMods_test.iml generated Normal file
View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="WyvernMods:test" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="mod.sin" external.system.module.type="sourceSet" external.system.module.version="1.0" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output-test url="file://$MODULE_DIR$/../../out/test/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../src/test">
<sourceFolder url="file://$MODULE_DIR$/../../src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../src/test/resources" type="java-test-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="WyvernMods_main" />
<orderEntry type="library" name="Gradle: org.gotti.wurmunlimited:server-modlauncher:0.33-beta1" level="project" />
<orderEntry type="library" name="Gradle: com.github.Sindusk:sindusklibrary:v1.0" level="project" />
<orderEntry type="library" name="Gradle: org.gotti.wurmunlimited:common:2613165" level="project" />
<orderEntry type="library" name="Gradle: org.gotti.wurmunlimited:server:2613165" level="project" />
<orderEntry type="library" name="Gradle: org.javassist:javassist:3.20.0-GA" level="project" />
</component>
<component name="TestModuleProperties" production-module="WyvernMods_main" />
</module>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@@ -0,0 +1,106 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
org.eclipse.jdt.core.compiler.problem.deadCode=warning
org.eclipse.jdt.core.compiler.problem.deprecation=info
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=info
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
org.eclipse.jdt.core.compiler.problem.forbiddenReference=info
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
org.eclipse.jdt.core.compiler.problem.nullReference=error
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=info
org.eclipse.jdt.core.compiler.source=1.8

View File

@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

13
WyvernMods.iml Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="WyvernMods" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="mod.sin" external.system.module.version="1.0" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/out" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

2
bin/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/mod/
/org/

31
build.gradle Normal file
View File

@@ -0,0 +1,31 @@
apply plugin: 'java'
group "mod.sin"
version "1.0"
repositories {
mavenCentral()
maven { url "http://gotti.no-ip.org/maven/repository" }
maven { url 'https://jitpack.io' }
}
dependencies {
compile 'org.gotti.wurmunlimited:server-modlauncher:0.33-beta1'
compile 'com.github.Sindusk:sindusklibrary:v1.0'
}
jar {
archiveName "${project.name}.jar"
}
task dist(type: Zip) {
into("mods", {
into(project.name, {
from jar
})
from fileTree(dir: 'mods', include: '*')
})
archiveName "${project.name}-${project.version}.zip"
}

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,6 @@
#Wed Jul 02 15:54:47 CDT 2014
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-bin.zip

164
gradlew vendored Normal file
View File

@@ -0,0 +1,164 @@
#!/usr/bin/env bash
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
echo "$*"
}
die ( ) {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

90
gradlew.bat vendored Normal file
View File

@@ -0,0 +1,90 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

19
pom.xml Normal file
View File

@@ -0,0 +1,19 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>WyvernMods</groupId>
<artifactId>WyvernMods</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,134 @@
package mod.sin.actions;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Server;
import com.wurmonline.server.ServerEntry;
import com.wurmonline.server.Servers;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.players.Player;
public class ArenaEscapeAction implements ModAction {
private static Logger logger = Logger.getLogger(ArenaEscapeAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public ArenaEscapeAction() {
logger.log(Level.WARNING, "ArenaEscapeAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Escape the Arena",
"escaping",
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && (object.getTemplateId() == ItemList.bodyBody || object.getTemplateId() == ItemList.bodyHand) && Servers.localServer.PVPSERVER) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(!Servers.localServer.PVPSERVER){
performer.getCommunicator().sendNormalServerMessage("You must be in the Arena in order to escape it!");
return true;
}
if(performer.isStealth()){
performer.getCommunicator().sendNormalServerMessage("You cannot escape while stealthed.");
return true;
}
if(performer.getEnemyPresense() > 0 || performer.isFighting()){
performer.getCommunicator().sendNormalServerMessage("Nearby enemies prevent your escape. Clear the area and try again.");
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You prepare your body and mind to transfer to another realm.");
act.setTimeLeft(1200);
performer.sendActionControl("Preparing", true, act.getTimeLeft());
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
ServerEntry targetserver = Servers.localServer.serverWest;
if(targetserver == null){
performer.getCommunicator().sendNormalServerMessage("Error: Something went wrong [TARGETSERVER=NULL].");
return true;
}
if (!targetserver.isAvailable(performer.getPower(), true)) {
performer.getCommunicator().sendNormalServerMessage(targetserver.name + " is not currently available.");
return true;
}
performer.getCommunicator().sendNormalServerMessage("You successfully escape the arena.");
performer.getCommunicator().sendNormalServerMessage("You transfer to " + targetserver.name + ".");
Server.getInstance().broadCastAction(performer.getName() + " transfers to " + targetserver.name + ".", performer, 5);
int tilex = targetserver.SPAWNPOINTJENNX;
int tiley = targetserver.SPAWNPOINTJENNY;
((Player)performer).sendTransfer(Server.getInstance(), targetserver.INTRASERVERADDRESS, Integer.parseInt(targetserver.INTRASERVERPORT), targetserver.INTRASERVERPASSWORD, targetserver.id, tilex, tiley, true, false, performer.getKingdomId());
((Player)performer).transferCounter = 30;
return true;
}
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,135 @@
package mod.sin.actions;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Server;
import com.wurmonline.server.ServerEntry;
import com.wurmonline.server.Servers;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.players.Player;
public class ArenaTeleportAction implements ModAction {
private static Logger logger = Logger.getLogger(ArenaTeleportAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public ArenaTeleportAction() {
logger.log(Level.WARNING, "ArenaTeleport()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Teleport to Arena",
"preparing for combat",
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && (object.getTemplateId() == ItemList.bodyBody || object.getTemplateId() == ItemList.bodyHand) && Servers.localServer.id == 567) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(Servers.localServer.id != 567){
performer.getCommunicator().sendNormalServerMessage("You cannot enter the arena from here.");
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You sit and begin to transfer your mind.");
act.setTimeLeft(600);
performer.sendActionControl("Transferring", true, act.getTimeLeft());
}else if(act.currentSecond() == 10){
performer.getCommunicator().sendAlertServerMessage("You are about to enter a PvP environment.", (byte) 3);
}else if(act.currentSecond() == 20){
performer.getCommunicator().sendNormalServerMessage("Death will leave your corpse and return you here. Anyone may loot your corpse in the arena.", (byte) 3);
}else if(act.currentSecond() == 30){
performer.getCommunicator().sendNormalServerMessage("Upon transfer, you will be placed in a random location. This could be safely outside of danger, or directly on a group of enemies.", (byte) 3);
}else if(act.currentSecond() == 40){
performer.getCommunicator().sendNormalServerMessage("You can equip creatures such as horses by simply leading them. Taming is not required in the Arena.", (byte) 3);
}else if(act.currentSecond() == 55){
performer.getCommunicator().sendNormalServerMessage("It appears you have accepted these conditions. Transferring to the arena. Good luck.", (byte) 3);
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
ServerEntry targetserver = Servers.localServer.serverEast;
if(targetserver == null){
performer.getCommunicator().sendNormalServerMessage("Error: Something went wrong [TARGETSERVER=NULL].");
return true;
}
if (!targetserver.isAvailable(performer.getPower(), true)) {
performer.getCommunicator().sendNormalServerMessage(targetserver.name + " is not currently available.");
return true;
}
performer.getCommunicator().sendNormalServerMessage("You transfer to " + targetserver.name + ".");
Server.getInstance().broadCastAction(performer.getName() + " transfers to " + targetserver.name + ".", performer, 5);
int tilex = 128+Server.rand.nextInt(768);
int tiley = 128+Server.rand.nextInt(768);
((Player)performer).sendTransfer(Server.getInstance(), targetserver.INTRASERVERADDRESS, Integer.parseInt(targetserver.INTRASERVERPORT), targetserver.INTRASERVERPASSWORD, targetserver.id, tilex, tiley, true, false, performer.getKingdomId());
((Player)performer).transferCounter = 30;
return true;
}
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,150 @@
package mod.sin.actions;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.NoSuchItemException;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.WurmMail;
import com.wurmonline.server.players.Player;
public class ReceiveMailAction implements ModAction {
private static Logger logger = Logger.getLogger(ReceiveMailAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public ReceiveMailAction() {
logger.log(Level.WARNING, "ReceiveMailAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Receive all mail",
"receiving",
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && object.isMailBox() && object.getSpellCourierBonus() > 0f) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
if(performer instanceof Player){
Player player = (Player) performer;
if (!target.isMailBox()){
player.getCommunicator().sendSafeServerMessage("You can only receive mail at a mailbox.");
return true;
}
if(target.getSpellCourierBonus() <= 0f){
player.getCommunicator().sendSafeServerMessage("The mailbox must be enchanted before receiving mail.");
return true;
}
if(!performer.isWithinDistanceTo(target.getPosX(), target.getPosY(), target.getPosZ(), 4.0f)){
player.getCommunicator().sendSafeServerMessage("You must be closer to collect mail.");
return true;
}
if(!target.isEmpty(false)){
player.getCommunicator().sendSafeServerMessage("Empty the mailbox first.");
return true;
}
Set<WurmMail> mailset = WurmMail.getSentMailsFor(performer.getWurmId(), 100);
if(mailset.isEmpty()){
player.getCommunicator().sendSafeServerMessage("You have no mail to collect.");
return true;
}
Iterator<WurmMail> it = mailset.iterator();
WurmMail m;
HashSet<Item> itemset = new HashSet<Item>();
while(it.hasNext()){
m = it.next();
if(m.rejected || m.price > 0){
continue;
}
try {
itemset.add(Items.getItem(m.itemId));
} catch (NoSuchItemException e) {
e.printStackTrace();
}
}
if(!itemset.isEmpty()){
player.getCommunicator().sendSafeServerMessage("The "+itemset.size()+" items that were sent via mail are now available.");
for (Item item : itemset) {
Item[] contained4 = item.getAllItems(true);
for (int c4 = 0; c4 < contained4.length; ++c4) {
contained4[c4].setMailed(false);
contained4[c4].setLastOwnerId(performer.getWurmId());
}
WurmMail.removeMail(item.getWurmId());
target.insertItem(item, true);
item.setLastOwnerId(performer.getWurmId());
item.setMailed(false);
logger.log(Level.INFO, performer.getName() + " received " + item.getName() + " " + item.getWurmId());
}
}
}else{
logger.info("Somehow a non-player activated an Affinity Orb...");
}
return true;
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,118 @@
package mod.sin.actions;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.NoSuchItemException;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.behaviours.AutoEquipMethods;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
public class UnequipAllAction implements ModAction {
private static Logger logger = Logger.getLogger(UnequipAllAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public UnequipAllAction() {
logger.log(Level.WARNING, "UnequipAllAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Unequip all armour",
"unequipping",
new int[0]
//new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
try {
if(performer instanceof Player && object != null && object.getParentOrNull() != null && object.getParent().isBodyPart() && object.getParent().getOwnerId() == performer.getWurmId()) {
return Arrays.asList(actionEntry);
}
} catch (NoSuchItemException e) {
e.printStackTrace();
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
if(performer instanceof Player){
try {
Player player = (Player) performer;
if (target.getParent() == null){
player.getCommunicator().sendSafeServerMessage("You cannot unequip an item that isn't equipped.");
return true;
}
if (target.getParent().getOwnerId() != player.getWurmId()){
player.getCommunicator().sendSafeServerMessage("You cannot unequip an item that you do not own.");
return true;
}
for(Item equip : player.getBody().getAllItems()){
if(equip.isArmour()){
AutoEquipMethods.unequip(equip, player);
}
}
} catch (NoSuchItemException e1) {
e1.printStackTrace();
}
}else{
logger.info("Somehow a non-player activated an Affinity Orb...");
}
return true;
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,122 @@
package mod.sin.actions;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Servers;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.players.Player;
public class VillageTeleportAction implements ModAction {
private static Logger logger = Logger.getLogger(VillageTeleportAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public VillageTeleportAction() {
logger.log(Level.WARNING, "VillageTeleportAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Village Teleport",
"teleporting",
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && (object.getTemplateId() == ItemList.bodyBody || object.getTemplateId() == ItemList.bodyHand) && !Servers.localServer.PVPSERVER && performer.getCitizenVillage() != null) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(Servers.localServer.PVPSERVER){
performer.getCommunicator().sendNormalServerMessage("You cannot use Village Teleport on a PvP server.");
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You prepare to transport yourself to another location.");
act.setTimeLeft(600);
performer.sendActionControl("Teleporting", true, act.getTimeLeft());
}else if(performer.isFighting()){
performer.getCommunicator().sendAlertServerMessage("Your teleport was interrupted by entering combat.");
return true;
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
Player player = (Player) performer;
if(player.getCitizenVillage() != null){
act.stop(false);
int tilex = player.getCitizenVillage().getTokenX()*4;
int tiley = player.getCitizenVillage().getTokenY()*4;
player.setTeleportPoints(tilex+2.0f, tiley+2.0f, 0, 0);
if(player.startTeleporting()){
player.getCommunicator().sendNormalServerMessage("You feel a slight tingle in your spine.");
player.getCommunicator().sendTeleport(false);
}
}
return true;
}
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,129 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
import com.wurmonline.server.skills.Affinities;
import com.wurmonline.server.skills.Affinity;
import com.wurmonline.server.skills.SkillSystem;
import mod.sin.items.AffinityOrb;
public class AffinityOrbAction implements ModAction {
private static Logger logger = Logger.getLogger(AffinityOrbAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public AffinityOrbAction() {
logger.log(Level.WARNING, "AffinityOrbAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Gain affinity",
"infusing",
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && object.getTemplateId() == AffinityOrb.templateId) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
if(performer instanceof Player){
Player player = (Player) performer;
if (target.getTemplate().getTemplateId() != AffinityOrb.templateId){
player.getCommunicator().sendSafeServerMessage("You must use an Affinity Orb to be infused.");
return true;
}
int skillNum = SkillSystem.getRandomSkillNum();
Affinity[] affs = Affinities.getAffinities(player.getWurmId());
boolean found = false;
while (!found) {
boolean hasAffinity = false;
for (Affinity affinity : affs) {
if (affinity.getSkillNumber() != skillNum) continue;
hasAffinity = true;
if (affinity.getNumber() >= 5) break;
Affinities.setAffinity(player.getWurmId(), skillNum, affinity.getNumber() + 1, false);
String skillString = SkillSystem.getNameFor(skillNum);
found = true;
Items.destroyItem(target.getWurmId());
player.getCommunicator().sendSafeServerMessage("Vynora infuses you with an affinity for " + skillString + "!");
break;
}
if (!found && !hasAffinity) {
String skillString = SkillSystem.getNameFor(skillNum);
Affinities.setAffinity(player.getWurmId(), skillNum, 1, false);
Items.destroyItem(target.getWurmId());
player.getCommunicator().sendSafeServerMessage("Vynora infuses you with an affinity for " + skillString + "!");
found = true;
}
skillNum = SkillSystem.getRandomSkillNum();
}
}else{
logger.info("Somehow a non-player activated an Affinity Orb...");
}
return true;
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,124 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
import mod.sin.items.ArenaCache;
import mod.sin.wyvern.arena.SupplyDepots;
public class ArenaCacheOpenAction implements ModAction {
private static Logger logger = Logger.getLogger(ArenaCacheOpenAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public ArenaCacheOpenAction() {
logger.log(Level.WARNING, "ArenaCacheOpenAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Open cache",
"opening",
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && object.getTemplateId() == ArenaCache.templateId) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(target.getTemplate().getTemplateId() != ArenaCache.templateId){
performer.getCommunicator().sendNormalServerMessage("That is not a cache.");
return true;
}
if(target.getLastOwnerId() != performer.getWurmId() && target.getOwnerId() != performer.getWurmId()){
performer.getCommunicator().sendNormalServerMessage("You must own the "+target.getName()+" to open it.");
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You begin to open a "+target.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " begins opening "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
act.setTimeLeft(50);
performer.sendActionControl("Opening", true, act.getTimeLeft());
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
performer.getCommunicator().sendNormalServerMessage("You open your "+target.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " opens "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
logger.info("Player "+performer.getName()+" opened arena cache.");
SupplyDepots.giveCacheReward(performer);
Items.destroyItem(target.getWurmId());
return true;
}
}else{
logger.info("Somehow a non-player activated a Treasure Box...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,164 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemFactory;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemSpellEffects;
import com.wurmonline.server.players.Player;
import com.wurmonline.server.spells.SpellEffect;
import mod.sin.items.ArrowPackHunting;
import mod.sin.items.ArrowPackWar;
public class ArrowPackUnpackAction implements ModAction {
private static Logger logger = Logger.getLogger(ArrowPackUnpackAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public ArrowPackUnpackAction() {
logger.log(Level.WARNING, "ArrowPackUnpackAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Unpack arrows",
"unpacking",
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && (object.getTemplateId() == ArrowPackHunting.templateId || object.getTemplateId() == ArrowPackWar.templateId)) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(target.getTemplate().getTemplateId() != ArrowPackHunting.templateId && target.getTemplate().getTemplateId() != ArrowPackWar.templateId){
performer.getCommunicator().sendNormalServerMessage("That is not an arrow pack.");
return true;
}
if(target.getLastOwnerId() != performer.getWurmId() && target.getOwnerId() != performer.getWurmId()){
performer.getCommunicator().sendNormalServerMessage("You must own the arrow pack to unpack it.");
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You begin to unpack your arrows.");
Server.getInstance().broadCastAction(performer.getName() + " begins unpacking "+performer.getHisHerItsString()+" arrows.", performer, 5);
act.setTimeLeft(50);
performer.sendActionControl("Unpacking", true, act.getTimeLeft());
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
int arrowTemplate = ItemList.arrowHunting;
if(target.getTemplate().getTemplateId() == ArrowPackWar.templateId){
arrowTemplate = ItemList.arrowWar;
}
float quality = target.getCurrentQualityLevel();
if(target.getRarity() > 0){
quality = Math.min(100f, target.getCurrentQualityLevel()+target.getRarity());
}
HashMap<Byte, Float> spellEffects = new HashMap<Byte, Float>();
ItemSpellEffects effs = target.getSpellEffects();
if(effs != null){
for(SpellEffect eff : effs.getEffects()){
if(eff.getPower() > 0){
spellEffects.put(eff.type, eff.getPower());
}
}
}
Item quiver = ItemFactory.createItem(ItemList.quiver, quality, performer.getName());
performer.getInventory().insertItem(quiver, true);
Item arrow;
int i = 0;
while(i < 40){
arrow = ItemFactory.createItem(arrowTemplate, quality, performer.getName());
arrow.setRarity(target.getRarity());
if(!spellEffects.isEmpty()){
for(byte b : spellEffects.keySet()){
ItemSpellEffects arrowEffs = arrow.getSpellEffects();
if (arrowEffs == null) {
arrowEffs = new ItemSpellEffects(arrow.getWurmId());
}
SpellEffect arrowEff = new SpellEffect(arrow.getWurmId(), b, spellEffects.get(b), 20000000);
arrowEffs.addSpellEffect(arrowEff);
}
}
quiver.insertItem(arrow);
i++;
}
performer.getCommunicator().sendNormalServerMessage("You unpack your arrows into a usable quiver.");
Server.getInstance().broadCastAction(performer.getName() + " unpacks "+performer.getHisHerItsString()+" arrows into a quiver.", performer, 5);
Items.destroyItem(target.getWurmId());
return true;
}
}else{
logger.info("Somehow a non-player activated a Arrow Pack Unpack...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,167 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.behaviours.Actions;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.items.WurmColor;
import com.wurmonline.server.players.Player;
import com.wurmonline.server.skills.SkillList;
import mod.sin.items.ChaosCrystal;
import mod.sin.wyvern.Crystals;
public class ChaosCrystalInfuseAction implements ModAction {
private static Logger logger = Logger.getLogger(ChaosCrystalInfuseAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public ChaosCrystalInfuseAction() {
logger.log(Level.WARNING, "ChaosCrystalInfuseAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Infuse",
"infusing",
new int[]{ Actions.ACTION_TYPE_NOMOVE }
//new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
if(performer instanceof Player && source != null && object != null && source.getTemplateId() == ChaosCrystal.templateId && object.isRepairable()){
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// With activated object
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(source.getTemplate().getTemplateId() != ChaosCrystal.templateId){
performer.getCommunicator().sendNormalServerMessage("You must use a chaos crystal to infuse an item.");
return true;
}
if(!target.isRepairable()){
performer.getCommunicator().sendNormalServerMessage("You cannot infuse that item.");
return true;
}
if(Crystals.shouldCancelInfusion(performer, source, target)){
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You begin to infuse the "+target.getName()+ " with the "+source.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " begins infusing with a "+source.getName()+".", performer, 5);
act.setTimeLeft(300);
performer.sendActionControl("Infusing", true, act.getTimeLeft());
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
double diff = Crystals.getInfusionDifficulty(performer, source, target);
double power = performer.getSkills().getSkill(SkillList.ARCHAEOLOGY).skillCheck(diff, source, 0d, false, 1);
if(power > 90){
performer.getCommunicator().sendNormalServerMessage("You handle the crystals expertly and infuse the "+target.getName()+ ", increasing its rarity!");
target.setRarity(source.getRarity());
Items.destroyItem(source.getWurmId());
}else if(power > 60){
if(target.isMetal() && Server.rand.nextBoolean()){
performer.getCommunicator().sendNormalServerMessage("You carefully infuse the metal "+target.getName()+ ", changing its material!");
byte[] mats = {Materials.MATERIAL_ADAMANTINE, Materials.MATERIAL_BRASS, Materials.MATERIAL_BRONZE, Materials.MATERIAL_COPPER,
Materials.MATERIAL_GLIMMERSTEEL, Materials.MATERIAL_GOLD, Materials.MATERIAL_IRON, Materials.MATERIAL_IRON, Materials.MATERIAL_LEAD,
Materials.MATERIAL_SERYLL, Materials.MATERIAL_SILVER, Materials.MATERIAL_STEEL, Materials.MATERIAL_TIN, Materials.MATERIAL_ZINC};
target.setMaterial(mats[Server.rand.nextInt(mats.length)]);
}else if(target.isWood() && Server.rand.nextBoolean()){
performer.getCommunicator().sendNormalServerMessage("You carefully infuse the wooden "+target.getName()+ ", changing its material!");
byte[] mats = {Materials.MATERIAL_WOOD_APPLE, Materials.MATERIAL_WOOD_BIRCH, Materials.MATERIAL_WOOD_BLUEBERRY, Materials.MATERIAL_WOOD_CAMELLIA,
Materials.MATERIAL_WOOD_CEDAR, Materials.MATERIAL_WOOD_CHERRY, Materials.MATERIAL_WOOD_CHESTNUT, Materials.MATERIAL_WOOD_FIR,
Materials.MATERIAL_WOOD_GRAPE, Materials.MATERIAL_WOOD_HAZELNUT, Materials.MATERIAL_WOOD_IVY, Materials.MATERIAL_WOOD_LAVENDER,
Materials.MATERIAL_WOOD_LEMON, Materials.MATERIAL_WOOD_LINDEN, Materials.MATERIAL_WOOD_LINGONBERRY, Materials.MATERIAL_WOOD_MAPLE,
Materials.MATERIAL_WOOD_OAK, Materials.MATERIAL_WOOD_OLEANDER, Materials.MATERIAL_WOOD_OLIVE, Materials.MATERIAL_WOOD_ORANGE,
Materials.MATERIAL_WOOD_PINE, Materials.MATERIAL_WOOD_RASPBERRY, Materials.MATERIAL_WOOD_ROSE, Materials.MATERIAL_WOOD_THORN,
Materials.MATERIAL_WOOD_WALNUT, Materials.MATERIAL_WOOD_WILLOW};
target.setMaterial(mats[Server.rand.nextInt(mats.length)]);
}else{
performer.getCommunicator().sendNormalServerMessage("You carefully infuse the "+target.getName()+ ", changing its color.");
target.setColor(WurmColor.createColor(Server.rand.nextInt(255), Server.rand.nextInt(255), Server.rand.nextInt(255)));
}
Items.destroyItem(source.getWurmId());
}else if(power > 30){
performer.getCommunicator().sendNormalServerMessage("You safely infuse the "+target.getName()+ ", chaotically changing it its weight.");
target.setWeight((int) (target.getWeightGrams()*Server.rand.nextFloat()*2f), false);
Items.destroyItem(source.getWurmId());
}else if(power > 0){
performer.getCommunicator().sendNormalServerMessage("You barely manage to infuse the "+target.getName()+ ", chaotically changing its quality.");
target.setQualityLevel(Server.rand.nextFloat()*100f);
Items.destroyItem(source.getWurmId());
}else if(power > -20){
performer.getCommunicator().sendNormalServerMessage("You fail to infuse the "+target.getName()+ ", damaging to the "+source.getName()+" in the process.");
source.setDamage((float) (source.getDamage()-(power)));
}else if(power > -40){
performer.getCommunicator().sendNormalServerMessage("You horribly fail to infuse the "+target.getName()+ ", destroying the "+source.getName()+" and heavily damaging the "+target.getName()+".");
target.setDamage((float) (target.getDamage()-(power)));
Items.destroyItem(source.getWurmId());
}else{
if(target.getMaterial() == Materials.MATERIAL_SERYLL){
performer.getCommunicator().sendNormalServerMessage("The infusion fails catastrophically, destroying the "+source.getName()+"! However, the "+target.getName()+"'s material prevents its utter destruction.");
target.setDamage((float) (target.getDamage()-power));
Items.destroyItem(source.getWurmId());
}else{
performer.getCommunicator().sendNormalServerMessage("The infusion fails catastrophically, destroying the "+source.getName()+" and "+target.getName()+"!");
Items.destroyItem(source.getWurmId());
Items.destroyItem(target.getWurmId());
}
}
return true;
}
}else{
logger.info("Somehow a non-player activated a custom item ("+source.getTemplateId()+")...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,137 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.Servers;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.behaviours.Actions;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
import com.wurmonline.server.skills.Skill;
import com.wurmonline.server.skills.SkillList;
import mod.sin.wyvern.Crystals;
public class CrystalCombineAction implements ModAction {
private static Logger logger = Logger.getLogger(CrystalCombineAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public CrystalCombineAction() {
logger.log(Level.WARNING, "CrystalCombineAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Combine",
"combining",
new int[]{ Actions.ACTION_TYPE_NOMOVE }
//new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
if(performer instanceof Player && source != null && object != null && Crystals.isCrystal(source) && Crystals.isCrystal(object) && source != object && source.getTemplateId() == object.getTemplateId()){
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// With activated object
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(Crystals.shouldCancelCombine(performer, source, target)){
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You begin to combine the crystals together.");
Server.getInstance().broadCastAction(performer.getName() + " begins combining crystals.", performer, 5);
Skill artifacts = performer.getSkills().getSkill(SkillList.ARCHAEOLOGY);
int time = Actions.getSlowActionTime(performer, artifacts, source, 0d);
act.setTimeLeft(time);
performer.sendActionControl("Combining", true, act.getTimeLeft());
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
double diff = (source.getCurrentQualityLevel()+target.getCurrentQualityLevel())*0.5d;
diff += source.getRarity()*(Servers.localServer.PVPSERVER ? 25 : 15);
diff -= performer.getSoulDepth().getKnowledge();
if(Servers.localServer.PVPSERVER){ // Added difficulty to account for PvP epic curve:
diff *= 1.4f;
}
double power = performer.getSkills().getSkill(SkillList.ARCHAEOLOGY).skillCheck(diff, source, 0d, false, 1);
if(power > 0){
performer.getCommunicator().sendNormalServerMessage("You successfully combine the crystals!");
Server.getInstance().broadCastAction(performer.getName() + " successfully combines the crystals!", performer, 5);
if(source.getCurrentQualityLevel() + target.getCurrentQualityLevel() > 100f){
float newQuality = (source.getCurrentQualityLevel() + target.getCurrentQualityLevel()) - 100f;
performer.getCommunicator().sendNormalServerMessage("The crystals combine and change, creating a more powerful component.");
Items.destroyItem(source.getWurmId());
target.setQualityLevel(newQuality);
target.setDamage(0);
target.setRarity((byte) (target.getRarity()+1));
}else{
performer.getCommunicator().sendNormalServerMessage("The crystals combine together and reinforce.");
target.setQualityLevel(source.getCurrentQualityLevel() + target.getCurrentQualityLevel());
target.setDamage(0);
Items.destroyItem(source.getWurmId());
}
return true;
}else{
performer.getCommunicator().sendNormalServerMessage("You fail to combine the crystals, damaging them both.");
float dam1 = (float) (Server.rand.nextFloat()*power*0.2f);
float dam2 = (float) (Server.rand.nextFloat()*power*0.2f);
source.setDamage((float) (source.getDamage()-dam1));
target.setDamage((float) (target.getDamage()-dam2));
}
return true;
}
}else{
logger.info("Somehow a non-player activated a custom item ("+source.getTemplateId()+")...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,179 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.behaviours.Actions;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
import com.wurmonline.server.skills.NoSuchSkillException;
import com.wurmonline.server.skills.SkillList;
import mod.sin.items.DepthDrill;
public class DepthDrillAction implements ModAction {
private static Logger logger = Logger.getLogger(DepthDrillAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public DepthDrillAction() {
logger.log(Level.WARNING, "DepthDrillAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Drill",
"drilling",
new int[] { Actions.ACTION_TYPE_NOMOVE }
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object, int tilex, int tiley, boolean onSurface, boolean corner, int tile)
{
if(performer instanceof Player && object != null && object.getTemplateId() == DepthDrill.templateId){
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// With activated object
@Override
public boolean action(Action action, Creature performer, Item source, int tilex, int tiley, boolean onSurface, boolean corner, int tile, short num, float counter)
{
try{
if(performer instanceof Player){
if (source.getTemplate().getTemplateId() != DepthDrill.templateId){
performer.getCommunicator().sendNormalServerMessage("You must use a depth drill to drill.");
return true;
}
if (!performer.isWithinDistanceTo(tilex * 4, tiley * 4, performer.getPositionZ(), 4)) {
performer.getCommunicator().sendNormalServerMessage("You are too far away to drill.");
action.stop(true);
return true;
}
int surfaceHeight = Tiles.decodeHeight(Server.surfaceMesh.getTile(tilex, tiley));
int rockHeight = Tiles.decodeHeight(Server.rockMesh.getTile(tilex, tiley));
int delta = surfaceHeight - rockHeight;
if (counter == 1.0f) {
if (delta == 0) {
performer.getCommunicator().sendNormalServerMessage("The ground here is too hard and the drill makes no progress.");
action.stop(false);
return true;
}
performer.getCommunicator().sendNormalServerMessage("You start to drill into the ground.");
Server.getInstance().broadCastAction(performer.getName() + " starts to drill into the ground.", performer, 5);
action.setTimeLeft(Actions.getSlowActionTime(performer, performer.getSkills().getSkill(SkillList.DIGGING), source, 1));
performer.sendActionControl("Drilling", true, action.getTimeLeft());
} else if (counter * 10.0f > performer.getCurrentAction().getTimeLeft()) {
performer.getCommunicator().sendNormalServerMessage("The rock here is " + delta + " deep.");
performer.getSkills().getSkill(SkillList.DIGGING).skillCheck(10d, 0d, false, 1);
performer.getSkills().getSkill(SkillList.PROSPECT).skillCheck(10d, 0d, false, 1);
sendOres(performer, tilex, tiley);
return true;
}
}else{
logger.info("Somehow a non-player activated a "+source.getTemplate().getName()+".");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
private void sendOres(Creature performer, int x, int y) throws NoSuchSkillException {
double prospecting = performer.getSkills().getSkill(SkillList.PROSPECT).getRealKnowledge();
if (prospecting < 30) return;
double mining = performer.getSkills().getSkill(SkillList.MINING).getRealKnowledge();
Set<String> ores = new HashSet<>();
int distance = (int) Math.floor(Math.pow(prospecting+mining, 0.38D));
for (int dx = distance*-1; dx < distance; dx++) {
for (int dy = distance*-1; dy < distance; dy++) {
int type = Tiles.decodeType(Server.caveMesh.getTile(x + dx, y + dy)) & 0xFF;
if (type == Tiles.TILE_TYPE_CAVE_WALL_SLATE && prospecting > 40) {
ores.add("slate");
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_MARBLE && prospecting > 40) {
ores.add("marble");
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_GOLD && prospecting > 60) {
ores.add("gold");
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_SILVER && prospecting > 50) {
ores.add("silver");
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_ADAMANTINE && prospecting > 70) {
ores.add("adamantine");
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_GLIMMERSTEEL && prospecting > 80) {
ores.add("glimmersteel");
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_IRON) {
ores.add("iron");
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_COPPER) {
ores.add("copper");
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_LEAD) {
ores.add("lead");
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_ZINC) {
ores.add("zinc");
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_TIN) {
ores.add("tin");
}
}
}
logger.info("Player "+performer.getName()+" uses depth drill at "+x+", "+y+" and prospects "+ores.toString()+" in the ground.");
Iterator<String> it = ores.iterator();
if (ores.size() == 1) {
performer.getCommunicator().sendNormalServerMessage("You find traces of " + it.next() + " in the dirt.");
} else if (ores.size() > 1) {
String s = "You find traces of ";
for (int i = 0; i < ores.size() - 1; i++) {
if (i == ores.size() - 2) {
s += it.next();
} else {
s += it.next() + ", ";
}
}
s += " and " + it.next() + " in the dirt.";
performer.getCommunicator().sendNormalServerMessage(s);
}
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,129 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.Items;
import com.wurmonline.server.Players;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.behaviours.Actions;
import com.wurmonline.server.behaviours.TileRockBehaviour;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
import mod.sin.items.DisintegrationRod;
public class DisintegrationRodAction implements ModAction {
private static Logger logger = Logger.getLogger(DisintegrationRodAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public DisintegrationRodAction() {
logger.log(Level.WARNING, "DisintegrationRodAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Use",
"disintegrating",
new int[] { // {1, 4, 25, 9, 18, 21, 41, 43, 5, 49, 50} - Mining
Actions.ACTION_TYPE_SHOW_ON_SELECT_BAR,
Actions.ACTION_TYPE_IGNORERANGE
}
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item subject, int tilex, int tiley, boolean onSurface, int tile, int dir)
{
if(performer instanceof Player && subject != null && subject.getTemplateId() == DisintegrationRod.templateId && Tiles.isSolidCave(Tiles.decodeType(tile))){
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// With activated object
@Override
public boolean action(Action act, Creature performer, Item source, int tilex, int tiley, boolean onSurface, int heightOffset, int tile, short action, float counter)
{
try{
if(performer instanceof Player){
int newTile = Server.caveMesh.getTile(tilex, tiley);
if(source.getTemplate().getTemplateId() != DisintegrationRod.templateId){
performer.getCommunicator().sendSafeServerMessage("You must use a Disintegration Rod to do this.");
return true;
}
byte type = Tiles.decodeType(newTile);
if (Tiles.isSolidCave(type)) {
int resource = Server.getCaveResource(tilex, tiley);
int dir = (int)(act.getTarget() >> 48) & 255;
boolean destroyRod = true;
// Don't allow disintegration of reinforced caves
if ((type & 0xFF) == Tiles.TILE_TYPE_CAVE_WALL_REINFORCED) {
destroyRod = false;
performer.getCommunicator().sendSafeServerMessage("The reinforced wall is too strong and doesn't get affected by the rod.");
} else if (resource <= 1000 && TileRockBehaviour.createInsideTunnel(tilex, tiley, newTile, performer, 145, dir, true, act)) {
//Server.caveMesh.setTile(tilex, tiley, Tiles.encode(Tiles.decodeHeight(tile), Tiles.Tile.TILE_CAVE.id, Tiles.decodeData(tile)));
Players.getInstance().sendChangedTile(tilex, tiley, false, false);
performer.getCommunicator().sendSafeServerMessage("You use the " + source.getTemplate().getName()+" on the "+Tiles.getTile(Tiles.decodeType(newTile)).tiledesc.toLowerCase()+" and it breaks!");
} else if ((type & 0xFF) != Tiles.TILE_TYPE_CAVE_WALL && resource > 1000){
Server.setCaveResource(tilex, tiley, resource-1000);
Players.getInstance().sendChangedTile(tilex, tiley, false, false);
performer.getCommunicator().sendSafeServerMessage("You use the " + source.getTemplate().getName()+" on the "+Tiles.getTile(Tiles.decodeType(newTile)).tiledesc.toLowerCase()+", but it is only weakened!");
} else if ((type & 0xFF) == Tiles.TILE_TYPE_CAVE_WALL && TileRockBehaviour.createInsideTunnel(tilex, tiley, newTile, performer, 145, dir, true, act)) {
Players.getInstance().sendChangedTile(tilex, tiley, false, false);
performer.getCommunicator().sendSafeServerMessage("The rock is powerless against the "+source.getTemplate().getName()+"!");
} else if (!TileRockBehaviour.createInsideTunnel(tilex, tiley, newTile, performer, 145, dir, true, act)) {
performer.getCommunicator().sendSafeServerMessage("The wall is not stable enough.");
destroyRod = false;
} // else if
if (destroyRod) {
Items.destroyItem(source.getWurmId());
}
}else{
logger.info("Disintegration rod attempted to be used on non-solid cave at "+tilex+", "+tiley);
}
} else {
logger.info("Somehow a non-player activated a "+source.getTemplate().getName()+".");
}
return true;
} catch (Exception e) {
e.printStackTrace();
return true;
} // catch
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,135 @@
package mod.sin.actions.items;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modloader.ReflectionUtil;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemSpellEffects;
import com.wurmonline.server.players.Player;
import com.wurmonline.server.skills.Skill;
import com.wurmonline.server.spells.Spell;
import com.wurmonline.server.spells.SpellEffect;
import com.wurmonline.server.spells.Spells;
import mod.sin.items.EnchantOrb;
public class EnchantOrbAction implements ModAction {
private static Logger logger = Logger.getLogger(EnchantOrbAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public EnchantOrbAction() {
logger.log(Level.WARNING, "EnchantOrbAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Transfer enchant",
"transferring",
new int[0]
//new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
if(performer instanceof Player && source != null && object != null && source.getTemplateId() == EnchantOrb.templateId && source != object){
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// With activated object
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
if(performer instanceof Player){
Player player = (Player) performer;
if(source.getTemplate().getTemplateId() != EnchantOrb.templateId){
player.getCommunicator().sendNormalServerMessage("You must use an Enchant Orb to transfer enchants.");
return true;
}
if(source.getWurmId() == target.getWurmId()){
player.getCommunicator().sendNormalServerMessage("You cannot enchant the orb with itself!");
return true;
}
ItemSpellEffects effs = source.getSpellEffects();
if(effs == null || effs.getEffects().length == 0){
player.getCommunicator().sendNormalServerMessage("The "+source.getTemplate().getName()+" has no enchants.");
return true;
}
if(!Spell.mayBeEnchanted(target)){
player.getCommunicator().sendNormalServerMessage("The "+target.getTemplate().getName()+" may not be enchanted.");
}
ItemSpellEffects teffs = target.getSpellEffects();
if(teffs == null){
teffs = new ItemSpellEffects(target.getWurmId());
}
for(SpellEffect eff : effs.getEffects()){
Spell spell = Spells.getEnchantment(eff.type);
boolean canEnchant = Spell.mayBeEnchanted(target);
byte type = eff.type;
if(spell == null){
logger.info("Error: Enchant for "+eff.type+" doesn't exist.");
continue;
}
if(canEnchant){
try {
Method m = spell.getClass().getDeclaredMethod("precondition", Skill.class, Creature.class, Item.class);
canEnchant = ReflectionUtil.callPrivateMethod(spell, m, player.getChannelingSkill(), performer, target);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException e) {
e.printStackTrace();
}
}
if(canEnchant){
SpellEffect newEff = new SpellEffect(target.getWurmId(), type, eff.getPower(), 20000000);
teffs.addSpellEffect(newEff);
Items.destroyItem(source.getWurmId());
player.getCommunicator().sendSafeServerMessage("The "+eff.getName()+" transfers to the "+target.getTemplate().getName()+".");
}
}
}else{
logger.info("Somehow a non-player activated an Enchant Orb...");
}
return true;
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,187 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.behaviours.Actions;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemSpellEffects;
import com.wurmonline.server.players.Player;
import com.wurmonline.server.skills.SkillList;
import com.wurmonline.server.spells.SpellEffect;
import com.wurmonline.shared.constants.Enchants;
import mod.sin.items.EnchantersCrystal;
import mod.sin.wyvern.Crystals;
public class EnchantersCrystalInfuseAction implements ModAction {
private static Logger logger = Logger.getLogger(EnchantersCrystalInfuseAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public EnchantersCrystalInfuseAction() {
logger.log(Level.WARNING, "EnchantersCrystalInfuseAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Infuse",
"infusing",
new int[]{ Actions.ACTION_TYPE_NOMOVE }
//new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
if(performer instanceof Player && source != null && object != null && source.getTemplateId() == EnchantersCrystal.templateId && object.getTemplateId() != EnchantersCrystal.templateId){
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// With activated object
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(source.getTemplate().getTemplateId() != EnchantersCrystal.templateId){
performer.getCommunicator().sendNormalServerMessage("You must use an enchanters crystal to infuse an item.");
return true;
}
if(Crystals.shouldCancelEnchantersInfusion(performer, target)){
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You begin to infuse the "+target.getName()+ " with the "+source.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " begins infusing with a "+source.getName()+".", performer, 5);
act.setTimeLeft(300);
performer.sendActionControl("Infusing", true, act.getTimeLeft());
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
double diff = Crystals.getEnchantersInfusionDifficulty(performer, source, target);
double power = -100;
int i = source.getRarity();
while(i >= 0){
power = Math.max(power, performer.getSkills().getSkill(SkillList.ARCHAEOLOGY).skillCheck(diff, source, 0d, false, 1));
i--;
}
ItemSpellEffects effs = target.getSpellEffects();
if(power > 90){
byte ench = Crystals.getNewRandomEnchant(target);
if(ench != -10){
performer.getCommunicator().sendNormalServerMessage("You handle the crystals expertly and infuse the "+target.getName()+ ", adding a new enchant!");
SpellEffect eff = new SpellEffect(target.getWurmId(), ench, (float)power*Server.rand.nextFloat(), 20000000);
effs.addSpellEffect(eff);
Items.destroyItem(source.getWurmId());
}else{
logger.info("Failed to find a valid enchant to add to item "+target.getName()+" for player "+performer.getName()+"!");
performer.getCommunicator().sendNormalServerMessage("Nothing happens!");
}
}else if(power > 75){
performer.getCommunicator().sendNormalServerMessage("You very carefully infuse the metal "+target.getName()+ ", increasing its magical properties!");
for(SpellEffect eff : effs.getEffects()){
eff.setPower(eff.getPower()+(eff.getPower()*Server.rand.nextFloat()*0.2f));
}
Items.destroyItem(source.getWurmId());
}else if(power > 60){
performer.getCommunicator().sendNormalServerMessage("You carefully infuse the "+target.getName()+ ", changing one of its magical properties!");
SpellEffect oldEff = effs.getEffects()[Server.rand.nextInt(effs.getEffects().length)];
float oldPower = oldEff.getPower();
if(oldEff.type == Enchants.BUFF_BLOODTHIRST){
oldPower *= 0.01f;
}
effs.removeSpellEffect(oldEff.type);
byte ench = Crystals.getNewRandomEnchant(target);
if(ench != -10){
SpellEffect eff = new SpellEffect(target.getWurmId(), ench, oldPower, 20000000);
effs.addSpellEffect(eff);
}else{
performer.getCommunicator().sendNormalServerMessage("However, something goes wrong and the "+target.getName()+ " instead loses the property!");
}
Items.destroyItem(source.getWurmId());
}else if(power > 40){
performer.getCommunicator().sendNormalServerMessage("You manage to infuse the "+target.getName()+ ", destroying a magical property but increasing the rest.");
SpellEffect oldEff = effs.getEffects()[Server.rand.nextInt(effs.getEffects().length)];
effs.removeSpellEffect(oldEff.type);
if(effs.getEffects().length >= 1){
for(SpellEffect eff : effs.getEffects()){
eff.setPower(eff.getPower()+(eff.getPower()*Server.rand.nextFloat()*0.2f));
}
}else{
performer.getCommunicator().sendNormalServerMessage("However, the "+target.getName()+ " does not have any other properties, and the effect is wasted!");
}
Items.destroyItem(source.getWurmId());
}else if(power > 0){
performer.getCommunicator().sendNormalServerMessage("You barely manage to infuse the "+target.getName()+ ", shifting its magical properties.");
for(SpellEffect eff : effs.getEffects()){
eff.setPower(eff.getPower()+((eff.getPower()*Server.rand.nextFloat()*0.4f) * (Server.rand.nextBoolean() ? 1 : -1)));
}
Items.destroyItem(source.getWurmId());
}else if(power > -30){
performer.getCommunicator().sendNormalServerMessage("You barely fail to infuse the "+target.getName()+ ", reducing the power of its magical properties.");
for(SpellEffect eff : effs.getEffects()){
eff.setPower(eff.getPower()-(eff.getPower()*Server.rand.nextFloat()*0.2f));
}
Items.destroyItem(source.getWurmId());
}else if(power > -60){
performer.getCommunicator().sendNormalServerMessage("You horribly fail to infuse the "+target.getName()+ ", removing one of its magical properties.");
SpellEffect oldEff = effs.getEffects()[Server.rand.nextInt(effs.getEffects().length)];
effs.removeSpellEffect(oldEff.type);
Items.destroyItem(source.getWurmId());
}else{
performer.getCommunicator().sendNormalServerMessage("The infusion fails catastrophically, destroying all the magic on the "+target.getName()+"!");
for(SpellEffect eff : effs.getEffects()){
effs.removeSpellEffect(eff.type);
}
Items.destroyItem(source.getWurmId());
}
return true;
}
}else{
logger.info("Somehow a non-player activated a custom item ("+source.getTemplateId()+")...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,123 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
import mod.sin.items.EternalReservoir;
public class EternalReservoirCheckFuelAction implements ModAction {
private static Logger logger = Logger.getLogger(EternalReservoirCheckFuelAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public EternalReservoirCheckFuelAction() {
logger.log(Level.WARNING, "EternalReservoirFuelCheckAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Check fuel",
"checking",
new int[0]
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && object.getTemplateId() == EternalReservoir.templateId) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(target.getTemplateId() != EternalReservoir.templateId){
performer.getCommunicator().sendNormalServerMessage("That is not an eternal reservoir.");
return true;
}
if(!performer.isWithinDistanceTo(target, 9)){
performer.getCommunicator().sendNormalServerMessage("You are too far away to check the fuel.");
return true;
}
int fuel = target.getData1();
if(fuel < 30){
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" has no souls, and is inactive.");
}else if(fuel < 1000){
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" is very low on souls.");
}else if(fuel < 5000){
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" has some souls, but yearns for more.");
}else if(fuel < 10000){
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" has a good amount of souls.");
}else if(fuel < 50000){
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" has plenty of souls.");
}else{
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" is absolutely flooded with souls, and will last a long time.");
}
return true;
}else{
logger.info("Somehow a non-player activated a Eternal Reservoir...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,130 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.behaviours.Actions;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
import com.wurmonline.server.skills.Skill;
import mod.sin.items.Soul;
import mod.sin.items.EternalReservoir;
public class EternalReservoirRefuelAction implements ModAction {
private static Logger logger = Logger.getLogger(EternalReservoirRefuelAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public EternalReservoirRefuelAction() {
logger.log(Level.WARNING, "SoulForgeRefuelAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Feed soul",
"feeding",
new int[]{
Actions.ACTION_TYPE_IGNORERANGE
}
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
if(performer instanceof Player && source != null && object != null && source.getTemplateId() == Soul.templateId && object.getTemplateId() == EternalReservoir.templateId){
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// With activated object
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
Player player = (Player) performer;
if(target.getTemplate().getTemplateId() != EternalReservoir.templateId){
player.getCommunicator().sendNormalServerMessage("That is not an eternal reservoir.");
return true;
}
if(source.getTemplate().getTemplateId() != Soul.templateId){
player.getCommunicator().sendNormalServerMessage("You can only use souls to refuel the eternal reservoir.");
return true;
}
if(!performer.isWithinDistanceTo(target, 5)){
player.getCommunicator().sendNormalServerMessage("You are too far away to fuel the reservoir.");
return true;
}
Skill stealing = null;
Skill soulStrength = null;
int time = 100;
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You begin to feed the "+source.getName()+" to the "+target.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " begins to feed a "+source.getName()+" to the "+target.getName()+".", performer, 5);
stealing = performer.getStealSkill();
time = Actions.getSlowActionTime(performer, stealing, source, 0d);
act.setTimeLeft(time);
performer.sendActionControl("Feeding", true, act.getTimeLeft());
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
soulStrength = performer.getSoulStrength();
double power = soulStrength.skillCheck(25f-(source.getCurrentQualityLevel()*0.2f), source, 0f, false, 1);
if(power > 0){
target.setData1((int) (target.getData1()+power));
performer.getCommunicator().sendNormalServerMessage("You feed the "+source.getName()+" to the "+target.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " feeds a "+source.getName()+" to the "+target.getName()+".", performer, 5);
}else{
performer.getCommunicator().sendNormalServerMessage("You fail to feed the "+source.getName()+" to the "+target.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " fails to feed a "+source.getName()+" to the "+target.getName()+".", performer, 5);
}
Items.destroyItem(source.getWurmId());
return true;
}
}else{
logger.info("Somehow a non-player activated an Enchant Orb...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,127 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.behaviours.Actions;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
import mod.sin.items.FriyanTablet;
public class FriyanTabletAction implements ModAction {
private static Logger logger = Logger.getLogger(FriyanTabletAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public FriyanTabletAction() {
logger.log(Level.WARNING, "FriyanTabletAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Read",
"reading",
new int[] { Actions.ACTION_TYPE_NOMOVE } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && object.getTemplateId() == FriyanTablet.templateId) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if (target.getTemplate().getTemplateId() != FriyanTablet.templateId){
performer.getCommunicator().sendNormalServerMessage("You cannot read that.");
return true;
}
if (!performer.isWithinDistanceTo(target.getPosX(), target.getPosY(), performer.getPositionZ(), 4)) {
performer.getCommunicator().sendNormalServerMessage("You are too far away to read.");
act.stop(true);
return true;
}
if (counter == 1.0f) {
performer.getCommunicator().sendNormalServerMessage("You start to read the "+target.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " begins reading the "+target.getName()+".", performer, 5);
act.setTimeLeft(200);
performer.sendActionControl("Reading", true, act.getTimeLeft());
} else if (counter * 10.0f > performer.getCurrentAction().getTimeLeft()) {
if(performer.getDeity() != null && performer.getFaith() > 0){
performer.modifyFaith(Math.max(0.1f, Server.rand.nextFloat()/2f));
performer.getCommunicator().sendNormalServerMessage("You are enthralled by the knowledge of the Kaen scholar. You feel closer to god than ever!");
Items.destroyItem(target.getWurmId());
}else{
performer.getCommunicator().sendNormalServerMessage("You don't seem to learn anything. You don't believe in the gods.");
}
return true;
}
}else{
logger.info("Somehow a non-player activated a "+target.getTemplate().getName()+".");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,126 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.pveplands.treasurehunting.Treasuremap;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
import mod.sin.items.SealedMap;
public class SealedMapAction implements ModAction {
private static Logger logger = Logger.getLogger(SealedMapAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public SealedMapAction() {
logger.log(Level.WARNING, "TreasureCacheOpenAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Unseal",
"unsealing",
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && object.getTemplateId() == SealedMap.templateId) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(target.getTemplateId() != SealedMap.templateId){
performer.getCommunicator().sendNormalServerMessage("That is not a sealed map.");
return true;
}
if(target.getLastOwnerId() != performer.getWurmId() && target.getOwnerId() != performer.getWurmId()){
performer.getCommunicator().sendNormalServerMessage("You must own the "+target.getName()+" to open it.");
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You begin to unseal the "+target.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " begins unseal "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
act.setTimeLeft(50);
performer.sendActionControl("Unsealing", true, act.getTimeLeft());
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
performer.getCommunicator().sendNormalServerMessage("You unseal your "+target.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " unseals "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
logger.info("Player "+performer.getName()+" unsealed "+target.getName()+" at quality "+target.getCurrentQualityLevel()+" and rarity "+target.getRarity());
target.setData1(100);
Item map = Treasuremap.CreateTreasuremap(performer, target, null, null, true);
performer.getInventory().insertItem(map, true);
Items.destroyItem(target.getWurmId());
return true;
}
}else{
logger.info("Somehow a non-player activated a Treasure Box...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,152 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.Servers;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.behaviours.Actions;
import com.wurmonline.server.behaviours.Methods;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.creatures.CreatureTemplate;
import com.wurmonline.server.creatures.CreatureTemplateFactory;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemFactory;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.players.Player;
import com.wurmonline.server.skills.Skill;
import mod.sin.items.Soul;
public class SoulstealAction implements ModAction {
private static Logger logger = Logger.getLogger(SoulstealAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public SoulstealAction() {
logger.log(Level.WARNING, "SoulstealAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Soulsteal",
"soulstealing",
new int[]{
Actions.ACTION_TYPE_IGNORERANGE
}
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
if(performer instanceof Player && source != null && object != null && source.getTemplateId() == ItemList.sacrificialKnife && object.getTemplateId() == ItemList.corpse){
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// With activated object
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
Player player = (Player) performer;
if(source.getTemplate().getTemplateId() != ItemList.sacrificialKnife){
player.getCommunicator().sendNormalServerMessage("You must use a sacrifical knife to steal souls.");
return true;
}
if(target.getTemplate().getTemplateId() != ItemList.corpse){
player.getCommunicator().sendNormalServerMessage("You can only steal the soul from a corpse.");
return true;
}
if(target.getData1() == 1 && (target.getLastOwnerId() != performer.getWurmId()) && !Servers.isThisAPvpServer()) {
player.getCommunicator().sendNormalServerMessage(Action.NOT_ALLOWED_ACTION_ON_FREEDOM_MESSAGE);
return true;
}
if(target.isButchered()){
player.getCommunicator().sendNormalServerMessage("The corpse has been butchered and there is no soul left.");
return true;
}
if (target.getTopParentOrNull() != performer.getInventory() && !Methods.isActionAllowed(performer, (short) 120, target)) {
player.getCommunicator().sendNormalServerMessage("You are not allowed to soulsteal that.");
return true;
}
if(!performer.isWithinDistanceTo(target, 5)){
player.getCommunicator().sendNormalServerMessage("You are too far away to steal that soul.");
return true;
}
Skill stealing = null;
int time = 100;
CreatureTemplate template = null;
if(counter == 1.0f){
template = CreatureTemplateFactory.getInstance().getTemplate(target.getData1());
performer.getCommunicator().sendNormalServerMessage("You begin to steal the soul of the "+template.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " begins to steal the "+template.getName()+" soul.", performer, 5);
stealing = performer.getStealSkill();
time = Actions.getStandardActionTime(performer, stealing, source, 0d);
act.setTimeLeft(time);
performer.sendActionControl("Soulstealing", true, act.getTimeLeft());
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
template = CreatureTemplateFactory.getInstance().getTemplate(target.getData1());
stealing = performer.getStealSkill();
double power = stealing.skillCheck(40f-(template.getBaseCombatRating()*0.4f), source, 0f, false, 1);
if(power > 0){
Item soul = ItemFactory.createItem(Soul.templateId, (float) power, performer.getName());
soul.setName("Soul of "+template.getName());
performer.getInventory().insertItem(soul, true);
performer.getCommunicator().sendNormalServerMessage("You obtain the soul of the "+template.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " obtains the soul of the "+template.getName()+".", performer, 5);
}else{
performer.getCommunicator().sendNormalServerMessage("You fail to steal the soul of the "+template.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " fails to steal the soul of the "+template.getName()+".", performer, 5);
}
source.setDamage(source.getDamage()+(0.001f*source.getDamageModifier()));
Items.destroyItem(target.getWurmId());
return true;
}
}else{
logger.info("Somehow a non-player activated an Enchant Orb...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,139 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemFactory;
import com.wurmonline.server.players.Player;
import mod.sin.items.ArenaCache;
import mod.sin.items.ArenaSupplyDepot;
import mod.sin.wyvern.MiscChanges;
import mod.sin.wyvern.arena.SupplyDepots;
public class SupplyDepotAction implements ModAction {
private static Logger logger = Logger.getLogger(SupplyDepotAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public SupplyDepotAction() {
logger.log(Level.WARNING, "SupplyDepotAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Capture depot",
"capturing",
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && object.getTemplateId() == ArenaSupplyDepot.templateId) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(target.getTemplate().getTemplateId() != ArenaSupplyDepot.templateId){
performer.getCommunicator().sendNormalServerMessage("That is not a supply depot.");
return true;
}
if(!performer.isWithinDistanceTo(target, 5)){
performer.getCommunicator().sendNormalServerMessage("You must be closer to capture the depot.");
return true;
}
if(!Items.exists(target)){
performer.getCommunicator().sendNormalServerMessage("The supply depot has already been captured.");
return true;
}
if(performer.getFightingSkill().getKnowledge() < 25f){
performer.getCommunicator().sendNormalServerMessage("You must have at least 25 fighting skill to capture a depot.");
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You begin to capture the depot.");
Server.getInstance().broadCastAction(performer.getName() + " begins capturing the depot.", performer, 50);
act.setTimeLeft(2400);
performer.sendActionControl("Capturing", true, act.getTimeLeft());
SupplyDepots.maybeBroadcastOpen(performer);
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
Item inv = performer.getInventory();
Item cache = ItemFactory.createItem(ArenaCache.templateId, 90+(10*Server.rand.nextFloat()), "");
inv.insertItem(cache, true);
performer.getCommunicator().sendSafeServerMessage("You have successfully captured the depot!");
Server.getInstance().broadCastAction(performer.getName() + " successfully captures the depot!", performer, 50);
MiscChanges.sendImportantMessage(performer, performer.getName()+" has claimed an Arena depot!", 255, 128, 0);
SupplyDepots.removeSupplyDepot(target);
Items.destroyItem(target.getWurmId());
return true;
}
}else{
logger.info("Somehow a non-player activated a Arrow Pack Unpack...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,142 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
import mod.sin.items.TreasureBox;
import mod.sin.wyvern.TreasureChests;
public class TreasureBoxAction implements ModAction {
private static Logger logger = Logger.getLogger(TreasureBoxAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public TreasureBoxAction() {
logger.log(Level.WARNING, "TreasureBoxAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Open treasure",
"opening",
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && object.getTemplateId() == TreasureBox.templateId) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(target.getTemplate().getTemplateId() != TreasureBox.templateId){
performer.getCommunicator().sendNormalServerMessage("That is not a treasure box.");
return true;
}
if(target.getLastOwnerId() != performer.getWurmId() && target.getOwnerId() != performer.getWurmId()){
performer.getCommunicator().sendNormalServerMessage("You must own the treasure box to open it.");
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You begin to open a treasure box.");
Server.getInstance().broadCastAction(performer.getName() + " begins opening "+performer.getHisHerItsString()+" treasure.", performer, 5);
act.setTimeLeft(50);
performer.sendActionControl("Opening", true, act.getTimeLeft());
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
int aux;
if(target.getRarity() >= 3){
aux = (int) (Server.rand.nextFloat()*target.getQualityLevel()*0.1f)+90;
}else if(target.getRarity() >= 2){
aux = (int) (Server.rand.nextFloat()*target.getQualityLevel()*0.3f)+70;
}else if(target.getRarity() >= 1){
aux = (int) (Server.rand.nextFloat()*target.getQualityLevel()*0.5f)+50;
}else{
aux = (int) (Server.rand.nextFloat()*target.getQualityLevel());
}
if(aux >= 90){
performer.getCommunicator().sendNormalServerMessage("You open your treasure box containing fantastic treasures!");
Server.getInstance().broadCastAction(performer.getName() + " opens "+performer.getHisHerItsString()+" treasure box, containing fantastic treasures!", performer, 5);
}else if(aux >= 60){
performer.getCommunicator().sendNormalServerMessage("You open your treasure box containing supreme treasures!");
Server.getInstance().broadCastAction(performer.getName() + " opens "+performer.getHisHerItsString()+" treasure box, containing supreme treasures!", performer, 5);
}else{
performer.getCommunicator().sendNormalServerMessage("You open your treasure box containing rare treasures.");
Server.getInstance().broadCastAction(performer.getName() + " opens "+performer.getHisHerItsString()+" treasure box, containing rare treasures.", performer, 5);
}
logger.info("Player "+performer.getName()+" opened treasure box with power "+aux+".");
TreasureChests.newFillTreasureChest(performer.getInventory(), aux);
Items.destroyItem(target.getWurmId());
return true;
}
}else{
logger.info("Somehow a non-player activated a Treasure Box...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,123 @@
package mod.sin.actions.items;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
import com.wurmonline.server.Items;
import com.wurmonline.server.Server;
import com.wurmonline.server.behaviours.Action;
import com.wurmonline.server.behaviours.ActionEntry;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.players.Player;
import mod.sin.wyvern.Caches;
public class TreasureCacheOpenAction implements ModAction {
private static Logger logger = Logger.getLogger(TreasureCacheOpenAction.class.getName());
private final short actionId;
private final ActionEntry actionEntry;
public TreasureCacheOpenAction() {
logger.log(Level.WARNING, "TreasureCacheOpenAction()");
actionId = (short) ModActions.getNextActionId();
actionEntry = ActionEntry.createEntry(
actionId,
"Open cache",
"opening",
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
);
ModActions.registerAction(actionEntry);
}
@Override
public BehaviourProvider getBehaviourProvider()
{
return new BehaviourProvider() {
// Menu with activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
{
return this.getBehavioursFor(performer, object);
}
// Menu without activated object
@Override
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
{
if(performer instanceof Player && object != null && Caches.isTreasureCache(object)) {
return Arrays.asList(actionEntry);
}
return null;
}
};
}
@Override
public ActionPerformer getActionPerformer()
{
return new ActionPerformer() {
@Override
public short getActionId() {
return actionId;
}
// Without activated object
@Override
public boolean action(Action act, Creature performer, Item target, short action, float counter)
{
try{
if(performer instanceof Player){
if(!Caches.isTreasureCache(target)){
performer.getCommunicator().sendNormalServerMessage("That is not a treasure cache.");
return true;
}
if(target.getLastOwnerId() != performer.getWurmId() && target.getOwnerId() != performer.getWurmId()){
performer.getCommunicator().sendNormalServerMessage("You must own the "+target.getName()+" to open it.");
return true;
}
if(counter == 1.0f){
performer.getCommunicator().sendNormalServerMessage("You begin to open the "+target.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " begins opening "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
act.setTimeLeft(50);
performer.sendActionControl("Opening", true, act.getTimeLeft());
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
performer.getCommunicator().sendNormalServerMessage("You open your "+target.getName()+".");
Server.getInstance().broadCastAction(performer.getName() + " opens "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
logger.info("Player "+performer.getName()+" opened "+target.getName()+" at quality "+target.getCurrentQualityLevel()+" and rarity "+target.getRarity());
Caches.openCache(performer, target);
Items.destroyItem(target.getWurmId());
return true;
}
}else{
logger.info("Somehow a non-player activated a Treasure Box...");
}
return false;
}catch(Exception e){
e.printStackTrace();
return true;
}
}
@Override
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
{
return this.action(act, performer, target, action, counter);
}
}; // ActionPerformer
}
}

View File

@@ -0,0 +1,60 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class Glimmerscale {
private static Logger logger = Logger.getLogger(Glimmerscale.class.getName());
public static int templateId;
private String name = "glimmerscale";
public void createTemplate() throws IOException{
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("item.mod.glimmerscale.scale");
itemBuilder.name(name, "glimmerscales", "Legendary scales, made from the careful combination of dragon scales and glimmersteel.");
itemBuilder.descriptions("excellent", "good", "ok", "poor");
itemBuilder.itemTypes(new short[]{ // {22, 146, 46, 113, 157} - Addy Lump
ItemTypes.ITEM_TYPE_METAL,
ItemTypes.ITEM_TYPE_BULK,
ItemTypes.ITEM_TYPE_COMBINE,
ItemTypes.ITEM_TYPE_NOT_MISSION
});
itemBuilder.imageNumber((short) 554);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(10, 30, 30);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.resource.scales.dragon.");
itemBuilder.difficulty(60.0f);
itemBuilder.weightGrams(400);
itemBuilder.material(Materials.MATERIAL_UNDEFINED);
itemBuilder.value(200000);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
// CreationEntryCreator.createSimpleEntry(10041, 220, 47, 223, true, true, 0.0f, false, false, CreationCategories.RESOURCES);
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_METALLURGY, ItemList.dragonScale, ItemList.glimmerSteelBar,
templateId, true, true, 0.0f, true, false, CreationCategories.RESOURCES);
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,71 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class GlimmerscaleBoot implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(GlimmerscaleBoot.class.getName());
public static int templateId;
private String name = "glimmerscale boot";
public void createTemplate() throws IOException{
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
* "A jacket made from finest drake hide with brass husks.",
* new short[]{108, 44, 23, 4, 99},
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
*/
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.boot");
itemBuilder.name(name, "glimmerscale boots", "A glimmerscale boot.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_METAL,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 1025);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{15, 16});
itemBuilder.modelName("model.armour.foot.dragon.scale.leather.");
itemBuilder.difficulty(72.0f);
itemBuilder.weightGrams(2000);
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,71 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class GlimmerscaleGlove implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(GlimmerscaleGlove.class.getName());
public static int templateId;
private String name = "glimmerscale glove";
public void createTemplate() throws IOException{
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
* "A jacket made from finest drake hide with brass husks.",
* new short[]{108, 44, 23, 4, 99},
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
*/
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.glove");
itemBuilder.name(name, "glimmerscale gloves", "A glimmerscale glove.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_METAL,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 1024);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{13, 14});
itemBuilder.modelName("model.armour.hand.dragon.scale.leather.");
itemBuilder.difficulty(70.0f);
itemBuilder.weightGrams(1200);
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,71 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class GlimmerscaleHelmet implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(GlimmerscaleHelmet.class.getName());
public static int templateId;
private String name = "glimmerscale helmet";
public void createTemplate() throws IOException{
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
* "A jacket made from finest drake hide with brass husks.",
* new short[]{108, 44, 23, 4, 99},
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
*/
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.helmet");
itemBuilder.name(name, "glimmerscale helmets", "A horned helmet made of glimmerscale.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_METAL,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 968);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{1, 28});
itemBuilder.modelName("model.armour.head.greathelmHornedOfGold.");
itemBuilder.difficulty(76.0f);
itemBuilder.weightGrams(2500);
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,71 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class GlimmerscaleHose implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(GlimmerscaleHose.class.getName());
public static int templateId;
private String name = "glimmerscale leggings";
public void createTemplate() throws IOException{
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
* "A jacket made from finest drake hide with brass husks.",
* new short[]{108, 44, 23, 4, 99},
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
*/
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.hose");
itemBuilder.name(name, "glimmerscale leggings", "A set of glimmerscale leggings.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_METAL,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 1021);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{34});
itemBuilder.modelName("model.armour.leg.dragon.scale.leather.");
itemBuilder.difficulty(78.0f);
itemBuilder.weightGrams(3200);
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,71 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class GlimmerscaleSleeve implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(GlimmerscaleSleeve.class.getName());
public static int templateId;
private String name = "glimmerscale sleeve";
public void createTemplate() throws IOException{
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
* "A jacket made from finest drake hide with brass husks.",
* new short[]{108, 44, 23, 4, 99},
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
*/
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.sleeve");
itemBuilder.name(name, "glimmerscale sleeves", "A glimmerscale sleeve.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_METAL,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 1022);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{3, 4});
itemBuilder.modelName("model.armour.sleeve.dragon.scale.leather.");
itemBuilder.difficulty(74.0f);
itemBuilder.weightGrams(1800);
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,71 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class GlimmerscaleVest implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(GlimmerscaleVest.class.getName());
public static int templateId;
private String name = "glimmerscale vest";
public void createTemplate() throws IOException{
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
* "A jacket made from finest drake hide with brass husks.",
* new short[]{108, 44, 23, 4, 99},
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
*/
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.vest");
itemBuilder.name(name, "glimmerscale vests", "A glimmerscale vest.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_METAL,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 1020);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{2});
itemBuilder.modelName("model.armour.torso.dragon.scale.leather.");
itemBuilder.difficulty(80.0f);
itemBuilder.weightGrams(4500);
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,63 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class SpectralBoot implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(SpectralBoot.class.getName());
public static int templateId;
private String name = "spectral boot";
public void createTemplate() throws IOException{
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.boot");
itemBuilder.name(name, "spectral boots", "A spectral boot.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_LEATHER,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 1065);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{15, 16});
itemBuilder.modelName("model.armour.foot.dragon.");
itemBuilder.difficulty(70.0f);
itemBuilder.weightGrams(300);
itemBuilder.material(Materials.MATERIAL_LEATHER);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,64 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class SpectralCap implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(SpectralCap.class.getName());
public static int templateId;
private String name = "spectral cap";
public void createTemplate() throws IOException{
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.cap");
itemBuilder.name(name, "spectral caps", "A spectral cap.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_LEATHER,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 1063);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{1, 28});
itemBuilder.modelName("model.armour.head.dragon.");
itemBuilder.difficulty(74.0f);
itemBuilder.weightGrams(500);
itemBuilder.material(Materials.MATERIAL_LEATHER);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info("Spectral improve = "+template.getImproveItem());
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,63 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class SpectralGlove implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(SpectralGlove.class.getName());
public static int templateId;
private String name = "spectral glove";
public void createTemplate() throws IOException{
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.glove");
itemBuilder.name(name, "spectral gloves", "A spectral glove.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_LEATHER,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 1064);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{13, 14});
itemBuilder.modelName("model.armour.hand.dragon.");
itemBuilder.difficulty(68.0f);
itemBuilder.weightGrams(250);
itemBuilder.material(Materials.MATERIAL_LEATHER);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,43 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
public class SpectralHide implements ItemTypes, MiscConstants {
private static Logger logger = Logger.getLogger(SpectralHide.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
String name = "spectral hide";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("wyvern.spectral.hide");
itemBuilder.name(name, "spectral hides", "Lightweight and transparent, this ethereal leather comes from another plane of existance. It is stronger than natural drake hide.");
itemBuilder.descriptions("excellent", "good", "ok", "poor");
itemBuilder.itemTypes(new short[]{
ITEM_TYPE_LEATHER,
ITEM_TYPE_HASDATA,
ITEM_TYPE_COMBINE
});
itemBuilder.imageNumber((short) 602);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(10, 30, 30);
itemBuilder.primarySkill((int) NOID);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.resource.leather.dragon.");
itemBuilder.difficulty(20.0f);
itemBuilder.weightGrams(200);
itemBuilder.material(Materials.MATERIAL_LEATHER);
itemBuilder.value(200000);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
}

View File

@@ -0,0 +1,74 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class SpectralHose implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(SpectralHose.class.getName());
public static int templateId;
private String name = "spectral leggings";
public void createTemplate() throws IOException{
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
* "A jacket made from finest drake hide with brass husks.",
* new short[]{108, 44, 23, 4, 99},
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
*/
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.hose");
itemBuilder.name(name, "spectral leggings", "Spectral leggings.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_LEATHER,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 1061);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{34});
itemBuilder.modelName("model.armour.leg.dragon.");
itemBuilder.difficulty(77.0f);
itemBuilder.weightGrams(700);
itemBuilder.material(Materials.MATERIAL_LEATHER);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info("Spectral improve = "+template.getImproveItem());
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,73 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class SpectralJacket implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(SpectralJacket.class.getName());
public static int templateId;
private String name = "spectral jacket";
public void createTemplate() throws IOException{
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
* "A jacket made from finest drake hide with brass husks.",
* new short[]{108, 44, 23, 4, 99},
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
*/
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.jacket");
itemBuilder.name(name, "spectral jackets", "A spectral jacket.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_LEATHER,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 1060);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{2});
itemBuilder.modelName("model.armour.torso.dragon.");
itemBuilder.difficulty(80.0f);
itemBuilder.weightGrams(800);
itemBuilder.material(Materials.MATERIAL_LEATHER);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,63 @@
package mod.sin.armour;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class SpectralSleeve implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(SpectralSleeve.class.getName());
public static int templateId;
private String name = "spectral sleeve";
public void createTemplate() throws IOException{
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.sleeve");
itemBuilder.name(name, "spectral sleeves", "A spectral sleeve.");
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_LEATHER,
ItemTypes.ITEM_TYPE_ARMOUR,
ItemTypes.ITEM_TYPE_DRAGONARMOUR
});
itemBuilder.imageNumber((short) 1062);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(2, 40, 40);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(new byte[]{3, 4});
itemBuilder.modelName("model.armour.sleeve.dragon.");
itemBuilder.difficulty(72.0f);
itemBuilder.weightGrams(400);
itemBuilder.material(Materials.MATERIAL_LEATHER);
itemBuilder.value(1000000);
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,75 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class Avenger implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_DOMINATABLE,
CreatureTypes.C_TYPE_DETECTINVIS,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.avenger", "Avenger", "Sent from the heavens to purge the unworthy.",
"model.creature.humanoid.avenger.light", types, BodyTemplate.TYPE_HUMAN, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
"sound.death.giant", "sound.death.giant", "sound.combat.hit.giant", "sound.combat.hit.giant",
0.3f, 25f, 0f, 0f, 0.0f, 0.0f, 1.2f, 500,
new int[]{}, 15, 70, Materials.MATERIAL_MEAT_HUMANOID);
builder.skill(SkillList.BODY_STRENGTH, 45.0f);
builder.skill(SkillList.BODY_STAMINA, 55.0f);
builder.skill(SkillList.BODY_CONTROL, 60.0f);
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
builder.skill(SkillList.MIND_SPEED, 50.0f);
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 70.0f);
builder.skill(SkillList.GROUP_FIGHTING, 50.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("slam");
builder.maxAge(100);
builder.armourType(ArmourTypes.ARMOUR_LEATHER);
builder.baseCombatRating(45.0f);
builder.combatDamageType(Wound.TYPE_COLD);
builder.maxPercentOfCreatures(0.005f);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_TUNDRA.id)
.addCreatures(templateId, 1)
.build(1);
}
}

View File

@@ -0,0 +1,67 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
import com.wurmonline.server.behaviours.Vehicle;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.creatures.CreatureTemplate;
import com.wurmonline.server.creatures.CreatureTemplateFactory;
import com.wurmonline.server.creatures.CreatureTemplateIds;
import com.wurmonline.server.creatures.NoSuchCreatureTemplateException;
import com.wurmonline.server.items.Item;
public class Bison implements ModCreature {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
templateId = CreatureTemplateIds.BISON_CID;
return new CreatureTemplateBuilder(templateId) {
@Override
public CreatureTemplate build() {
try {
return CreatureTemplateFactory.getInstance().getTemplate(templateId);
} catch (NoSuchCreatureTemplateException e) {
throw new RuntimeException(e);
}
}
};
}
public ModVehicleBehaviour getVehicleBehaviour() {
return new ModVehicleBehaviour() {
@Override
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
}
@Override
public void setSettingsForVehicle(Creature creature, Vehicle v) {
VehicleFacade vehicle = wrap(v);
vehicle.createPassengerSeats(0);
vehicle.setSeatFightMod(0, 0.7f, 0.9f);
vehicle.setSeatOffset(0, 0.0f, 0.0f, 0f);
vehicle.setCreature(true);
vehicle.setSkillNeeded(27.0f);
vehicle.setName(creature.getName());
vehicle.setMaxDepth(-0.7f);
vehicle.setMaxHeightDiff(0.04f);
vehicle.setMaxSpeed(25.0f);
vehicle.setCommandType((byte) 3);
vehicle.setCanHaveEquipment(true);
}
};
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
}
}

View File

@@ -0,0 +1,116 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.behaviours.Vehicle;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class Charger implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
int[] types = {
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_MOVE_GLOBAL,
CreatureTypes.C_TYPE_VEHICLE,
CreatureTypes.C_TYPE_LEADABLE,
CreatureTypes.C_TYPE_SWIMMING,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_DOMINATABLE,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_NON_NEWBIE,
CreatureTypes.C_TYPE_HORSE,
CreatureTypes.C_TYPE_ANIMAL
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.charger", "Charger", "A blazing-fast stallion.",
"model.creature.quadraped.horse.hell", types, BodyTemplate.TYPE_HORSE, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
"sound.death.horse", "sound.death.horse", "sound.combat.hit.horse", "sound.combat.hit.horse",
1.1f, 12f, 10f, 10.0f, 0.0f, 0.0f, 1.6f, 1000,
new int[]{}, 10, 74, Materials.MATERIAL_MEAT_HORSE);
builder.skill(SkillList.BODY_STRENGTH, 37.0f);
builder.skill(SkillList.BODY_STAMINA, 30.0f);
builder.skill(SkillList.BODY_CONTROL, 25.0f);
builder.skill(SkillList.MIND_LOGICAL, 30.0f);
builder.skill(SkillList.MIND_SPEED, 20.0f);
builder.skill(SkillList.SOUL_STRENGTH, 30.0f);
builder.skill(SkillList.SOUL_DEPTH, 30.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 25.0f);
builder.skill(SkillList.GROUP_FIGHTING, 20.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("burn");
builder.maxAge(100);
builder.armourType(ArmourTypes.ARMOUR_LEATHER);
builder.baseCombatRating(13.0f);
builder.combatDamageType(Wound.TYPE_BURN);
builder.denMaterial(Materials.MATERIAL_WOOD_BIRCH);
builder.denName("charger lair");
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
public ModVehicleBehaviour getVehicleBehaviour() {
return new ModVehicleBehaviour() {
@Override
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
}
@Override
public void setSettingsForVehicle(Creature creature, Vehicle v) {
VehicleFacade vehicle = wrap(v);
vehicle.createPassengerSeats(0);
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
vehicle.setSeatOffset(0, 0.0f, 0.0f, 0.3f);
vehicle.setCreature(true);
vehicle.setSkillNeeded(37.0f);
vehicle.setName(creature.getName());
vehicle.setMaxHeightDiff(0.09f);
vehicle.setMaxDepth(-1.7f);
vehicle.setMaxSpeed(46.0f);
vehicle.setCommandType((byte) 3);
vehicle.setCanHaveEquipment(true);
}
};
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_STEPPE.id)
.addCreatures(templateId, 1)
.build(3);
new EncounterBuilder(Tiles.Tile.TILE_STEPPE.id)
.addCreatures(templateId, 1)
.build(1);
}
}

View File

@@ -0,0 +1,72 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.skills.SkillList;
public class Facebreyker implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_UNIQUE,
CreatureTypes.C_TYPE_REGENERATING,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_FENCEBREAKER,
CreatureTypes.C_TYPE_HERBIVORE,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.unique.facebreyker", "Facebreyker", "A bold warrior corrupted by darkness. You feel the presence of Libila.",
"model.creature.humanoid.ogre.rift", types, (byte) 0, (short) 20, (byte) 0, (short) 350, (short) 100, (short) 60,
"sound.death.troll", "sound.death.troll", "sound.combat.hit.troll", "sound.combat.hit.troll",
0.05f, 50.0f, 50.0f, 0.0f, 0.0f, 0.0f, 1.6f, 1100,
new int[]{867}, 40, 100, (byte) 0);
builder.skill(SkillList.BODY_STRENGTH, 90.0f);
builder.skill(SkillList.BODY_STAMINA, 90.0f);
builder.skill(SkillList.BODY_CONTROL, 90.0f);
builder.skill(SkillList.MIND_LOGICAL, 30.0f);
builder.skill(SkillList.MIND_SPEED, 30.0f);
builder.skill(SkillList.SOUL_STRENGTH, 70.0f);
builder.skill(SkillList.SOUL_DEPTH, 60.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 80.0f);
builder.skill(SkillList.GROUP_FIGHTING, 80.0f);
builder.skill(SkillList.GROUP_CLUBS, 99.0f);
builder.skill(SkillList.CLUB_HUGE, 99.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("slashe");
builder.kickDamString("eviscerate");
builder.maxAge(200);
builder.armourType(10);
builder.baseCombatRating(80.0f);
builder.combatDamageType(Wound.TYPE_CRUSH);
builder.maxGroupAttackSize(100);
//builder.usesNewAttacks(true);
// float baseDamage, float criticalChance, float baseSpeed, int attackReach, int weightGroup, byte damageType, boolean usesWeapon, int rounds, float waitUntilNextAttack
//builder.addPrimaryAttack(new AttackAction("slashe", AttackIdentifier.STRIKE, new AttackValues(70f, 0.05f, 5f, 3, 1, Wound.TYPE_SLASH, false, 1, 1.0f)));
//builder.addPrimaryAttack(new AttackAction("eviscerate", AttackIdentifier.STRIKE, new AttackValues(100f, 0.5f, 30f, 3, 1, Wound.TYPE_INFECTION, false, 4, 5.0f)));
//builder.addSecondaryAttack(new AttackAction("annihilate", AttackIdentifier.KICK, new AttackValues(200f, 0.3f, 60f, 2, 1, Wound.TYPE_ACID, false, 7, 8.0f)));
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
return;
}
}

View File

@@ -0,0 +1,80 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class ForestSpider implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_ANIMAL,
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.forest.spider", "Forest spider", "Found amongst trees, these spiders are dangerous and poisonous.",
"model.creature.multiped.spider.huge", types, BodyTemplate.TYPE_SPIDER, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
"sound.death.spider", "sound.death.spider", "sound.combat.hit.spider", "sound.combat.hit.spider",
0.6f, 10f, 0f, 13.0f, 0.0f, 0.0f, 1.2f, 500,
new int[]{ItemList.heart}, 10, 74, Materials.MATERIAL_MEAT_INSECT);
builder.skill(SkillList.BODY_STRENGTH, 20.0f);
builder.skill(SkillList.BODY_STAMINA, 30.0f);
builder.skill(SkillList.BODY_CONTROL, 35.0f);
builder.skill(SkillList.MIND_LOGICAL, 30.0f);
builder.skill(SkillList.MIND_SPEED, 30.0f);
builder.skill(SkillList.SOUL_STRENGTH, 30.0f);
builder.skill(SkillList.SOUL_DEPTH, 30.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
builder.skill(SkillList.GROUP_FIGHTING, 30.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("pierce");
builder.maxAge(100);
builder.armourType(ArmourTypes.ARMOUR_CLOTH);
builder.baseCombatRating(13.0f);
builder.combatDamageType(Wound.TYPE_POISON);
builder.denMaterial(Materials.MATERIAL_STONE);
builder.denName("forest spider lair");
builder.maxPercentOfCreatures(0.05f);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_TREE.id)
.addCreatures(templateId, 1)
.build(2);
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
.addCreatures(templateId, 1)
.build(2);
}
}

View File

@@ -0,0 +1,84 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class Giant implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_REGENERATING,
CreatureTypes.C_TYPE_DOMINATABLE,
CreatureTypes.C_TYPE_DETECTINVIS,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.giant", "Giant", "A lumbering hulk.",
"model.creature.humanoid.giant.forest", types, BodyTemplate.TYPE_ETTIN, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
"sound.death.giant", "sound.death.giant", "sound.combat.hit.giant", "sound.combat.hit.giant",
0.3f, 19f, 15f, 0f, 0.0f, 0.0f, 0.7f, 300,
new int[]{ItemList.heart, ItemList.eye, ItemList.gland, ItemList.tooth}, 15, 70, Materials.MATERIAL_MEAT_TOUGH);
builder.skill(SkillList.BODY_STRENGTH, 55.0f);
builder.skill(SkillList.BODY_STAMINA, 65.0f);
builder.skill(SkillList.BODY_CONTROL, 30.0f);
builder.skill(SkillList.MIND_LOGICAL, 10.0f);
builder.skill(SkillList.MIND_SPEED, 10.0f);
builder.skill(SkillList.SOUL_STRENGTH, 10.0f);
builder.skill(SkillList.SOUL_DEPTH, 10.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 60.0f);
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("maul");
builder.maxAge(100);
builder.armourType(ArmourTypes.ARMOUR_LEATHER);
builder.baseCombatRating(32.0f);
builder.combatDamageType(Wound.TYPE_ACID);
builder.denMaterial(Materials.MATERIAL_WOOD_BIRCH);
builder.denName("giant lair");
builder.maxPercentOfCreatures(0.001f);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
.addCreatures(templateId, 1)
.build(1);
new EncounterBuilder(Tiles.Tile.TILE_TREE.id)
.addCreatures(templateId, 1)
.build(1);
}
}

View File

@@ -0,0 +1,114 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.Servers;
import com.wurmonline.server.behaviours.Vehicle;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class HornedPony implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
int[] types = {
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_MOVE_GLOBAL,
CreatureTypes.C_TYPE_VEHICLE,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_LEADABLE,
CreatureTypes.C_TYPE_SWIMMING,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_DOMINATABLE,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_NON_NEWBIE,
CreatureTypes.C_TYPE_HORSE,
CreatureTypes.C_TYPE_ANIMAL
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.horned.pony", "Horned pony", "Not a unicorn. Unicorns are fictional.",
"model.creature.quadraped.unicorn", types, BodyTemplate.TYPE_HORSE, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
"sound.death.horse", "sound.death.horse", "sound.combat.hit.horse", "sound.combat.hit.horse",
Servers.localServer.PVPSERVER ? 0.75f : 0.4f, 17f, 13f, 15.0f, 0.0f, 0.0f, 1.4f, 800,
new int[]{ItemList.heart}, 10, 74, Materials.MATERIAL_MEAT_HORSE);
builder.skill(SkillList.BODY_STRENGTH, Servers.localServer.PVPSERVER ? 40.0f : 60.0f);
builder.skill(SkillList.BODY_STAMINA, 60.0f);
builder.skill(SkillList.BODY_CONTROL, 55.0f);
builder.skill(SkillList.MIND_LOGICAL, 40.0f);
builder.skill(SkillList.MIND_SPEED, 50.0f);
builder.skill(SkillList.SOUL_STRENGTH, 30.0f);
builder.skill(SkillList.SOUL_DEPTH, 30.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("horn");
builder.maxAge(100);
builder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
builder.baseCombatRating(Servers.localServer.PVPSERVER ? 15.0f : 20.0f);
builder.combatDamageType(Wound.TYPE_INTERNAL);
builder.maxPercentOfCreatures(0.001f);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
public ModVehicleBehaviour getVehicleBehaviour() {
return new ModVehicleBehaviour() {
@Override
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
}
@Override
public void setSettingsForVehicle(Creature creature, Vehicle v) {
VehicleFacade vehicle = wrap(v);
vehicle.createPassengerSeats(0);
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
vehicle.setSeatOffset(0, 0.0f, 0.0f, 0.0f);
vehicle.setCreature(true);
vehicle.setSkillNeeded(35.0f);
vehicle.setName(creature.getName());
vehicle.setMaxHeightDiff(0.08f);
vehicle.setMaxDepth(-1.7f);
vehicle.setMaxSpeed(40.0f);
vehicle.setCommandType((byte) 3);
vehicle.setCanHaveEquipment(Servers.localServer.PVPSERVER ? false : true);
}
};
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_ENCHANTED_GRASS.id)
.addCreatures(templateId, 1)
.build(2);
}
}

View File

@@ -0,0 +1,80 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class LargeBoar implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_ANIMAL,
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.boar", "Large boar", "A large and strong boar.",
"model.creature.quadraped.boar.wild", types, (byte) BodyTemplate.TYPE_DOG, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
"sound.death.pig", "sound.death.pig", "sound.combat.hit.pig", "sound.combat.hit.pig",
0.5f, 8f, 0f, 10.0f, 14.0f, 0.0f, 1.2f, 500,
new int[]{ItemList.fur, ItemList.heart}, 10, 74, Materials.MATERIAL_MEAT_PORK);
builder.skill(SkillList.BODY_STRENGTH, 30.0f);
builder.skill(SkillList.BODY_STAMINA, 35.0f);
builder.skill(SkillList.BODY_CONTROL, 45.0f);
builder.skill(SkillList.MIND_LOGICAL, 5.0f);
builder.skill(SkillList.MIND_SPEED, 10.0f);
builder.skill(SkillList.SOUL_STRENGTH, 34.0f);
builder.skill(SkillList.SOUL_DEPTH, 3.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 40.0f);
builder.skill(SkillList.GROUP_FIGHTING, 30.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("kick");
builder.maxAge(100);
builder.armourType(ArmourTypes.ARMOUR_CLOTH);
builder.baseCombatRating(18.0f);
builder.combatDamageType(Wound.TYPE_CRUSH);
builder.denMaterial(Materials.MATERIAL_WOOD_BIRCH);
builder.denName("boar lair");
builder.maxPercentOfCreatures(0.01f);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_SAND.id)
.addCreatures(templateId, 1)
.build(2);
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
.addCreatures(templateId, 1)
.build(3);
}
}

View File

@@ -0,0 +1,43 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.creatures.CreatureTemplate;
import com.wurmonline.server.creatures.CreatureTemplateFactory;
import com.wurmonline.server.creatures.CreatureTemplateIds;
import com.wurmonline.server.creatures.NoSuchCreatureTemplateException;
public class LavaFiend implements ModCreature {
private int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
templateId = CreatureTemplateIds.LAVA_CREATURE_CID;
return new CreatureTemplateBuilder(templateId) {
@Override
public CreatureTemplate build() {
try {
return CreatureTemplateFactory.getInstance().getTemplate(templateId);
} catch (NoSuchCreatureTemplateException e) {
throw new RuntimeException(e);
}
}
};
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_SAND.id)
.addCreatures(templateId, 1)
.build(1);
}
}

View File

@@ -0,0 +1,63 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class MacroSlayer implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
int[] types = {
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_SWIMMING,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_HERBIVORE,
CreatureTypes.C_TYPE_FENCEBREAKER,
CreatureTypes.C_TYPE_NON_NEWBIE,
CreatureTypes.C_TYPE_NO_REBIRTH
};
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.macro.slayer", "Blobber the Macro Slayer",
"The incarnation of the Macro King. Here to claim the souls of those who challenge his rightful rule.", "model.blob",
types, BodyTemplate.TYPE_DRAGON, (short) 5, (byte) 0, (short) 350, (short) 100, (short) 60,
"sound.death.dragon", "sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
0.001f, 10.0f, 10.0f, 10.0f, 10.0f, 10.0f, 0.5f, 500,
new int[]{}, 40, 100, Materials.MATERIAL_MEAT_HUMANOID);
builder.skill(SkillList.BODY_STRENGTH, 90.0f);
builder.skill(SkillList.BODY_STAMINA, 70.0f);
builder.skill(SkillList.BODY_CONTROL, 60.0f);
builder.skill(SkillList.MIND_LOGICAL, 35.0f);
builder.skill(SkillList.MIND_SPEED, 45.0f);
builder.skill(SkillList.SOUL_STRENGTH, 80.0f);
builder.skill(SkillList.SOUL_DEPTH, 80.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 80.0f);
builder.skill(SkillList.GROUP_FIGHTING, 80.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("macro");
builder.kickDamString("macro");
builder.maxAge(200);
builder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
builder.baseCombatRating(99.0f);
builder.combatDamageType(Wound.TYPE_WATER);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
return;
}
}

View File

@@ -0,0 +1,64 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class Reaper implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
int[] types = {
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_SWIMMING,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_HERBIVORE,
CreatureTypes.C_TYPE_FENCEBREAKER,
CreatureTypes.C_TYPE_NON_NEWBIE,
CreatureTypes.C_TYPE_NO_REBIRTH
};
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.reaper", "Reaper",
"The reaper, here to claim the soul of a powerful creature... and anything else.", "model.creature.gmdark",
types, BodyTemplate.TYPE_HUMAN, (short) 20, (byte) 0, (short) 350, (short) 100, (short) 60, "sound.death.dragon",
"sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
0.03f, 35.0f, 45.0f, 22.0f, 40.0f, 0.0f, 2.5f, 500,
new int[]{ItemList.boneCollar}, 40, 100, Materials.MATERIAL_MEAT_HUMANOID);
builder.skill(SkillList.BODY_STRENGTH, 60.0f);
builder.skill(SkillList.BODY_STAMINA, 70.0f);
builder.skill(SkillList.BODY_CONTROL, 60.0f);
builder.skill(SkillList.MIND_LOGICAL, 35.0f);
builder.skill(SkillList.MIND_SPEED, 45.0f);
builder.skill(SkillList.SOUL_STRENGTH, 80.0f);
builder.skill(SkillList.SOUL_DEPTH, 80.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 80.0f);
builder.skill(SkillList.GROUP_FIGHTING, 80.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("slice");
builder.kickDamString("reap");
builder.maxAge(200);
builder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
builder.baseCombatRating(55.0f);
builder.combatDamageType(Wound.TYPE_INFECTION);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
return;
}
}

View File

@@ -0,0 +1,51 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.skills.SkillList;
public class RobZombie implements ModCreature, CreatureTypes {
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_HERBIVORE,
CreatureTypes.C_TYPE_UNDEAD,
CreatureTypes.C_TYPE_TRADER,
CreatureTypes.C_TYPE_NPC_TRADER};
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.zombie.rob", "Rob Zombie",
"This is Rob Zombie. He is known to eat brains when you do not buy things from him.", "model.creature.humanoid.human.player.zombie",
types, (byte) 0, (short) 20, (byte) 0, (short) 350, (short) 100, (short) 60,
"sound.death.zombie", "sound.death.zombie", "sound.combat.hit.zombie", "sound.combat.hit.zombie",
0.005f, 150.0f, 150.0f, 150.0f, 0.0f, 0.0f, 0.5f, 500, new int[]{868, 867}, 40, 100, (byte) 0);
builder.skill(SkillList.BODY_STRENGTH, 99.0f);
builder.skill(SkillList.BODY_STAMINA, 99.0f);
builder.skill(SkillList.BODY_CONTROL, 99.0f);
builder.skill(SkillList.MIND_LOGICAL, 99.0f);
builder.skill(SkillList.MIND_SPEED, 99.0f);
builder.skill(SkillList.SOUL_STRENGTH, 99.0f);
builder.skill(SkillList.SOUL_DEPTH, 99.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 99.0f);
builder.skill(SkillList.GROUP_FIGHTING, 99.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("decimate");
builder.kickDamString("decimate");
builder.maxAge(200);
builder.armourType(10);
builder.baseCombatRating(99.0f);
builder.combatDamageType((byte)2);
builder.maxGroupAttackSize(100);
return builder;
}
@Override
public void addEncounters() {
return;
}
}

View File

@@ -0,0 +1,46 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.creatures.CreatureTemplate;
import com.wurmonline.server.creatures.CreatureTemplateFactory;
import com.wurmonline.server.creatures.CreatureTemplateIds;
import com.wurmonline.server.creatures.NoSuchCreatureTemplateException;
public class SolDemon implements ModCreature {
private int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
templateId = CreatureTemplateIds.DEMON_SOL_CID;
return new CreatureTemplateBuilder(templateId) {
@Override
public CreatureTemplate build() {
try {
return CreatureTemplateFactory.getInstance().getTemplate(templateId);
} catch (NoSuchCreatureTemplateException e) {
throw new RuntimeException(e);
}
}
};
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_SAND.id)
.addCreatures(templateId, 2)
.build(1);
new EncounterBuilder(Tiles.Tile.TILE_MYCELIUM.id)
.addCreatures(templateId, 2)
.build(3);
}
}

View File

@@ -0,0 +1,64 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class SpectralDrake implements ModCreature {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
int[] types = {
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_SWIMMING,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_HERBIVORE,
CreatureTypes.C_TYPE_FENCEBREAKER,
CreatureTypes.C_TYPE_NON_NEWBIE,
CreatureTypes.C_TYPE_NO_REBIRTH
};
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.spectraldrake", "Spectral drake",
"The spectral incarnation of a defeated dragon.", "model.creature.drake.spirit", types, BodyTemplate.TYPE_DRAGON,
(short) 20, (byte) 0, (short) 350, (short) 100, (short) 60, "sound.death.dragon", "sound.death.dragon",
"sound.combat.hit.dragon", "sound.combat.hit.dragon",
0.06f, 45.0f, 50.0f, 22.0f, 45.0f, 0.0f, 2.0f, 500,
new int[]{ItemList.boneCollar}, 40, 100, Materials.MATERIAL_MEAT_DRAGON);
builder.skill(SkillList.BODY_STRENGTH, 60.0f);
builder.skill(SkillList.BODY_STAMINA, 70.0f);
builder.skill(SkillList.BODY_CONTROL, 60.0f);
builder.skill(SkillList.MIND_LOGICAL, 35.0f);
builder.skill(SkillList.MIND_SPEED, 45.0f);
builder.skill(SkillList.SOUL_STRENGTH, 70.0f);
builder.skill(SkillList.SOUL_DEPTH, 70.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 85.0f);
builder.skill(SkillList.GROUP_FIGHTING, 75.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("claw");
builder.kickDamString("wingbuff");
builder.maxAge(200);
builder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
builder.baseCombatRating(60.0f);
builder.combatDamageType(Wound.TYPE_COLD);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
return;
}
}

View File

@@ -0,0 +1,80 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class SpiritTroll implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
// new int[]{7, 6, 40, 13, 16, 18, 29, 30, 32, 36, 39, 45, 60, 61}; - Troll
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_FENCEBREAKER,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_REGENERATING,
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_CLIMBER,
CreatureTypes.C_TYPE_UNDEAD,
CreatureTypes.C_TYPE_DETECTINVIS,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.spirit.troll", "Spirit troll", "A spirit troll.",
"model.creature.humanoid.troll.standard", types, BodyTemplate.TYPE_HUMAN, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
"sound.death.troll", "sound.death.troll", "sound.combat.hit.troll", "sound.combat.hit.troll",
0.15f, 15f, 17f, 19.0f, 0.0f, 0.0f, 1.2f, 500,
new int[]{}, 10, 74, (byte) 82);
builder.skill(SkillList.BODY_STRENGTH, 45.0f);
builder.skill(SkillList.BODY_STAMINA, 40.0f);
builder.skill(SkillList.BODY_CONTROL, 45.0f);
builder.skill(SkillList.MIND_LOGICAL, 30.0f);
builder.skill(SkillList.MIND_SPEED, 30.0f);
builder.skill(SkillList.SOUL_STRENGTH, 30.0f);
builder.skill(SkillList.SOUL_DEPTH, 30.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
builder.skill(SkillList.GROUP_FIGHTING, 30.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("maul");
builder.maxAge(100);
builder.armourType(ArmourTypes.ARMOUR_LEATHER);
builder.baseCombatRating(26.0f);
builder.combatDamageType(Wound.TYPE_COLD);
builder.denMaterial(Materials.MATERIAL_WOOD_BIRCH);
builder.denName("spirit troll lair");
builder.maxPercentOfCreatures(0.001f);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_SNOW.id)
.addCreatures(templateId, 1)
.build(1);
}
}

View File

@@ -0,0 +1,77 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.behaviours.Vehicle;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.creatures.CreatureTemplate;
import com.wurmonline.server.creatures.CreatureTemplateFactory;
import com.wurmonline.server.creatures.CreatureTemplateIds;
import com.wurmonline.server.creatures.NoSuchCreatureTemplateException;
import com.wurmonline.server.items.Item;
public class Worg implements ModCreature {
private int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
templateId = CreatureTemplateIds.WORG_CID;
return new CreatureTemplateBuilder(templateId) {
@Override
public CreatureTemplate build() {
try {
return CreatureTemplateFactory.getInstance().getTemplate(templateId);
} catch (NoSuchCreatureTemplateException e) {
throw new RuntimeException(e);
}
}
};
}
public ModVehicleBehaviour getVehicleBehaviour() {
return new ModVehicleBehaviour() {
@Override
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
}
@Override
public void setSettingsForVehicle(Creature creature, Vehicle v) {
VehicleFacade vehicle = wrap(v);
vehicle.createPassengerSeats(0);
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
vehicle.setSeatOffset(0, -0.2f, 0.0f, -0.1f);
vehicle.setCreature(true);
vehicle.setSkillNeeded(30.0f);
vehicle.setName(creature.getName());
vehicle.setMaxHeightDiff(0.07f);
vehicle.setMaxDepth(-1.7f);
vehicle.setMaxSpeed(50.0f);
vehicle.setCommandType((byte) 3);
vehicle.setCanHaveEquipment(false);
}
};
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
.addCreatures(templateId, 2)
.build(1);
new EncounterBuilder(Tiles.Tile.TILE_STEPPE.id)
.addCreatures(templateId, 2)
.build(3);
}
}

View File

@@ -0,0 +1,121 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.Servers;
import com.wurmonline.server.behaviours.Vehicle;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class WyvernBlack implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
int[] types = {
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_MOVE_GLOBAL,
CreatureTypes.C_TYPE_VEHICLE,
CreatureTypes.C_TYPE_REGENERATING,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_SWIMMING,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_DOMINATABLE,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_NON_NEWBIE,
CreatureTypes.C_TYPE_ANIMAL
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.wyvern.black", "Black wyvern", "A battle-hardened wyvern with scales as black as night.",
"model.creature.drake.black", types, BodyTemplate.TYPE_DRAGON, (short) 10, (byte) 0, (short) 350, (short) 100, (short) 60,
"sound.death.dragon", "sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
Servers.localServer.PVPSERVER ? 0.65f : 0.35f, 20.0f, 23.0f, 0.0f, 0.0f, 0.0f, 1.3f, 800,
new int[]{ItemList.animalHide, ItemList.tail, ItemList.eye, ItemList.gland, ItemList.tooth}, 40, 70, Materials.MATERIAL_MEAT_DRAGON);
builder.skill(SkillList.BODY_STRENGTH, Servers.localServer.PVPSERVER ? 39f : 54f);
builder.skill(SkillList.BODY_STAMINA, 50.0f);
builder.skill(SkillList.BODY_CONTROL, 50.0f);
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
builder.skill(SkillList.MIND_SPEED, 50.0f);
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 70.0f);
builder.skill(SkillList.GROUP_FIGHTING, 70.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("bite");
builder.kickDamString("wingbuff");
builder.maxAge(200);
builder.armourType(Servers.localServer.PVPSERVER ? ArmourTypes.ARMOUR_CLOTH : ArmourTypes.ARMOUR_SCALE_DRAGON);
builder.baseCombatRating(28.0f);
builder.combatDamageType(Wound.TYPE_PIERCE);
builder.maxGroupAttackSize(10);
templateId = builder.getTemplateId();
return builder;
}
public ModVehicleBehaviour getVehicleBehaviour() {
return new ModVehicleBehaviour() {
@Override
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
}
@Override
public void setSettingsForVehicle(Creature creature, Vehicle v) {
VehicleFacade vehicle = wrap(v);
vehicle.createPassengerSeats(0);
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
vehicle.setSeatOffset(0, 0.2f, 0.0f, 0.0f);
vehicle.setCanHaveEquipment(true);
vehicle.setCreature(true);
vehicle.setSkillNeeded(30.0f);
vehicle.setName(creature.getName());
vehicle.setMaxHeightDiff(0.15f);
vehicle.setMaxDepth(-50f);
vehicle.setMaxSpeed(51.0f);
vehicle.setCommandType((byte) 3);
}
};
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_SAND.id)
.addCreatures(templateId, 1)
.build(1);
if(Servers.localServer.PVPSERVER){
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
.addCreatures(templateId, 1)
.build(1);
new EncounterBuilder(Tiles.Tile.TILE_TREE.id)
.addCreatures(templateId, 1)
.build(1);
}
}
}

View File

@@ -0,0 +1,114 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.Servers;
import com.wurmonline.server.behaviours.Vehicle;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class WyvernGreen implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
int[] types = {
CreatureTypes.C_TYPE_HERBIVORE,
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_VEHICLE,
CreatureTypes.C_TYPE_REGENERATING,
CreatureTypes.C_TYPE_DOMINATABLE,
CreatureTypes.C_TYPE_SWIMMING,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_NON_NEWBIE,
CreatureTypes.C_TYPE_ANIMAL,
CreatureTypes.C_TYPE_GRAZER
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.wyvern.green", "Green wyvern", "A battle-hardened wyvern with scales as green as the leaves.",
"model.creature.drake.green", types, BodyTemplate.TYPE_DRAGON, (short) 10, (byte) 0, (short) 350, (short) 100, (short) 60,
"sound.death.dragon", "sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
Servers.localServer.PVPSERVER ? 0.7f : 0.4f, 20.0f, 23.0f, 0.0f, 0.0f, 0.0f, 1.7f, 1500,
new int[]{ItemList.animalHide, ItemList.tail, ItemList.eye, ItemList.gland, ItemList.tooth}, 40, 70, Materials.MATERIAL_MEAT_DRAGON);
builder.skill(SkillList.BODY_STRENGTH, Servers.localServer.PVPSERVER ? 40f : 55f);
builder.skill(SkillList.BODY_STAMINA, 50.0f);
builder.skill(SkillList.BODY_CONTROL, 50.0f);
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
builder.skill(SkillList.MIND_SPEED, 50.0f);
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 70.0f);
builder.skill(SkillList.GROUP_FIGHTING, 70.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("bite");
builder.kickDamString("wingbuff");
builder.maxAge(200);
builder.armourType(Servers.localServer.PVPSERVER ? ArmourTypes.ARMOUR_CLOTH : ArmourTypes.ARMOUR_SCALE_DRAGON);
builder.baseCombatRating(27.0f);
builder.combatDamageType(Wound.TYPE_ACID);
builder.maxGroupAttackSize(10);
templateId = builder.getTemplateId();
return builder;
}
public ModVehicleBehaviour getVehicleBehaviour() {
return new ModVehicleBehaviour() {
@Override
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
}
@Override
public void setSettingsForVehicle(Creature creature, Vehicle v) {
VehicleFacade vehicle = wrap(v);
vehicle.createPassengerSeats(0);
vehicle.setSeatFightMod(0, 0.9f, 1.2f);
vehicle.setSeatOffset(0, 0.2f, 0.0f, 0.0f);
vehicle.setCanHaveEquipment(true);
vehicle.setCreature(true);
vehicle.setSkillNeeded(Servers.localServer.PVPSERVER ? 31f : 33f);
vehicle.setName(creature.getName());
vehicle.setMaxHeightDiff(0.18f);
vehicle.setMaxDepth(-10f);
vehicle.setMaxSpeed(52.0f);
vehicle.setCommandType((byte) 3);
}
};
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
.addCreatures(templateId, 1)
.build(1);
new EncounterBuilder(Tiles.Tile.TILE_TREE.id)
.addCreatures(templateId, 1)
.build(1);
}
}

View File

@@ -0,0 +1,110 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.Servers;
import com.wurmonline.server.behaviours.Vehicle;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class WyvernRed implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
int[] types = {
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_MOVE_GLOBAL,
CreatureTypes.C_TYPE_VEHICLE,
CreatureTypes.C_TYPE_REGENERATING,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_SWIMMING,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_DOMINATABLE,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.wyvern.red", "Red wyvern", "A battle-hardened wyvern with scales as red as fire.",
"model.creature.drake.red", types, BodyTemplate.TYPE_DRAGON, (short) 10, (byte) 0, (short) 350, (short) 100, (short) 60,
"sound.death.dragon", "sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
Servers.localServer.PVPSERVER ? 0.6f : 0.17f, 22.0f, 25.0f, 0.0f, 0.0f, 0.0f, 1.4f, 900,
new int[]{ItemList.animalHide, ItemList.tail, ItemList.eye, ItemList.gland, ItemList.tooth}, 40, 70, Materials.MATERIAL_MEAT_DRAGON);
builder.skill(SkillList.BODY_STRENGTH, Servers.localServer.PVPSERVER ? 37f : 52f);
builder.skill(SkillList.BODY_STAMINA, 50.0f);
builder.skill(SkillList.BODY_CONTROL, 50.0f);
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
builder.skill(SkillList.MIND_SPEED, 50.0f);
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 75.0f);
builder.skill(SkillList.GROUP_FIGHTING, 75.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("bite");
builder.kickDamString("wingbuff");
builder.maxAge(200);
builder.armourType(Servers.localServer.PVPSERVER ? ArmourTypes.ARMOUR_LEATHER : ArmourTypes.ARMOUR_SCALE_DRAGON);
builder.baseCombatRating(30.0f);
builder.combatDamageType(Wound.TYPE_BURN);
builder.maxGroupAttackSize(10);
templateId = builder.getTemplateId();
return builder;
}
public ModVehicleBehaviour getVehicleBehaviour() {
return new ModVehicleBehaviour() {
@Override
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
}
@Override
public void setSettingsForVehicle(Creature creature, Vehicle v) {
VehicleFacade vehicle = wrap(v);
vehicle.createPassengerSeats(0);
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
vehicle.setSeatOffset(0, 0.2f, 0.0f, 0.0f);
vehicle.setCreature(true);
vehicle.setSkillNeeded(Servers.localServer.PVPSERVER ? 35 : 43f);
vehicle.setName(creature.getName());
vehicle.setMaxHeightDiff(Servers.localServer.PVPSERVER ? 0.15f : 0.10f);
vehicle.setMaxDepth(-50f);
vehicle.setMaxSpeed(50.0f);
vehicle.setCommandType((byte) 3);
vehicle.setCanHaveEquipment(true);
}
};
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_ROCK.id)
.addCreatures(templateId, 1)
.build(1);
}
}

View File

@@ -0,0 +1,117 @@
package mod.sin.creatures;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
import com.wurmonline.mesh.Tiles;
import com.wurmonline.server.Servers;
import com.wurmonline.server.behaviours.Vehicle;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.Creature;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Item;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class WyvernWhite implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
int[] types = {
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_MOVE_GLOBAL,
CreatureTypes.C_TYPE_VEHICLE,
CreatureTypes.C_TYPE_REGENERATING,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_SWIMMING,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_DOMINATABLE,
CreatureTypes.C_TYPE_MONSTER,
CreatureTypes.C_TYPE_NON_NEWBIE,
CreatureTypes.C_TYPE_ANIMAL
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.wyvern.white", "White wyvern", "A battle-hardened wyvern with scales as white as the moon.",
"model.creature.drake.white", types, BodyTemplate.TYPE_DRAGON, (short) 10, (byte) 0, (short) 350, (short) 100, (short) 60,
"sound.death.dragon", "sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
Servers.localServer.PVPSERVER ? 0.7f : 0.3f, 17.0f, 20.0f, 0.0f, 0.0f, 0.0f, 1.4f, 900,
new int[]{ItemList.animalHide, ItemList.tail, ItemList.eye, ItemList.gland, ItemList.tooth}, 40, 70, Materials.MATERIAL_MEAT_DRAGON);
builder.skill(SkillList.BODY_STRENGTH, Servers.localServer.PVPSERVER ? 43f : 58f);
builder.skill(SkillList.BODY_STAMINA, 50.0f);
builder.skill(SkillList.BODY_CONTROL, 50.0f);
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
builder.skill(SkillList.MIND_SPEED, 50.0f);
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 70.0f);
builder.skill(SkillList.GROUP_FIGHTING, 70.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("bite");
builder.kickDamString("wingbuff");
builder.maxAge(200);
builder.armourType(Servers.localServer.PVPSERVER ? ArmourTypes.ARMOUR_CLOTH : ArmourTypes.ARMOUR_SCALE_DRAGON);
builder.baseCombatRating(25.0f);
builder.combatDamageType(Wound.TYPE_COLD);
builder.maxGroupAttackSize(10);
templateId = builder.getTemplateId();
return builder;
}
public ModVehicleBehaviour getVehicleBehaviour() {
return new ModVehicleBehaviour() {
@Override
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
}
@Override
public void setSettingsForVehicle(Creature creature, Vehicle v) {
VehicleFacade vehicle = wrap(v);
vehicle.createPassengerSeats(0);
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
vehicle.setSeatOffset(0, 0.2f, 0.0f, 0.0f);
vehicle.setCreature(true);
vehicle.setSkillNeeded(Servers.localServer.PVPSERVER ? 33f : 40f);
vehicle.setName(creature.getName());
vehicle.setMaxHeightDiff(Servers.localServer.PVPSERVER ? 0.15f : 0.10f);
vehicle.setMaxDepth(-50f);
vehicle.setMaxSpeed(53.0f);
vehicle.setCommandType((byte) 3);
vehicle.setCanHaveEquipment(true);
}
};
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
new EncounterBuilder(Tiles.Tile.TILE_SNOW.id)
.addCreatures(templateId, 1)
.build(1);
if(Servers.localServer.PVPSERVER){
new EncounterBuilder(Tiles.Tile.TILE_TUNDRA.id)
.addCreatures(templateId, 1)
.build(1);
}
}
}

View File

@@ -0,0 +1,70 @@
package mod.sin.creatures.titans;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class Ifrit implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.raid.ifrit", "Ifrit", "A valiant warrior of the flame. You feel the presence of Magranon.",
"model.creature.humanoid.giant.juggernaut", types, BodyTemplate.TYPE_HUMAN, (short) 5, (byte) 0, (short) 350, (short) 100, (short) 60,
"sound.death.magranon.juggernaut", "sound.death.magranon.juggernaut", "sound.combat.hit.magranon.juggernaut", "sound.combat.hit.magranon.juggernaut",
0.014f, 10.0f, 13.0f, 0.0f, 0.0f, 0.0f, 0.5f, 400,
new int[]{}, 40, 100, Materials.MATERIAL_MEAT_HUMANOID);
builder.skill(SkillList.BODY_STRENGTH, 99.0f);
builder.skill(SkillList.BODY_STAMINA, 99.0f);
builder.skill(SkillList.BODY_CONTROL, 99.0f);
builder.skill(SkillList.MIND_LOGICAL, 99.0f);
builder.skill(SkillList.MIND_SPEED, 99.0f);
builder.skill(SkillList.SOUL_STRENGTH, 99.0f);
builder.skill(SkillList.SOUL_DEPTH, 99.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 99.0f);
builder.skill(SkillList.GROUP_FIGHTING, 99.0f);
builder.skill(SkillList.SCYTHE, 99.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("burn");
builder.kickDamString("ignite");
builder.maxAge(200);
builder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
builder.baseCombatRating(99.0f);
builder.combatDamageType(Wound.TYPE_BURN);
builder.maxGroupAttackSize(150);
//builder.usesNewAttacks(true);
// float baseDamage, float criticalChance, float baseSpeed, int attackReach, int weightGroup, byte damageType, boolean usesWeapon, int rounds, float waitUntilNextAttack
//builder.addPrimaryAttack(new AttackAction("slashe", AttackIdentifier.STRIKE, new AttackValues(70f, 0.05f, 5f, 3, 1, Wound.TYPE_SLASH, false, 1, 1.0f)));
//builder.addPrimaryAttack(new AttackAction("eviscerate", AttackIdentifier.STRIKE, new AttackValues(100f, 0.5f, 30f, 3, 1, Wound.TYPE_INFECTION, false, 4, 5.0f)));
//builder.addSecondaryAttack(new AttackAction("annihilate", AttackIdentifier.KICK, new AttackValues(200f, 0.3f, 60f, 2, 1, Wound.TYPE_ACID, false, 7, 8.0f)));
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
return;
}
}

View File

@@ -0,0 +1,67 @@
package mod.sin.creatures.titans;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class IfritFiend implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_DETECTINVIS,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.ifrit.fiend", "Fiend of Ifrit", "A champion of Ifrit.",
"model.creature.humanoid.lavacreature", types, BodyTemplate.TYPE_HUMAN, (short) 30, (byte) 0, (short) 85, (short) 50, (short) 85,
"sound.death.lizard", "sound.death.lizard", "sound.combat.hit.lizard", "sound.combat.hit.lizard",
0.3f, 23f, 0f, 19f, 0.0f, 0.0f, 2.0f, 2000,
new int[]{}, 15, 70, Materials.MATERIAL_MEAT_HUMANOID);
builder.skill(SkillList.BODY_STRENGTH, 55.0f);
builder.skill(SkillList.BODY_STAMINA, 65.0f);
builder.skill(SkillList.BODY_CONTROL, 60.0f);
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
builder.skill(SkillList.MIND_SPEED, 50.0f);
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("burn");
builder.maxAge(100);
builder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
builder.baseCombatRating(25.0f);
builder.combatDamageType(Wound.TYPE_BURN);
builder.maxPercentOfCreatures(0.005f);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
}
}

View File

@@ -0,0 +1,67 @@
package mod.sin.creatures.titans;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class IfritSpider implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_DETECTINVIS,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.ifrit.spider", "Servant of Ifrit", "A mindless minion of Ifrit.",
"model.creature.multiped.spider.lava", types, BodyTemplate.TYPE_SPIDER, (short) 30, (byte) 0, (short) 85, (short) 50, (short) 85,
"sound.death.spider", "sound.death.spider", "sound.combat.hit.spider", "sound.combat.hit.spider",
0.5f, 15f, 0f, 13f, 0.0f, 0.0f, 1.7f, 1500,
new int[]{}, 15, 70, Materials.MATERIAL_MEAT_INSECT);
builder.skill(SkillList.BODY_STRENGTH, 65.0f);
builder.skill(SkillList.BODY_STAMINA, 65.0f);
builder.skill(SkillList.BODY_CONTROL, 60.0f);
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
builder.skill(SkillList.MIND_SPEED, 50.0f);
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("burn");
builder.maxAge(100);
builder.armourType(ArmourTypes.ARMOUR_CLOTH);
builder.baseCombatRating(15.0f);
builder.combatDamageType(Wound.TYPE_BURN);
builder.maxPercentOfCreatures(0.005f);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
}
}

View File

@@ -0,0 +1,70 @@
package mod.sin.creatures.titans;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class Lilith implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.raid.lilith", "Lilith", "A bold warrior corrupted by darkness. You feel the presence of Libila.",
"model.creature.humanoid.giant.incarnation", types, BodyTemplate.TYPE_HUMAN, (short) 5, (byte) 1, (short) 350, (short) 100, (short) 60,
"sound.death.libila.incarnation", "sound.death.libila.incarnation", "sound.combat.hit.libila.incarnation", "sound.combat.hit.libila.incarnation",
0.015f, 8.0f, 11.0f, 0.0f, 0.0f, 0.0f, 0.5f, 400,
new int[]{}, 40, 100, Materials.MATERIAL_MEAT_HUMANOID);
builder.skill(SkillList.BODY_STRENGTH, 99.0f);
builder.skill(SkillList.BODY_STAMINA, 99.0f);
builder.skill(SkillList.BODY_CONTROL, 99.0f);
builder.skill(SkillList.MIND_LOGICAL, 99.0f);
builder.skill(SkillList.MIND_SPEED, 99.0f);
builder.skill(SkillList.SOUL_STRENGTH, 99.0f);
builder.skill(SkillList.SOUL_DEPTH, 99.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 99.0f);
builder.skill(SkillList.GROUP_FIGHTING, 99.0f);
builder.skill(SkillList.SCYTHE, 99.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("slashe");
builder.kickDamString("eviscerate");
builder.maxAge(200);
builder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
builder.baseCombatRating(99.0f);
builder.combatDamageType(Wound.TYPE_INFECTION);
builder.maxGroupAttackSize(150);
//builder.usesNewAttacks(true);
// float baseDamage, float criticalChance, float baseSpeed, int attackReach, int weightGroup, byte damageType, boolean usesWeapon, int rounds, float waitUntilNextAttack
//builder.addPrimaryAttack(new AttackAction("slashe", AttackIdentifier.STRIKE, new AttackValues(70f, 0.05f, 5f, 3, 1, Wound.TYPE_SLASH, false, 1, 1.0f)));
//builder.addPrimaryAttack(new AttackAction("eviscerate", AttackIdentifier.STRIKE, new AttackValues(100f, 0.5f, 30f, 3, 1, Wound.TYPE_INFECTION, false, 4, 5.0f)));
//builder.addSecondaryAttack(new AttackAction("annihilate", AttackIdentifier.KICK, new AttackValues(200f, 0.3f, 60f, 2, 1, Wound.TYPE_ACID, false, 7, 8.0f)));
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
return;
}
}

View File

@@ -0,0 +1,67 @@
package mod.sin.creatures.titans;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class LilithWraith implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_DETECTINVIS,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.lilith.wraith", "Wraith of Lilith", "A champion of Lilith.",
"model.creature.humanoid.human.spirit.wraith", types, BodyTemplate.TYPE_HUMAN, (short) 30, (byte) 0, (short) 85, (short) 50, (short) 85,
"sound.death.spirit.male", "sound.death.spirit.female", "sound.combat.hit.spirit.male", "sound.combat.hit.spirit.female",
0.3f, 23f, 0f, 19f, 0.0f, 0.0f, 2.0f, 2000,
new int[]{}, 15, 70, Materials.MATERIAL_MEAT_HUMANOID);
builder.skill(SkillList.BODY_STRENGTH, 55.0f);
builder.skill(SkillList.BODY_STAMINA, 65.0f);
builder.skill(SkillList.BODY_CONTROL, 60.0f);
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
builder.skill(SkillList.MIND_SPEED, 50.0f);
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("claw");
builder.maxAge(100);
builder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
builder.baseCombatRating(25.0f);
builder.combatDamageType(Wound.TYPE_INFECTION);
builder.maxPercentOfCreatures(0.005f);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
}
}

View File

@@ -0,0 +1,67 @@
package mod.sin.creatures.titans;
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
import com.wurmonline.server.bodys.BodyTemplate;
import com.wurmonline.server.bodys.Wound;
import com.wurmonline.server.combat.ArmourTypes;
import com.wurmonline.server.creatures.CreatureTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class LilithZombie implements ModCreature, CreatureTypes {
public static int templateId;
@Override
public CreatureTemplateBuilder createCreateTemplateBuilder() {
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
int[] types = {
CreatureTypes.C_TYPE_MOVE_LOCAL,
CreatureTypes.C_TYPE_AGG_HUMAN,
CreatureTypes.C_TYPE_HUNTING,
CreatureTypes.C_TYPE_CARNIVORE,
CreatureTypes.C_TYPE_DETECTINVIS,
CreatureTypes.C_TYPE_NON_NEWBIE
};
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.lilith.zombie", "Servant of Lilith", "A mindless minion of Lilith.",
"model.creature.humanoid.human.player.zombie", types, BodyTemplate.TYPE_HUMAN, (short) 30, (byte) 0, (short) 85, (short) 50, (short) 85,
"sound.death.zombie", "sound.death.zombie", "sound.combat.hit.zombie", "sound.combat.hit.zombie",
0.5f, 15f, 0f, 13f, 0.0f, 0.0f, 1.7f, 1500,
new int[]{}, 15, 70, Materials.MATERIAL_MEAT_HUMANOID);
builder.skill(SkillList.BODY_STRENGTH, 65.0f);
builder.skill(SkillList.BODY_STAMINA, 65.0f);
builder.skill(SkillList.BODY_CONTROL, 60.0f);
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
builder.skill(SkillList.MIND_SPEED, 50.0f);
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
builder.handDamString("claw");
builder.maxAge(100);
builder.armourType(ArmourTypes.ARMOUR_CLOTH);
builder.baseCombatRating(15.0f);
builder.combatDamageType(Wound.TYPE_INFECTION);
builder.maxPercentOfCreatures(0.005f);
builder.maxGroupAttackSize(100);
templateId = builder.getTemplateId();
return builder;
}
@Override
public void addEncounters() {
if (templateId == 0)
return;
}
}

View File

@@ -0,0 +1,46 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
public class AffinityOrb implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(AffinityOrb.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
String name = "affinity orb";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("wyvern.affinityorb");
itemBuilder.name(name, "affinity orbs", "A valuable orb that infuses the user with hidden knowledge.");
itemBuilder.descriptions("brilliantly glowing", "strongly glowing", "faintly glowing", "barely glowing");
itemBuilder.itemTypes(new short[]{
ItemTypes.ITEM_TYPE_MAGIC,
ItemTypes.ITEM_TYPE_FULLPRICE,
ItemTypes.ITEM_TYPE_NOSELLBACK,
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
});
itemBuilder.imageNumber((short) 919);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(1, 1, 1);
itemBuilder.primarySkill((int) NOID);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.artifact.orbdoom");
itemBuilder.difficulty(5.0f);
itemBuilder.weightGrams(500);
itemBuilder.material(Materials.MATERIAL_CRYSTAL);
itemBuilder.value(3000000);
itemBuilder.isTraded(true);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
}

View File

@@ -0,0 +1,45 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
public class ArenaCache implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(ArenaCache.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
String name = "arena cache";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.arenacache");
itemBuilder.name(name, "arena caches", "A cache of goods from a supply depot, waiting to be opened. What could be inside?");
itemBuilder.itemTypes(new short[]{
ItemTypes.ITEM_TYPE_MAGIC,
ItemTypes.ITEM_TYPE_FULLPRICE,
ItemTypes.ITEM_TYPE_NOSELLBACK,
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
});
itemBuilder.imageNumber((short) 243);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(1, 1, 1);
itemBuilder.primarySkill((int) NOID);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.container.giftbox.");
itemBuilder.difficulty(5.0f);
itemBuilder.weightGrams(500);
itemBuilder.material(Materials.MATERIAL_GOLD);
itemBuilder.value(10000);
itemBuilder.isTraded(true);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
}

View File

@@ -0,0 +1,51 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
public class ArenaSupplyDepot implements MiscConstants {
public static Logger logger = Logger.getLogger(ArenaSupplyDepot.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
String name = "arena depot";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.arena.depot");
itemBuilder.name(name, "arena depots", "Contains a valuable cache of treasures.");
// {108, 135, 1, 31, 25, 51, 86, 52, 59, 44, 147, 176, 180, 209, 199}
itemBuilder.itemTypes(new short[]{
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_WOOD,
ItemTypes.ITEM_TYPE_NOTAKE,
ItemTypes.ITEM_TYPE_LOCKABLE,
ItemTypes.ITEM_TYPE_DECORATION,
ItemTypes.ITEM_TYPE_ONE_PER_TILE,
ItemTypes.ITEM_TYPE_OWNER_TURNABLE,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_MISSION,
ItemTypes.ITEM_TYPE_PLANTABLE
});
itemBuilder.imageNumber((short) 462);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(300, 300, 300);
itemBuilder.primarySkill((int) NOID);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.structure.war.supplydepot.2.0.");
itemBuilder.difficulty(5.0f);
itemBuilder.weightGrams(50000);
itemBuilder.material(Materials.MATERIAL_WOOD_BIRCH);
itemBuilder.value(5000);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
}

View File

@@ -0,0 +1,62 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.AdvancedCreationEntry;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.CreationRequirement;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class ArrowPackHunting {
public static Logger logger = Logger.getLogger(ArrowPackHunting.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
String name = "hunting arrow pack";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.arrowpack.hunting");
itemBuilder.name(name, "hunting arrow packs", "A pack of arrows, able to be unpacked into a full quiver.");
itemBuilder.descriptions("excellent", "good", "ok", "poor");
itemBuilder.itemTypes(new short[]{ // {108, 146, 44, 21, 147, 113} - War Arrow
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_WOOD
});
itemBuilder.imageNumber((short) 760);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(15, 15, 50);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.container.quiver.");
itemBuilder.difficulty(55.0f);
itemBuilder.weightGrams(2500);
itemBuilder.material(Materials.MATERIAL_WOOD_BIRCH);
itemBuilder.value(1000);
itemBuilder.isTraded(true);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
AdvancedCreationEntry huntingPack = CreationEntryCreator.createAdvancedEntry(SkillList.GROUP_FLETCHING,
ItemList.quiver, ItemList.arrowHunting, templateId,
false, false, 0.0F, true, false, 0, 50.0D, CreationCategories.FLETCHING);
huntingPack.addRequirement(new CreationRequirement(1, ItemList.arrowHunting, 39, true));
}
}
}

View File

@@ -0,0 +1,62 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.AdvancedCreationEntry;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.CreationRequirement;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class ArrowPackWar {
public static Logger logger = Logger.getLogger(ArrowPackWar.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
String name = "war arrow pack";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.arrowpack.war");
itemBuilder.name(name, "war arrow packs", "A pack of arrows, able to be unpacked into a full quiver.");
itemBuilder.descriptions("excellent", "good", "ok", "poor");
itemBuilder.itemTypes(new short[]{ // {108, 146, 44, 21, 147, 113} - War Arrow
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_WOOD
});
itemBuilder.imageNumber((short) 760);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(15, 15, 50);
itemBuilder.primarySkill(-10);
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.container.quiver.");
itemBuilder.difficulty(55.0f);
itemBuilder.weightGrams(2500);
itemBuilder.material(Materials.MATERIAL_WOOD_BIRCH);
itemBuilder.value(1000);
itemBuilder.isTraded(true);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
AdvancedCreationEntry huntingPack = CreationEntryCreator.createAdvancedEntry(SkillList.GROUP_FLETCHING,
ItemList.quiver, ItemList.arrowWar, templateId,
false, false, 0.0F, true, false, 0, 50.0D, CreationCategories.FLETCHING);
huntingPack.addRequirement(new CreationRequirement(1, ItemList.arrowWar, 39, true));
}
}
}

View File

@@ -0,0 +1,52 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
public class ChaosCrystal implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(ChaosCrystal.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
/* ItemTemplateCreatorContinued.createItemTemplate(737, "Valrei mission item", "items", "excellent", "good", "ok", "poor",
* "A weird item belonging on Valrei.",
* new short[]{32, 59, 147, 60},
* 462, 1, 0, 86400, 3, 5, 50, -10, MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY,
* "model.valrei.", 300.0f, 100, 21, 1, false);
*/
String name = "chaos crystal";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.chaoscrystal");
itemBuilder.name(name, "chaos crystals", "This volatile crystal will either enhance an item, or destroy it outright.");
itemBuilder.descriptions("brilliantly glowing", "strongly glowing", "faintly glowing", "barely glowing");
itemBuilder.itemTypes(new short[]{
ItemTypes.ITEM_TYPE_MAGIC,
ItemTypes.ITEM_TYPE_FULLPRICE,
ItemTypes.ITEM_TYPE_NOSELLBACK,
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
});
itemBuilder.imageNumber((short) 462);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(1, 1, 1);
itemBuilder.primarySkill((int) NOID);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.valrei.");
itemBuilder.difficulty(5.0f);
itemBuilder.weightGrams(250);
itemBuilder.material(Materials.MATERIAL_CRYSTAL);
itemBuilder.value(5000);
itemBuilder.isTraded(true);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
}

View File

@@ -0,0 +1,65 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.AdvancedCreationEntry;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.CreationRequirement;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class CoinDecoration implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(CoinDecoration.class.getName());
public static int templateId;
private String name = "coin pile";
public void createTemplate() throws IOException{
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.coin.pile");
itemBuilder.name(name, "coin piles", "A pile of decorative coins.");
itemBuilder.itemTypes(new short[]{ // {108, 21, 135, 86, 31, 51, 52, 157, 44, 92, 176} - Table
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_OWNER_DESTROYABLE,
ItemTypes.ITEM_TYPE_DESTROYABLE,
ItemTypes.ITEM_TYPE_TURNABLE,
ItemTypes.ITEM_TYPE_DECORATION,
ItemTypes.ITEM_TYPE_NOT_MISSION,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_COLORABLE
});
itemBuilder.imageNumber((short) 572);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(5, 5, 5);
itemBuilder.primarySkill(SkillList.MISCELLANEOUS);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.pile.coin.");
itemBuilder.difficulty(70.0f);
itemBuilder.weightGrams(1000);
itemBuilder.material(Materials.MATERIAL_COPPER);
itemBuilder.value(100);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.MISCELLANEOUS,
ItemList.coinCopper, ItemList.coinCopper, templateId, false, false, 0f, true, false, CreationCategories.DECORATION);
entry.addRequirement(new CreationRequirement(1, ItemList.coinCopper, 3, true));
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,65 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.AdvancedCreationEntry;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.CreationRequirement;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class CorpseDecoration implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(CorpseDecoration.class.getName());
public static int templateId;
private String name = "human corpse";
public void createTemplate() throws IOException{
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.corpse");
itemBuilder.name(name, "human corpses", "A human corpse.");
itemBuilder.itemTypes(new short[]{ // {108, 21, 135, 86, 31, 51, 52, 157, 44, 92, 176} - Table
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_OWNER_DESTROYABLE,
ItemTypes.ITEM_TYPE_DESTROYABLE,
ItemTypes.ITEM_TYPE_TURNABLE,
ItemTypes.ITEM_TYPE_DECORATION,
ItemTypes.ITEM_TYPE_NOT_MISSION,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_COLORABLE
});
itemBuilder.imageNumber((short) 40);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(20, 50, 200);
itemBuilder.primarySkill(SkillList.LEATHERWORKING);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.corpse.");
itemBuilder.difficulty(50.0f);
itemBuilder.weightGrams(50000);
itemBuilder.material(Materials.MATERIAL_FLESH);
itemBuilder.value(1000);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.LEATHERWORKING,
ItemList.leather, ItemList.leather, templateId, false, false, 0f, true, false, CreationCategories.DECORATION);
entry.addRequirement(new CreationRequirement(1, ItemList.leather, 3, true));
}else{
logger.info(name+" does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,62 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.AdvancedCreationEntry;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.CreationRequirement;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class DepthDrill implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(DepthDrill.class.getName());
public static int templateId;
private String name = "depth drill";
public void createTemplate() throws IOException{
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("wyvern.depthdrill");
itemBuilder.name(name, "depth drills", "A tool for determining dirt depth.");
itemBuilder.itemTypes(new short[]{
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_TOOL,
ItemTypes.ITEM_TYPE_WEAPON_PIERCE
});
itemBuilder.imageNumber((short) 60);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(6, 6, 96);
itemBuilder.primarySkill(SkillList.CARPENTRY_FINE);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.resource.shaft.");
itemBuilder.difficulty(30.0f);
itemBuilder.weightGrams(1100);
itemBuilder.material(Materials.MATERIAL_IRON);
itemBuilder.value(100);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
logger.info("Creating "+name+" creation entry, ID = "+templateId);
final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.CARPENTRY_FINE,
ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
}else{
logger.info("Depth Drill does not have a template ID on creation entry.");
}
}
}

View File

@@ -0,0 +1,43 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
public class DisintegrationRod implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(DisintegrationRod.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
String name = "Rod of Disintegration";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("item.mod.rod.disintegration");
itemBuilder.name(name, "rods of disintegration", "A rod designed for removal of ore veins and cave walls.");
itemBuilder.itemTypes(new short[]{ // {42, 53, 127, 155} - Rod of Transmutation {43, 42, 5, 76, 53, 127} - Sleep Powder
ItemTypes.ITEM_TYPE_FULLPRICE,
ItemTypes.ITEM_TYPE_NOSELLBACK,
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
});
itemBuilder.imageNumber((short) 1259);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(5, 10, 60);
itemBuilder.primarySkill((int) NOID);
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.tool.rodtrans.");
itemBuilder.difficulty(300.0f);
itemBuilder.weightGrams(1000);
itemBuilder.material(Materials.MATERIAL_STONE);
itemBuilder.value(50000);
itemBuilder.isTraded(true);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
}

View File

@@ -0,0 +1,43 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
public class EnchantOrb implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(EnchantOrb.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
String name = "enchant orb";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("wyvern.enchantorb");
itemBuilder.name(name, "enchant orbs", "It shimmers lightly, the magic inside waiting for a proper vessel.");
itemBuilder.descriptions("vibrant", "glowing", "faint", "empty");
itemBuilder.itemTypes(new short[]{
ITEM_TYPE_MAGIC,
ITEM_TYPE_INDESTRUCTIBLE
});
itemBuilder.imageNumber((short) 819);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(1, 1, 1);
itemBuilder.primarySkill((int) NOID);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.artifact.orbdoom");
itemBuilder.difficulty(5.0f);
itemBuilder.weightGrams(500);
itemBuilder.material((byte)52);
itemBuilder.value(50000);
itemBuilder.isTraded(true);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
}

View File

@@ -0,0 +1,52 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
public class EnchantersCrystal implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(EnchantersCrystal.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
/* ItemTemplateCreatorContinued.createItemTemplate(737, "Valrei mission item", "items", "excellent", "good", "ok", "poor",
* "A weird item belonging on Valrei.",
* new short[]{32, 59, 147, 60},
* 462, 1, 0, 86400, 3, 5, 50, -10, MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY,
* "model.valrei.", 300.0f, 100, 21, 1, false);
*/
String name = "enchanters crystal";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.crystal.enchanters");
itemBuilder.name(name, "enchanters crystals", "This crystal can manipulate the magical properties of an item.");
itemBuilder.descriptions("brilliantly glowing", "strongly glowing", "faintly glowing", "barely glowing");
itemBuilder.itemTypes(new short[]{
ItemTypes.ITEM_TYPE_MAGIC,
ItemTypes.ITEM_TYPE_FULLPRICE,
ItemTypes.ITEM_TYPE_NOSELLBACK,
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
});
itemBuilder.imageNumber((short) 462);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(1, 1, 1);
itemBuilder.primarySkill((int) NOID);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.valrei.");
itemBuilder.difficulty(5.0f);
itemBuilder.weightGrams(250);
itemBuilder.material(Materials.MATERIAL_CRYSTAL);
itemBuilder.value(5000);
itemBuilder.isTraded(true);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
}

View File

@@ -0,0 +1,72 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.AdvancedCreationEntry;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.CreationRequirement;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class EternalReservoir implements ItemTypes, MiscConstants {
protected static Logger logger = Logger.getLogger(EternalReservoir.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
String name = "eternal reservoir";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.eternal.reservoir");
itemBuilder.name(name, "eternal reservoir", "Fueled by the souls of the fallen, this black magic device stores souls that tend to nearby creatures and fires.");
itemBuilder.itemTypes(new short[]{ // {25, 49, 31, 52, 40} Stone of Soulfall {108, 31, 25, 194, 52, 44, 195, 67, 49, 123, 178, 157} // Colossus
ItemTypes.ITEM_TYPE_STONE,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_NOTAKE,
ItemTypes.ITEM_TYPE_DECORATION,
ItemTypes.ITEM_TYPE_USE_GROUND_ONLY,
ItemTypes.ITEM_TYPE_NEVER_SHOW_CREATION_WINDOW_OPTION,
ItemTypes.ITEM_TYPE_NOT_MISSION
});
itemBuilder.imageNumber((short) 60);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(500, 500, 1000);
itemBuilder.primarySkill((int)MiscConstants.NOID);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.structure.rift.altar.1.");
itemBuilder.difficulty(50.0f);
itemBuilder.weightGrams(200000);
itemBuilder.material(Materials.MATERIAL_STONE);
itemBuilder.value(10000);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
public void initCreationEntry(){
logger.info("initCreationEntry()");
if(templateId > 0){
AdvancedCreationEntry massStorage = CreationEntryCreator.createAdvancedEntry(SkillList.POTTERY,
ItemList.diamondStar, ItemList.dirtPile, templateId,
false, false, 0.0F, true, true, 0, 0.0D, CreationCategories.ALTAR);
massStorage.addRequirement(new CreationRequirement(1, ItemList.dirtPile, 99, true));
massStorage.addRequirement(new CreationRequirement(2, ItemList.brickPottery, 200, true));
massStorage.addRequirement(new CreationRequirement(3, ItemList.peat, 50, true));
massStorage.addRequirement(new CreationRequirement(4, ChaosCrystal.templateId, 50, true));
massStorage.addRequirement(new CreationRequirement(5, ItemList.heart, 20, true));
massStorage.addRequirement(new CreationRequirement(6, ItemList.emerald, 5, true));
massStorage.addRequirement(new CreationRequirement(7, ItemList.diamond, 5, true));
massStorage.addRequirement(new CreationRequirement(8, ItemList.opal, 5, true));
massStorage.addRequirement(new CreationRequirement(9, ItemList.sapphire, 5, true));
massStorage.addRequirement(new CreationRequirement(10, ItemList.ruby, 5, true));
}
}
}

View File

@@ -0,0 +1,48 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
public class FriyanTablet implements ItemTypes, MiscConstants {
protected static Logger logger = Logger.getLogger(FriyanTablet.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
String name = "Tablet of Friyan";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.tablet.friyan");
itemBuilder.name(name, "tablets of friyan", "Once a great scholar and sorceress, Friyan's faith had reached the zenith. While in this world, she wrote her knowledge in tablets like these. Perhaps you may learn more of the gods from it...");
itemBuilder.itemTypes(new short[]{ // {25, 49, 31, 52, 40} Stone of Soulfall {108, 31, 25, 194, 52, 44, 195, 67, 49, 123, 178, 157} // Colossus
ItemTypes.ITEM_TYPE_STONE,
ItemTypes.ITEM_TYPE_OUTSIDE_ONLY,
ItemTypes.ITEM_TYPE_NOTAKE,
ItemTypes.ITEM_TYPE_DECORATION,
ItemTypes.ITEM_TYPE_INDESTRUCTIBLE,
ItemTypes.ITEM_TYPE_USE_GROUND_ONLY,
ItemTypes.ITEM_TYPE_NOMOVE,
ItemTypes.ITEM_TYPE_NEVER_SHOW_CREATION_WINDOW_OPTION,
ItemTypes.ITEM_TYPE_NOT_MISSION
});
itemBuilder.imageNumber((short) 60);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(Long.MAX_VALUE);
itemBuilder.dimensions(500, 500, 1000);
itemBuilder.primarySkill((int)MiscConstants.NOID);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.structure.portal.10.");
itemBuilder.difficulty(99.0f);
itemBuilder.weightGrams(2000000);
itemBuilder.material(Materials.MATERIAL_STONE);
itemBuilder.value(10000);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+templateId);
}
}

View File

@@ -0,0 +1,68 @@
package mod.sin.items;
import java.io.IOException;
import java.util.logging.Logger;
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
import com.wurmonline.server.MiscConstants;
import com.wurmonline.server.items.AdvancedCreationEntry;
import com.wurmonline.server.items.CreationCategories;
import com.wurmonline.server.items.CreationEntryCreator;
import com.wurmonline.server.items.CreationRequirement;
import com.wurmonline.server.items.ItemList;
import com.wurmonline.server.items.ItemTemplate;
import com.wurmonline.server.items.ItemTypes;
import com.wurmonline.server.items.Materials;
import com.wurmonline.server.skills.SkillList;
public class HugeCrate implements ItemTypes, MiscConstants {
public static Logger logger = Logger.getLogger(HugeCrate.class.getName());
public static int templateId;
public void createTemplate() throws IOException{
String name = "huge crate";
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.crate.huge");
itemBuilder.name(name, "huge crates", "A huge crate made from planks, primarily used to transport goods.");
itemBuilder.itemTypes(new short[]{ // {108, 135, 167, 21, 51, 52, 44, 1, 92, 145, 176} - large crate
ItemTypes.ITEM_TYPE_NAMED,
ItemTypes.ITEM_TYPE_OWNER_DESTROYABLE,
ItemTypes.ITEM_TYPE_WOOD,
ItemTypes.ITEM_TYPE_TURNABLE,
ItemTypes.ITEM_TYPE_DECORATION,
ItemTypes.ITEM_TYPE_REPAIRABLE,
ItemTypes.ITEM_TYPE_HOLLOW,
ItemTypes.ITEM_TYPE_COLORABLE,
ItemTypes.ITEM_TYPE_BULKCONTAINER,
ItemTypes.ITEM_TYPE_TRANSPORTABLE
});
itemBuilder.imageNumber((short) 311);
itemBuilder.behaviourType((short) 1);
itemBuilder.combatDamage(0);
itemBuilder.decayTime(9072000);
itemBuilder.dimensions(140, 140, 140);
itemBuilder.primarySkill((int) NOID);
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
itemBuilder.modelName("model.container.crate.large.");
itemBuilder.difficulty(70.0f);
itemBuilder.weightGrams(20000);
itemBuilder.material(Materials.MATERIAL_WOOD_BIRCH);
itemBuilder.value(10000);
itemBuilder.isTraded(false);
ItemTemplate template = itemBuilder.build();
templateId = template.getTemplateId();
logger.info(name+" TemplateID: "+ templateId);
}
public void initCreationEntry() {
logger.info("initCreationEntry()");
if (templateId > 0) {
logger.info("Creating Huge Crate creation entry, ID = "+templateId);
final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.CARPENTRY_FINE,
ItemList.plank, ItemList.nailsIronLarge, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
entry.addRequirement(new CreationRequirement(1, ItemList.plank, 20, true));
} else {
logger.info("Huge Crate does not have a template ID on creation entry.");
}
}
}

Some files were not shown because too many files have changed in this diff Show More