Initial commit

This commit is contained in:
Gitea
2025-08-14 12:20:46 +02:00
commit 7384eeb2f0
290 changed files with 614128 additions and 0 deletions

154
.gitignore vendored Normal file
View File

@@ -0,0 +1,154 @@
# # # # # # # # # # # # # #
# Windows .gitignore #
# # # # # # # # # # # # # #
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# # # # # # # # # # # # # #
# macOS .gitignore #
# # # # # # # # # # # # # #
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# # # # # # # # # # # # # #
# JetBrains .gitignore #
# # # # # # # # # # # # # #
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
# Discord Integration configuration file
.idea/discord.xml
# # # # # # # # # # # # # #
# Thetya .gitignore #
# # # # # # # # # # # # # #
build/
keys.txt
rsrc/server.properties
rsrc/discord.properties
rsrc/peer.properties
coin.log
coin.log.*
exchange.log
exchange.log.*

23
.idea/artifacts/thetya_server_jar.xml generated Normal file
View File

@@ -0,0 +1,23 @@
<component name="ArtifactManager">
<artifact type="jar" name="thetya-server:jar">
<output-path>$PROJECT_DIR$/build/artifacts/thetya_server_jar</output-path>
<root id="archive" name="thetya-server.jar">
<element id="module-output" name="thetya-server" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/config.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jinput.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/ooo-user.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/depot-1.5.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jshortcut.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl_util.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/projectx-pcode.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/samskivert-1.5.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-logging.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/getdown-pro-new.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/projectx-config.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-digester.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-beanutils.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/mysql-connector-java-8.0.22.jar" path-in-jar="/" />
</root>
</artifact>
</component>

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

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<option name="DEFAULT_COMPILER" value="Javac" />
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="?*.properties" />
<entry name="?*.xml" />
<entry name="?*.gif" />
<entry name="?*.png" />
<entry name="?*.jpeg" />
<entry name="?*.jpg" />
<entry name="?*.html" />
<entry name="?*.dtd" />
<entry name="?*.tld" />
<entry name="?*.ftl" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
</annotationProcessing>
</component>
</project>

6
.idea/copyright/Thetya.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<component name="CopyrightManager">
<copyright>
<option name="notice" value="Copyright (c) 2014-&amp;#36;today.year Thetya Team&#10;Copyright (c) 2005-2011 Three Rings&#10;&#10;https://github.com/Thetya" />
<option name="myName" value="Thetya" />
</copyright>
</component>

7
.idea/copyright/profiles_settings.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<component name="CopyrightManager">
<settings default="Thetya">
<module2copyright>
<element module="All" copyright="Thetya" />
</module2copyright>
</settings>
</component>

View File

@@ -0,0 +1,12 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0" is_locked="false">
<option name="myName" value="Project Default" />
<option name="myLocal" value="true" />
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
<option name="processCode" value="true" />
<option name="processLiterals" value="true" />
<option name="processComments" value="true" />
</inspection_tool>
<inspection_tool class="UNCHECKED_WARNING" enabled="false" level="WARNING" enabled_by_default="false" />
</profile>
</component>

View File

@@ -0,0 +1,7 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="PROJECT_PROFILE" value="Project Default" />
<option name="USE_PROJECT_PROFILE" value="true" />
<version value="1.0" />
</settings>
</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$/build" />
</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$/thetya-client/thetya-client.iml" filepath="$PROJECT_DIR$/thetya-client/thetya-client.iml" />
<module fileurl="file://$PROJECT_DIR$/thetya-server.iml" filepath="$PROJECT_DIR$/thetya-server.iml" />
<module fileurl="file://$PROJECT_DIR$/thetya-tools/thetya-tools.iml" filepath="$PROJECT_DIR$/thetya-tools/thetya-tools.iml" />
</modules>
</component>
</project>

15
.idea/runConfigurations/Server.xml generated Normal file
View File

@@ -0,0 +1,15 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Server" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="com.github.thetya.server.ThetyaServer" />
<module name="thetya-server" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="com.github.thetya.server.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -0,0 +1,15 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Tools: Keypair Generator" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="com.github.thetya.tools.RsaKeypairGenerator" />
<module name="thetya-server" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="com.github.thetya.server.tools.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -0,0 +1,16 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Tools: User Tool" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="com.github.thetya.server.tools.UserTool" />
<module name="thetya-server" />
<option name="PROGRAM_PARAMETERS" value="$Prompt$" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="com.github.thetya.server.tools.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
</component>

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>

BIN
1.dat Normal file

Binary file not shown.

BIN
202101.dat Normal file

Binary file not shown.

BIN
294.dat Normal file

Binary file not shown.

BIN
32.dat Normal file

Binary file not shown.

BIN
4.dat Normal file

Binary file not shown.

BIN
46.dat Normal file

Binary file not shown.

BIN
51.dat Normal file

Binary file not shown.

BIN
57.dat Normal file

Binary file not shown.

BIN
69.dat Normal file

Binary file not shown.

BIN
80085.dat Normal file

Binary file not shown.

BIN
82.dat Normal file

Binary file not shown.

61
README.md Normal file
View File

@@ -0,0 +1,61 @@
<p align="center">
<img height="300px" src="https://raw.githubusercontent.com/Thetya/assets/main/logo_v1_nobg.png?token=ARRVKZWL45UC2QTB7B47J2K7YK5MI">
</p>
# Thetya server
This repository is a part of the Thetya project and contains the server-side code.
#### Directory structure
| Directory | Description |
|-------------------|------------------------------------------------------------|
| `.idea/` | IntelliJ IDEA project meta-data. |
| `custom-configs/` | Configs modified by the Thetya team for the server to use. |
| `build/` | Project build output. |
| `docs/` | Design documents and notes on how various mechanisms work. |
| `lib/` | Libraries (*.jar files*) imported manually by IDEA. |
| `scenes/` | Game scenes in exported XML format. |
| `sql-queries/` | Some SQL queries you need to run during set-up. |
| **`src/`** | Thetya source code. |
| **`rsrc/`** | Thetya and Spiral Knights resources. |
#### External dependencies
1. MySQL / MariaDB / Postgres database
## Configuring and starting the server
#### Configuration
The first thing you need to do is to generate a RSA Keypair so that you can have secure communication between the client
and the server. To do so, run `com.github.thetya.server.tools.RsaKeypairGenerator`. You do not need to pass any arguments.
When it's done, you will either see the keys in the console or have them generated in a `keys.txt` file.
Copy the private key and open up `rsrc/server.properties`. Find `key.private` and paste it.
You will need to determine your local IPv4 address. On Windows:
![Screenshot 1](https://am3pap002files.storage.live.com/y4mINU9EjwUinD7LTHfJ2iF7Jwy16_75Hxb2y5VAsNSR5uWXjBFhKKRN3JekIGkDpt-ALkpuwb7stIFgblUAtszKxyg8xbZflBdI8awVvZXg7VKhvAx6_GR3auvAx-Bqv8gbbtYSPDduf8qxJ39cFeLz20f_VtIllFYcmJnSmsr6xL3z8HQZhDocjHaxpMC6V448d1pGD2HbFOhmyhc-9mpmA/Zrzut%20ekranu%202020-11-16%20161958.png?psid=1&width=540&height=291)
Put this into `rsrc/server.properties` under the field `hostname.bind`. You can now close the file.
Now open Spiral Knights client directory, go to `code/`, unzip `config.jar` and extract `deployment.properties`. Open it.
Set `server_host` to the value you pasted into server config before, `server_ports` to `47624`, `datagram_ports` to
`47625` and `key.public` to the public key you should have generated in the first step. Save the file and replace it in the
jar.
---
Now we need to set up the database. Open `rsrc/server.properties`, scroll to the bottom. You need to create 3 databases
and fill out the credentials using which they can be operated. The tables and schema migrations will be handled
automatically.
#### Starting the server
Just run `com.github.thetya.server.ThetyaServer`.
#### Creating a user
Make sure you have database credentials typed in into server config. Use:
```
$ com.github.thetya.server.tools.UserTool create [username] [password] [email]
```
The password will be hashed for you and a new account will be created. `siteId` will be set to `204` as this is the ID
for Spiral Knights.

105988
custom-configs/actor.xml Normal file

File diff suppressed because it is too large Load Diff

387
custom-configs/area.xml Normal file
View File

@@ -0,0 +1,387 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014-2021 Thetya Team
~ Copyright (c) 2005-2011 Three Rings
~
~ https://github.com/Thetya
-->
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.tudey.config.AreaConfig;">
<entry>
<name>Player Enter/Base</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Color</name>
<paths>implementation.color</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Trigger Condition</name>
<paths>implementation.handlers[0].action.condition.conditions[1].conditions</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Trigger Action</name>
<paths>implementation.handlers[0].action.action</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.tudey.config.ActionConfig$Conditional">
<condition class="com.threerings.tudey.config.ConditionConfig$All">
<conditions>
<entry class="com.threerings.tudey.config.ConditionConfig$InstanceOf">
<target class="com.threerings.tudey.config.TargetConfig$Activator">
</target>
</entry>
<entry class="com.threerings.tudey.config.ConditionConfig$All">
</entry>
</conditions>
</condition>
<action class="com.threerings.tudey.config.ActionConfig$FireEffect">
</action>
</action>
<mask>4</mask>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Player Enter/Chance Encounter</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Trigger Action</name>
<paths>implementation.area["Trigger Action"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Derived">
<area>
<name>Player Enter/Base</name>
<arguments>
<key class="java.lang.String">Color</key>
<value class="com.threerings.opengl.renderer.Color4f">1.0, 1.0, 1.0, 1.0</value>
<key class="java.lang.String">Trigger Action</key>
<value class="com.threerings.tudey.config.ActionConfig$FireEffect">
</value>
<key class="java.lang.String">Trigger Condition</key>
<value class="[Lcom.threerings.tudey.config.ConditionConfig;">
</value>
</arguments>
</area>
</implementation>
</entry>
<entry>
<name>Player Enter/Spawn Activate</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Trigger Action</name>
<paths>implementation.area["Trigger Action"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Derived">
<area>
<name>Player Enter/Base</name>
<arguments>
<key class="java.lang.String">Color</key>
<value class="com.threerings.opengl.renderer.Color4f">1.0, 1.0, 1.0, 1.0</value>
<key class="java.lang.String">Trigger Action</key>
<value class="com.threerings.tudey.config.ActionConfig$Signal">
<target class="com.threerings.tudey.config.TargetConfig$Tagged">
</target>
</value>
<key class="java.lang.String">Trigger Condition</key>
<value class="[Lcom.threerings.tudey.config.ConditionConfig;">
<entry class="com.threerings.tudey.config.ConditionConfig$InstanceOf">
<target class="com.threerings.tudey.config.TargetConfig$Activator">
</target>
</entry>
<entry class="com.threerings.tudey.config.ConditionConfig$Limit">
</entry>
</value>
</arguments>
</area>
</implementation>
</entry>
<entry>
<name>Portals/AB Portal</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Destination</name>
<paths>implementation.handlers[0].action.destination</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.projectx.board.config.BoardActionConfig$OpenBoard">
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Portals/Next Floor</name>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.tudey.config.ActionConfig$Conditional">
<condition class="com.threerings.tudey.config.ConditionConfig$InstanceOf">
<target class="com.threerings.tudey.config.TargetConfig$Activator">
</target>
</condition>
<action class="com.threerings.projectx.dungeon.config.DungeonActionConfig$NextFloor">
</action>
</action>
<mask>4</mask>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Portals/Portal</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Tag</name>
<paths>implementation.tags.tags[0]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Scene ID</name>
<paths>implementation.handlers[0].action.scene_id</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Portal</name>
<paths>implementation.handlers[0].action.portal</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<tags>
<tags>(tag 1)</tags>
</tags>
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.tudey.config.ActionConfig$MoveBody">
<target class="com.threerings.tudey.config.TargetConfig$Activator">
</target>
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Portals/To Town</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Town Name</name>
<paths>implementation.handlers[0].action.town_name</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.projectx.town.config.TownActionConfig$MoveToTown">
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Portals/Town Portal</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Destination Tag</name>
<paths>implementation.tags.tags[0]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Town Name</name>
<paths>implementation.handlers[0].action.town_name</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Scene Id</name>
<paths>implementation.handlers[0].action.scene_id</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Portal</name>
<paths>implementation.handlers[0].action.portal</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<tags>
<tags>(tag 1)</tags>
</tags>
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.projectx.town.config.TownActionConfig$MoveToTown">
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Actor Removed Trigger</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Actor Tag</name>
<paths>implementation.handlers[0].target.tag</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Action</name>
<paths>implementation.handlers[0].action</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$ActorRemoved">
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Doormat</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Door Tag</name>
<paths>implementation.area["Entered Action"].target.tag, implementation.area["Exited Action"].target.tag</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Derived">
<area>
<name>Triggers/Player Standing</name>
</area>
</implementation>
</entry>
<entry>
<name>Triggers/Key Trigger</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Door Tag</name>
<paths>implementation.handlers[0].action.condition.conditions[1].target.tag, implementation.handlers[2].action.actions[0].action.target.tag, implementation.handlers[1].action.condition.conditions[1].target.tag</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.tudey.config.ActionConfig$Conditional">
</action>
</entry>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStop">
<action class="com.threerings.tudey.config.ActionConfig$Conditional">
</action>
</entry>
<entry class="com.threerings.tudey.config.HandlerConfig$SignalStart">
<action class="com.threerings.tudey.config.ActionConfig$Compound">
<actions>
<entry class="com.threerings.tudey.config.ActionConfig$Conditional">
</entry>
</actions>
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Monster Detect</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Monsters Gone</name>
<paths>implementation.handlers[0].under_action</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$ThresholdIntersectionCount">
<action class="com.threerings.tudey.config.ActionConfig$Compound">
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Music Area</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>File</name>
<paths>implementation.handlers[0].action.actor["File"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Stack</name>
<paths>implementation.handlers[0].action.actor["Stack"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Fade In</name>
<paths>implementation.handlers[0].action.actor["Fade In"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Fade Out</name>
<paths>implementation.handlers[0].action.actor["Fade Out"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Tag</name>
<paths>implementation.handlers[0].action.actor["Tag"], implementation.handlers[0].under_action.target.tag</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$ThresholdIntersectionCount">
<action class="com.threerings.tudey.config.ActionConfig$SpawnActor">
<actor>
<name>Environment/Music</name>
<arguments>
<key class="java.lang.String">Fade In</key>
<value class="java.lang.Float">0.0</value>
<key class="java.lang.String">Fade Out</key>
<value class="java.lang.Float">0.0</value>
<key class="java.lang.String">File</key>
<value/>
<key class="java.lang.String">Override</key>
<value class="java.lang.Boolean">true</value>
<key class="java.lang.String">Stack</key>
<value class="java.lang.String">default</value>
<key class="java.lang.String">Tag</key>
<value class="java.lang.String">Music</value>
</arguments>
</actor>
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Party Trigger</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Door Tag</name>
<paths>implementation.handlers[0].action.target.tag</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Action</name>
<paths>implementation.handlers[0].action</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.projectx.dungeon.config.DungeonHandlerConfig$PartyIntersection">
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Player Standing</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Entered Action</name>
<paths>implementation.handlers[0].action</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Exited Action</name>
<paths>implementation.handlers[0].under_action</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$ThresholdIntersectionCount">
</entry>
</handlers>
</implementation>
</entry>
</object>
</java>

25502
custom-configs/attack.xml Normal file

File diff suppressed because it is too large Load Diff

201
custom-configs/behavior.xml Normal file
View File

@@ -0,0 +1,201 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014-2021 Thetya Team
~ Copyright (c) 2005-2011 Three Rings
~
~ https://github.com/Thetya
-->
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.tudey.config.BehaviorConfig;">
<entry>
<name>Dev Tests/Targeting Test (first)</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<acquire class="com.threerings.tudey.config.TargetConfig$Intersecting">
<region class="com.threerings.tudey.config.RegionConfig$Default">
<expansion>10.0</expansion>
</region>
</acquire>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<turnRate>0.08726646</turnRate>
<turnSnap>0.08726646</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Dev Tests/Targeting Test 1</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<attacks>0, 1, 2, 3</attacks>
<turnRate>0.17453292</turnRate>
<turnSnap>0.17453292</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Monster/Beast/Chromalisk/Base</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Cascading">
<cascades>
<entry>
<condition class="com.threerings.projectx.dungeon.config.DungeonConditionConfig$Health">
<below>false</below>
<health>50.0</health>
</condition>
<behavior>
<name>Monster/Beast/Chromalisk/Dodge</name>
</behavior>
</entry>
<entry>
<condition class="com.threerings.projectx.dungeon.config.DungeonConditionConfig$Health">
<below>false</below>
<health>100.0</health>
</condition>
<behavior>
<name>Monster/Beast/Chromalisk/Targeted Attack</name>
</behavior>
</entry>
</cascades>
</implementation>
</entry>
<entry>
<name>Monster/Beast/Chromalisk/Basic Targeting</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<attacks>7, 0</attacks>
<turnRate>0.17453292</turnRate>
<turnSnap>0.17453292</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Monster/Beast/Chromalisk/Dodge</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Dodging">
<minDodgeInterval>2000</minDodgeInterval>
<dodges>
<entry>
<attack>2</attack>
</entry>
<entry>
<direction>0.7853982</direction>
<attack>4</attack>
</entry>
<entry>
<direction>2.3561945</direction>
<attack>5</attack>
</entry>
</dodges>
</implementation>
</entry>
<entry>
<name>Monster/Beast/Chromalisk/Targeted Attack</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<attacks>7, 0</attacks>
<turnRate>0.17453292</turnRate>
<turnSnap>0.17453292</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Monster/Beast/Vog Cub/Basic Targeting</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<attacks>0, 1, 2, 3, 4, 5, 6, 7</attacks>
<minAttackInterval>2000</minAttackInterval>
<turnRate>1.7453293</turnRate>
<turnSnap>0.87266463</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Monster/Slime/Cube (Basic Targeting)</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<acquire class="com.threerings.tudey.config.TargetConfig$InstanceOf">
</acquire>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<turnRate>0.87266463</turnRate>
<turnSnap>1.7453293</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Monster/Slime/Jelly Green Giant</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<acquire class="com.threerings.tudey.config.TargetConfig$Intersecting">
<region class="com.threerings.tudey.config.RegionConfig$Default">
<expansion>10.0</expansion>
</region>
</acquire>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<attacks>0, 1</attacks>
<minAttackInterval>1500</minAttackInterval>
<maxAttackDistance>1.85</maxAttackDistance>
<turnRate>1.7453293</turnRate>
<turnSnap>1.7453293</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Traps and Hazards/Wheel Launcher</name>
<implementation class="com.threerings.tudey.config.BehaviorConfig$Scripted">
<steps>
<entry class="com.threerings.projectx.dungeon.config.DungeonScriptConfig$Attack">
</entry>
<entry class="com.threerings.tudey.config.ScriptConfig$Wait">
<wait>5000</wait>
</entry>
<entry class="com.threerings.tudey.config.ScriptConfig$Goto">
</entry>
</steps>
</implementation>
</entry>
<entry>
<name>Wander/Base</name>
<implementation class="com.threerings.tudey.config.BehaviorConfig$Wander">
<radius>50.0</radius>
</implementation>
</entry>
<entry>
<name>Wander/Snipe</name>
<implementation class="com.threerings.tudey.config.BehaviorConfig$Wander">
<evaluationInterval class="com.threerings.probs.FloatVariable$Constant">
<value>5.5</value>
</evaluationInterval>
<preRotationPause class="com.threerings.probs.FloatVariable$Uniform">
<minimum>1.0</minimum>
<maximum>4.0</maximum>
</preRotationPause>
<postRotationPause class="com.threerings.probs.FloatVariable$Constant">
<value>2.0</value>
</postRotationPause>
</implementation>
</entry>
</object>
</java>

128
custom-configs/catalog.xml Normal file
View File

@@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014-2021 Thetya Team
~ Copyright (c) 2005-2011 Three Rings
~
~ https://github.com/Thetya
-->
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.projectx.shop.config.CatalogConfig;">
<entry>
<name>Catalog Test</name>
<implementation class="com.threerings.projectx.shop.config.CatalogConfig$Original">
<includes>
<entry>
</entry>
</includes>
<goods>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>10</price>
<energy>5</energy>
<goodLimit>1</goodLimit>
<item>
<name>Artifact/Preview Event Medal</name>
</item>
</entry>
</goods>
</implementation>
</entry>
<entry>
<name>Rescue Camp/General Goods</name>
<implementation class="com.threerings.projectx.shop.config.CatalogConfig$Original">
<goods>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Sword/Beast Basher</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Sword/Hatchet</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Sword/Proto Sword</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Sword/Slime Slasher</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Handgun/Proto Gun</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Handgun/Punch Gun</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Handgun/Stun Gun</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Bomb/Proto Bomb</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Gear/Helm/Cyclops Cap</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Gear/Helm/Mining Hat</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Gear/Armor/Fencing Jacket</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Gear/Armor/Vitasuit</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<item>
<name>Gear/Shield/Iron Buckler</name>
</item>
</entry>
</goods>
</implementation>
</entry>
</object>
</java>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

25
custom-configs/ground.xml Normal file
View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014-2021 Thetya Team
~ Copyright (c) 2005-2011 Three Rings
~
~ https://github.com/Thetya
-->
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.tudey.config.GroundConfig;">
<entry>
<name>Ground Test</name>
<implementation class="com.threerings.tudey.config.GroundConfig$Original">
<floor>
<entry>
</entry>
</floor>
<edgeCases>
<entry>
</entry>
</edgeCases>
</implementation>
</entry>
</object>
</java>

27971
custom-configs/placeable.xml Normal file

File diff suppressed because it is too large Load Diff

24
custom-configs/wall.xml Normal file
View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014-2021 Thetya Team
~ Copyright (c) 2005-2011 Three Rings
~
~ https://github.com/Thetya
-->
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.tudey.config.WallConfig;">
<entry>
<name>Wall Test</name>
<implementation class="com.threerings.tudey.config.WallConfig$Original">
<ground>
<name>Ground Test</name>
</ground>
<cases>
<entry>
</entry>
</cases>
</implementation>
</entry>
</object>
</java>

BIN
lib/commons-beanutils.jar Normal file

Binary file not shown.

BIN
lib/commons-digester.jar Normal file

Binary file not shown.

BIN
lib/commons-logging.jar Normal file

Binary file not shown.

BIN
lib/config.jar Normal file

Binary file not shown.

BIN
lib/depot-1.5.jar Normal file

Binary file not shown.

BIN
lib/getdown-pro-new.jar Normal file

Binary file not shown.

BIN
lib/jedis-4.0.1.jar Normal file

Binary file not shown.

BIN
lib/jinput.jar Normal file

Binary file not shown.

BIN
lib/jshortcut.jar Normal file

Binary file not shown.

BIN
lib/lwjgl.jar Normal file

Binary file not shown.

BIN
lib/lwjgl_util.jar Normal file

Binary file not shown.

Binary file not shown.

BIN
lib/ooo-user.jar Normal file

Binary file not shown.

BIN
lib/projectx-config.jar Normal file

Binary file not shown.

BIN
lib/projectx-pcode.jar Normal file

Binary file not shown.

BIN
lib/samskivert-1.5.jar Normal file

Binary file not shown.

BIN
lib/velocity-1.7.jar Normal file

Binary file not shown.

2
rsrc/build.properties Normal file
View File

@@ -0,0 +1,2 @@
# Wed Apr 20 15:40:29 PDT 2011
version = 20110420154029

17
rsrc/peer.properties.temp Normal file
View File

@@ -0,0 +1,17 @@
#
# $Id: thetya-server 2020-12-20 14:02 michael $
#
# Configuration for the peered environment
#
# This peer's node name. Leave blank if you want to run standalone.
node = tht-1
#
# This peer's external address.
external_address = the.actual.address
#
# The secret shared with other peers to securely authenticate within the peer network.
# Should be tha same value in all the peers' configuration files.
shared_secret = ghsucks

106225
rsrc/rsrc/config/actor.xml Normal file

File diff suppressed because it is too large Load Diff

387
rsrc/rsrc/config/area.xml Normal file
View File

@@ -0,0 +1,387 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014-2021 Thetya Team
~ Copyright (c) 2005-2011 Three Rings
~
~ https://github.com/Thetya
-->
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.tudey.config.AreaConfig;">
<entry>
<name>Player Enter/Base</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Color</name>
<paths>implementation.color</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Trigger Condition</name>
<paths>implementation.handlers[0].action.condition.conditions[1].conditions</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Trigger Action</name>
<paths>implementation.handlers[0].action.action</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.tudey.config.ActionConfig$Conditional">
<condition class="com.threerings.tudey.config.ConditionConfig$All">
<conditions>
<entry class="com.threerings.tudey.config.ConditionConfig$InstanceOf">
<target class="com.threerings.tudey.config.TargetConfig$Activator">
</target>
</entry>
<entry class="com.threerings.tudey.config.ConditionConfig$All">
</entry>
</conditions>
</condition>
<action class="com.threerings.tudey.config.ActionConfig$FireEffect">
</action>
</action>
<mask>4</mask>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Player Enter/Chance Encounter</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Trigger Action</name>
<paths>implementation.area["Trigger Action"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Derived">
<area>
<name>Player Enter/Base</name>
<arguments>
<key class="java.lang.String">Color</key>
<value class="com.threerings.opengl.renderer.Color4f">1.0, 1.0, 1.0, 1.0</value>
<key class="java.lang.String">Trigger Action</key>
<value class="com.threerings.tudey.config.ActionConfig$FireEffect">
</value>
<key class="java.lang.String">Trigger Condition</key>
<value class="[Lcom.threerings.tudey.config.ConditionConfig;">
</value>
</arguments>
</area>
</implementation>
</entry>
<entry>
<name>Player Enter/Spawn Activate</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Trigger Action</name>
<paths>implementation.area["Trigger Action"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Derived">
<area>
<name>Player Enter/Base</name>
<arguments>
<key class="java.lang.String">Color</key>
<value class="com.threerings.opengl.renderer.Color4f">1.0, 1.0, 1.0, 1.0</value>
<key class="java.lang.String">Trigger Action</key>
<value class="com.threerings.tudey.config.ActionConfig$Signal">
<target class="com.threerings.tudey.config.TargetConfig$Tagged">
</target>
</value>
<key class="java.lang.String">Trigger Condition</key>
<value class="[Lcom.threerings.tudey.config.ConditionConfig;">
<entry class="com.threerings.tudey.config.ConditionConfig$InstanceOf">
<target class="com.threerings.tudey.config.TargetConfig$Activator">
</target>
</entry>
<entry class="com.threerings.tudey.config.ConditionConfig$Limit">
</entry>
</value>
</arguments>
</area>
</implementation>
</entry>
<entry>
<name>Portals/AB Portal</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Destination</name>
<paths>implementation.handlers[0].action.destination</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.projectx.board.config.BoardActionConfig$OpenBoard">
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Portals/Next Floor</name>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.tudey.config.ActionConfig$Conditional">
<condition class="com.threerings.tudey.config.ConditionConfig$InstanceOf">
<target class="com.threerings.tudey.config.TargetConfig$Activator">
</target>
</condition>
<action class="com.threerings.projectx.dungeon.config.DungeonActionConfig$NextFloor">
</action>
</action>
<mask>4</mask>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Portals/Portal</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Tag</name>
<paths>implementation.tags.tags[0]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Scene ID</name>
<paths>implementation.handlers[0].action.scene_id</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Portal</name>
<paths>implementation.handlers[0].action.portal</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<tags>
<tags>(tag 1)</tags>
</tags>
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.tudey.config.ActionConfig$MoveBody">
<target class="com.threerings.tudey.config.TargetConfig$Activator">
</target>
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Portals/To Town</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Town Name</name>
<paths>implementation.handlers[0].action.town_name</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.projectx.town.config.TownActionConfig$MoveToTown">
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Portals/Town Portal</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Destination Tag</name>
<paths>implementation.tags.tags[0]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Town Name</name>
<paths>implementation.handlers[0].action.town_name</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Scene Id</name>
<paths>implementation.handlers[0].action.scene_id</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Portal</name>
<paths>implementation.handlers[0].action.portal</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<tags>
<tags>(tag 1)</tags>
</tags>
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.projectx.town.config.TownActionConfig$MoveToTown">
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Actor Removed Trigger</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Actor Tag</name>
<paths>implementation.handlers[0].target.tag</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Action</name>
<paths>implementation.handlers[0].action</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$ActorRemoved">
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Doormat</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Door Tag</name>
<paths>implementation.area["Entered Action"].target.tag, implementation.area["Exited Action"].target.tag</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Derived">
<area>
<name>Triggers/Player Standing</name>
</area>
</implementation>
</entry>
<entry>
<name>Triggers/Key Trigger</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Door Tag</name>
<paths>implementation.handlers[0].action.condition.conditions[1].target.tag, implementation.handlers[2].action.actions[0].action.target.tag, implementation.handlers[1].action.condition.conditions[1].target.tag</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStart">
<action class="com.threerings.tudey.config.ActionConfig$Conditional">
</action>
</entry>
<entry class="com.threerings.tudey.config.HandlerConfig$IntersectionStop">
<action class="com.threerings.tudey.config.ActionConfig$Conditional">
</action>
</entry>
<entry class="com.threerings.tudey.config.HandlerConfig$SignalStart">
<action class="com.threerings.tudey.config.ActionConfig$Compound">
<actions>
<entry class="com.threerings.tudey.config.ActionConfig$Conditional">
</entry>
</actions>
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Monster Detect</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Monsters Gone</name>
<paths>implementation.handlers[0].under_action</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$ThresholdIntersectionCount">
<action class="com.threerings.tudey.config.ActionConfig$Compound">
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Music Area</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>File</name>
<paths>implementation.handlers[0].action.actor["File"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Stack</name>
<paths>implementation.handlers[0].action.actor["Stack"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Fade In</name>
<paths>implementation.handlers[0].action.actor["Fade In"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Fade Out</name>
<paths>implementation.handlers[0].action.actor["Fade Out"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Tag</name>
<paths>implementation.handlers[0].action.actor["Tag"], implementation.handlers[0].under_action.target.tag</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$ThresholdIntersectionCount">
<action class="com.threerings.tudey.config.ActionConfig$SpawnActor">
<actor>
<name>Environment/Music</name>
<arguments>
<key class="java.lang.String">Fade In</key>
<value class="java.lang.Float">0.0</value>
<key class="java.lang.String">Fade Out</key>
<value class="java.lang.Float">0.0</value>
<key class="java.lang.String">File</key>
<value/>
<key class="java.lang.String">Override</key>
<value class="java.lang.Boolean">true</value>
<key class="java.lang.String">Stack</key>
<value class="java.lang.String">default</value>
<key class="java.lang.String">Tag</key>
<value class="java.lang.String">Music</value>
</arguments>
</actor>
</action>
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Party Trigger</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Door Tag</name>
<paths>implementation.handlers[0].action.target.tag</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Action</name>
<paths>implementation.handlers[0].action</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.projectx.dungeon.config.DungeonHandlerConfig$PartyIntersection">
</entry>
</handlers>
</implementation>
</entry>
<entry>
<name>Triggers/Player Standing</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Entered Action</name>
<paths>implementation.handlers[0].action</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Exited Action</name>
<paths>implementation.handlers[0].under_action</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.AreaConfig$Original">
<handlers>
<entry class="com.threerings.tudey.config.HandlerConfig$ThresholdIntersectionCount">
</entry>
</handlers>
</implementation>
</entry>
</object>
</java>

25514
rsrc/rsrc/config/attack.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,304 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014-2021 Thetya Team
~ Copyright (c) 2005-2011 Three Rings
~
~ https://github.com/Thetya
-->
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.tudey.config.BehaviorConfig;">
<entry>
<name>Boss/Vanaduke/Start</name>
<implementation class="com.threerings.tudey.config.BehaviorConfig$Scripted">
<steps>
<entry class="com.threerings.projectx.dungeon.config.DungeonScriptConfig$Attack">
<attack>2</attack>
</entry>
<entry class="com.threerings.tudey.config.ScriptConfig$Wait">
<wait>1250</wait>
</entry>
<entry class="com.threerings.projectx.dungeon.config.DungeonScriptConfig$Attack">
</entry>
<entry class="com.threerings.projectx.dungeon.config.DungeonScriptConfig$Attack">
<attack>3</attack>
</entry>
</steps>
</implementation>
</entry>
<entry>
<name>Gun Puppy</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<acquire class="com.threerings.projectx.dungeon.config.DungeonTargetConfig$PartyMembers">
<target class="com.threerings.tudey.config.TargetConfig$Intersecting">
<region class="com.threerings.tudey.config.RegionConfig$Default">
<location class="com.threerings.tudey.config.TargetConfig$Activator">
</location>
<expansion>10.0</expansion>
</region>
</target>
</acquire>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<maxAttackDistance>10.0</maxAttackDistance>
<turnRate>0.0013962634</turnRate>
<turnSnap>0.0013962634</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Mecha Knight</name>
<implementation class="com.threerings.tudey.config.BehaviorConfig$Follow">
<target class="com.threerings.projectx.dungeon.config.DungeonTargetConfig$PartyMembers">
<target class="com.threerings.tudey.config.TargetConfig$NearestSubset">
<target class="com.threerings.tudey.config.TargetConfig$Activator">
</target>
</target>
</target>
</implementation>
</entry>
<entry>
<name>Dev Tests/Targeting Test (first)</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<acquire class="com.threerings.tudey.config.TargetConfig$Intersecting">
<region class="com.threerings.tudey.config.RegionConfig$Default">
<expansion>10.0</expansion>
</region>
</acquire>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<turnRate>0.08726646</turnRate>
<turnSnap>0.08726646</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Dev Tests/Targeting Test 1</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<attacks>0, 1, 2, 3</attacks>
<turnRate>0.17453292</turnRate>
<turnSnap>0.17453292</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Monster/Beast/Chromalisk/Base</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Cascading">
<cascades>
<entry>
<condition class="com.threerings.projectx.dungeon.config.DungeonConditionConfig$Health">
<below>false</below>
<health>50.0</health>
</condition>
<behavior>
<name>Monster/Beast/Chromalisk/Dodge</name>
</behavior>
</entry>
<entry>
<condition class="com.threerings.projectx.dungeon.config.DungeonConditionConfig$Health">
<below>false</below>
<health>100.0</health>
</condition>
<behavior>
<name>Monster/Beast/Chromalisk/Targeted Attack</name>
</behavior>
</entry>
</cascades>
</implementation>
</entry>
<entry>
<name>Monster/Beast/Chromalisk/Basic Targeting</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<attacks>7, 0</attacks>
<turnRate>0.17453292</turnRate>
<turnSnap>0.17453292</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Monster/Beast/Chromalisk/Dodge</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Dodging">
<minDodgeInterval>2000</minDodgeInterval>
<dodges>
<entry>
<attack>2</attack>
</entry>
<entry>
<direction>0.7853982</direction>
<attack>4</attack>
</entry>
<entry>
<direction>2.3561945</direction>
<attack>5</attack>
</entry>
</dodges>
</implementation>
</entry>
<entry>
<name>Monster/Beast/Chromalisk/Targeted Attack</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<attacks>7, 0</attacks>
<turnRate>0.17453292</turnRate>
<turnSnap>0.17453292</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Monster/Beast/Vog Cub/Basic Targeting</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<attacks>0, 1, 2, 3, 4, 5, 6, 7</attacks>
<minAttackInterval>2000</minAttackInterval>
<turnRate>1.7453293</turnRate>
<turnSnap>0.87266463</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Monster/Boss/Vanaduke/Activated</name>
<implementation class="com.threerings.tudey.config.BehaviorConfig$Scripted">
<steps>
<entry class="com.threerings.projectx.dungeon.config.DungeonScriptConfig$Attack">
<attack>2</attack>
</entry>
<entry class="com.threerings.tudey.config.ScriptConfig$Move">
<target class="com.threerings.tudey.config.TargetConfig$Tagged">
<tag>vanaduke_path_1</tag>
</target>
</entry>
<entry class="com.threerings.tudey.config.ScriptConfig$Wait">
<wait>0</wait>
</entry>
<entry class="com.threerings.projectx.dungeon.config.DungeonScriptConfig$Attack">
<attack>1</attack>
</entry>
<entry class="com.threerings.projectx.dungeon.config.DungeonScriptConfig$Attack">
<attack>3</attack>
</entry>
</steps>
</implementation>
</entry>
<entry>
<name>Monster/Boss/Vanaduke/Stage 1</name>
<implementation class="com.threerings.tudey.config.BehaviorConfig$Scripted">
<steps>
<entry class="com.threerings.projectx.dungeon.config.DungeonScriptConfig$Attack">
</entry>
</steps>
</implementation>
</entry>
<entry>
<name>Monster/Boss/Vanaduke/Stage 1 Complete</name>
<implementation class="com.threerings.tudey.config.BehaviorConfig$Scripted">
<steps>
<entry class="com.threerings.tudey.config.ScriptConfig$Move">
<target class="com.threerings.tudey.config.TargetConfig$Tagged">
<tag>vanaduke_path_2</tag>
</target>
</entry>
<entry class="com.threerings.tudey.config.ScriptConfig$Wait">
</entry>
<entry class="com.threerings.tudey.config.ScriptConfig$Rotate">
<direction>4.7123890</direction>
</entry>
<entry class="com.threerings.tudey.config.ScriptConfig$Wait">
</entry>
<entry class="com.threerings.projectx.dungeon.config.DungeonScriptConfig$Attack">
<attack>2</attack>
</entry>
</steps>
</implementation>
</entry>
<entry>
<name>Monster/Slime/Cube (Basic Targeting)</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<acquire class="com.threerings.tudey.config.TargetConfig$InstanceOf">
</acquire>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<turnRate>0.87266463</turnRate>
<turnSnap>1.7453293</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Monster/Slime/Jelly Green Giant</name>
<implementation class="com.threerings.projectx.dungeon.config.DungeonBehaviorConfig$Targeting">
<routine>
<name>Wander/Base</name>
</routine>
<acquire class="com.threerings.tudey.config.TargetConfig$Intersecting">
<region class="com.threerings.tudey.config.RegionConfig$Default">
<expansion>10.0</expansion>
</region>
</acquire>
<damageFlags>2</damageFlags>
<targetAction class="com.threerings.projectx.dungeon.config.TargetActionConfig$PathAttack">
<attacks>0, 1</attacks>
<minAttackInterval>1500</minAttackInterval>
<maxAttackDistance>1.85</maxAttackDistance>
<turnRate>1.7453293</turnRate>
<turnSnap>1.7453293</turnSnap>
</targetAction>
</implementation>
</entry>
<entry>
<name>Traps and Hazards/Wheel Launcher</name>
<implementation class="com.threerings.tudey.config.BehaviorConfig$Scripted">
<steps>
<entry class="com.threerings.projectx.dungeon.config.DungeonScriptConfig$Attack">
</entry>
<entry class="com.threerings.tudey.config.ScriptConfig$Wait">
<wait>3500</wait>
</entry>
<entry class="com.threerings.tudey.config.ScriptConfig$Goto">
</entry>
</steps>
</implementation>
</entry>
<entry>
<name>Wander/Base</name>
<implementation class="com.threerings.tudey.config.BehaviorConfig$Wander">
<radius>50.0</radius>
</implementation>
</entry>
<entry>
<name>Wander/Snipe</name>
<implementation class="com.threerings.tudey.config.BehaviorConfig$Wander">
<evaluationInterval class="com.threerings.probs.FloatVariable$Constant">
<value>5.5</value>
</evaluationInterval>
<preRotationPause class="com.threerings.probs.FloatVariable$Uniform">
<minimum>1.0</minimum>
<maximum>4.0</maximum>
</preRotationPause>
<postRotationPause class="com.threerings.probs.FloatVariable$Constant">
<value>2.0</value>
</postRotationPause>
</implementation>
</entry>
</object>
</java>

View File

@@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014-2021 Thetya Team
~ Copyright (c) 2005-2011 Three Rings
~
~ https://github.com/Thetya
-->
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.projectx.shop.config.CatalogConfig;">
<entry>
<name>Catalog Test</name>
<implementation class="com.threerings.projectx.shop.config.CatalogConfig$Original">
<includes>
<entry>
</entry>
</includes>
<goods>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>10</price>
<energy>5</energy>
<goodLimit>1</goodLimit>
<item>
<name>Artifact/Preview Event Medal</name>
</item>
</entry>
</goods>
</implementation>
</entry>
<entry>
<name>Rescue Camp/General Goods</name>
<implementation class="com.threerings.projectx.shop.config.CatalogConfig$Original">
<goods>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Sword/Beast Basher</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Sword/Hatchet</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Sword/Proto Sword</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Sword/Slime Slasher</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Handgun/Proto Gun</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Handgun/Punch Gun</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Handgun/Stun Gun</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Weapon/Bomb/Proto Bomb</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Gear/Helm/Cyclops Cap</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Gear/Helm/Mining Hat</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Gear/Armor/Fencing Jacket</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<goodLimit>10</goodLimit>
<item>
<name>Gear/Armor/Vitasuit</name>
</item>
</entry>
<entry class="com.threerings.projectx.shop.config.GoodConfig$Item">
<price>150</price>
<item>
<name>Gear/Shield/Iron Buckler</name>
</item>
</entry>
</goods>
</implementation>
</entry>
</object>
</java>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,18 @@
#
# $Id: mask.properties 11303 2010-12-14 23:47:47Z mjohnson $
#
# Editor mask configuration
collision = wall, edge, player, monster, item, player_barrier, monster_barrier, attack_barrier, \
uncollidable, attack, monster_attack, tier
damage = neutral, player, monster, hazard
floor = default, switch
status = stun, poison, fire, freeze, shock, curse, blind, muddle, sleep, petrify, jelly, doom, \
charm, resist, buff, grab, alert
cube_map_face = positive_x, negative_x, positive_y, negative_y, positive_z, negative_z
progress = tier_2_access, tier_3_access

View File

@@ -0,0 +1,46 @@
#
# $Id: type.properties 14023 2011-03-25 22:45:48Z ray $
#
# Editor type configuration
com.threerings.tudey.config.ActorConfig$Implementation = \
com.threerings.projectx.config.ProjectXActorConfig
com.threerings.tudey.config.ActorSpriteConfig = \
com.threerings.projectx.config.ProjectXActorSpriteConfig
com.threerings.tudey.config.ActionConfig = \
com.threerings.projectx.config.ProjectXActionConfig
com.threerings.tudey.config.BehaviorConfig$Implementation = \
com.threerings.projectx.config.ProjectXBehaviorConfig
com.threerings.tudey.config.ConditionConfig = \
com.threerings.projectx.config.ProjectXConditionConfig
com.threerings.tudey.config.ExpressionConfig = \
com.threerings.projectx.dungeon.config.DungeonExpressionConfig
com.threerings.tudey.config.HandlerConfig = \
com.threerings.projectx.config.ProjectXHandlerConfig
com.threerings.opengl.model.config.ModelConfig$Implementation = \
com.threerings.projectx.config.ProjectXModelConfig
com.threerings.opengl.model.config.GeneratedStaticConfig$Generator = \
com.threerings.projectx.config.ProjectXGeneratorConfig
com.threerings.tudey.config.PlaceableConfig$Implementation = \
com.threerings.projectx.config.ProjectXPlaceableConfig
com.threerings.tudey.config.TargetConfig = \
com.threerings.projectx.config.ProjectXTargetConfig
com.threerings.tudey.config.TileConfig$Implementation = \
com.threerings.projectx.config.ProjectXTileConfig
com.threerings.tudey.config.SceneGlobalConfig$Implementation = \
com.threerings.projectx.config.ProjectXSceneGlobalConfig
com.threerings.tudey.config.ScriptConfig = \
com.threerings.projectx.dungeon.config.DungeonScriptConfig

773
rsrc/rsrc/config/effect.xml Normal file
View File

@@ -0,0 +1,773 @@
<?xml version="1.0" encoding="UTF-8"?>
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.tudey.config.EffectConfig;">
<entry>
<name>Basic</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Model</name>
<paths>implementation.sprite.model</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Lifespan</name>
<paths>implementation.lifespan</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<model>
<name>particle/fx_gethit_monster.dat</name>
</model>
</sprite>
</implementation>
</entry>
<entry>
<name>Debug/Flash Shape</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Shape</name>
<paths>implementation.sprite.model["Shape"], implementation.shape</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<model>
<name>model/debug/flash_shape.dat</name>
<arguments>
<key class="java.lang.String">Shape</key>
<value class="com.threerings.tudey.shape.config.ShapeConfig$Point">
</value>
</arguments>
</model>
</sprite>
<lifespan>750</lifespan>
</implementation>
</entry>
<entry>
<name>Energy Spent</name>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<attachToTarget>true</attachToTarget>
<model>
<name>model/scripted/transient_sound.dat</name>
<arguments>
<key class="java.lang.String">Loop Duration</key>
<value class="java.lang.Float">0.0</value>
<key class="java.lang.String">Sounder</key>
<value class="com.threerings.config.ConfigReference">
<name>Clip/Default (Gain)</name>
<arguments>
<key class="java.lang.String">File</key>
<value class="java.lang.String">sound/effect/world/energy/energy_use_02_mono.ogg</value>
<key class="java.lang.String">Gain</key>
<value class="java.lang.Float">1.0</value>
<key class="java.lang.String">Range</key>
<value class="java.lang.String">Medium</value>
</arguments>
</value>
<key class="java.lang.String">Transform</key>
<value class="com.threerings.math.Transform3D">
</value>
<key class="java.lang.String">Transient</key>
<value class="com.threerings.config.ConfigReference">
<name>particle/fx_energy_spend.dat</name>
</value>
</arguments>
</model>
</sprite>
</implementation>
</entry>
<entry>
<name>Monster/Boss/Swarm Consume</name>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<attachToTarget>true</attachToTarget>
<model>
<name>world/environment/global_particles.dat</name>
<arguments>
<key class="java.lang.String">Model</key>
<value class="com.threerings.config.ConfigReference">
<name>particle/fx_fade_out_in.dat</name>
<arguments>
<key class="java.lang.String">Fade Percent</key>
<value class="java.lang.Float">0.375</value>
<key class="java.lang.String">Total Duration</key>
<value class="java.lang.Float">2.5</value>
</arguments>
</value>
</arguments>
</model>
</sprite>
<action class="com.threerings.projectx.dungeon.config.DungeonActionConfig$ApplyStatus">
<condition>
<name>Monster Attacks/Boss/Swarm/Consume</name>
</condition>
</action>
<targetOnly>true</targetOnly>
</implementation>
</entry>
<entry>
<name>Monster/Boss/Swarm Corruption</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Density</name>
<paths>implementation.sprite.model["Model"]["Density"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<attachToTarget>true</attachToTarget>
<model>
<name>world/environment/global_particles.dat</name>
<arguments>
<key class="java.lang.String">Model</key>
<value class="com.threerings.config.ConfigReference">
<name>character/npc/monster/swarm/parts/frustrum_fx_pixelclouds.dat</name>
<arguments>
<key class="java.lang.String">Density</key>
<value class="java.lang.String">Sparse</value>
</arguments>
</value>
</arguments>
</model>
</sprite>
<lifespan>5000</lifespan>
<targetOnly>true</targetOnly>
</implementation>
</entry>
<entry>
<name>Monster/Boss/Swarm Eject</name>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<attachToTarget>true</attachToTarget>
<model>
<name>world/environment/global_particles.dat</name>
<arguments>
<key class="java.lang.String">Model</key>
<value class="com.threerings.config.ConfigReference">
<name>particle/fx_fade_out_in.dat</name>
<arguments>
<key class="java.lang.String">Fade Percent</key>
<value class="java.lang.Float">0.375</value>
<key class="java.lang.String">Total Duration</key>
<value class="java.lang.Float">2.5</value>
</arguments>
</value>
</arguments>
</model>
</sprite>
<action class="com.threerings.projectx.dungeon.config.DungeonActionConfig$ApplyStatus">
<condition>
<name>Monster Attacks/Boss/Swarm/Eject</name>
</condition>
</action>
<targetOnly>true</targetOnly>
</implementation>
</entry>
<entry>
<name>Monster/Undead/Parts/Zombie Breath (damage)</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Status</name>
<paths>implementation.action.damage.damages[0].status_condition</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<floorMask>0</floorMask>
<attachToTarget>true</attachToTarget>
</sprite>
<action class="com.threerings.projectx.dungeon.config.DungeonActionConfig$DamageRegionFromPoint">
<damage class="com.threerings.projectx.dungeon.config.DamageConfig$Compound">
<damages>
<entry class="com.threerings.projectx.dungeon.config.DamageConfig$Status">
<flags>4</flags>
<statusCondition>
<name>Stun</name>
<arguments>
<key class="java.lang.String">Chance</key>
<value class="java.lang.Float">0.0</value>
<key class="java.lang.String">Power</key>
<value class="java.lang.Integer">0</value>
</arguments>
</statusCondition>
</entry>
</damages>
</damage>
</action>
<lifespan>100</lifespan>
</implementation>
</entry>
<entry id="1">
<name>Monster/Undead/Zombie Breath</name>
<parameters>
<entry class="com.threerings.config.Parameter$Choice" id="2">
<outer ref="1"/>
<name>Variant</name>
<directs>
<entry>
<name>Visual Variant</name>
<paths>implementation.sprite.model["Models"][0].model["Transient"]["Variant"]</paths>
</entry>
</directs>
<options>
<entry>
<outer ref="2"/>
<name>Dust Zombie</name>
<arguments>
<key class="java.lang.String">Visual Variant</key>
<value class="java.lang.String">Dust</value>
</arguments>
</entry>
<entry>
<outer ref="2"/>
<name>Slag Walker</name>
<arguments>
<key class="java.lang.String"><!--empty--></key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">D</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Da</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Dam</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Dama</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Damag</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Damage</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Status">
<flags>4</flags>
<statusCondition>
<name>Fire</name>
<arguments>
<key class="java.lang.String">Chance</key>
<value class="java.lang.Float">0.8</value>
<key class="java.lang.String">Power</key>
<value class="java.lang.Integer">1</value>
</arguments>
</statusCondition>
</value>
<key class="java.lang.String">Damage Variant</key>
<value class="java.lang.String">Slag Walker</value>
<key class="java.lang.String">Visual Variant</key>
<value class="java.lang.String">Fire - Slag Walker</value>
</arguments>
</entry>
<entry>
<outer ref="2"/>
<name>Frozen Shambler</name>
<arguments>
<key class="java.lang.String"><!--empty--></key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">D</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Da</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Dam</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Dama</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Damag</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Damage</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Status">
<flags>4</flags>
<statusCondition>
<name>Freeze</name>
<arguments>
<key class="java.lang.String">Chance</key>
<value class="java.lang.Float">0.8</value>
<key class="java.lang.String">Power</key>
<value class="java.lang.Integer">1</value>
</arguments>
</statusCondition>
</value>
<key class="java.lang.String">Damage Variant</key>
<value class="java.lang.String">Frozen Shambler</value>
<key class="java.lang.String">Visual Variant</key>
<value class="java.lang.String">Ice - Frozen Shambler</value>
</arguments>
</entry>
<entry>
<outer ref="2"/>
<name>Droul</name>
<arguments>
<key class="java.lang.String"><!--empty--></key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">D</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Da</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Dam</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Dama</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Damag</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>2.0</amount>
<flags>4</flags>
</value>
<key class="java.lang.String">Damage</key>
<value class="com.threerings.projectx.dungeon.config.DamageConfig$Status">
<flags>4</flags>
<statusCondition>
<name>Poison</name>
<arguments>
<key class="java.lang.String">Chance</key>
<value class="java.lang.Float">0.8</value>
<key class="java.lang.String">Power</key>
<value class="java.lang.Integer">1</value>
</arguments>
</statusCondition>
</value>
<key class="java.lang.String">Damage Variant</key>
<value class="java.lang.String">Droul</value>
<key class="java.lang.String">Visual Variant</key>
<value class="java.lang.String">Poison - Droul</value>
</arguments>
</entry>
<entry>
<outer ref="2"/>
<name>Frank</name>
<arguments>
<key class="java.lang.String">Visual Variant</key>
<value class="java.lang.String">Shock - Frank</value>
</arguments>
</entry>
</options>
<choice>Dust</choice>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Delay</name>
<paths>implementation.action.delay</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Status</name>
<paths>implementation.action.action.effect["Status"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Sounder</name>
<paths>implementation.sprite.model["Models"][0].model["Sounder"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<floorMask>0</floorMask>
<attachToTarget>true</attachToTarget>
<model>
<name>model/compound/model.dat</name>
<arguments>
<key class="java.lang.String">Influences</key>
<value class="com.threerings.opengl.model.config.InfluenceFlagConfig">
<fog>false</fog>
<lights>false</lights>
<projections>false</projections>
<definitions>false</definitions>
</value>
<key class="java.lang.String">Models</key>
<value class="[Lcom.threerings.opengl.model.config.CompoundConfig$ComponentModel;">
<entry>
<model>
<name>model/scripted/transient_sound.dat</name>
<arguments>
<key class="java.lang.String">Loop Duration</key>
<value class="java.lang.Float">0.0</value>
<key class="java.lang.String">Sounder</key>
<value/>
<key class="java.lang.String">Transform</key>
<value class="com.threerings.math.Transform3D">
</value>
<key class="java.lang.String">Transient</key>
<value class="com.threerings.config.ConfigReference">
<name>particle/fx_zombie_breath.dat</name>
<arguments>
<key class="java.lang.String">Variant</key>
<value class="java.lang.String">Dust</value>
</arguments>
</value>
</arguments>
</model>
<transform>
<scale>1.2</scale>
<translation>0.0, -1.34, 0.0</translation>
<rotation>0.0, 0.0, -1.0, 9.099629E-7</rotation>
</transform>
</entry>
</value>
</arguments>
</model>
</sprite>
<action class="com.threerings.tudey.config.ActionConfig$Delayed">
<action class="com.threerings.tudey.config.ActionConfig$FireEffect">
<effect>
<name>Monster/Undead/Parts/Zombie Breath (damage)</name>
<arguments>
<key class="java.lang.String">Status</key>
<value class="com.threerings.config.ConfigReference">
<name>Stun</name>
<arguments>
<key class="java.lang.String">Chance</key>
<value class="java.lang.Float">0.0</value>
<key class="java.lang.String">Power</key>
<value class="java.lang.Integer">0</value>
</arguments>
</value>
</arguments>
</effect>
</action>
</action>
<lifespan>100</lifespan>
</implementation>
</entry>
<entry>
<name>Objects/Monster Objects/Grim Totem/Zombie resurrection, pulse</name>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<floorMask>0</floorMask>
<attachToTarget>true</attachToTarget>
<model>
<name>particle/fx_grimtotem_shockwave.dat</name>
<arguments>
<key class="java.lang.String">Variant</key>
<value class="java.lang.String">Totem</value>
</arguments>
</model>
</sprite>
<shape class="com.threerings.tudey.shape.config.ShapeConfig$Circle">
<radius>6.0</radius>
</shape>
<action class="com.threerings.tudey.config.ActionConfig$Compound">
<actions>
<entry class="com.threerings.tudey.config.ActionConfig$Conditional">
<action class="com.threerings.tudey.config.ActionConfig$Compound">
</action>
</entry>
</actions>
</action>
<lifespan>1500</lifespan>
</implementation>
</entry>
<entry>
<name>Objects/Monster Objects/Grim Totem/Zombie resurrection, warning</name>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<floorMask>0</floorMask>
<attachToTarget>true</attachToTarget>
<model>
<name>particle/fx_grimtotem_warning.dat</name>
</model>
</sprite>
<shape class="com.threerings.tudey.shape.config.ShapeConfig$Circle">
<radius>6.0</radius>
</shape>
<action class="com.threerings.tudey.config.ActionConfig$Compound">
</action>
</implementation>
</entry>
<entry>
<name>Player Faction/Turret, Auto/Parts/Railgun beam (damage)</name>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<model>
<name>model/debug/flash_shape.dat</name>
<arguments>
<key class="java.lang.String">Shape</key>
<value class="com.threerings.tudey.shape.config.ShapeConfig$Compound">
<shapes>
<entry>
<shape class="com.threerings.tudey.shape.config.ShapeConfig$Rectangle">
<width>0.6</width>
<height>12.0</height>
</shape>
<transform>
<translation>0.0, -6.0</translation>
</transform>
</entry>
</shapes>
</value>
</arguments>
</model>
</sprite>
<action class="com.threerings.projectx.dungeon.config.DungeonActionConfig$DamageRegionFromPoint">
<damage class="com.threerings.projectx.dungeon.config.DamageConfig$Normal">
<amount>10.0</amount>
<flags>2</flags>
</damage>
<impulseDealt>
<translation>2.0, 0.0</translation>
<duration>200</duration>
<level>5</level>
</impulseDealt>
</action>
<lifespan>2000</lifespan>
</implementation>
</entry>
<entry>
<name>Player Faction/Turret, Auto/Railgun beam</name>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<action class="com.threerings.tudey.config.ActionConfig$Conditional">
<action class="com.threerings.tudey.config.ActionConfig$FireEffect">
<effect>
<name>Player Faction/Turret, Auto/Parts/Railgun beam (damage)</name>
</effect>
</action>
</action>
<lifespan>2000</lifespan>
</implementation>
</entry>
<entry>
<name>Player/Energy Rez</name>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<model>
<name>particle/fx_shareheart-energy.dat</name>
</model>
</sprite>
<lifespan>2000</lifespan>
</implementation>
</entry>
<entry>
<name>Player/Health Rez</name>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<model>
<name>particle/fx_shareheart.dat</name>
</model>
</sprite>
<lifespan>2000</lifespan>
</implementation>
</entry>
<entry>
<name>Player/Pickup Item</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Texture</name>
<paths>implementation.sprite.model["Texture"]["Texture"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<attachToTarget>true</attachToTarget>
<model>
<name>particle/fx_getitem.dat</name>
<arguments>
<key class="java.lang.String">Texture</key>
<value class="com.threerings.config.ConfigReference">
<name>item/drop/icon.dat</name>
<arguments>
<key class="java.lang.String">Halo</key>
<value/>
<key class="java.lang.String">Texture</key>
<value class="com.threerings.config.ConfigReference">
<name>2D/File/Colorized (Multiple)/Default</name>
<arguments>
<key class="java.lang.String">Colorizations</key>
<value class="[Lcom.threerings.opengl.renderer.config.ColorizationConfig;">
<entry class="com.threerings.opengl.renderer.config.ColorizationConfig$Normal">
<colorization>516</colorization>
</entry>
<entry class="com.threerings.opengl.renderer.config.ColorizationConfig$Normal">
<colorization>771</colorization>
</entry>
<entry class="com.threerings.opengl.renderer.config.ColorizationConfig$Normal">
<colorization>1026</colorization>
</entry>
</value>
<key class="java.lang.String">File</key>
<value class="java.lang.String">ui/icon/inventory/icon_armor.png</value>
</arguments>
</value>
</arguments>
</value>
</arguments>
</model>
</sprite>
</implementation>
</entry>
<entry>
<name>Player/Use Item</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Texture</name>
<paths>implementation.sprite.model["Transient"]["Texture"]["Texture"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<attachToTarget>true</attachToTarget>
<model>
<name>model/scripted/transient_sound.dat</name>
<arguments>
<key class="java.lang.String">Loop Duration</key>
<value class="java.lang.Float">0.0</value>
<key class="java.lang.String">Move with Origin</key>
<value class="java.lang.Boolean">false</value>
<key class="java.lang.String">Sounder</key>
<value class="com.threerings.config.ConfigReference">
<name>Compound</name>
<arguments>
<key class="java.lang.String">Sounders</key>
<value class="[Lcom.threerings.openal.config.SounderConfig$ComponentSounder;">
<entry>
<sounder>
<name>Clip/Default (Gain) (Pitch)</name>
<arguments>
<key class="java.lang.String">File</key>
<value class="java.lang.String">sound/effect/player/player_pickup.ogg</value>
<key class="java.lang.String">Gain</key>
<value class="java.lang.Float">1.0</value>
<key class="java.lang.String">Pitch</key>
<value class="java.lang.Float">1.1</value>
<key class="java.lang.String">Range</key>
<value class="java.lang.String">Medium</value>
</arguments>
</sounder>
</entry>
<entry>
<sounder>
<name>Clip/Default (Gain) (Pitch)</name>
<arguments>
<key class="java.lang.String">File</key>
<value class="java.lang.String">sound/effect/item/heart_acquire_01.ogg</value>
<key class="java.lang.String">Gain</key>
<value class="java.lang.Float">0.4</value>
<key class="java.lang.String">Pitch</key>
<value class="java.lang.Float">0.8</value>
<key class="java.lang.String">Range</key>
<value class="java.lang.String">Medium</value>
</arguments>
</sounder>
</entry>
</value>
</arguments>
</value>
<key class="java.lang.String">Transform</key>
<value class="com.threerings.math.Transform3D">
</value>
<key class="java.lang.String">Transient</key>
<value class="com.threerings.config.ConfigReference">
<name>particle/fx_useitem.dat</name>
<arguments>
<key class="java.lang.String">Texture</key>
<value class="com.threerings.config.ConfigReference">
<name>item/drop/icon.dat</name>
<arguments>
<key class="java.lang.String">Halo</key>
<value class="com.threerings.config.ConfigReference">
<name>item/drop/ambient_rim.dat</name>
<arguments>
<key class="java.lang.String">Fixed</key>
<value/>
</arguments>
</value>
<key class="java.lang.String">Texture</key>
<value class="com.threerings.config.ConfigReference">
<name>2D/File/Colorized (Multiple)/Default</name>
<arguments>
<key class="java.lang.String">Colorizations</key>
<value class="[Lcom.threerings.opengl.renderer.config.ColorizationConfig;">
<entry class="com.threerings.opengl.renderer.config.ColorizationConfig$Normal">
<colorization>516</colorization>
</entry>
<entry class="com.threerings.opengl.renderer.config.ColorizationConfig$Normal">
<colorization>771</colorization>
</entry>
<entry class="com.threerings.opengl.renderer.config.ColorizationConfig$Normal">
<colorization>1026</colorization>
</entry>
</value>
<key class="java.lang.String">File</key>
<value class="java.lang.String">ui/icon/inventory/icon_armor.png</value>
</arguments>
</value>
</arguments>
</value>
</arguments>
</value>
</arguments>
</model>
</sprite>
<lifespan>433</lifespan>
</implementation>
</entry>
<entry>
<name>Sound Effect</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Sound</name>
<paths>implementation.sprite.model["Sounder"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.EffectConfig$Original">
<sprite class="com.threerings.tudey.config.EffectSpriteConfig$Default">
<model>
<name>model/scripted/transient_sound.dat</name>
<arguments>
<key class="java.lang.String">Loop Duration</key>
<value class="java.lang.Float">0.0</value>
<key class="java.lang.String">Sounder</key>
<value/>
<key class="java.lang.String">Transform</key>
<value class="com.threerings.math.Transform3D">
</value>
<key class="java.lang.String">Transient</key>
<value/>
</arguments>
</model>
</sprite>
</implementation>
</entry>
</object>
</java>

453
rsrc/rsrc/config/emote.xml Normal file
View File

@@ -0,0 +1,453 @@
<?xml version="1.0" encoding="UTF-8"?>
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.projectx.config.EmoteConfig;">
<entry>
<name>Amaze</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Attack</name>
<balloonless>true</balloonless>
<defaultKey>71</defaultKey>
<duration>700</duration>
<animation>
<name>character/pc/emote_basic.dat</name>
<arguments>
<key class="java.lang.String">Action</key>
<value class="com.threerings.opengl.model.config.ActionConfig$SpawnTransient">
<moveWithOrigin>true</moveWithOrigin>
<model>
<name>particle/emoticons/fx_command_burst.dat</name>
<arguments>
<key class="java.lang.String">Bubble - Color</key>
<value class="java.lang.String">Attack</value>
<key class="java.lang.String">Variant</key>
<value class="com.threerings.config.ConfigReference">
<name>particle/emoticons/fx_attack.dat</name>
</value>
</arguments>
</model>
<node>%ROOT%</node>
</value>
</arguments>
</animation>
</entry>
<entry>
<name>Beg</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Belch</name>
</entry>
<entry>
<name>Bored</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Bow</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Burp</name>
</entry>
<entry>
<name>Cheer</name>
<targetable>true</targetable>
<duration>1667</duration>
<animation>
<name>character/pc/emotes/animation_clap.dat</name>
</animation>
</entry>
<entry>
<name>Clap</name>
<targetable>true</targetable>
<duration>1667</duration>
<animation>
<name>character/pc/emotes/animation_clap.dat</name>
</animation>
</entry>
<entry>
<name>Come</name>
<balloonless>true</balloonless>
<defaultKey>75</defaultKey>
</entry>
<entry>
<name>Congratulate</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Crazy</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Cry</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Dance</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Derp</name>
</entry>
<entry>
<name>Epicfail</name>
<targetable>true</targetable>
<duration>2222</duration>
<animation>
<name>character/pc/emotes/animation_shrug.dat</name>
</animation>
</entry>
<entry>
<name>Fail</name>
<targetable>true</targetable>
<duration>2222</duration>
<animation>
<name>character/pc/emotes/animation_shrug.dat</name>
</animation>
</entry>
<entry>
<name>Fallback</name>
<balloonless>true</balloonless>
<defaultKey>72</defaultKey>
<duration>700</duration>
<animation>
<name>character/pc/emote_basic.dat</name>
<arguments>
<key class="java.lang.String">Action</key>
<value class="com.threerings.opengl.model.config.ActionConfig$SpawnTransient">
<moveWithOrigin>true</moveWithOrigin>
<model>
<name>particle/emoticons/fx_command_burst.dat</name>
<arguments>
<key class="java.lang.String">Bubble - Color</key>
<value class="java.lang.String">Fall Back</value>
<key class="java.lang.String">Variant</key>
<value class="com.threerings.config.ConfigReference">
<name>particle/emoticons/fx_fallback.dat</name>
</value>
</arguments>
</model>
<node>%ROOT%</node>
</value>
</arguments>
</animation>
</entry>
<entry>
<name>Flex</name>
</entry>
<entry>
<name>Flirt</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Follow</name>
<balloonless>true</balloonless>
<defaultKey>79</defaultKey>
<duration>700</duration>
<animation>
<name>character/pc/emote_basic.dat</name>
<arguments>
<key class="java.lang.String">Action</key>
<value class="com.threerings.opengl.model.config.ActionConfig$SpawnTransient">
<moveWithOrigin>true</moveWithOrigin>
<model>
<name>particle/emoticons/fx_command_follow.dat</name>
</model>
<node>%ROOT%</node>
</value>
</arguments>
</animation>
</entry>
<entry>
<name>Frown</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Gaze</name>
</entry>
<entry>
<name>Giggle</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Goodbye</name>
<targetable>true</targetable>
<duration>1667</duration>
<animation>
<name>character/pc/emotes/animation_wave.dat</name>
</animation>
</entry>
<entry>
<name>Grin</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Happy</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Hello</name>
<targetable>true</targetable>
<duration>1667</duration>
<animation>
<name>character/pc/emotes/animation_wave.dat</name>
</animation>
</entry>
<entry>
<name>Helpme</name>
<balloonless>true</balloonless>
<defaultKey>82</defaultKey>
<duration>700</duration>
<animation>
<name>character/pc/emote_basic.dat</name>
<arguments>
<key class="java.lang.String">Action</key>
<value class="com.threerings.opengl.model.config.ActionConfig$SpawnTransient">
<moveWithOrigin>true</moveWithOrigin>
<model>
<name>particle/emoticons/fx_command_burst.dat</name>
<arguments>
<key class="java.lang.String">Bubble - Color</key>
<value class="java.lang.String">Help</value>
<key class="java.lang.String">Variant</key>
<value class="com.threerings.config.ConfigReference">
<name>particle/emoticons/fx_help.dat</name>
</value>
</arguments>
</model>
<node>%ROOT%</node>
</value>
</arguments>
</animation>
</entry>
<entry>
<name>Herp</name>
</entry>
<entry>
<name>Hug</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Hungry</name>
</entry>
<entry>
<name>Impatient</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Joy</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Kidding</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Kiss</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Laugh</name>
<targetable>true</targetable>
<duration>1667</duration>
<animation>
<name>character/pc/emotes/animation_laugh.dat</name>
</animation>
</entry>
<entry>
<name>Lonely</name>
</entry>
<entry>
<name>Look</name>
<targetable>true</targetable>
<duration>1667</duration>
<animation>
<name>character/pc/emotes/animation_point.dat</name>
</animation>
</entry>
<entry>
<name>Love</name>
<targetable>true</targetable>
</entry>
<entry>
<name>No</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Point</name>
<targetable>true</targetable>
<duration>1667</duration>
<animation>
<name>character/pc/emotes/animation_point.dat</name>
</animation>
</entry>
<entry>
<name>Poke</name>
<targetable>true</targetable>
<balloonless>true</balloonless>
<duration>1667</duration>
<animation>
<name>character/pc/emotes/animation_point.dat</name>
</animation>
</entry>
<entry>
<name>Ready</name>
<balloonless>true</balloonless>
<defaultKey>80</defaultKey>
<duration>2000</duration>
<animation>
<name>character/pc/emotes/animation_salute.dat</name>
</animation>
</entry>
<entry>
<name>Rude</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Sad</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Salute</name>
<targetable>true</targetable>
<balloonless>true</balloonless>
<duration>2000</duration>
<animation>
<name>character/pc/emotes/animation_salute.dat</name>
</animation>
</entry>
<entry>
<name>Shrug</name>
<targetable>true</targetable>
<duration>2222</duration>
<animation>
<name>character/pc/emotes/animation_shrug.dat</name>
</animation>
</entry>
<entry>
<name>Sigh</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Sit</name>
<balloonless>true</balloonless>
<allowsMovement>false</allowsMovement>
<endDuration>1333</endDuration>
<animation>
<name>animation/sequential/simple.dat</name>
<arguments>
<key class="java.lang.String">Animations</key>
<value class="[Lcom.threerings.opengl.model.config.AnimationConfig$ComponentAnimation;">
<entry>
<animation>
<name>character/pc/emotes/animation_sit-start.dat</name>
</animation>
</entry>
<entry>
<animation>
<name>character/pc/emotes/animation_sit-loop.dat</name>
</animation>
</entry>
</value>
<key class="java.lang.String">Priority</key>
<value class="java.lang.Integer">0</value>
</arguments>
</animation>
<endAnimation>
<name>character/pc/emotes/animation_sit-end.dat</name>
</endAnimation>
</entry>
<entry>
<name>Sleep</name>
<allowsMovement>false</allowsMovement>
<animation>
<name>animation/sequential/simple.dat</name>
<arguments>
<key class="java.lang.String">Animations</key>
<value class="[Lcom.threerings.opengl.model.config.AnimationConfig$ComponentAnimation;">
<entry>
<animation>
<name>character/pc/sleeping/loop.dat</name>
</animation>
</entry>
</value>
<key class="java.lang.String">Priority</key>
<value class="java.lang.Integer">0</value>
</arguments>
</animation>
</entry>
<entry>
<name>Sleepy</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Smell</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Smile</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Sniff</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Sorry</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Stare</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Thank</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Thirsty</name>
</entry>
<entry>
<name>Tickle</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Tired</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Wait</name>
<balloonless>true</balloonless>
<defaultKey>81</defaultKey>
</entry>
<entry>
<name>Wave</name>
<targetable>true</targetable>
<balloonless>true</balloonless>
<duration>1667</duration>
<animation>
<name>character/pc/emotes/animation_wave.dat</name>
</animation>
</entry>
<entry>
<name>Whine</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Wince</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Wink</name>
<targetable>true</targetable>
</entry>
<entry>
<name>Yawn</name>
</entry>
<entry>
<name>Yes</name>
<targetable>true</targetable>
</entry>
</object>
</java>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014-2021 Thetya Team
~ Copyright (c) 2005-2011 Three Rings
~
~ https://github.com/Thetya
-->
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.tudey.config.GroundConfig;">
<entry>
<name>Ground Test</name>
<implementation class="com.threerings.tudey.config.GroundConfig$Original">
<floor>
<entry>
</entry>
</floor>
<edgeCases>
<entry>
</entry>
</edgeCases>
</implementation>
</entry>
</object>
</java>

59394
rsrc/rsrc/config/item.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?>
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.projectx.dungeon.config.ItemDepthWeightConfig;">
<entry>
<name>Gear</name>
<implementation class="com.threerings.projectx.dungeon.config.ItemDepthWeightConfig$Original">
<depthWeights>
<entry>
<weight>200</weight>
</entry>
<entry>
<weight>200</weight>
</entry>
<entry>
<startDepth>3</startDepth>
<idealDepth>5</idealDepth>
<weight>150</weight>
</entry>
<entry>
<startDepth>9</startDepth>
<idealDepth>12</idealDepth>
<weight>100</weight>
</entry>
<entry>
<startDepth>12</startDepth>
<idealDepth>14</idealDepth>
<weight>50</weight>
</entry>
<entry>
<startDepth>19</startDepth>
<idealDepth>24</idealDepth>
<weight>5</weight>
</entry>
</depthWeights>
</implementation>
</entry>
<entry>
<name>Materials</name>
<implementation class="com.threerings.projectx.dungeon.config.ItemDepthWeightConfig$Original">
<depthWeights>
<entry>
<weight>200</weight>
</entry>
<entry>
<weight>200</weight>
</entry>
<entry>
<startDepth>3</startDepth>
<idealDepth>5</idealDepth>
<weight>150</weight>
</entry>
<entry>
<startDepth>9</startDepth>
<idealDepth>12</idealDepth>
<weight>100</weight>
</entry>
<entry>
<startDepth>12</startDepth>
<idealDepth>14</idealDepth>
<weight>50</weight>
</entry>
<entry>
<startDepth>19</startDepth>
<idealDepth>24</idealDepth>
<weight>25</weight>
</entry>
</depthWeights>
</implementation>
</entry>
<entry>
<name>Materials, Recipe Loot</name>
<implementation class="com.threerings.projectx.dungeon.config.ItemDepthWeightConfig$Original">
<depthWeights>
<entry>
</entry>
<entry>
<weight>200</weight>
</entry>
<entry>
<startDepth>3</startDepth>
<idealDepth>5</idealDepth>
<weight>175</weight>
</entry>
<entry>
<startDepth>9</startDepth>
<idealDepth>12</idealDepth>
<weight>150</weight>
</entry>
<entry>
<startDepth>12</startDepth>
<idealDepth>14</idealDepth>
<weight>100</weight>
</entry>
<entry>
<startDepth>19</startDepth>
<idealDepth>24</idealDepth>
<weight>50</weight>
</entry>
</depthWeights>
</implementation>
</entry>
<entry>
<name>Mineral Deposit</name>
<implementation class="com.threerings.projectx.dungeon.config.ItemDepthWeightConfig$Original">
<depthWeights>
<entry>
</entry>
<entry>
<weight>200</weight>
</entry>
<entry>
<weight>100</weight>
</entry>
<entry>
<idealDepth>5</idealDepth>
<weight>50</weight>
</entry>
<entry>
<idealDepth>9</idealDepth>
<weight>10</weight>
</entry>
<entry>
<idealDepth>12</idealDepth>
<weight>2</weight>
</entry>
</depthWeights>
</implementation>
</entry>
</object>
</java>

View File

@@ -0,0 +1,576 @@
<?xml version="1.0" encoding="UTF-8"?>
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.projectx.item.config.ItemPropertyConfig;">
<entry>
<name>Armor</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Level">
<itemProps>
<entry>
<buyPrice>150</buyPrice>
<sellPrice>1</sellPrice>
<baseHeat>10</baseHeat>
<maxHeat>1000</maxHeat>
<levelTable>
<name>Gear/Gear (+Health) 0</name>
</levelTable>
</entry>
<entry>
<buyPrice>3000</buyPrice>
<sellPrice>300</sellPrice>
<baseHeat>75</baseHeat>
<levelTable>
<name>Gear/Gear (+Health) 1</name>
</levelTable>
</entry>
<entry>
<buyPrice>7500</buyPrice>
<sellPrice>750</sellPrice>
<baseHeat>100</baseHeat>
<maxHeat>5000</maxHeat>
<levelTable>
<name>Gear/Gear (+Health) 2</name>
</levelTable>
</entry>
<entry>
<buyPrice>35000</buyPrice>
<sellPrice>3500</sellPrice>
<baseHeat>125</baseHeat>
<maxHeat>10000</maxHeat>
<levelTable>
<name>Gear/Gear (+Health) 3</name>
</levelTable>
</entry>
<entry>
<buyPrice>100000</buyPrice>
<sellPrice>10000</sellPrice>
<baseHeat>150</baseHeat>
<maxHeat>20000</maxHeat>
<levelTable>
<name>Gear/Gear (+Health) 4</name>
</levelTable>
</entry>
<entry>
<buyPrice>300000</buyPrice>
<sellPrice>30000</sellPrice>
<baseHeat>200</baseHeat>
<maxHeat>30000</maxHeat>
<levelTable>
<name>Gear/Gear (+Health) 5</name>
</levelTable>
</entry>
</itemProps>
</implementation>
</entry>
<entry>
<name>Bomb</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Level">
<itemProps>
<entry>
<buyPrice>150</buyPrice>
<sellPrice>1</sellPrice>
<baseHeat>10</baseHeat>
<maxHeat>1000</maxHeat>
<levelTable>
<name>Weapon/Weapon 0</name>
</levelTable>
</entry>
<entry>
<buyPrice>3000</buyPrice>
<sellPrice>300</sellPrice>
<baseHeat>75</baseHeat>
<levelTable>
<name>Weapon/Weapon 1</name>
</levelTable>
</entry>
<entry>
<buyPrice>7500</buyPrice>
<sellPrice>750</sellPrice>
<baseHeat>100</baseHeat>
<maxHeat>5000</maxHeat>
<levelTable>
<name>Weapon/Weapon 2</name>
</levelTable>
</entry>
<entry>
<buyPrice>35000</buyPrice>
<sellPrice>3500</sellPrice>
<baseHeat>125</baseHeat>
<maxHeat>10000</maxHeat>
<levelTable>
<name>Weapon/Weapon 3</name>
</levelTable>
</entry>
<entry>
<buyPrice>100000</buyPrice>
<sellPrice>10000</sellPrice>
<baseHeat>150</baseHeat>
<maxHeat>20000</maxHeat>
<levelTable>
<name>Weapon/Weapon 4</name>
</levelTable>
</entry>
<entry>
<buyPrice>300000</buyPrice>
<sellPrice>30000</sellPrice>
<baseHeat>200</baseHeat>
<maxHeat>30000</maxHeat>
<levelTable>
<name>Weapon/Weapon 5</name>
</levelTable>
</entry>
</itemProps>
</implementation>
</entry>
<entry>
<name>Handgun</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Level">
<itemProps>
<entry>
<buyPrice>150</buyPrice>
<sellPrice>1</sellPrice>
<baseHeat>10</baseHeat>
<maxHeat>1000</maxHeat>
<levelTable>
<name>Weapon/Weapon 0</name>
</levelTable>
</entry>
<entry>
<buyPrice>3000</buyPrice>
<sellPrice>300</sellPrice>
<baseHeat>75</baseHeat>
<levelTable>
<name>Weapon/Weapon 1</name>
</levelTable>
</entry>
<entry>
<buyPrice>7500</buyPrice>
<sellPrice>750</sellPrice>
<baseHeat>100</baseHeat>
<maxHeat>5000</maxHeat>
<levelTable>
<name>Weapon/Weapon 2</name>
</levelTable>
</entry>
<entry>
<buyPrice>35000</buyPrice>
<sellPrice>3500</sellPrice>
<baseHeat>125</baseHeat>
<maxHeat>10000</maxHeat>
<levelTable>
<name>Weapon/Weapon 3</name>
</levelTable>
</entry>
<entry>
<buyPrice>100000</buyPrice>
<sellPrice>10000</sellPrice>
<baseHeat>150</baseHeat>
<maxHeat>20000</maxHeat>
<levelTable>
<name>Weapon/Weapon 4</name>
</levelTable>
</entry>
<entry>
<buyPrice>300000</buyPrice>
<sellPrice>30000</sellPrice>
<baseHeat>200</baseHeat>
<maxHeat>30000</maxHeat>
<levelTable>
<name>Weapon/Weapon 5</name>
</levelTable>
</entry>
</itemProps>
</implementation>
</entry>
<entry>
<name>Helm</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Level">
<itemProps>
<entry>
<buyPrice>150</buyPrice>
<sellPrice>1</sellPrice>
<baseHeat>10</baseHeat>
<maxHeat>1000</maxHeat>
<levelTable>
<name>Gear/Helm 0</name>
</levelTable>
</entry>
<entry>
<buyPrice>3000</buyPrice>
<sellPrice>300</sellPrice>
<baseHeat>75</baseHeat>
<levelTable>
<name>Gear/Helm 1</name>
</levelTable>
</entry>
<entry>
<buyPrice>7500</buyPrice>
<sellPrice>750</sellPrice>
<baseHeat>100</baseHeat>
<maxHeat>5000</maxHeat>
<levelTable>
<name>Gear/Helm 2</name>
</levelTable>
</entry>
<entry>
<buyPrice>35000</buyPrice>
<sellPrice>3500</sellPrice>
<baseHeat>125</baseHeat>
<maxHeat>10000</maxHeat>
<levelTable>
<name>Gear/Helm 3</name>
</levelTable>
</entry>
<entry>
<buyPrice>100000</buyPrice>
<sellPrice>10000</sellPrice>
<baseHeat>150</baseHeat>
<maxHeat>20000</maxHeat>
<levelTable>
<name>Gear/Helm 4</name>
</levelTable>
</entry>
<entry>
<buyPrice>300000</buyPrice>
<sellPrice>30000</sellPrice>
<baseHeat>200</baseHeat>
<maxHeat>30000</maxHeat>
<levelTable>
<name>Gear/Helm 5</name>
</levelTable>
</entry>
</itemProps>
</implementation>
</entry>
<entry>
<name>Material</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Base">
<itemProps>
<entry>
<buyPrice>10</buyPrice>
<sellPrice>1</sellPrice>
</entry>
<entry>
<buyPrice>50</buyPrice>
<sellPrice>1</sellPrice>
</entry>
<entry>
<buyPrice>250</buyPrice>
<sellPrice>5</sellPrice>
</entry>
<entry>
<buyPrice>1250</buyPrice>
<sellPrice>10</sellPrice>
</entry>
<entry>
<buyPrice>6250</buyPrice>
<sellPrice>25</sellPrice>
</entry>
<entry>
<buyPrice>31250</buyPrice>
<sellPrice>50</sellPrice>
</entry>
</itemProps>
</implementation>
</entry>
<entry>
<name>Pickup</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Base">
<itemProps>
<entry>
<buyPrice>50</buyPrice>
<sellPrice>1</sellPrice>
</entry>
<entry>
<buyPrice>100</buyPrice>
<sellPrice>1</sellPrice>
</entry>
<entry>
<buyPrice>150</buyPrice>
<sellPrice>5</sellPrice>
</entry>
<entry>
<buyPrice>200</buyPrice>
<sellPrice>10</sellPrice>
</entry>
<entry>
<buyPrice>250</buyPrice>
<sellPrice>25</sellPrice>
</entry>
<entry>
<buyPrice>500</buyPrice>
<sellPrice>50</sellPrice>
</entry>
</itemProps>
</implementation>
</entry>
<entry>
<name>Recipe/Alloy</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Base">
<itemProps>
<entry>
<buyPrice>10</buyPrice>
<sellPrice>1</sellPrice>
</entry>
<entry>
<buyPrice>250</buyPrice>
<sellPrice>1</sellPrice>
</entry>
<entry>
<buyPrice>1000</buyPrice>
<sellPrice>5</sellPrice>
</entry>
<entry>
<buyPrice>5500</buyPrice>
<sellPrice>10</sellPrice>
</entry>
<entry>
<buyPrice>15000</buyPrice>
<sellPrice>25</sellPrice>
</entry>
<entry>
<buyPrice>45000</buyPrice>
<sellPrice>50</sellPrice>
</entry>
</itemProps>
</implementation>
</entry>
<entry>
<name>Recipe/Armor</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Derived">
<itemProperty>
<name>Recipe/Alloy</name>
</itemProperty>
</implementation>
</entry>
<entry>
<name>Recipe/Bomb</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Derived">
<itemProperty>
<name>Recipe/Alloy</name>
</itemProperty>
</implementation>
</entry>
<entry>
<name>Recipe/Handgun</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Derived">
<itemProperty>
<name>Recipe/Alloy</name>
</itemProperty>
</implementation>
</entry>
<entry>
<name>Recipe/Helm</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Derived">
<itemProperty>
<name>Recipe/Alloy</name>
</itemProperty>
</implementation>
</entry>
<entry>
<name>Recipe/Material</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Derived">
<itemProperty>
<name>Recipe/Alloy</name>
</itemProperty>
</implementation>
</entry>
<entry>
<name>Recipe/Shield</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Derived">
<itemProperty>
<name>Recipe/Alloy</name>
</itemProperty>
</implementation>
</entry>
<entry>
<name>Recipe/Sword</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Derived">
<itemProperty>
<name>Recipe/Alloy</name>
</itemProperty>
</implementation>
</entry>
<entry>
<name>Shield</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Level">
<itemProps>
<entry>
<buyPrice>150</buyPrice>
<sellPrice>1</sellPrice>
<baseHeat>10</baseHeat>
<maxHeat>1000</maxHeat>
<levelTable>
<name>Gear/Gear 0</name>
</levelTable>
</entry>
<entry>
<buyPrice>3000</buyPrice>
<sellPrice>300</sellPrice>
<baseHeat>75</baseHeat>
<levelTable>
<name>Gear/Gear 1</name>
</levelTable>
</entry>
<entry>
<buyPrice>7500</buyPrice>
<sellPrice>750</sellPrice>
<baseHeat>100</baseHeat>
<maxHeat>5000</maxHeat>
<levelTable>
<name>Gear/Gear 2</name>
</levelTable>
</entry>
<entry>
<buyPrice>35000</buyPrice>
<sellPrice>3500</sellPrice>
<baseHeat>125</baseHeat>
<maxHeat>10000</maxHeat>
<levelTable>
<name>Gear/Gear 3</name>
</levelTable>
</entry>
<entry>
<buyPrice>100000</buyPrice>
<sellPrice>10000</sellPrice>
<baseHeat>150</baseHeat>
<maxHeat>20000</maxHeat>
<levelTable>
<name>Gear/Gear 4</name>
</levelTable>
</entry>
<entry>
<buyPrice>300000</buyPrice>
<sellPrice>30000</sellPrice>
<baseHeat>200</baseHeat>
<maxHeat>30000</maxHeat>
<levelTable>
<name>Gear/Gear 5</name>
</levelTable>
</entry>
</itemProps>
</implementation>
</entry>
<entry>
<name>Sword</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Level">
<itemProps>
<entry>
<buyPrice>150</buyPrice>
<sellPrice>1</sellPrice>
<baseHeat>10</baseHeat>
<maxHeat>1000</maxHeat>
<levelTable>
<name>Weapon/Weapon 0</name>
</levelTable>
</entry>
<entry>
<buyPrice>3000</buyPrice>
<sellPrice>300</sellPrice>
<baseHeat>75</baseHeat>
<levelTable>
<name>Weapon/Weapon 1</name>
</levelTable>
</entry>
<entry>
<buyPrice>7500</buyPrice>
<sellPrice>750</sellPrice>
<baseHeat>100</baseHeat>
<maxHeat>5000</maxHeat>
<levelTable>
<name>Weapon/Weapon 2</name>
</levelTable>
</entry>
<entry>
<buyPrice>35000</buyPrice>
<sellPrice>3500</sellPrice>
<baseHeat>125</baseHeat>
<maxHeat>10000</maxHeat>
<levelTable>
<name>Weapon/Weapon 3</name>
</levelTable>
</entry>
<entry>
<buyPrice>100000</buyPrice>
<sellPrice>10000</sellPrice>
<baseHeat>150</baseHeat>
<maxHeat>20000</maxHeat>
<levelTable>
<name>Weapon/Weapon 4</name>
</levelTable>
</entry>
<entry>
<buyPrice>300000</buyPrice>
<sellPrice>30000</sellPrice>
<baseHeat>200</baseHeat>
<maxHeat>30000</maxHeat>
<levelTable>
<name>Weapon/Weapon 5</name>
</levelTable>
</entry>
</itemProps>
</implementation>
</entry>
<entry>
<name>Trinket</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Level">
<itemProps>
<entry>
<buyPrice>150</buyPrice>
<sellPrice>1</sellPrice>
</entry>
<entry>
<buyPrice>3000</buyPrice>
<sellPrice>100</sellPrice>
</entry>
<entry>
<buyPrice>7500</buyPrice>
<sellPrice>250</sellPrice>
</entry>
<entry>
<buyPrice>35000</buyPrice>
<sellPrice>1200</sellPrice>
</entry>
<entry>
<buyPrice>100000</buyPrice>
<sellPrice>3500</sellPrice>
</entry>
<entry>
<buyPrice>300000</buyPrice>
<sellPrice>10000</sellPrice>
</entry>
</itemProps>
</implementation>
</entry>
<entry>
<name>Vitapod</name>
<implementation class="com.threerings.projectx.item.config.ItemPropertyConfig$Level">
<itemProps>
<entry>
<buyPrice>400</buyPrice>
<sellPrice>1</sellPrice>
</entry>
<entry>
<buyPrice>600</buyPrice>
<sellPrice>60</sellPrice>
</entry>
<entry>
<buyPrice>800</buyPrice>
<sellPrice>80</sellPrice>
</entry>
<entry>
<buyPrice>1200</buyPrice>
<sellPrice>120</sellPrice>
</entry>
<entry>
<buyPrice>1800</buyPrice>
<sellPrice>180</sellPrice>
</entry>
<entry>
<buyPrice>3000</buyPrice>
<sellPrice>300</sellPrice>
</entry>
</itemProps>
</implementation>
</entry>
</object>
</java>

View File

@@ -0,0 +1,849 @@
<?xml version="1.0" encoding="UTF-8"?>
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.projectx.item.config.LevelTableConfig;">
<entry>
<name>Base/Attack/Attack Bonus (0, 1)</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Levels">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$Empty">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.05</damage>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.1</damage>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.15</damage>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.25</damage>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.4</damage>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.55</damage>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.7</damage>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.85</damage>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>1.0</damage>
<capped>false</capped>
</entry>
</levels>
</implementation>
</entry>
<entry>
<name>Base/Attack/Attack Bonus (2, 3)</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Levels">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$Empty">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.03</damage>
<startDepth>8</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.06</damage>
<startDepth>8</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.1</damage>
<startDepth>8</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.17</damage>
<startDepth>8</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.28</damage>
<startDepth>8</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.39</damage>
<startDepth>8</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.51</damage>
<startDepth>8</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.63</damage>
<startDepth>8</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.75</damage>
<startDepth>8</startDepth>
<capped>false</capped>
</entry>
</levels>
</implementation>
</entry>
<entry>
<name>Base/Attack/Attack Bonus (4, 5)</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Levels">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$Empty">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.02</damage>
<startDepth>18</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.05</damage>
<startDepth>18</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.08</damage>
<startDepth>18</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.13</damage>
<startDepth>18</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.2</damage>
<startDepth>18</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.27</damage>
<startDepth>18</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.34</damage>
<startDepth>18</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.42</damage>
<startDepth>18</startDepth>
<capped>false</capped>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$RelativeDamageBonus">
<damage>0.5</damage>
<startDepth>18</startDepth>
<capped>false</capped>
</entry>
</levels>
</implementation>
</entry>
<entry>
<name>Base/Charge/Base</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>1-4 Charge Reduction</name>
<paths>implementation.levels[0].bonus, implementation.levels[1].bonus, implementation.levels[2].bonus, implementation.levels[3].bonus</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>5-9 Charge Reduction</name>
<paths>implementation.levels[4].bonus, implementation.levels[5].bonus, implementation.levels[6].bonus, implementation.levels[7].bonus, implementation.levels[8].bonus</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>10 Charge Reduction</name>
<paths>implementation.levels[9].bonus</paths>
</entry>
</parameters>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Levels">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$ChargeTimeReduction">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$ChargeTimeReduction">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$ChargeTimeReduction">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$ChargeTimeReduction">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$ChargeTimeReduction">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$ChargeTimeReduction">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$ChargeTimeReduction">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$ChargeTimeReduction">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$ChargeTimeReduction">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$ChargeTimeReduction">
</entry>
</levels>
</implementation>
</entry>
<entry>
<name>Base/Charge/Charge Reduction</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Charge/Base</name>
<arguments>
<key class="java.lang.String">1-4 Charge Reduction</key>
<value class="com.threerings.projectx.item.data.ItemCodes$ItemBonus">CUSTOM</value>
<key class="java.lang.String">10 Charge Reduction</key>
<value class="com.threerings.projectx.item.data.ItemCodes$ItemBonus">MEDIUM</value>
<key class="java.lang.String">5-9 Charge Reduction</key>
<value class="com.threerings.projectx.item.data.ItemCodes$ItemBonus">LOW</value>
</arguments>
</table>
</implementation>
</entry>
<entry>
<name>Base/Defense/Defense Bonus</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Levels">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$Empty">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$DefenseIncrease">
<defense>2.0</defense>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$DefenseIncrease">
<defense>4.0</defense>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$DefenseIncrease">
<defense>6.0</defense>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$DefenseIncrease">
<defense>8.0</defense>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$DefenseIncrease">
<defense>12.0</defense>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$DefenseIncrease">
<defense>15.0</defense>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$DefenseIncrease">
<defense>18.0</defense>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$DefenseIncrease">
<defense>21.0</defense>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$DefenseIncrease">
<defense>25.0</defense>
</entry>
</levels>
</implementation>
</entry>
<entry>
<name>Base/Defense/Defense Bonus (0, 1)</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Defense/Defense Bonus</name>
</table>
</implementation>
</entry>
<entry>
<name>Base/Defense/Defense Bonus (2, 3)</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Defense/Defense Bonus</name>
</table>
</implementation>
</entry>
<entry>
<name>Base/Defense/Defense Bonus (4, 5)</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Defense/Defense Bonus</name>
</table>
</implementation>
</entry>
<entry>
<name>Base/Health/Health Base</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>1-4 Health</name>
<paths>implementation.levels[0].levels[0].health, implementation.levels[1].levels[0].health, implementation.levels[2].levels[0].health, implementation.levels[3].levels[0].health</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>5-10 Health</name>
<paths>implementation.levels[4].levels[0].health, implementation.levels[5].levels[0].health, implementation.levels[6].levels[0].health, implementation.levels[7].levels[0].health, implementation.levels[8].levels[0].health, implementation.levels[9].levels[0].health</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>1-4 Health (Tier 2+)</name>
<paths>implementation.levels[0].levels[1].health, implementation.levels[1].levels[1].health, implementation.levels[2].levels[1].health, implementation.levels[3].levels[1].health</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>5-10 Health (Tier 2+)</name>
<paths>implementation.levels[4].levels[1].health, implementation.levels[5].levels[1].health, implementation.levels[6].levels[1].health, implementation.levels[7].levels[1].health, implementation.levels[8].levels[1].health, implementation.levels[9].levels[1].health</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>1-4 Health (Tier 3+)</name>
<paths>implementation.levels[0].levels[2].health, implementation.levels[1].levels[2].health, implementation.levels[2].levels[2].health, implementation.levels[3].levels[2].health</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>5-10 Health (Tier 3+)</name>
<paths>implementation.levels[4].levels[2].health, implementation.levels[5].levels[2].health, implementation.levels[6].levels[2].health, implementation.levels[7].levels[2].health, implementation.levels[8].levels[2].health, implementation.levels[9].levels[2].health</paths>
</entry>
</parameters>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Levels">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$Compound">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>8</minDepth>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>18</minDepth>
</entry>
</levels>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$Compound">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>8</minDepth>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>18</minDepth>
</entry>
</levels>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$Compound">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>8</minDepth>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>18</minDepth>
</entry>
</levels>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$Compound">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>8</minDepth>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>18</minDepth>
</entry>
</levels>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$Compound">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>8</minDepth>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>18</minDepth>
</entry>
</levels>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$Compound">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>8</minDepth>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>18</minDepth>
</entry>
</levels>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$Compound">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>8</minDepth>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>18</minDepth>
</entry>
</levels>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$Compound">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>8</minDepth>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>18</minDepth>
</entry>
</levels>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$Compound">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>8</minDepth>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>18</minDepth>
</entry>
</levels>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$Compound">
<levels>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>8</minDepth>
</entry>
<entry class="com.threerings.projectx.item.config.LevelConfig$HealthBonus">
<health>0</health>
<minDepth>18</minDepth>
</entry>
</levels>
</entry>
</levels>
</implementation>
</entry>
<entry>
<name>Base/Health/Health Bonus 1</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Health/Health Base</name>
<arguments>
<key class="java.lang.String">1-4 Health</key>
<value class="java.lang.Integer">0</value>
<key class="java.lang.String">1-4 Health (Tier 2+)</key>
<value class="java.lang.Integer">0</value>
<key class="java.lang.String">1-4 Health (Tier 3+)</key>
<value class="java.lang.Integer">0</value>
<key class="java.lang.String">5-10 Health</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">5-10 Health (Tier 2+)</key>
<value class="java.lang.Integer">0</value>
<key class="java.lang.String">5-10 Health (Tier 3+)</key>
<value class="java.lang.Integer">0</value>
</arguments>
</table>
</implementation>
</entry>
<entry>
<name>Base/Health/Health Bonus 2</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Health/Health Base</name>
<arguments>
<key class="java.lang.String">1-4 Health</key>
<value class="java.lang.Integer">0</value>
<key class="java.lang.String">1-4 Health (Tier 2+)</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">1-4 Health (Tier 3+)</key>
<value class="java.lang.Integer">0</value>
<key class="java.lang.String">5-10 Health</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">5-10 Health (Tier 2+)</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">5-10 Health (Tier 3+)</key>
<value class="java.lang.Integer">0</value>
</arguments>
</table>
</implementation>
</entry>
<entry>
<name>Base/Health/Health Bonus 3</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Health/Health Base</name>
<arguments>
<key class="java.lang.String">1-4 Health</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">1-4 Health (Tier 2+)</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">1-4 Health (Tier 3+)</key>
<value class="java.lang.Integer">0</value>
<key class="java.lang.String">5-10 Health</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">5-10 Health (Tier 2+)</key>
<value class="java.lang.Integer">80</value>
<key class="java.lang.String">5-10 Health (Tier 3+)</key>
<value class="java.lang.Integer">0</value>
</arguments>
</table>
</implementation>
</entry>
<entry>
<name>Base/Health/Health Bonus 4</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Health/Health Base</name>
<arguments>
<key class="java.lang.String">1-4 Health</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">1-4 Health (Tier 2+)</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">1-4 Health (Tier 3+)</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">5-10 Health</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">5-10 Health (Tier 2+)</key>
<value class="java.lang.Integer">80</value>
<key class="java.lang.String">5-10 Health (Tier 3+)</key>
<value class="java.lang.Integer">40</value>
</arguments>
</table>
</implementation>
</entry>
<entry>
<name>Base/Health/Health Bonus 5</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Health/Health Base</name>
<arguments>
<key class="java.lang.String">1-4 Health</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">1-4 Health (Tier 2+)</key>
<value class="java.lang.Integer">80</value>
<key class="java.lang.String">1-4 Health (Tier 3+)</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">5-10 Health</key>
<value class="java.lang.Integer">40</value>
<key class="java.lang.String">5-10 Health (Tier 2+)</key>
<value class="java.lang.Integer">80</value>
<key class="java.lang.String">5-10 Health (Tier 3+)</key>
<value class="java.lang.Integer">80</value>
</arguments>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Gear (+Health) 0</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Defense/Defense Bonus (0, 1)</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Gear (+Health) 1</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Compound">
<tables>
<entry>
<table>
<name>Base/Defense/Defense Bonus (0, 1)</name>
</table>
</entry>
<entry>
<table>
<name>Base/Health/Health Bonus 1</name>
</table>
</entry>
</tables>
</implementation>
</entry>
<entry>
<name>Gear/Gear (+Health) 2</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Compound">
<tables>
<entry>
<table>
<name>Base/Defense/Defense Bonus (2, 3)</name>
</table>
</entry>
<entry>
<table>
<name>Base/Health/Health Bonus 2</name>
</table>
</entry>
</tables>
</implementation>
</entry>
<entry>
<name>Gear/Gear (+Health) 3</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Compound">
<tables>
<entry>
<table>
<name>Base/Defense/Defense Bonus (2, 3)</name>
</table>
</entry>
<entry>
<table>
<name>Base/Health/Health Bonus 3</name>
</table>
</entry>
</tables>
</implementation>
</entry>
<entry>
<name>Gear/Gear (+Health) 4</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Compound">
<tables>
<entry>
<table>
<name>Base/Defense/Defense Bonus (4, 5)</name>
</table>
</entry>
<entry>
<table>
<name>Base/Health/Health Bonus 4</name>
</table>
</entry>
</tables>
</implementation>
</entry>
<entry>
<name>Gear/Gear (+Health) 5</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Compound">
<tables>
<entry>
<table>
<name>Base/Defense/Defense Bonus (4, 5)</name>
</table>
</entry>
<entry>
<table>
<name>Base/Health/Health Bonus 5</name>
</table>
</entry>
</tables>
</implementation>
</entry>
<entry>
<name>Gear/Gear 0</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Defense/Defense Bonus (0, 1)</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Gear 1</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Defense/Defense Bonus (0, 1)</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Gear 2</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Defense/Defense Bonus (0, 1)</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Gear 3</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Defense/Defense Bonus (0, 1)</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Gear 4</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Defense/Defense Bonus (0, 1)</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Gear 5</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Base/Defense/Defense Bonus (0, 1)</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Helm 0</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Gear/Gear (+Health) 0</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Helm 1</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Gear/Gear (+Health) 1</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Helm 2</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Gear/Gear (+Health) 2</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Helm 3</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Gear/Gear (+Health) 3</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Helm 4</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Gear/Gear (+Health) 4</name>
</table>
</implementation>
</entry>
<entry>
<name>Gear/Helm 5</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Derived">
<table>
<name>Gear/Gear (+Health) 5</name>
</table>
</implementation>
</entry>
<entry>
<name>Weapon/Weapon 0</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Compound">
<tables>
<entry>
<table>
<name>Base/Attack/Attack Bonus (0, 1)</name>
</table>
</entry>
<entry>
<table>
<name>Base/Charge/Charge Reduction</name>
</table>
</entry>
</tables>
</implementation>
</entry>
<entry>
<name>Weapon/Weapon 1</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Compound">
<tables>
<entry>
<table>
<name>Base/Attack/Attack Bonus (0, 1)</name>
</table>
</entry>
<entry>
<table>
<name>Base/Charge/Charge Reduction</name>
</table>
</entry>
</tables>
</implementation>
</entry>
<entry>
<name>Weapon/Weapon 2</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Compound">
<tables>
<entry>
<table>
<name>Base/Attack/Attack Bonus (2, 3)</name>
</table>
</entry>
<entry>
<table>
<name>Base/Charge/Charge Reduction</name>
</table>
</entry>
</tables>
</implementation>
</entry>
<entry>
<name>Weapon/Weapon 3</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Compound">
<tables>
<entry>
<table>
<name>Base/Attack/Attack Bonus (2, 3)</name>
</table>
</entry>
<entry>
<table>
<name>Base/Charge/Charge Reduction</name>
</table>
</entry>
</tables>
</implementation>
</entry>
<entry>
<name>Weapon/Weapon 4</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Compound">
<tables>
<entry>
<table>
<name>Base/Attack/Attack Bonus (4, 5)</name>
</table>
</entry>
<entry>
<table>
<name>Base/Charge/Charge Reduction</name>
</table>
</entry>
</tables>
</implementation>
</entry>
<entry>
<name>Weapon/Weapon 5</name>
<implementation class="com.threerings.projectx.item.config.LevelTableConfig$Compound">
<tables>
<entry>
<table>
<name>Base/Attack/Attack Bonus (4, 5)</name>
</table>
</entry>
<entry>
<table>
<name>Base/Charge/Charge Reduction</name>
</table>
</entry>
</tables>
</implementation>
</entry>
</object>
</java>

View File

@@ -0,0 +1,71 @@
#
# $Id: manager.properties 10971 2010-11-30 02:11:50Z mjohnson $
#
# Configuration manager configuration
types = global, model, user_interface, scene
global.classes = com.threerings.tudey.config.ActorConfig, \
com.threerings.tudey.config.AreaConfig, \
com.threerings.projectx.dungeon.config.AttackConfig, \
com.threerings.tudey.config.BehaviorConfig, \
com.threerings.projectx.shop.config.CatalogConfig, \
com.threerings.projectx.config.ConversationConfig, \
com.threerings.opengl.gui.config.CursorConfig, \
com.threerings.projectx.dungeon.config.DepthScaleConfig, \
com.threerings.tudey.config.EffectConfig, \
com.threerings.projectx.config.EmoteConfig, \
com.threerings.projectx.dungeon.config.FireActionConfig, \
com.threerings.opengl.gui.config.FontConfig, \
com.threerings.tudey.config.GroundConfig, \
com.threerings.projectx.item.config.ItemConfig, \
com.threerings.projectx.dungeon.config.ItemDepthWeightConfig, \
com.threerings.projectx.item.config.ItemPropertyConfig, \
com.threerings.projectx.item.config.LevelTableConfig, \
com.threerings.opengl.material.config.MaterialConfig, \
com.threerings.tudey.config.PathConfig, \
com.threerings.tudey.config.PlaceableConfig, \
com.threerings.projectx.craft.config.RecipeConfig, \
com.threerings.projectx.craft.config.RecipePropertyConfig, \
com.threerings.opengl.compositor.config.RenderEffectConfig, \
com.threerings.opengl.compositor.config.RenderQueueConfig, \
com.threerings.opengl.compositor.config.RenderSchemeConfig, \
com.threerings.tudey.config.SceneGlobalConfig, \
com.threerings.opengl.renderer.config.ShaderConfig, \
com.threerings.openal.config.SounderConfig, \
com.threerings.projectx.dungeon.config.SpawnTableConfig, \
com.threerings.projectx.dungeon.config.StatusConditionConfig, \
com.threerings.opengl.gui.config.StyleConfig, \
com.threerings.opengl.renderer.config.TextureConfig, \
com.threerings.tudey.config.TileConfig, \
com.threerings.projectx.item.config.VariantConfig, \
com.threerings.projectx.item.config.VariantTableConfig, \
com.threerings.tudey.config.WallConfig
model.classes = com.threerings.opengl.gui.config.CursorConfig, \
com.threerings.opengl.gui.config.FontConfig, \
com.threerings.opengl.material.config.MaterialConfig, \
com.threerings.opengl.renderer.config.ShaderConfig, \
com.threerings.opengl.gui.config.StyleConfig, \
com.threerings.opengl.renderer.config.TextureConfig
user_interface.classes = com.threerings.opengl.gui.config.CursorConfig, \
com.threerings.opengl.gui.config.FontConfig, \
com.threerings.opengl.gui.config.StyleConfig
scene.classes = com.threerings.tudey.config.ActorConfig, \
com.threerings.tudey.config.AreaConfig, \
com.threerings.projectx.shop.config.CatalogConfig, \
com.threerings.projectx.config.ConversationConfig, \
com.threerings.tudey.config.EffectConfig, \
com.threerings.tudey.config.GroundConfig, \
com.threerings.tudey.config.PathConfig, \
com.threerings.tudey.config.PlaceableConfig, \
com.threerings.projectx.dungeon.config.SpawnTableConfig, \
com.threerings.tudey.config.TileConfig, \
com.threerings.tudey.config.WallConfig
resource.classes = com.threerings.opengl.model.config.ModelConfig, \
com.threerings.opengl.model.config.AnimationConfig, \
com.threerings.opengl.gui.config.UserInterfaceConfig

12352
rsrc/rsrc/config/material.xml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

28028
rsrc/rsrc/config/placeable.xml Normal file

File diff suppressed because it is too large Load Diff

14218
rsrc/rsrc/config/recipe.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8"?>
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.projectx.craft.config.RecipePropertyConfig;">
<entry>
<name>Alloy</name>
<implementation class="com.threerings.projectx.craft.config.RecipePropertyConfig$Base">
<recipeProps>
<entry>
<crowns>100</crowns>
<energy>2</energy>
</entry>
<entry>
<crowns>200</crowns>
<energy>5</energy>
</entry>
<entry>
<crowns>400</crowns>
<energy>10</energy>
</entry>
<entry>
<crowns>800</crowns>
<energy>50</energy>
</entry>
<entry>
<crowns>1600</crowns>
<energy>100</energy>
</entry>
<entry>
<crowns>3200</crowns>
<energy>200</energy>
</entry>
</recipeProps>
</implementation>
</entry>
<entry>
<name>Armor</name>
<implementation class="com.threerings.projectx.craft.config.RecipePropertyConfig$Derived">
<recipeProperty>
<name>Base/Equipment</name>
</recipeProperty>
</implementation>
</entry>
<entry>
<name>Base/Equipment</name>
<implementation class="com.threerings.projectx.craft.config.RecipePropertyConfig$Base">
<recipeProps>
<entry>
<crowns>40</crowns>
<energy>2</energy>
</entry>
<entry>
<crowns>200</crowns>
<energy>10</energy>
</entry>
<entry>
<crowns>400</crowns>
<energy>50</energy>
</entry>
<entry>
<crowns>1000</crowns>
<energy>100</energy>
</entry>
<entry>
<crowns>2500</crowns>
<energy>200</energy>
</entry>
<entry>
<crowns>5000</crowns>
<energy>300</energy>
</entry>
</recipeProps>
</implementation>
</entry>
<entry>
<name>Bomb</name>
<implementation class="com.threerings.projectx.craft.config.RecipePropertyConfig$Derived">
<recipeProperty>
<name>Base/Equipment</name>
</recipeProperty>
</implementation>
</entry>
<entry>
<name>Handgun</name>
<implementation class="com.threerings.projectx.craft.config.RecipePropertyConfig$Derived">
<recipeProperty>
<name>Base/Equipment</name>
</recipeProperty>
</implementation>
</entry>
<entry>
<name>Helm</name>
<implementation class="com.threerings.projectx.craft.config.RecipePropertyConfig$Derived">
<recipeProperty>
<name>Base/Equipment</name>
</recipeProperty>
</implementation>
</entry>
<entry>
<name>Material</name>
<implementation class="com.threerings.projectx.craft.config.RecipePropertyConfig$Base">
<recipeProps>
<entry>
<crowns>100</crowns>
<energy>20</energy>
</entry>
<entry>
<crowns>200</crowns>
<energy>40</energy>
</entry>
<entry>
<crowns>400</crowns>
<energy>80</energy>
</entry>
<entry>
<crowns>800</crowns>
<energy>160</energy>
</entry>
<entry>
<crowns>1600</crowns>
<energy>320</energy>
</entry>
<entry>
<crowns>3200</crowns>
<energy>640</energy>
</entry>
</recipeProps>
</implementation>
</entry>
<entry>
<name>Quest</name>
<implementation class="com.threerings.projectx.craft.config.RecipePropertyConfig$Base">
<recipeProps>
<entry>
<crowns>100</crowns>
<energy>20</energy>
</entry>
<entry>
<crowns>200</crowns>
<energy>40</energy>
</entry>
<entry>
<crowns>400</crowns>
<energy>80</energy>
</entry>
<entry>
<crowns>800</crowns>
<energy>160</energy>
</entry>
<entry>
<crowns>1600</crowns>
<energy>320</energy>
</entry>
<entry>
<crowns>3200</crowns>
<energy>640</energy>
</entry>
</recipeProps>
</implementation>
</entry>
<entry>
<name>Shield</name>
<implementation class="com.threerings.projectx.craft.config.RecipePropertyConfig$Derived">
<recipeProperty>
<name>Base/Equipment</name>
</recipeProperty>
</implementation>
</entry>
<entry>
<name>Sword</name>
<implementation class="com.threerings.projectx.craft.config.RecipePropertyConfig$Derived">
<recipeProperty>
<name>Base/Equipment</name>
</recipeProperty>
</implementation>
</entry>
<entry>
<name>Trinket</name>
<implementation class="com.threerings.projectx.craft.config.RecipePropertyConfig$Derived">
<recipeProperty>
<name>Base/Equipment</name>
</recipeProperty>
</implementation>
</entry>
</object>
</java>

View File

@@ -0,0 +1,396 @@
<?xml version="1.0" encoding="UTF-8"?>
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.tudey.config.SceneGlobalConfig;">
<entry>
<name>Camera</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>FOV</name>
<paths>implementation.camera.fov</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Near</name>
<paths>implementation.camera.near</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Far</name>
<paths>implementation.camera.far</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Coords</name>
<paths>implementation.camera.coords</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$Camera">
</implementation>
</entry>
<entry>
<name>Dungeon Modifiers/Party Monster Damage Max Boost</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Max Bonus</name>
<paths>implementation.max_bonus</paths>
</entry>
</parameters>
<implementation class="com.threerings.projectx.dungeon.config.DungeonSceneGlobalConfig$PPMonsterDamageBonus">
</implementation>
</entry>
<entry>
<name>Dungeon Modifiers/Party Monster HP Max Boost</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Max Bonus</name>
<paths>implementation.max_bonus</paths>
</entry>
</parameters>
<implementation class="com.threerings.projectx.dungeon.config.DungeonSceneGlobalConfig$PPMonsterHealthBonus">
</implementation>
</entry>
<entry>
<name>Environment/Ambient</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Color</name>
<paths>implementation.model["Color"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$EnvironmentModel">
<model>
<name>world/environment/global_ambient.dat</name>
<arguments>
<key class="java.lang.String">Color</key>
<value class="com.threerings.opengl.renderer.Color4f">0.2, 0.2, 0.2, 1.0</value>
</arguments>
</model>
</implementation>
</entry>
<entry>
<name>Environment/Background Color</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Color</name>
<paths>implementation.model["Color"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$EnvironmentModel">
<model>
<name>world/environment/global_background_color.dat</name>
<arguments>
<key class="java.lang.String">Color</key>
<value class="com.threerings.opengl.renderer.Color4f">0.0, 0.0, 0.0, 1.0</value>
</arguments>
</model>
</implementation>
</entry>
<entry>
<name>Environment/Fog</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>State</name>
<paths>implementation.model["State"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$EnvironmentModel">
<model>
<name>world/environment/global_fog.dat</name>
<arguments>
<key class="java.lang.String">State</key>
<value class="com.threerings.opengl.renderer.config.FogStateConfig$Linear">
</value>
</arguments>
</model>
</implementation>
</entry>
<entry>
<name>Environment/Intro Mix</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Intro File</name>
<paths>implementation.model["Sounder"]["Sounders"][0].sounder["File"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Files</name>
<paths>implementation.model["Sounder"]["Sounders"][1].sounder["Files"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Gain</name>
<paths>implementation.model["Sounder"]["Sounders"][0].sounder["Gain"], implementation.model["Sounder"]["Sounders"][1].sounder["Gain"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Cross Fade</name>
<paths>implementation.model["Sounder"]["Sounders"][1].sounder["Cross Fade"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$EnvironmentModel">
<model>
<name>world/environment/global_sounder.dat</name>
<arguments>
<key class="java.lang.String">Sounder</key>
<value class="com.threerings.config.ConfigReference">
<name>Sequential</name>
<arguments>
<key class="java.lang.String">Sounders</key>
<value class="[Lcom.threerings.openal.config.SounderConfig$ComponentSounder;">
<entry>
<sounder>
<name>Stream/Default (Gain, Loop)</name>
<arguments>
<key class="java.lang.String">File</key>
<value/>
<key class="java.lang.String">Gain</key>
<value class="java.lang.Float">1.0</value>
<key class="java.lang.String">Loop</key>
<value class="java.lang.Boolean">false</value>
</arguments>
</sounder>
</entry>
<entry>
<sounder>
<name>Meta Stream/Default (Gain)</name>
<arguments>
<key class="java.lang.String">Cross Fade</key>
<value class="java.lang.Float">0.0</value>
<key class="java.lang.String">Files</key>
<value class="[Lcom.threerings.openal.config.SounderConfig$WeightedFile;">
</value>
<key class="java.lang.String">Gain</key>
<value class="java.lang.Float">1.0</value>
<key class="java.lang.String">Range</key>
<value class="java.lang.String">Medium</value>
</arguments>
</sounder>
</entry>
</value>
</arguments>
</value>
</arguments>
</model>
</implementation>
</entry>
<entry>
<name>Environment/Light</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Light</name>
<paths>implementation.model["Light"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$EnvironmentModel">
<model>
<name>world/environment/global_light.dat</name>
<arguments>
<key class="java.lang.String">Light</key>
<value class="com.threerings.opengl.renderer.config.LightConfig$Directional">
<direction>0.0, -4.371139E-8, 1.0</direction>
</value>
</arguments>
</model>
</implementation>
</entry>
<entry>
<name>Environment/Model</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Model</name>
<paths>implementation.model</paths>
</entry>
</parameters>
</entry>
<entry>
<name>Environment/Music</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>File</name>
<paths>implementation.model["File"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Gain</name>
<paths>implementation.model["Gain"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$EnvironmentModel">
<model>
<name>world/environment/global_music.dat</name>
<arguments>
<key class="java.lang.String">File</key>
<value/>
<key class="java.lang.String">Gain</key>
<value class="java.lang.Float">1.0</value>
</arguments>
</model>
</implementation>
</entry>
<entry>
<name>Environment/Music Mix</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Files</name>
<paths>implementation.model["Files"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Gain</name>
<paths>implementation.model["Gain"]</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Cross Fade</name>
<paths>implementation.model["Cross Fade"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$EnvironmentModel">
<model>
<name>world/environment/global_music_mix.dat</name>
<arguments>
<key class="java.lang.String">Cross Fade</key>
<value class="java.lang.Float">1.0</value>
<key class="java.lang.String">Files</key>
<value class="[Lcom.threerings.openal.config.SounderConfig$WeightedFile;">
</value>
<key class="java.lang.String">Gain</key>
<value class="java.lang.Float">1.0</value>
</arguments>
</model>
</implementation>
</entry>
<entry>
<name>Environment/Particles</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Model</name>
<paths>implementation.model["High"]["Model"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$EnvironmentModel">
<model>
<name>model/schemed/high_medium.dat</name>
<arguments>
<key class="java.lang.String">High</key>
<value class="com.threerings.config.ConfigReference">
<name>world/environment/global_particles.dat</name>
<arguments>
<key class="java.lang.String">Model</key>
<value/>
</arguments>
</value>
<key class="java.lang.String">Medium</key>
<value/>
</arguments>
</model>
</implementation>
</entry>
<entry>
<name>Environment/Render Effect</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Render Effect</name>
<paths>implementation.model["Render Effect"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$EnvironmentModel">
<model>
<name>world/environment/global_render_effect.dat</name>
<arguments>
<key class="java.lang.String">Render Effect</key>
<value/>
</arguments>
</model>
</implementation>
</entry>
<entry>
<name>Environment/Shadow Color</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Color</name>
<paths>implementation.model["Definitions"][0].expression.value</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$EnvironmentModel">
<model>
<name>world/environment/global_definitions.dat</name>
<arguments>
<key class="java.lang.String">Definitions</key>
<value class="[Lcom.threerings.expr.ExpressionDefinition;">
<entry class="com.threerings.expr.ExpressionDefinition$Color4fDefinition">
<name>shadowColor</name>
<expression class="com.threerings.expr.Color4fExpression$Constant">
<value>0.0, 0.0, 0.0, 1.0</value>
</expression>
</entry>
</value>
</arguments>
</model>
</implementation>
</entry>
<entry>
<name>Environment/Skybox</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Model</name>
<paths>implementation.model["Model"]</paths>
</entry>
</parameters>
<implementation class="com.threerings.tudey.config.SceneGlobalConfig$EnvironmentModel">
<model>
<name>world/environment/global_skybox.dat</name>
<arguments>
<key class="java.lang.String">Model</key>
<value/>
</arguments>
</model>
</implementation>
</entry>
<entry>
<name>Prefabs/PrefabData</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Tags</name>
<paths>implementation.tags.derived</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>ExclusiveTags</name>
<paths>implementation.exclusive_tags.derived</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Rarity</name>
<paths>implementation.rarity</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Trivial</name>
<paths>implementation.trivial</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>NoTransition</name>
<paths>implementation.noTransition</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>MinDepth</name>
<paths>implementation.minDepth</paths>
</entry>
</parameters>
<implementation class="com.threerings.projectx.dungeon.config.DungeonSceneGlobalConfig$PrefabData">
</implementation>
</entry>
<entry>
<name>Prefabs/PrefabLayerData</name>
<parameters>
<entry class="com.threerings.config.Parameter$Direct">
<name>Layer</name>
<paths>implementation.layer</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Additional Tags</name>
<paths>implementation.tags.derived</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>Rarity Override</name>
<paths>implementation.rarity</paths>
</entry>
<entry class="com.threerings.config.Parameter$Direct">
<name>MinDepth Override</name>
<paths>implementation.minDepth</paths>
</entry>
</parameters>
<implementation class="com.threerings.projectx.dungeon.config.DungeonSceneGlobalConfig$PrefabLayerData">
</implementation>
</entry>
</object>
</java>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2594
rsrc/rsrc/config/style.xml Normal file

File diff suppressed because it is too large Load Diff

40525
rsrc/rsrc/config/tile.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
#
# $Id: scene.properties 6890 2010-04-12 22:05:52Z andrzej $
#
# Tudey scene configuration
# Elevation granularity in world units
elevation_scale = 0.5
# The camera's vertical field of view (in degrees)
camera_fov = 60
# Distances to the near and far clip planes
camera_near = 1
camera_far = 100
# Sphere coordinates relative to the camera target
camera_azimuth = 0
camera_elevation = 45
camera_distance = 10
# Offset from target translation to camera target
camera_offset = 0, 0, 1

View File

@@ -0,0 +1,645 @@
<?xml version="1.0" encoding="UTF-8"?>
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.projectx.item.config.VariantConfig;">
<entry>
<name>Gear/Curse Resist 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>32</conditionMask>
<resist>5</resist>
<statusResist>LOW</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Curse Resist 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>32</conditionMask>
<resist>10</resist>
<statusResist>MEDIUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Curse Resist 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>32</conditionMask>
<resist>15</resist>
<statusResist>HIGH</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Curse Resist 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>32</conditionMask>
<resist>25</resist>
<statusResist>MAXIMUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Elemental Defense 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>5</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base</name>
</depthScale>
<type>ELEMENTAL</type>
</implementation>
</entry>
<entry>
<name>Gear/Elemental Defense 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>10</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +05</name>
</depthScale>
<type>ELEMENTAL</type>
<bonus>MEDIUM</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Elemental Defense 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>15</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +10</name>
</depthScale>
<type>ELEMENTAL</type>
<bonus>HIGH</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Elemental Defense 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>25</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +15</name>
</depthScale>
<type>ELEMENTAL</type>
<bonus>MAXIMUM</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Fire Resist 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>4</conditionMask>
<resist>5</resist>
<statusResist>LOW</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Fire Resist 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>4</conditionMask>
<resist>10</resist>
<statusResist>MEDIUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Fire Resist 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>4</conditionMask>
<resist>15</resist>
<statusResist>HIGH</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Fire Resist 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>4</conditionMask>
<resist>25</resist>
<statusResist>MAXIMUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Freeze Resist 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>8</conditionMask>
<resist>5</resist>
<statusResist>LOW</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Freeze Resist 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>8</conditionMask>
<resist>10</resist>
<statusResist>MEDIUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Freeze Resist 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>8</conditionMask>
<resist>15</resist>
<statusResist>HIGH</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Freeze Resist 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>8</conditionMask>
<resist>25</resist>
<statusResist>MAXIMUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Normal Defense 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>5</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base</name>
</depthScale>
</implementation>
</entry>
<entry>
<name>Gear/Normal Defense 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>10</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +05</name>
</depthScale>
<bonus>MEDIUM</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Normal Defense 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>15</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +10</name>
</depthScale>
<bonus>HIGH</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Normal Defense 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>25</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +15</name>
</depthScale>
<bonus>MAXIMUM</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Pierce Defense 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>5</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base</name>
</depthScale>
<type>PIERCING</type>
</implementation>
</entry>
<entry>
<name>Gear/Pierce Defense 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>10</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +05</name>
</depthScale>
<type>PIERCING</type>
<bonus>MEDIUM</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Pierce Defense 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>15</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +10</name>
</depthScale>
<type>PIERCING</type>
<bonus>HIGH</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Pierce Defense 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>25</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +15</name>
</depthScale>
<type>PIERCING</type>
<bonus>MAXIMUM</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Poison Resist 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>2</conditionMask>
<resist>5</resist>
<statusResist>LOW</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Poison Resist 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>2</conditionMask>
<resist>10</resist>
<statusResist>MEDIUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Poison Resist 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>2</conditionMask>
<resist>15</resist>
<statusResist>HIGH</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Poison Resist 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>2</conditionMask>
<resist>25</resist>
<statusResist>MAXIMUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Shadow Defense 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>5</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base</name>
</depthScale>
<type>SHADOW</type>
</implementation>
</entry>
<entry>
<name>Gear/Shadow Defense 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>10</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +05</name>
</depthScale>
<type>SHADOW</type>
<bonus>MEDIUM</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Shadow Defense 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>15</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +10</name>
</depthScale>
<type>SHADOW</type>
<bonus>HIGH</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Shadow Defense 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$DefenseTypeBonus">
<amount>25</amount>
<depthScale>
<name>PC/Defense/Variant/Variant Base +15</name>
</depthScale>
<type>SHADOW</type>
<bonus>MAXIMUM</bonus>
</implementation>
</entry>
<entry>
<name>Gear/Shock Resist 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>16</conditionMask>
<resist>5</resist>
<statusResist>LOW</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Shock Resist 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>16</conditionMask>
<resist>10</resist>
<statusResist>MEDIUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Shock Resist 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>16</conditionMask>
<resist>15</resist>
<statusResist>HIGH</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Shock Resist 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>16</conditionMask>
<resist>25</resist>
<statusResist>MAXIMUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Sleep Resist 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>256</conditionMask>
<resist>5</resist>
<statusResist>LOW</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Sleep Resist 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>256</conditionMask>
<resist>10</resist>
<statusResist>MEDIUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Sleep Resist 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>256</conditionMask>
<resist>15</resist>
<statusResist>HIGH</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Sleep Resist 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>256</conditionMask>
<resist>25</resist>
<statusResist>MAXIMUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Stun Resist 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>1</conditionMask>
<resist>5</resist>
<statusResist>LOW</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Stun Resist 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>1</conditionMask>
<resist>10</resist>
<statusResist>MEDIUM</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Stun Resist 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>1</conditionMask>
<resist>15</resist>
<statusResist>HIGH</statusResist>
</implementation>
</entry>
<entry>
<name>Gear/Stun Resist 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$NewStatusResist">
<conditionMask>1</conditionMask>
<resist>25</resist>
<statusResist>MAXIMUM</statusResist>
</implementation>
</entry>
<entry>
<name>Weapon/Attack Speed 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$AttackSpeedChange">
<bonus>LOW</bonus>
<speed>0.02</speed>
</implementation>
</entry>
<entry>
<name>Weapon/Attack Speed 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$AttackSpeedChange">
<bonus>MEDIUM</bonus>
<speed>0.03</speed>
</implementation>
</entry>
<entry>
<name>Weapon/Attack Speed 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$AttackSpeedChange">
<bonus>HIGH</bonus>
<speed>0.05</speed>
</implementation>
</entry>
<entry>
<name>Weapon/Attack Speed 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$AttackSpeedChange">
<bonus>VERY_HIGH</bonus>
<speed>0.08</speed>
</implementation>
</entry>
<entry>
<name>Weapon/Beast Damage 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>LOW</bonus>
<tag>fam_beast</tag>
<damage>0.05</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Beast Damage 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>MEDIUM</bonus>
<tag>fam_beast</tag>
<damage>0.1</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Beast Damage 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>HIGH</bonus>
<tag>fam_beast</tag>
<damage>0.15</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Beast Damage 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>VERY_HIGH</bonus>
<tag>fam_beast</tag>
<damage>0.25</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Charge Time 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$ChargeTimeReduction">
<bonus>LOW</bonus>
<reduction>0.05</reduction>
</implementation>
</entry>
<entry>
<name>Weapon/Charge Time 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$ChargeTimeReduction">
<bonus>MEDIUM</bonus>
<reduction>0.1</reduction>
</implementation>
</entry>
<entry>
<name>Weapon/Charge Time 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$ChargeTimeReduction">
<bonus>HIGH</bonus>
<reduction>0.15</reduction>
</implementation>
</entry>
<entry>
<name>Weapon/Charge Time 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$ChargeTimeReduction">
<bonus>VERY_HIGH</bonus>
<reduction>0.2</reduction>
</implementation>
</entry>
<entry>
<name>Weapon/Construct Damage 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>LOW</bonus>
<tag>fam_construct</tag>
<damage>0.05</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Construct Damage 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>MEDIUM</bonus>
<tag>fam_construct</tag>
<damage>0.1</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Construct Damage 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>HIGH</bonus>
<tag>fam_construct</tag>
<damage>0.15</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Construct Damage 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>VERY_HIGH</bonus>
<tag>fam_construct</tag>
<damage>0.25</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Fiend Damage 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>LOW</bonus>
<tag>fam_fiend</tag>
<damage>0.05</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Fiend Damage 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>MEDIUM</bonus>
<tag>fam_fiend</tag>
<damage>0.1</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Fiend Damage 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>HIGH</bonus>
<tag>fam_fiend</tag>
<damage>0.15</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Fiend Damage 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>VERY_HIGH</bonus>
<tag>fam_fiend</tag>
<damage>0.25</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Gremlin Damage 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>LOW</bonus>
<tag>fam_gremlin</tag>
<damage>0.05</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Gremlin Damage 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>MEDIUM</bonus>
<tag>fam_gremlin</tag>
<damage>0.1</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Gremlin Damage 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>HIGH</bonus>
<tag>fam_gremlin</tag>
<damage>0.15</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Gremlin Damage 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>VERY_HIGH</bonus>
<tag>fam_gremlin</tag>
<damage>0.25</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Slime Damage 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>LOW</bonus>
<tag>fam_slime</tag>
<damage>0.05</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Slime Damage 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>MEDIUM</bonus>
<tag>fam_slime</tag>
<damage>0.1</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Slime Damage 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>HIGH</bonus>
<tag>fam_slime</tag>
<damage>0.15</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Slime Damage 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>VERY_HIGH</bonus>
<tag>fam_slime</tag>
<damage>0.25</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Undead Damage 1</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>LOW</bonus>
<tag>fam_undead</tag>
<damage>0.05</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Undead Damage 2</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>MEDIUM</bonus>
<tag>fam_undead</tag>
<damage>0.1</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Undead Damage 3</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>HIGH</bonus>
<tag>fam_undead</tag>
<damage>0.15</damage>
</implementation>
</entry>
<entry>
<name>Weapon/Undead Damage 4</name>
<implementation class="com.threerings.projectx.item.config.VariantConfig$TaggedDamage">
<bonus>VERY_HIGH</bonus>
<tag>fam_undead</tag>
<damage>0.25</damage>
</implementation>
</entry>
</object>
</java>

File diff suppressed because it is too large Load Diff

24
rsrc/rsrc/config/wall.xml Normal file
View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014-2021 Thetya Team
~ Copyright (c) 2005-2011 Three Rings
~
~ https://github.com/Thetya
-->
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="[Lcom.threerings.tudey.config.WallConfig;">
<entry>
<name>Wall Test</name>
<implementation class="com.threerings.tudey.config.WallConfig$Original">
<ground>
<name>Ground Test</name>
</ground>
<cases>
<entry>
</entry>
</cases>
</implementation>
</entry>
</object>
</java>

View File

@@ -0,0 +1,19 @@
#
# $Id: thetya-server 2020-12-21 12:09 michael $
#
# Translation messages for Thetya Discord services
#
# Embeds
m.embed_footer_node = Node: {0}
m.embed_complaint_title = Complaint received
m.embed_complaint_desc = A complaint was filed and is ready for the Game Masters to be reviewed. \
[Click here]({0}) to open the Support Office page regarding this complaint.
m.embed_complaint_by = By
m.embed_complaint_against = Against
m.embed_complaint_as_knight = {0} `(ID: {1})` as knight {2} `(ID: {3})`
m.embed_complaint_reason = Reason
m.embed_complaint_mail = Regarding a mail?
m.embed_complaint_chat = Chat log saved?

View File

@@ -0,0 +1,51 @@
#
# $Id: thetya-server 2020-11-11 14:24 micha $
#
# Configuration for a Thetya server instance
#
# The private key to encrypt, decrypt and securely authenticate.
key.private =
#
# The hostname this server will bind to. It will also listen to datagrams
# on this hostname unless you specify the hostname.datagram property.
hostname.bind =
#
# The ports this server will listen on. Defaults to 47624.
ports.listen = 47624
#
# The ports this server will listen to datagrams on. Defaults to 47625.
ports.datagram = 47625
#
# Whether debug logging (all levels) should be enabled.
debug.verboselog = true
#
# Server authenticator's class name - should extend
# ThetyaAuthenticator or the base presents Authenticator.
server.authenticator = com.github.thetya.server.ooo.OOOAuthenticator
#
# Database settings for the ooo-user db.
db.userdb.driver = com.mysql.jdbc.Driver
db.userdb.url = jdbc:mysql://localhost:3306/snarbolax_userdb
db.userdb.username = snarbolax
db.userdb.password = snarbolax
#
# Database settings for the account action db.
db.actiondb.driver = com.mysql.jdbc.Driver
db.actiondb.url = jdbc:mysql://localhost:3306/snarbolax_actiondb
db.actiondb.username = snarbolax
db.actiondb.password = snarbolax
#
# Database settings for the main game db.
db.projectxdb.driver = com.mysql.jdbc.Driver
db.projectxdb.url = jdbc:mysql://localhost:3306/snarbolax_projectxdb
db.projectxdb.username = snarbolax
db.projectxdb.password = snarbolax

View File

@@ -0,0 +1,29 @@
#
# $Id: thetya-server 2020-11-16 12:37 micha $
#
# Configuration for Three Rings services
#
# Max subsequent failed logins for an IP address to perform
throttle.ip.maxlogins = 3
#
# The time period after which the throttle allows the IP address
# to log on again (in milliseconds)
throttle.ip.timeout = 120000
#
# Max subsequent failed logins for a given username to perform
throttle.user.maxlogins = 5
#
# The time period after which the throttle allows the given username
# to log on again (in milliseconds)
throttle.user.timeout = 120000
#
# Mail configuration for the invitation service. Leave username and
# password empty if you're testing on localhost and authentication is not required.
smtp.host = localhost
smtp.username =
smtp.password =

15230
scenes/1.xml Normal file

File diff suppressed because it is too large Load Diff

BIN
scenes/202101.xml Normal file

Binary file not shown.

6721
scenes/294.xml Normal file

File diff suppressed because it is too large Load Diff

2660
scenes/32.xml Normal file

File diff suppressed because it is too large Load Diff

3951
scenes/356.xml Normal file

File diff suppressed because it is too large Load Diff

9272
scenes/4.xml Normal file

File diff suppressed because it is too large Load Diff

7174
scenes/46.xml Normal file

File diff suppressed because it is too large Load Diff

8337
scenes/51.xml Normal file

File diff suppressed because it is too large Load Diff

2779
scenes/57.xml Normal file

File diff suppressed because it is too large Load Diff

176
scenes/69.xml Normal file
View File

@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014-2021 Thetya Team
~ Copyright (c) 2005-2011 Three Rings
~
~ https://github.com/Thetya
-->
<java class="com.threerings.export.XMLImporter" version="1.0">
<object class="com.threerings.tudey.data.TudeySceneModel">
<placeConfig class="com.threerings.projectx.dungeon.data.LevelSceneConfig">
<background>tutorial.jpg</background>
</placeConfig>
<cfgmgr>
</cfgmgr>
<sceneId>69</sceneId>
<version>1</version>
<tiles id="1">
<cells>
<key class="com.threerings.tudey.util.Coord">0, 0</key>
<value class="com.threerings.tudey.util.CoordIntMap$Cell">
<outer ref="1"/>
<values>2, 2, 65536, 5, 5, -1, -1, -1, 2, 2, 1, 5, 5, -1, -1, -1, 65537, 1, 1, 131074, -1, -1, -1, -1, 5, 5,
131074, 131074, -1, -1, -1, -1, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
</values>
</value>
<key class="com.threerings.tudey.util.Coord">0, -1</key>
<value class="com.threerings.tudey.util.CoordIntMap$Cell">
<outer ref="1"/>
<values>-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5,
-1, -1, -1, -1, -1, -1, 5, 5, 131074, 131074, -1, -1, -1, -1, 65539, 1, 1, 131074, -1, -1, -1, -1, 2, 2, 1,
5, 5, -1, -1, -1, 2, 2, 65536, 5, 5, -1, -1, -1
</values>
</value>
<key class="com.threerings.tudey.util.Coord">-1, -1</key>
<value class="com.threerings.tudey.util.CoordIntMap$Cell">
<outer ref="1"/>
<values>-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 5, 5, -1, -1, -1, -1, 131074, 131074, 5, 5, -1, -1, -1, -1, 131074, 1, 1, 65539, -1, -1,
-1, 5, 5, 1, 2, 2, -1, -1, -1, 5, 5, 65538, 2, 2
</values>
</value>
<key class="com.threerings.tudey.util.Coord">-1, 0</key>
<value class="com.threerings.tudey.util.CoordIntMap$Cell">
<outer ref="1"/>
<values>-1, -1, -1, 5, 5, 65538, 2, 2, -1, -1, -1, 5, 5, 1, 2, 2, -1, -1, -1, -1, 131074, 1, 1, 65537, -1, -1,
-1, -1, 131074, 131074, 5, 5, -1, -1, -1, -1, -1, -1, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
</values>
</value>
</cells>
</tiles>
<tileConfigs>
<entry class="com.threerings.tudey.data.TudeySceneModel$TileConfigMapping">
<tile>
<name>000_Dev/Floor/Floor, gray</name>
</tile>
</entry>
<entry class="com.threerings.tudey.data.TudeySceneModel$TileConfigMapping">
<tile>
<name>000_Dev/Floor/Floor, stair, gray</name>
</tile>
</entry>
<entry class="com.threerings.tudey.data.TudeySceneModel$TileConfigMapping">
<tile>
<name>000_Dev/Fence, Low/Fence low, cap</name>
</tile>
</entry>
</tileConfigs>
<entries>
<entry class="com.threerings.tudey.data.TudeySceneModel$AreaEntry">
<id>19</id>
<area>
<name>Portals/Portal</name>
<arguments>
<key class="java.lang.String">Portal</key>
<value class="com.threerings.tudey.config.ActionConfig$TaggedPortal">
<tag>from_sixty_nine</tag>
</value>
<key class="java.lang.String">Scene ID</key>
<value class="java.lang.Integer">80085</value>
<key class="java.lang.String">Tag</key>
<value class="java.lang.String">to_boobs</value>
</arguments>
</area>
<vertices>
<entry>
<x>-6.499995</x>
<y>-3.5000014</y>
<z>0.5</z>
</entry>
<entry>
<x>-4.499996</x>
<y>-4.500001</y>
<z>0.5</z>
</entry>
<entry>
<x>-4.4999948</x>
<y>4.4999957</y>
<z>0.5</z>
</entry>
<entry>
<x>-6.4999948</x>
<y>3.4999971</y>
<z>0.5</z>
</entry>
</vertices>
</entry>
<entry class="com.threerings.tudey.data.TudeySceneModel$PlaceableEntry">
<id>21</id>
<placeable>
<name>Dynamic/Misc/Border/Border (Middle)</name>
</placeable>
<transform>
<translation>-3.4999995, -0.49999952, 0.5</translation>
<rotation>0.0, 0.0, 0.7071067, -0.7071067</rotation>
</transform>
</entry>
<entry class="com.threerings.tudey.data.TudeySceneModel$PlaceableEntry">
<id>20</id>
<placeable>
<name>Dynamic/Misc/Border/Border (Start)</name>
</placeable>
<transform>
<translation>-3.4999998, -1.4999995, 0.5</translation>
<rotation>0.0, 0.0, 0.7071067, -0.7071067</rotation>
</transform>
</entry>
<entry class="com.threerings.tudey.data.TudeySceneModel$PlaceableEntry">
<id>23</id>
<placeable>
<name>Dynamic/Misc/Border/Border (End)</name>
</placeable>
<transform>
<translation>-3.499999, 1.5000002, 0.5</translation>
<rotation>0.0, 0.0, 0.7071067, -0.7071067</rotation>
</transform>
</entry>
<entry class="com.threerings.tudey.data.TudeySceneModel$PlaceableEntry">
<id>22</id>
<placeable>
<name>Dynamic/Misc/Border/Border (Label)</name>
<arguments>
<key class="java.lang.String">Label</key>
<value class="java.lang.String">Back home</value>
<key class="java.lang.String">Off Center</key>
<value class="java.lang.String">True</value>
</arguments>
</placeable>
<transform>
<translation>-3.4999995, 0.5000005, 0.5</translation>
<rotation>0.0, 0.0, -0.7071067, 0.7071068</rotation>
</transform>
</entry>
<entry class="com.threerings.tudey.data.TudeySceneModel$PlaceableEntry">
<id>25</id>
<placeable id="2">
<name>Prop/Knights/Camp Bonfire</name>
</placeable>
<transform>
<translation>1.5, -1.5, 0.0</translation>
<rotation>0.0, 0.0, 0.70710677, -0.70710677</rotation>
</transform>
</entry>
<entry class="com.threerings.tudey.data.TudeySceneModel$PlaceableEntry">
<id>24</id>
<placeable ref="2"/>
<transform>
<translation>1.5, 1.5, 0.0</translation>
<rotation>0.0, 0.0, 0.70710677, -0.70710677</rotation>
</transform>
</entry>
</entries>
</object>
</java>

1473
scenes/80085.xml Normal file

File diff suppressed because it is too large Load Diff

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