Adding osx files.
git-svn-id: http://openexile.googlecode.com/svn/trunk@2 4ebdad44-0ea0-11de-aab3-ff745001d230
This commit is contained in:
BIN
osx/Scenario Editor/BOEScen.rsrc
Normal file
BIN
osx/Scenario Editor/BOEScen.rsrc
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 343 KiB |
BIN
osx/Scenario Editor/Blades of Exile Base
Normal file
BIN
osx/Scenario Editor/Blades of Exile Base
Normal file
Binary file not shown.
BIN
osx/Scenario Editor/Blades of Exile Graphics
Normal file
BIN
osx/Scenario Editor/Blades of Exile Graphics
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 MiB |
BIN
osx/Scenario Editor/Blades of Exile Sounds
Normal file
BIN
osx/Scenario Editor/Blades of Exile Sounds
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 892 KiB |
20
osx/Scenario Editor/BoE Scenario Editor-Info.plist
Normal file
20
osx/Scenario Editor/BoE Scenario Editor-Info.plist
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.yourcompany.BoE Scenario Editor</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
265
osx/Scenario Editor/Editor.xcodeproj/project.pbxproj
Normal file
265
osx/Scenario Editor/Editor.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,265 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 42;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
2BDBD33B0C0A231100A0A01D /* buttonmg.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD3350C0A231100A0A01D /* buttonmg.c */; };
|
||||
2BDBD33C0C0A231100A0A01D /* dialogutils.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD3370C0A231100A0A01D /* dialogutils.c */; };
|
||||
2BDBD33D0C0A231100A0A01D /* dlogtool.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD3390C0A231100A0A01D /* dlogtool.c */; };
|
||||
2BDBD3520C0A232300A0A01D /* Exiletedit.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD33E0C0A232300A0A01D /* Exiletedit.c */; };
|
||||
2BDBD3540C0A232300A0A01D /* global.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD3410C0A232300A0A01D /* global.c */; };
|
||||
2BDBD3550C0A232300A0A01D /* keydlgs.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD3440C0A232300A0A01D /* keydlgs.c */; };
|
||||
2BDBD3560C0A232300A0A01D /* scenario.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD3460C0A232300A0A01D /* scenario.c */; };
|
||||
2BDBD3570C0A232300A0A01D /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD3480C0A232300A0A01D /* sound.c */; };
|
||||
2BDBD3580C0A232300A0A01D /* tactions.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD34A0C0A232300A0A01D /* tactions.c */; };
|
||||
2BDBD3590C0A232300A0A01D /* tfileio.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD34C0C0A232300A0A01D /* tfileio.c */; };
|
||||
2BDBD35A0C0A232300A0A01D /* tGraphics.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD34E0C0A232300A0A01D /* tGraphics.c */; };
|
||||
2BDBD35B0C0A232300A0A01D /* townout.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDBD3500C0A232300A0A01D /* townout.c */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
2BDBD32C0C0A22DE00A0A01D /* BoE Scenario Editor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "BoE Scenario Editor.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2BDBD32F0C0A22DE00A0A01D /* BoE Scenario Editor-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "BoE Scenario Editor-Info.plist"; sourceTree = "<group>"; };
|
||||
2BDBD3350C0A231100A0A01D /* buttonmg.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = buttonmg.c; sourceTree = "<group>"; };
|
||||
2BDBD3360C0A231100A0A01D /* buttonmg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = buttonmg.h; sourceTree = "<group>"; };
|
||||
2BDBD3370C0A231100A0A01D /* dialogutils.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = dialogutils.c; sourceTree = "<group>"; };
|
||||
2BDBD3380C0A231100A0A01D /* dialogutils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = dialogutils.h; sourceTree = "<group>"; };
|
||||
2BDBD3390C0A231100A0A01D /* dlogtool.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = dlogtool.c; sourceTree = "<group>"; };
|
||||
2BDBD33A0C0A231100A0A01D /* dlogtool.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = dlogtool.h; sourceTree = "<group>"; };
|
||||
2BDBD33E0C0A232300A0A01D /* Exiletedit.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = Exiletedit.c; sourceTree = "<group>"; };
|
||||
2BDBD33F0C0A232300A0A01D /* fileio.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = fileio.c; sourceTree = "<group>"; };
|
||||
2BDBD3400C0A232300A0A01D /* fileio.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = fileio.h; sourceTree = "<group>"; };
|
||||
2BDBD3410C0A232300A0A01D /* global.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = global.c; sourceTree = "<group>"; };
|
||||
2BDBD3420C0A232300A0A01D /* global.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = global.h; sourceTree = "<group>"; };
|
||||
2BDBD3430C0A232300A0A01D /* itemlist.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = itemlist.h; sourceTree = "<group>"; };
|
||||
2BDBD3440C0A232300A0A01D /* keydlgs.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = keydlgs.c; sourceTree = "<group>"; };
|
||||
2BDBD3450C0A232300A0A01D /* keydlgs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = keydlgs.h; sourceTree = "<group>"; };
|
||||
2BDBD3460C0A232300A0A01D /* scenario.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = scenario.c; sourceTree = "<group>"; };
|
||||
2BDBD3470C0A232300A0A01D /* scenario.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = scenario.h; sourceTree = "<group>"; };
|
||||
2BDBD3480C0A232300A0A01D /* sound.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sound.c; sourceTree = "<group>"; };
|
||||
2BDBD3490C0A232300A0A01D /* sound.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = sound.h; sourceTree = "<group>"; };
|
||||
2BDBD34A0C0A232300A0A01D /* tactions.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = tactions.c; sourceTree = "<group>"; };
|
||||
2BDBD34B0C0A232300A0A01D /* tactions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = tactions.h; sourceTree = "<group>"; };
|
||||
2BDBD34C0C0A232300A0A01D /* tfileio.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = tfileio.c; sourceTree = "<group>"; };
|
||||
2BDBD34D0C0A232300A0A01D /* tfileio.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = tfileio.h; sourceTree = "<group>"; };
|
||||
2BDBD34E0C0A232300A0A01D /* tGraphics.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = tGraphics.c; sourceTree = "<group>"; };
|
||||
2BDBD34F0C0A232300A0A01D /* tGraphics.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = tGraphics.h; sourceTree = "<group>"; };
|
||||
2BDBD3500C0A232300A0A01D /* townout.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = townout.c; sourceTree = "<group>"; };
|
||||
2BDBD3510C0A232300A0A01D /* townout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = townout.h; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
2BDBD32A0C0A22DE00A0A01D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
2BDBD31C0C0A22AB00A0A01D = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2BDBD33E0C0A232300A0A01D /* Exiletedit.c */,
|
||||
2BDBD33F0C0A232300A0A01D /* fileio.c */,
|
||||
2BDBD3400C0A232300A0A01D /* fileio.h */,
|
||||
2BDBD3410C0A232300A0A01D /* global.c */,
|
||||
2BDBD3420C0A232300A0A01D /* global.h */,
|
||||
2BDBD3430C0A232300A0A01D /* itemlist.h */,
|
||||
2BDBD3440C0A232300A0A01D /* keydlgs.c */,
|
||||
2BDBD3450C0A232300A0A01D /* keydlgs.h */,
|
||||
2BDBD3460C0A232300A0A01D /* scenario.c */,
|
||||
2BDBD3470C0A232300A0A01D /* scenario.h */,
|
||||
2BDBD3480C0A232300A0A01D /* sound.c */,
|
||||
2BDBD3490C0A232300A0A01D /* sound.h */,
|
||||
2BDBD34A0C0A232300A0A01D /* tactions.c */,
|
||||
2BDBD34B0C0A232300A0A01D /* tactions.h */,
|
||||
2BDBD34C0C0A232300A0A01D /* tfileio.c */,
|
||||
2BDBD34D0C0A232300A0A01D /* tfileio.h */,
|
||||
2BDBD34E0C0A232300A0A01D /* tGraphics.c */,
|
||||
2BDBD34F0C0A232300A0A01D /* tGraphics.h */,
|
||||
2BDBD3500C0A232300A0A01D /* townout.c */,
|
||||
2BDBD3510C0A232300A0A01D /* townout.h */,
|
||||
2BDBD3350C0A231100A0A01D /* buttonmg.c */,
|
||||
2BDBD3360C0A231100A0A01D /* buttonmg.h */,
|
||||
2BDBD3370C0A231100A0A01D /* dialogutils.c */,
|
||||
2BDBD3380C0A231100A0A01D /* dialogutils.h */,
|
||||
2BDBD3390C0A231100A0A01D /* dlogtool.c */,
|
||||
2BDBD33A0C0A231100A0A01D /* dlogtool.h */,
|
||||
2BDBD32D0C0A22DE00A0A01D /* Products */,
|
||||
2BDBD32F0C0A22DE00A0A01D /* BoE Scenario Editor-Info.plist */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
2BDBD32D0C0A22DE00A0A01D /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2BDBD32C0C0A22DE00A0A01D /* BoE Scenario Editor.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
2BDBD32B0C0A22DE00A0A01D /* BoE Scenario Editor */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 2BDBD3300C0A22DF00A0A01D /* Build configuration list for PBXNativeTarget "BoE Scenario Editor" */;
|
||||
buildPhases = (
|
||||
2BDBD3280C0A22DE00A0A01D /* Resources */,
|
||||
2BDBD3290C0A22DE00A0A01D /* Sources */,
|
||||
2BDBD32A0C0A22DE00A0A01D /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "BoE Scenario Editor";
|
||||
productName = "BoE Scenario Editor";
|
||||
productReference = 2BDBD32C0C0A22DE00A0A01D /* BoE Scenario Editor.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
2BDBD31E0C0A22AB00A0A01D /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 2BDBD31F0C0A22AB00A0A01D /* Build configuration list for PBXProject "Editor" */;
|
||||
hasScannedForEncodings = 0;
|
||||
mainGroup = 2BDBD31C0C0A22AB00A0A01D;
|
||||
productRefGroup = 2BDBD32D0C0A22DE00A0A01D /* Products */;
|
||||
projectDirPath = "";
|
||||
targets = (
|
||||
2BDBD32B0C0A22DE00A0A01D /* BoE Scenario Editor */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
2BDBD3280C0A22DE00A0A01D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
2BDBD3290C0A22DE00A0A01D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
2BDBD33B0C0A231100A0A01D /* buttonmg.c in Sources */,
|
||||
2BDBD33C0C0A231100A0A01D /* dialogutils.c in Sources */,
|
||||
2BDBD33D0C0A231100A0A01D /* dlogtool.c in Sources */,
|
||||
2BDBD3520C0A232300A0A01D /* Exiletedit.c in Sources */,
|
||||
2BDBD3540C0A232300A0A01D /* global.c in Sources */,
|
||||
2BDBD3550C0A232300A0A01D /* keydlgs.c in Sources */,
|
||||
2BDBD3560C0A232300A0A01D /* scenario.c in Sources */,
|
||||
2BDBD3570C0A232300A0A01D /* sound.c in Sources */,
|
||||
2BDBD3580C0A232300A0A01D /* tactions.c in Sources */,
|
||||
2BDBD3590C0A232300A0A01D /* tfileio.c in Sources */,
|
||||
2BDBD35A0C0A232300A0A01D /* tGraphics.c in Sources */,
|
||||
2BDBD35B0C0A232300A0A01D /* townout.c in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
2BDBD3200C0A22AB00A0A01D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
2BDBD3210C0A22AB00A0A01D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
2BDBD3310C0A22DF00A0A01D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = ppc;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
|
||||
INFOPLIST_FILE = "BoE Scenario Editor-Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
OTHER_CFLAGS = "-fpack-struct=2";
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
Carbon,
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = "BoE Scenario Editor";
|
||||
WRAPPER_EXTENSION = app;
|
||||
ZERO_LINK = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
2BDBD3320C0A22DF00A0A01D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = ppc;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
|
||||
INFOPLIST_FILE = "BoE Scenario Editor-Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
OTHER_CFLAGS = "-fpack-struct=2";
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
Carbon,
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = "BoE Scenario Editor";
|
||||
WRAPPER_EXTENSION = app;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
2BDBD31F0C0A22AB00A0A01D /* Build configuration list for PBXProject "Editor" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
2BDBD3200C0A22AB00A0A01D /* Debug */,
|
||||
2BDBD3210C0A22AB00A0A01D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
2BDBD3300C0A22DF00A0A01D /* Build configuration list for PBXNativeTarget "BoE Scenario Editor" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
2BDBD3310C0A22DF00A0A01D /* Debug */,
|
||||
2BDBD3320C0A22DF00A0A01D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 2BDBD31E0C0A22AB00A0A01D /* Project object */;
|
||||
}
|
||||
842
osx/Scenario Editor/Exiletedit.c
Normal file
842
osx/Scenario Editor/Exiletedit.c
Normal file
@@ -0,0 +1,842 @@
|
||||
|
||||
#include <Carbon/Carbon.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "Global.h"
|
||||
#include "tGraphics.h"
|
||||
#include "tactions.h"
|
||||
#include "tfileio.h"
|
||||
#include "dlogtool.h"
|
||||
#include "buttonmg.h"
|
||||
#include "sound.h"
|
||||
#include "townout.h"
|
||||
#include "scenario.h"
|
||||
#include "keydlgs.h"
|
||||
|
||||
|
||||
/* Globals */
|
||||
Rect windRect, Drag_Rect;
|
||||
Boolean All_Done = FALSE,dialog_not_toast = FALSE,play_sounds = TRUE;
|
||||
EventRecord event;
|
||||
WindowPtr mainPtr;
|
||||
town_record_type town;
|
||||
big_tr_type t_d;
|
||||
Boolean diff_depth_ok = FALSE,mouse_button_held = FALSE,editing_town = FALSE;
|
||||
short cur_viewing_mode = 0;
|
||||
short town_type = 0; // 0 - big 1 - ave 2 - small
|
||||
short max_dim[3] = {64,48,32};
|
||||
short cen_x, cen_y;
|
||||
short overall_mode = 61;
|
||||
Handle menu_bar_handle;
|
||||
ControlHandle right_sbar;
|
||||
short mode_count = 0;
|
||||
short dungeon_font_num,geneva_font_num;
|
||||
MenuHandle apple_menu;
|
||||
outdoor_record_type current_terrain;
|
||||
talking_record_type talking;
|
||||
short given_password;
|
||||
short user_given_password = -1;
|
||||
short pixel_depth,old_depth = 8;
|
||||
|
||||
unsigned char border1 = 90, border2 = 90; // kludgy thing ... leave right here, before borders
|
||||
unsigned char borders[4][50];
|
||||
|
||||
Boolean change_made = FALSE;
|
||||
|
||||
// Numbers of current areas being edited
|
||||
short cur_town;
|
||||
location cur_out;
|
||||
|
||||
/* Prototypes */
|
||||
int main(void);
|
||||
void Initialize(void);
|
||||
void Set_Window_Drag_Bdry();
|
||||
void Handle_One_Event();
|
||||
void Handle_Activate();
|
||||
void Handle_Update();
|
||||
void handle_menu_choice(long choice);
|
||||
void handle_apple_menu(int item_hit);
|
||||
void handle_file_menu(int item_hit);
|
||||
void handle_scenario_menu(int item_hit);
|
||||
void handle_town_menu(int item_hit);
|
||||
void handle_outdoor_menu(int item_hit);
|
||||
void handle_item_menu(int item_hit);
|
||||
void handle_monst_menu(int item_hit);
|
||||
void handle_help_menu(int item_hit);
|
||||
pascal void right_sbar_action(ControlHandle bar, short part);
|
||||
void Mouse_Pressed();
|
||||
void close_program();
|
||||
void ding();
|
||||
pascal Boolean cd_event_filter (DialogPtr hDlg, EventRecord *event, short *dummy_item_hit);
|
||||
void set_pixel_depth();
|
||||
void restore_depth();
|
||||
void find_quickdraw() ;
|
||||
|
||||
|
||||
scenario_data_type scenario;
|
||||
piles_of_stuff_dumping_type *data_store;
|
||||
Rect right_sbar_rect;
|
||||
|
||||
//
|
||||
// Main body of program Exileedit
|
||||
//
|
||||
|
||||
//Changed to ISO C specified argument and return type.
|
||||
int main(void)
|
||||
{
|
||||
|
||||
short j,k;
|
||||
long i;
|
||||
size_t size;
|
||||
outdoor_record_type dummy_outdoor, *store2;
|
||||
|
||||
|
||||
data_store = (piles_of_stuff_dumping_type *) NewPtr(sizeof(piles_of_stuff_dumping_type));
|
||||
init_current_terrain();
|
||||
//create_file();
|
||||
//ExitToShell();
|
||||
cd_init_dialogs();
|
||||
|
||||
cen_x = 18; cen_y = 18;
|
||||
|
||||
init_directories();
|
||||
Initialize();
|
||||
load_sounds();
|
||||
|
||||
run_startup_g();
|
||||
init_lb();
|
||||
init_rb();
|
||||
init_town(1);
|
||||
init_out();
|
||||
init_scenario();
|
||||
|
||||
make_cursor_sword();
|
||||
|
||||
Set_Window_Drag_Bdry();
|
||||
|
||||
Set_up_win();
|
||||
init_screen_locs();
|
||||
|
||||
//create_basic_scenario();
|
||||
|
||||
menu_bar_handle = GetNewMBar(128);
|
||||
if (menu_bar_handle == NIL) {
|
||||
SysBeep(50); SysBeep(50); SysBeep(50);
|
||||
ExitToShell();
|
||||
}
|
||||
SetMenuBar(menu_bar_handle);
|
||||
DisposeHandle(menu_bar_handle);
|
||||
|
||||
apple_menu = GetMenuHandle(500);
|
||||
/*file_menu = GetMenuHandle(550);
|
||||
options_menu = GetMenuHandle(600);
|
||||
create_menu = GetMenuHandle(650);
|
||||
items_menu = GetMenuHandle(700);*/
|
||||
|
||||
AppendResMenu(apple_menu, 'DRVR');
|
||||
shut_down_menus(0);
|
||||
DrawMenuBar();
|
||||
|
||||
//update_item_menu();
|
||||
|
||||
// to_create = get_town_to_edit();
|
||||
|
||||
// load_terrain(to_create);
|
||||
|
||||
// modify_lists();
|
||||
set_up_start_screen();
|
||||
|
||||
TextFace(bold);
|
||||
|
||||
redraw_screen();
|
||||
|
||||
while (All_Done == FALSE)
|
||||
Handle_One_Event();
|
||||
|
||||
close_program();
|
||||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Initialize everything for the program, make sure we can run
|
||||
//
|
||||
|
||||
//MW specified argument and return type.
|
||||
void Initialize(void)
|
||||
{
|
||||
|
||||
Str255 tit = " ";
|
||||
OSErr error;
|
||||
|
||||
|
||||
/* Initialize all the needed managers. */
|
||||
InitCursor();
|
||||
|
||||
//
|
||||
// To make the Random sequences truly random, we need to make the seed start
|
||||
// at a different number. An easy way to do this is to put the current time
|
||||
// and date into the seed. Since it is always incrementing the starting seed
|
||||
// will always be different. Don<6F>t for each call of Random, or the sequence
|
||||
// will no longer be random. Only needed once, here in the init.
|
||||
//
|
||||
unsigned long time;
|
||||
GetDateTime(&time);
|
||||
SetQDGlobalsRandomSeed(time);
|
||||
|
||||
//
|
||||
// Make a new window for drawing in, and it must be a color window.
|
||||
// The window is full screen size, made smaller to make it more visible.
|
||||
//
|
||||
BitMap bmap;
|
||||
GetQDGlobalsScreenBits(&bmap);
|
||||
windRect = bmap.bounds;
|
||||
|
||||
find_quickdraw();
|
||||
set_pixel_depth();
|
||||
|
||||
//InsetRect(&windRect, 5, 34);
|
||||
InsetRect(&windRect,(windRect.right - 584) / 2,(windRect.bottom - 420) / 2);
|
||||
OffsetRect(&windRect,0,18);
|
||||
mainPtr = NewCWindow(nil, &windRect, "\pBlades of Exile Scenario Editor", true, documentProc,
|
||||
(WindowPtr) -1, false, 0);
|
||||
GetWindowPortBounds(mainPtr,&windRect);
|
||||
SetPortWindowPort(mainPtr); /* set window to current graf port */
|
||||
right_sbar_rect.top = RIGHT_AREA_UL_Y;
|
||||
right_sbar_rect.left = RIGHT_AREA_UL_X + RIGHT_AREA_WIDTH - 1 - 16;
|
||||
right_sbar_rect.bottom = RIGHT_AREA_UL_Y + RIGHT_AREA_HEIGHT;
|
||||
right_sbar_rect.right = RIGHT_AREA_UL_X + RIGHT_AREA_WIDTH - 1;
|
||||
right_sbar = NewControl(mainPtr,&right_sbar_rect,tit,TRUE,0,0,0,scrollBarProc,1);
|
||||
|
||||
}
|
||||
|
||||
void Set_Window_Drag_Bdry()
|
||||
{
|
||||
BitMap bmap;
|
||||
GetQDGlobalsScreenBits(&bmap);
|
||||
Drag_Rect = bmap.bounds;
|
||||
// Drag_Rect = (**(GrayRgn)).rgnBBox;
|
||||
Drag_Rect.left += DRAG_EDGE;
|
||||
Drag_Rect.right -= DRAG_EDGE;
|
||||
Drag_Rect.bottom -= DRAG_EDGE;
|
||||
}
|
||||
|
||||
void Handle_One_Event()
|
||||
{
|
||||
short chr,chr2;
|
||||
long menu_choice;
|
||||
|
||||
|
||||
WaitNextEvent(everyEvent, &event, SLEEP_TICKS, MOUSE_REGION);
|
||||
if ((mouse_button_held == TRUE) && (event.what != 23) && (FrontWindow() == mainPtr)) {
|
||||
GlobalToLocal(&event.where);
|
||||
handle_action(event.where,event);
|
||||
}
|
||||
|
||||
|
||||
switch (event.what)
|
||||
{
|
||||
case keyDown: case autoKey:
|
||||
chr = event.message & charCodeMask;
|
||||
chr2 = (char) ((event.message & keyCodeMask) >> 8);
|
||||
if ((event.modifiers & cmdKey) != 0) {
|
||||
if (event.what != autoKey) {
|
||||
BringToFront(mainPtr);
|
||||
SetPortWindowPort(mainPtr);
|
||||
menu_choice = MenuKey(chr);
|
||||
handle_menu_choice(menu_choice);
|
||||
}
|
||||
}
|
||||
else if (chr == 'Q')
|
||||
All_Done = TRUE;
|
||||
else handle_keystroke(chr,chr2,event);
|
||||
break;
|
||||
|
||||
case mouseDown:
|
||||
Mouse_Pressed();
|
||||
break;
|
||||
|
||||
|
||||
case mouseUp:
|
||||
mouse_button_held = FALSE;
|
||||
break;
|
||||
|
||||
case activateEvt:
|
||||
Handle_Activate();
|
||||
break;
|
||||
|
||||
case updateEvt:
|
||||
Handle_Update();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Handle_Activate()
|
||||
{
|
||||
restore_cursor();
|
||||
}
|
||||
|
||||
void Handle_Update()
|
||||
{
|
||||
WindowPtr the_window;
|
||||
GrafPtr old_port;
|
||||
|
||||
the_window = (WindowPtr) event.message;
|
||||
|
||||
GetPort (&old_port);
|
||||
SetPortWindowPort(the_window);
|
||||
|
||||
BeginUpdate(the_window);
|
||||
|
||||
redraw_screen();
|
||||
EndUpdate(the_window);
|
||||
|
||||
SetPort(old_port);
|
||||
restore_cursor();
|
||||
}
|
||||
|
||||
void handle_menu_choice(long choice)
|
||||
{
|
||||
int menu,menu_item;
|
||||
|
||||
if (choice != 0) {
|
||||
menu = HiWord(choice);
|
||||
menu_item = LoWord(choice);
|
||||
|
||||
set_cursor(0);
|
||||
switch (menu) {
|
||||
case 500:
|
||||
handle_apple_menu(menu_item);
|
||||
break;
|
||||
case 550:
|
||||
handle_file_menu(menu_item);
|
||||
break;
|
||||
case 600:
|
||||
handle_scenario_menu(menu_item);
|
||||
break;
|
||||
case 650:
|
||||
handle_town_menu(menu_item);
|
||||
break;
|
||||
case 651:
|
||||
handle_outdoor_menu(menu_item);
|
||||
break;
|
||||
case 675:
|
||||
handle_help_menu(menu_item);
|
||||
break;
|
||||
case 700: case 701: case 702: case 703: case 704:
|
||||
handle_item_menu(menu_item + 80 * (menu - 700) - 1);
|
||||
break;
|
||||
case 750: case 751: case 752: case 753:
|
||||
handle_monst_menu(menu_item + 64 * (menu - 750) - 1);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
HiliteMenu(0);
|
||||
}
|
||||
|
||||
void handle_apple_menu(int item_hit)
|
||||
{
|
||||
Str255 desk_acc_name;
|
||||
short desk_acc_num;
|
||||
|
||||
switch (item_hit) {
|
||||
case 1:
|
||||
fancy_choice_dialog(1062,0);
|
||||
break;
|
||||
default:
|
||||
// GetItem (apple_menu,item_hit,desk_acc_name);
|
||||
// desk_acc_num = OpenDeskAcc(desk_acc_name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void handle_file_menu(int item_hit)
|
||||
{
|
||||
short create;
|
||||
|
||||
switch (item_hit) {
|
||||
case 1: // open
|
||||
load_scenario();
|
||||
if (overall_mode == 60) {
|
||||
update_item_menu();
|
||||
set_up_main_screen();
|
||||
}
|
||||
break;
|
||||
case 2: // save
|
||||
modify_lists();
|
||||
save_scenario();
|
||||
break;
|
||||
case 3: // new scen
|
||||
build_scenario();
|
||||
if (overall_mode == 60)
|
||||
set_up_main_screen();
|
||||
break;
|
||||
|
||||
case 5: // quit
|
||||
if (save_check(869) == FALSE)
|
||||
break;
|
||||
ExitToShell();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void handle_scenario_menu(int item_hit)
|
||||
{
|
||||
short i;
|
||||
|
||||
switch (item_hit) {
|
||||
case 1:
|
||||
if (change_made == TRUE) {
|
||||
give_error("You need to save the changes made to your scenario before you can add a new town.",
|
||||
"",0);
|
||||
return;
|
||||
}
|
||||
if (scenario.num_towns >= 200) {
|
||||
give_error("You have reached the limit of 200 towns you can have in one scenario.",
|
||||
"",0);
|
||||
return;
|
||||
}
|
||||
if (new_town(scenario.num_towns) == TRUE)
|
||||
set_up_main_screen();
|
||||
break;
|
||||
case 3:
|
||||
edit_scen_details();
|
||||
break;
|
||||
case 4:
|
||||
edit_scen_intro();
|
||||
break;
|
||||
case 5:
|
||||
set_starting_loc();
|
||||
break;
|
||||
case 6:
|
||||
if (check_p(user_given_password) == TRUE)
|
||||
given_password = get_password(); break;
|
||||
case 9: SetControlValue(right_sbar,0); start_special_editing(0,0); break;
|
||||
case 10:
|
||||
SetControlValue(right_sbar,0); start_string_editing(0,0);
|
||||
break;
|
||||
case 11:
|
||||
if (change_made == TRUE) {
|
||||
give_error("You need to save the changes made to your scenario before you can add a new town.",
|
||||
"",0);
|
||||
return;
|
||||
}
|
||||
i = pick_import_town(841,0);
|
||||
if (i >= 0) {
|
||||
import_town(i);
|
||||
change_made = TRUE;
|
||||
redraw_screen();
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
edit_save_rects();
|
||||
break;
|
||||
case 13:
|
||||
edit_horses();
|
||||
break;
|
||||
case 14:
|
||||
edit_boats();
|
||||
break;
|
||||
case 15:
|
||||
edit_add_town();
|
||||
break;
|
||||
case 16:
|
||||
edit_scenario_events();
|
||||
break;
|
||||
case 17:
|
||||
edit_item_placement();
|
||||
break;
|
||||
case 18:
|
||||
if (change_made == TRUE) {
|
||||
give_error("You need to save the changes made to your scenario before you can delete a town.",
|
||||
"",0);
|
||||
return;
|
||||
}
|
||||
if (scenario.num_towns == 1) {
|
||||
give_error("You can't delete the last town in a scenario. All scenarios must have at least 1 town.",
|
||||
"",0);
|
||||
return;
|
||||
}
|
||||
if (scenario.num_towns - 1 == cur_town) {
|
||||
give_error("You can't delete the last town in a scenario while you're working on it. Load a different town, and try this again.",
|
||||
"",0);
|
||||
return;
|
||||
}
|
||||
if (scenario.num_towns - 1 == scenario.which_town_start) {
|
||||
give_error("You can't delete the last town in a scenario while it's the town the party starts the scenario in. Change the parties starting point and try this again.",
|
||||
"",0);
|
||||
return;
|
||||
}
|
||||
if (fancy_choice_dialog(865,0) == 1)
|
||||
delete_last_town();
|
||||
break;
|
||||
case 19:
|
||||
if (fancy_choice_dialog(866,0) == 1)
|
||||
start_data_dump();
|
||||
case 20:
|
||||
if (change_made == TRUE) {
|
||||
give_error("You need to save the changes made to your scenario before you can delete a town.",
|
||||
"",0);
|
||||
return;
|
||||
}
|
||||
if (fancy_choice_dialog(871,0) == 1)
|
||||
scen_text_dump();
|
||||
redraw_screen();
|
||||
break;
|
||||
}
|
||||
if ((item_hit != 18) && (item_hit != 19))
|
||||
change_made = TRUE;
|
||||
}
|
||||
|
||||
void handle_town_menu(int item_hit)
|
||||
{
|
||||
short i;
|
||||
|
||||
change_made = TRUE;
|
||||
switch (item_hit) {
|
||||
case 1: edit_town_details(); break;
|
||||
case 2: edit_town_wand(); break;
|
||||
case 3: overall_mode = 9;
|
||||
mode_count = 2;
|
||||
set_cursor(5);
|
||||
set_string("Set town boundary","Select upper left corner");
|
||||
break;
|
||||
case 4: frill_up_terrain(); break;
|
||||
case 5: unfrill_terrain(); break;
|
||||
case 6: edit_town_strs(); break;
|
||||
case 8: if (fancy_choice_dialog(863,0) == 2)
|
||||
break;
|
||||
place_items_in_town();
|
||||
break; // add random
|
||||
case 9: for (i = 0; i < 64; i++)
|
||||
town.preset_items[i].property = 0;
|
||||
fancy_choice_dialog(861,0);
|
||||
draw_terrain();
|
||||
break; // set not prop
|
||||
case 10: if (fancy_choice_dialog(862,0) == 2)
|
||||
break;
|
||||
for (i = 0; i < 64; i++)
|
||||
town.preset_items[i].item_code = -1;
|
||||
draw_terrain();
|
||||
break; // clear all items
|
||||
case 13: SetControlValue(right_sbar,0); start_special_editing(2,0); break;
|
||||
case 14: SetControlValue(right_sbar,0); start_string_editing(2,0); break;
|
||||
case 15: edit_advanced_town(); break;
|
||||
case 16: edit_town_events(); break;
|
||||
}
|
||||
}
|
||||
void handle_outdoor_menu(int item_hit)
|
||||
{
|
||||
short i;
|
||||
|
||||
change_made = TRUE;
|
||||
switch (item_hit) {
|
||||
case 1: outdoor_details(); break;
|
||||
case 2: edit_out_wand(0); break;
|
||||
case 3: edit_out_wand(1); break;
|
||||
case 4: frill_up_terrain(); break;
|
||||
case 5: unfrill_terrain(); break;
|
||||
case 6: edit_out_strs(); break;
|
||||
case 8: overall_mode = 47;
|
||||
set_string("Select party starting location.",""); break;
|
||||
case 11: SetControlValue(right_sbar,0); start_special_editing(1,0); break;
|
||||
case 12: SetControlValue(right_sbar,0); start_string_editing(1,0); break;
|
||||
}
|
||||
}
|
||||
|
||||
void handle_help_menu(int item_hit)
|
||||
{
|
||||
short i;
|
||||
|
||||
switch (item_hit) {
|
||||
case 1: fancy_choice_dialog(986,0); break; // started
|
||||
case 2: fancy_choice_dialog(1000,0); break; // testing
|
||||
case 3: fancy_choice_dialog(1001,0); break; // distributing
|
||||
case 5: fancy_choice_dialog(1002,0); break; // contest
|
||||
}
|
||||
}
|
||||
|
||||
void handle_item_menu(int item_hit)
|
||||
{
|
||||
if (data_store->scen_item_list.scen_items[item_hit].variety == 0) {
|
||||
give_error("This item has its Variety set to No Item. You can only place items with a Variety set to an actual item type.","",0);
|
||||
return;
|
||||
}
|
||||
overall_mode = 4;
|
||||
set_string("Place the item.","Select item location");
|
||||
mode_count = item_hit;
|
||||
}
|
||||
|
||||
void handle_monst_menu(int item_hit)
|
||||
{
|
||||
overall_mode = 28;
|
||||
set_string("Place the monster.","Select monster location");
|
||||
mode_count = item_hit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
pascal void right_sbar_action(ControlHandle bar, short part)
|
||||
{
|
||||
short old_setting,new_setting,max,i;
|
||||
|
||||
if (part == 0)
|
||||
return;
|
||||
|
||||
old_setting = GetControlValue(bar);
|
||||
new_setting = old_setting;
|
||||
max = GetControlMaximum(bar);
|
||||
|
||||
switch (part) {
|
||||
case kControlUpButtonPart: new_setting--; break;
|
||||
case kControlDownButtonPart: new_setting++; break;
|
||||
case kControlPageUpPart: new_setting -= NRSONPAGE - 1; break;
|
||||
case kControlPageDownPart: new_setting += NRSONPAGE - 1; break;
|
||||
}
|
||||
new_setting = minmax(0,max,new_setting);
|
||||
SetControlValue(bar,new_setting);
|
||||
if (new_setting != old_setting)
|
||||
draw_rb();
|
||||
}
|
||||
|
||||
void Mouse_Pressed()
|
||||
{
|
||||
WindowPtr the_window;
|
||||
short the_part,content_part,i;
|
||||
long menu_choice;
|
||||
BitMap bmap;
|
||||
ControlHandle control_hit;
|
||||
|
||||
the_part = FindWindow( event.where, &the_window);
|
||||
|
||||
switch (the_part)
|
||||
{
|
||||
case inMenuBar:
|
||||
menu_choice = MenuSelect(event.where);
|
||||
handle_menu_choice(menu_choice);
|
||||
break;
|
||||
|
||||
case inSysWindow:
|
||||
break;
|
||||
|
||||
case inDrag:
|
||||
GetQDGlobalsScreenBits(&bmap);
|
||||
DragWindow(the_window, event.where, &(bmap.bounds));
|
||||
break;
|
||||
|
||||
case inGoAway:
|
||||
All_Done = TRUE;
|
||||
break;
|
||||
|
||||
case inContent:
|
||||
SetPortWindowPort(mainPtr);
|
||||
GlobalToLocal(&event.where);
|
||||
content_part = FindControl(event.where,the_window,&control_hit); // hit sbar?
|
||||
if (content_part != 0) {
|
||||
switch (content_part) {
|
||||
case kControlIndicatorPart:
|
||||
content_part = TrackControl(control_hit,event.where,NIL);
|
||||
if (control_hit == right_sbar)
|
||||
if (content_part == kControlIndicatorPart) {
|
||||
draw_rb();
|
||||
}
|
||||
|
||||
break;
|
||||
case kControlUpButtonPart: case kControlPageUpPart: case kControlDownButtonPart: case kControlPageDownPart:
|
||||
if (control_hit == right_sbar)
|
||||
content_part = TrackControl(control_hit,event.where,(ControlActionUPP)right_sbar_action);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
} // a control hit
|
||||
else // ordinary click
|
||||
All_Done = handle_action(event.where,event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void close_program()
|
||||
{
|
||||
restore_depth();
|
||||
}
|
||||
|
||||
void ding()
|
||||
{
|
||||
SysBeep(1);
|
||||
}
|
||||
|
||||
pascal Boolean cd_event_filter (DialogPtr hDlg, EventRecord *event, short *dummy_item_hit)
|
||||
{
|
||||
char chr,chr2;
|
||||
short the_type,wind_hit,item_hit;
|
||||
Handle the_handle = NULL;
|
||||
Rect the_rect,button_rect;
|
||||
Point the_point;
|
||||
WindowRef w;
|
||||
RgnHandle rgn;
|
||||
|
||||
dummy_item_hit = 0;
|
||||
|
||||
switch (event->what) {
|
||||
case updateEvt:
|
||||
w = GetDialogWindow(hDlg);
|
||||
rgn = NewRgn();
|
||||
GetWindowRegion(w,kWindowUpdateRgn,rgn);
|
||||
if (EmptyRgn(rgn) == TRUE) {
|
||||
DisposeRgn(rgn);
|
||||
return TRUE;
|
||||
}
|
||||
DisposeRgn(rgn);
|
||||
BeginUpdate(w);
|
||||
cd_redraw(w);
|
||||
EndUpdate(w);
|
||||
DrawDialog(hDlg);
|
||||
return FALSE;
|
||||
break;
|
||||
|
||||
case keyDown:
|
||||
chr = event->message & charCodeMask;
|
||||
chr2 = (char) ((event->message & keyCodeMask) >> 8);
|
||||
switch (chr2) {
|
||||
case 126: chr = 22; break;
|
||||
case 124: chr = 21; break;
|
||||
case 123: chr = 20; break;
|
||||
case 125: chr = 23; break;
|
||||
case 53: chr = 24; break;
|
||||
case 36: chr = 31; break;
|
||||
case 76: chr = 31; break;
|
||||
}
|
||||
// specials ... 20 - <- 21 - -> 22 up 23 down 24 esc
|
||||
// 25-30 ctrl 1-6 31 - return
|
||||
|
||||
wind_hit = cd_process_keystroke(GetDialogWindow(hDlg),chr,&item_hit);
|
||||
break;
|
||||
|
||||
case mouseDown:
|
||||
the_point = event->where;
|
||||
GlobalToLocal(&the_point);
|
||||
wind_hit = cd_process_click(GetDialogWindow(hDlg),the_point, event->modifiers,&item_hit);
|
||||
break;
|
||||
|
||||
default: wind_hit = -1; break;
|
||||
}
|
||||
switch (wind_hit) {
|
||||
case -1: break;
|
||||
//case 958: _event_filter(item_hit); break;
|
||||
case 970: case 971: case 972: case 973: display_strings_event_filter(item_hit); break;
|
||||
case 800: edit_make_scen_1_event_filter(item_hit); break;
|
||||
case 801: edit_make_scen_2_event_filter(item_hit); break;
|
||||
case 802: user_password_filter(item_hit); break;
|
||||
case 803: edit_scen_details_event_filter(item_hit); break;
|
||||
case 804: edit_scen_intro_event_filter(item_hit); break;
|
||||
case 805: set_starting_loc_filter(item_hit); break;
|
||||
case 806: edit_spec_item_event_filter(item_hit); break;
|
||||
case 807: edit_save_rects_event_filter(item_hit); break;
|
||||
case 808: edit_horses_event_filter(item_hit); break;
|
||||
case 809: edit_boats_event_filter(item_hit); break;
|
||||
case 810: edit_add_town_event_filter(item_hit); break;
|
||||
case 811: edit_scenario_events_event_filter(item_hit); break;
|
||||
case 812: edit_item_placement_event_filter(item_hit); break;
|
||||
case 813: edit_ter_type_event_filter(item_hit); break;
|
||||
case 814: edit_monst_type_event_filter(item_hit); break;
|
||||
case 815: edit_monst_abil_event_filter(item_hit); break;
|
||||
case 816: edit_text_event_filter(item_hit); break;
|
||||
case 817: edit_talk_node_event_filter(item_hit); break;
|
||||
case 818: edit_item_type_event_filter(item_hit); break;
|
||||
case 819: choose_graphic_event_filter(item_hit); break;
|
||||
case 820: choose_text_res_event_filter(item_hit); break;
|
||||
case 821: edit_basic_dlog_event_filter(item_hit); break;
|
||||
case 822: edit_spec_enc_event_filter(item_hit); break;
|
||||
case 823: give_password_filter(item_hit); break;
|
||||
case 824: edit_item_abil_event_filter(item_hit); break;
|
||||
case 825: edit_special_num_event_filter(item_hit); break;
|
||||
case 826: edit_spec_text_event_filter(item_hit); break;
|
||||
case 830: new_town_event_filter(item_hit); break;
|
||||
case 831: edit_sign_event_filter(item_hit); break;
|
||||
case 832: edit_town_details_event_filter(item_hit); break;
|
||||
case 833: edit_town_events_event_filter(item_hit); break;
|
||||
case 834: edit_advanced_town_event_filter(item_hit); break;
|
||||
case 835: edit_town_wand_event_filter(item_hit); break;
|
||||
case 836: edit_placed_item_event_filter(item_hit); break;
|
||||
case 837: edit_placed_monst_event_filter(item_hit); break;
|
||||
case 838: edit_placed_monst_adv_event_filter(item_hit); break;
|
||||
case 839: edit_town_strs_event_filter(item_hit); break;
|
||||
case 840: edit_area_rect_event_filter(item_hit); break;
|
||||
case 841: pick_import_town_event_filter(item_hit); break;
|
||||
case 842: edit_dialog_text_event_filter(item_hit); break;
|
||||
case 850: edit_out_strs_event_filter(item_hit); break;
|
||||
case 851: outdoor_details_event_filter(item_hit); break;
|
||||
case 852: edit_out_wand_event_filter(item_hit); break;
|
||||
case 854: pick_out_event_filter(item_hit); break;
|
||||
case 855: case 856: pick_town_num_event_filter(item_hit); break;
|
||||
case 857: change_ter_event_filter(item_hit); break;
|
||||
default: fancy_choice_dialog_event_filter (item_hit); break;
|
||||
|
||||
}
|
||||
|
||||
if (wind_hit == -1)
|
||||
return FALSE;
|
||||
else return TRUE;
|
||||
}
|
||||
|
||||
void set_pixel_depth() {
|
||||
GDHandle cur_device;
|
||||
PixMapHandle screen_pixmap_handle;
|
||||
OSErr err;
|
||||
short choice;
|
||||
|
||||
cur_device = GetGDevice();
|
||||
|
||||
|
||||
screen_pixmap_handle = (**(cur_device)).gdPMap;
|
||||
pixel_depth = (**(screen_pixmap_handle)).pixelSize;
|
||||
|
||||
if ((pixel_depth <= 8) && (diff_depth_ok == TRUE))
|
||||
return;
|
||||
|
||||
|
||||
diff_depth_ok = TRUE;
|
||||
old_depth = pixel_depth;
|
||||
}
|
||||
|
||||
void restore_depth()
|
||||
{
|
||||
GDHandle cur_device;
|
||||
PixMapHandle screen_pixmap_handle;
|
||||
OSErr err;
|
||||
short choice;
|
||||
|
||||
cur_device = GetGDevice();
|
||||
|
||||
screen_pixmap_handle = (**(cur_device)).gdPMap;
|
||||
|
||||
if (old_depth != 8) {
|
||||
|
||||
err = SetDepth(cur_device,old_depth,1,1);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void find_quickdraw() {
|
||||
OSErr err;
|
||||
long response;
|
||||
short choice;
|
||||
|
||||
err = Gestalt(gestaltQuickdrawVersion, &response);
|
||||
if (err == noErr) {
|
||||
if (response == 0x000) {
|
||||
choice = choice_dialog(0,1070);
|
||||
if (choice == 2)
|
||||
ExitToShell();
|
||||
else diff_depth_ok = TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
SysBeep(2);
|
||||
ExitToShell();
|
||||
}
|
||||
}
|
||||
BIN
osx/Scenario Editor/bladbase.exs
Normal file
BIN
osx/Scenario Editor/bladbase.exs
Normal file
Binary file not shown.
146
osx/Scenario Editor/buttonmg.c
Normal file
146
osx/Scenario Editor/buttonmg.c
Normal file
@@ -0,0 +1,146 @@
|
||||
|
||||
#include <Carbon/Carbon.h>
|
||||
#include "string.h"
|
||||
#include "stdio.h"
|
||||
|
||||
#include "global.h"
|
||||
#include "tGraphics.h"
|
||||
#include "math.h"
|
||||
#include "buttonmg.h"
|
||||
|
||||
extern piles_of_stuff_dumping_type *data_store;
|
||||
extern Rect right_sbar_rect;
|
||||
|
||||
|
||||
|
||||
Rect left_button[NLS];
|
||||
extern Rect right_buttons[NRSONPAGE];
|
||||
Rect right_scrollbar_rect;
|
||||
Rect right_area_rect;
|
||||
extern short current_rs_top;
|
||||
|
||||
Boolean left_buttons_active = 1,right_buttons_active = 0;
|
||||
extern short left_button_status[NLS]; // 0 - clear, 1 - text, 2 - title text, 3 - tabbed text, +10 - button
|
||||
extern short right_button_status[NRS];
|
||||
extern ControlHandle right_sbar;
|
||||
// 0 - clear
|
||||
// 1000 + x - terrain type x
|
||||
// 2000 + x - monster type x
|
||||
// 3000 + x - item type x
|
||||
// 4000 + x - global special node
|
||||
// 5000 + x - out special node
|
||||
// 6000 + x - town special node
|
||||
// 7000 + x - global string x
|
||||
// 8000 + x - out string x
|
||||
// 9000 + x - town string x
|
||||
// 10000 + x - scen. special item x
|
||||
// 11000 + x - charter intro c
|
||||
// 12000 + x - dialogue node x
|
||||
// 13000 + x - basic dialogue node x
|
||||
|
||||
|
||||
// for following, lb stands for left button(s)
|
||||
|
||||
void init_lb() {
|
||||
short i;
|
||||
for (i = 0; i < NLS; i++) {
|
||||
left_button_status[i] = 0;
|
||||
sprintf((char *) data_store->strings_ls[i], "");
|
||||
}
|
||||
}
|
||||
|
||||
void reset_lb() {
|
||||
short i;
|
||||
for (i = 0; i < NLS; i++) {
|
||||
left_button_status[i] = 0;
|
||||
draw_lb_slot(i,0);
|
||||
}
|
||||
}
|
||||
|
||||
// is slot >= 0, force that slot
|
||||
// if -1, use 1st free slot
|
||||
void set_lb(short slot, short mode, char *label, short do_draw)
|
||||
{
|
||||
short i;
|
||||
|
||||
if (slot < 0) {
|
||||
for (i = 0; i < NLS; i++)
|
||||
if (left_button_status[i] == 0) {
|
||||
slot = i;
|
||||
i = NLS + 5000;
|
||||
}
|
||||
if (i < NLS + 5000)
|
||||
return;
|
||||
}
|
||||
left_button_status[slot] = mode;
|
||||
//sprintf((char *)data_store->strings_ls[slot], "%-39.39s", label);
|
||||
sprintf((char *)data_store->strings_ls[slot], "%-39.39s", label);
|
||||
data_store->strings_ls[slot][39] = 0;
|
||||
if (do_draw > 0)
|
||||
draw_lb_slot(slot,0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void init_rb()
|
||||
{
|
||||
short i;
|
||||
|
||||
SetControlMinimum(right_sbar,0);
|
||||
SetControlValue(right_sbar,0);
|
||||
for (i = 0; i < NRS; i++) {
|
||||
right_button_status[i] = 0;
|
||||
sprintf((char *) data_store->strings_rs[i], "");
|
||||
}
|
||||
}
|
||||
|
||||
void reset_rb()
|
||||
{
|
||||
short i;
|
||||
|
||||
for (i = 0; i < NRS; i++) {
|
||||
right_button_status[i] = 0;
|
||||
}
|
||||
draw_rb();
|
||||
SetControlMaximum(right_sbar,0);
|
||||
SetControlValue(right_sbar,0);
|
||||
}
|
||||
|
||||
// is slot >= 0, force that slot
|
||||
// if -1, use 1st free slot
|
||||
void set_rb(short slot, short mode, char *label, short do_draw)
|
||||
{
|
||||
short i,highest_used = 0;
|
||||
|
||||
if (slot < 0) {
|
||||
for (i = 0; i < NRS; i++)
|
||||
if (right_button_status[i] == 0) {
|
||||
slot = i;
|
||||
i = NRS + 5000;
|
||||
}
|
||||
if (i < NRS + 5000)
|
||||
return;
|
||||
}
|
||||
right_button_status[slot] = mode;
|
||||
//sprintf((char *)data_store->strings_rs[slot], "%-39.39s", label);
|
||||
sprintf((char *)data_store->strings_rs[slot], "%s", label);
|
||||
data_store->strings_rs[slot][39] = 0;
|
||||
for (i = 0; i < 39; i++)
|
||||
if (data_store->strings_rs[slot][i] == '|')
|
||||
data_store->strings_rs[slot][i] = ' ';
|
||||
if (do_draw > 0)
|
||||
draw_rb_slot(slot,0);
|
||||
/* for (i = 0; i < NRS; i++)
|
||||
if (right_button_status[i] != 0)
|
||||
highest_used = i;
|
||||
if (highest_used < NRSONPAGE - 1) {
|
||||
SetControlMaximum(right_sbar,0);
|
||||
current_rs_top = 0;
|
||||
}
|
||||
else {
|
||||
SetControlMaximum(right_sbar,highest_used - NRSONPAGE - 1);
|
||||
//SetControlValue(right_sbar,new_setting);
|
||||
}*/
|
||||
}
|
||||
|
||||
6
osx/Scenario Editor/buttonmg.h
Normal file
6
osx/Scenario Editor/buttonmg.h
Normal file
@@ -0,0 +1,6 @@
|
||||
void init_lb();
|
||||
void reset_lb();
|
||||
void set_lb(short slot, short mode, char *label, short do_draw) ;
|
||||
void init_rb() ;
|
||||
void reset_rb() ;
|
||||
void set_rb(short slot, short mode, char *label, short do_draw) ;
|
||||
49
osx/Scenario Editor/dialogutils.c
Normal file
49
osx/Scenario Editor/dialogutils.c
Normal file
@@ -0,0 +1,49 @@
|
||||
|
||||
#include <Carbon/Carbon.h>
|
||||
#include "global.h"
|
||||
#include "dialogutils.h"
|
||||
|
||||
DialogPtr make_dialog(int resource_num)
|
||||
{
|
||||
DialogPtr the_dialog;
|
||||
|
||||
the_dialog = GetNewDialog (resource_num, 0, IN_FRONT);
|
||||
if (the_dialog == NULL)
|
||||
SysBeep(50);
|
||||
ShowWindow (GetDialogWindow(the_dialog));
|
||||
|
||||
return the_dialog;
|
||||
}
|
||||
|
||||
void put_num_in_text(short num_to_put,DialogPtr the_dialog, short item_num)
|
||||
{
|
||||
Str255 text_entry;
|
||||
short the_type;
|
||||
Handle the_handle = NULL;
|
||||
Rect the_rect;
|
||||
|
||||
NumToString ((long) num_to_put , text_entry);
|
||||
GetDialogItem( the_dialog, item_num, &the_type, &the_handle, &the_rect );
|
||||
SetDialogItemText ( the_handle, text_entry);
|
||||
}
|
||||
|
||||
long get_text_item_num(short item_num,DialogPtr the_dialog)
|
||||
{
|
||||
long storage;
|
||||
long number_given = 0;
|
||||
|
||||
short the_type;
|
||||
Handle the_handle = NULL;
|
||||
Rect the_rect;
|
||||
Str255 the_string;
|
||||
|
||||
GetDialogItem( the_dialog, item_num, &the_type, &the_handle, &the_rect );
|
||||
|
||||
GetDialogItemText ( the_handle, the_string);
|
||||
|
||||
StringToNum( the_string, &number_given);
|
||||
storage = number_given;
|
||||
|
||||
return storage;
|
||||
}
|
||||
|
||||
4
osx/Scenario Editor/dialogutils.h
Normal file
4
osx/Scenario Editor/dialogutils.h
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
DialogPtr make_dialog(int resource_num);
|
||||
void put_num_in_text(short num_to_put,DialogPtr the_dialog, short item_num);
|
||||
long get_text_item_num(short item_num,DialogPtr the_dialog);
|
||||
1615
osx/Scenario Editor/dlogtool.c
Normal file
1615
osx/Scenario Editor/dlogtool.c
Normal file
File diff suppressed because it is too large
Load Diff
53
osx/Scenario Editor/dlogtool.h
Normal file
53
osx/Scenario Editor/dlogtool.h
Normal file
@@ -0,0 +1,53 @@
|
||||
void cd_init_dialogs();
|
||||
short cd_create_dialog_parent_num(short dlog_num,short parent);
|
||||
short cd_create_dialog(short dlog_num,WindowPtr parent);
|
||||
void process_new_window (WindowPtr hDlg);
|
||||
void cd_set_edit_focus();
|
||||
short cd_kill_dialog(short dlog_num,short parent_message);
|
||||
short cd_process_click(WindowPtr window,Point the_point, short mods,short *item);
|
||||
short cd_process_keystroke(WindowPtr window,char char_hit,short *item);
|
||||
void cd_init_button(short dlog_num,short item_num, short button_num, short status);
|
||||
void cd_attach_key(short dlog_num,short item_num,char key);
|
||||
void csp(short dlog_num, short item_num, short pict_num);
|
||||
void cd_set_pict(short dlog_num, short item_num, short pict_num);
|
||||
void cd_activate_item(short dlog_num, short item_num, short status);
|
||||
short cd_get_active(short dlog_num, short item_num);
|
||||
void cd_get_item_text(short dlog_num, short item_num, char *str);
|
||||
void csit(short dlog_num, short item_num, char *str);
|
||||
void cd_retrieve_text_edit_str(short dlog_num,short item_num, char *str);
|
||||
void cd_set_text_edit_str(short dlog_num, short item_num, char *str);
|
||||
void cd_set_item_text(short dlog_num, short item_num, char *str);
|
||||
void cdsin(short dlog_num, short item_num, short num) ;
|
||||
void cd_set_item_num(short dlog_num, short item_num, short num);
|
||||
void cd_set_led(short dlog_num,short item_num,short state);
|
||||
void cd_set_flag(short dlog_num,short item_num,short flag);
|
||||
short cd_get_led(short dlog_num,short item_num);
|
||||
void cd_text_frame(short dlog_num,short item_num,short frame);
|
||||
void cd_add_label(short dlog_num, short item_num, char *label, short label_flag);
|
||||
void cd_take_label(short dlog_num, short item_num);
|
||||
void cd_key_label(short dlog_num, short item_num,short loc);
|
||||
void cd_draw_item(short dlog_num,short item_num);
|
||||
void cd_initial_draw(short dlog_num);
|
||||
void cd_draw(short dlog_num);
|
||||
void cd_redraw(WindowPtr window);
|
||||
void cd_frame_item(short dlog_num, short item_num, short width);
|
||||
void cd_erase_item(short dlog_num, short item_num);
|
||||
void cd_erase_rect(short dlog_num,Rect to_fry);
|
||||
void cd_press_button(short dlog_num, short item_num);
|
||||
short cd_get_indices(short dlg_num, short item_num, short *dlg_index, short *item_index);
|
||||
short cd_get_dlg_index(short dlog_num);
|
||||
short cd_find_dlog(WindowPtr window, short *dlg_num, short *dlg_key);
|
||||
short cd_get_item_id(short dlg_num, short item_num);
|
||||
void center_window(WindowPtr window);
|
||||
Rect get_item_rect(WindowPtr hDlg, short item_num);
|
||||
void frame_dlog_rect(GrafPtr hDlg, Rect rect, short val);
|
||||
void draw_dialog_graphic(GrafPtr hDlg, Rect rect, short which_g, Boolean do_frame,short win_or_gworld);
|
||||
Rect calc_rect(short i, short j);
|
||||
void beep() ;
|
||||
void cd_hit_led_range(short dlog_num,short first_led,short last_led,short which_to_set);
|
||||
|
||||
short cd_get_led_range(short dlog_num,short first_led,short last_led);
|
||||
void cd_set_led_range(short dlog_num,short first_led,short last_led,short which_to_set);
|
||||
void cd_set_text_edit_num(short dlog_num, short item_num, short num);
|
||||
void cd_flip_led(short dlog_num,short item_num,short item_hit);
|
||||
short cd_retrieve_text_edit_num(short dlog_num, short item_num);
|
||||
221
osx/Scenario Editor/fileio.c
Normal file
221
osx/Scenario Editor/fileio.c
Normal file
@@ -0,0 +1,221 @@
|
||||
#include <Carbon/Carbon.h>
|
||||
#include "Global.h"
|
||||
#include "stdio.h"
|
||||
#include "fileio.h"
|
||||
|
||||
|
||||
#define DONE_BUTTON_ITEM 1
|
||||
#define IN_FRONT (WindowPtr)-1L
|
||||
#define NIL 0L
|
||||
|
||||
extern unsigned char borders[4][48];
|
||||
extern Point to_create;
|
||||
|
||||
DialogPtr the_dialog;
|
||||
extern outdoor_record_type current_terrain;
|
||||
|
||||
void print_write_position ();
|
||||
|
||||
Point Get_Square_To_Edit()
|
||||
{
|
||||
|
||||
short the_item;
|
||||
char dialog_done = FALSE;
|
||||
Ptr dlog_storage = NULL;
|
||||
Point store_target;
|
||||
|
||||
|
||||
store_target = to_create;
|
||||
|
||||
the_dialog = GetNewDialog (LOAD_DIALOG_ID, 0, IN_FRONT);
|
||||
if (the_dialog == NULL)
|
||||
SysBeep(50);
|
||||
ShowWindow (the_dialog);
|
||||
|
||||
print_write_position (3, store_target);
|
||||
print_write_position (6, store_target);
|
||||
|
||||
while (dialog_done == FALSE)
|
||||
{
|
||||
ModalDialog(NIL, &the_item);
|
||||
switch(the_item)
|
||||
{
|
||||
case DONE_BUTTON_ITEM:
|
||||
dialog_done = TRUE;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if (store_target.h > 0)
|
||||
store_target.h--;
|
||||
break;
|
||||
case 5:
|
||||
if (store_target.h < 8)
|
||||
store_target.h++;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
if (store_target.v > 0)
|
||||
store_target.v--;
|
||||
break;
|
||||
case 8:
|
||||
if (store_target.v < 9)
|
||||
store_target.v++;
|
||||
break;
|
||||
}
|
||||
|
||||
print_write_position (3, store_target);
|
||||
print_write_position (6, store_target);
|
||||
|
||||
}
|
||||
|
||||
DisposeDialog ( the_dialog );
|
||||
|
||||
return store_target;
|
||||
}
|
||||
|
||||
void print_write_position (which_coord, cur_pos)
|
||||
int which_coord;
|
||||
Point cur_pos;
|
||||
{
|
||||
short the_type;
|
||||
Handle the_handle;
|
||||
Rect the_rect;
|
||||
Str255 message_string;
|
||||
|
||||
|
||||
GetDialogItem( the_dialog, which_coord, &the_type, &the_handle, &the_rect );
|
||||
if (which_coord == 6)
|
||||
sprintf ((char *)message_string, " Ypos = %d ", cur_pos.v);
|
||||
else sprintf ((char *)message_string, " Xpos = %d ", cur_pos.h);
|
||||
SetDialogItemText (the_handle, message_string);
|
||||
}
|
||||
|
||||
void augment_terrain(to_create)
|
||||
Point to_create;
|
||||
{
|
||||
Point to_load;
|
||||
|
||||
to_load = to_create;
|
||||
if (to_create.v > 0) {
|
||||
to_load.v--;
|
||||
load_terrain(to_load, 1);
|
||||
}
|
||||
to_load = to_create;
|
||||
if (to_create.v < 9) {
|
||||
to_load.v++;
|
||||
load_terrain(to_load, 3);
|
||||
}
|
||||
|
||||
to_load = to_create;
|
||||
if (to_create.h < 8) {
|
||||
to_load.h++;
|
||||
load_terrain(to_load, 2);
|
||||
}
|
||||
to_load = to_create;
|
||||
if (to_create.h > 0) {
|
||||
to_load.h--;
|
||||
load_terrain(to_load, 4);
|
||||
}
|
||||
}
|
||||
|
||||
void load_terrain(to_create, mode)
|
||||
Point to_create;
|
||||
short mode; // 0 - primary load 1 - add to top 2 - right 3 - bottom 4 - left
|
||||
{
|
||||
short file_id;
|
||||
short i,j,k;
|
||||
long num_records_to_offset;
|
||||
outdoor_record_type store;
|
||||
unsigned char to_put;
|
||||
Str255 start_name;
|
||||
short start_volume;
|
||||
long start_dir,len;
|
||||
OSErr error;
|
||||
|
||||
HGetVol((StringPtr) start_name,&start_volume,&start_dir);
|
||||
error = HOpen(start_volume,start_dir,"\pExile III Outdoors",3,&file_id);
|
||||
|
||||
if (error != 0) {
|
||||
printf("Can't find outdoor data. \n");
|
||||
ExitToShell();
|
||||
}
|
||||
|
||||
num_records_to_offset = sizeof(outdoor_record_type) * (long) (to_create.v * 9 + to_create.h);
|
||||
|
||||
SetFPos (file_id, 1, num_records_to_offset);
|
||||
|
||||
|
||||
len = sizeof(outdoor_record_type);
|
||||
FSRead(file_id, &len, (char *) &store);
|
||||
if (mode == 0)
|
||||
current_terrain = store;
|
||||
|
||||
if (mode == 1)
|
||||
for (j = 0; j < 48; j++) {
|
||||
borders[0][j] = store.terrain[j][47];
|
||||
}
|
||||
if (mode == 2)
|
||||
for (j = 0; j < 48; j++) {
|
||||
borders[1][j] = store.terrain[0][j];
|
||||
}
|
||||
if (mode == 3)
|
||||
for (j = 0; j < 48; j++) {
|
||||
borders[2][j] = store.terrain[j][0];
|
||||
}
|
||||
if (mode == 4)
|
||||
for (j = 0; j < 48; j++) {
|
||||
borders[3][j] = store.terrain[47][j];
|
||||
}
|
||||
|
||||
|
||||
FSClose(file_id);
|
||||
|
||||
}
|
||||
|
||||
void save_terrain(to_save)
|
||||
Point to_save;
|
||||
{
|
||||
short file_id;
|
||||
long size;
|
||||
long num_records_to_offset;
|
||||
short i;
|
||||
outdoor_record_type *store2;
|
||||
Str255 start_name;
|
||||
short start_volume;
|
||||
long start_dir;
|
||||
OSErr error;
|
||||
|
||||
size = sizeof(outdoor_record_type);
|
||||
|
||||
HGetVol((StringPtr) start_name,&start_volume,&start_dir);
|
||||
error = HOpen(start_volume,start_dir,"\pExile III Outdoors",3,&file_id);
|
||||
|
||||
num_records_to_offset = sizeof(outdoor_record_type) * (to_save.v * 9 + to_save.h);
|
||||
// if ((i = fseek(f, num_records_to_offset, SEEK_CUR)) != 0)
|
||||
// SysBeep(50);
|
||||
SetFPos (file_id, 1, num_records_to_offset);
|
||||
|
||||
// i = fwrite((char *) ¤t_terrain, size,(size_t) 1, f);
|
||||
// fclose (f);
|
||||
|
||||
FSWrite(file_id, &size, (char *) ¤t_terrain);
|
||||
FSClose(file_id);
|
||||
}
|
||||
|
||||
void create_outdoor_file()
|
||||
{
|
||||
Str255 start_name;
|
||||
short start_volume,file_id;
|
||||
long start_dir,size;
|
||||
OSErr error;
|
||||
short i;
|
||||
|
||||
size = sizeof(outdoor_record_type);
|
||||
|
||||
HGetVol((StringPtr) start_name,&start_volume,&start_dir);
|
||||
error = HCreate(start_volume,start_dir,"\pExile III Outdoors",'EX3!','OUT3');
|
||||
error = HOpen(start_volume,start_dir,"\pExile III Outdoors",3,&file_id);
|
||||
for (i = 0; i < 90; i++)
|
||||
FSWrite(file_id, &size, (char *) ¤t_terrain);
|
||||
FSClose(file_id);
|
||||
}
|
||||
3
osx/Scenario Editor/fileio.h
Normal file
3
osx/Scenario Editor/fileio.h
Normal file
@@ -0,0 +1,3 @@
|
||||
Point Get_Square_To_Edit();
|
||||
void load_terrain();
|
||||
void augment_terrain();
|
||||
58
osx/Scenario Editor/global.c
Normal file
58
osx/Scenario Editor/global.c
Normal file
@@ -0,0 +1,58 @@
|
||||
|
||||
#include <Carbon/Carbon.h>
|
||||
#include "global.h"
|
||||
#include "math.h"
|
||||
|
||||
short get_ran (short times,short min,short max)
|
||||
{
|
||||
long int store;
|
||||
short i, to_ret = 0;
|
||||
|
||||
for (i = 1; i < times + 1; i++) {
|
||||
store = Random();
|
||||
to_ret = to_ret + min + (((store + 32767) * (max - min + 1)) / 65536);
|
||||
}
|
||||
return to_ret;
|
||||
}
|
||||
|
||||
short s_pow(short x,short y)
|
||||
{
|
||||
return (short) pow((double) x, (double) y);
|
||||
}
|
||||
|
||||
short dist(location p1,location p2)
|
||||
{
|
||||
return (short) sqrt((double)((p1.x - p2.x) * (p1.x - p2.x) +
|
||||
(p1.y - p2.y) * (p1.y - p2.y)));
|
||||
}
|
||||
|
||||
short max(short a,short b)
|
||||
{
|
||||
if (a > b)
|
||||
return a;
|
||||
else return b;
|
||||
}
|
||||
|
||||
short min(short a,short b)
|
||||
{
|
||||
if (a < b)
|
||||
return a;
|
||||
else return b;
|
||||
}
|
||||
|
||||
short minmax(short min,short max,short k)
|
||||
{
|
||||
if (k < min)
|
||||
return min;
|
||||
if (k > max)
|
||||
return max;
|
||||
return k;
|
||||
}
|
||||
/*
|
||||
short abs(short x)
|
||||
{
|
||||
if (x < 0)
|
||||
return x * -1;
|
||||
return x;
|
||||
}
|
||||
*/
|
||||
353
osx/Scenario Editor/global.h
Normal file
353
osx/Scenario Editor/global.h
Normal file
@@ -0,0 +1,353 @@
|
||||
#define SLEEP_TICKS 2L
|
||||
#define MOUSE_REGION 0L
|
||||
#define DRAG_EDGE 15
|
||||
#define IN_FRONT (WindowPtr)-1L
|
||||
#define NIL 0L
|
||||
|
||||
#define DISPLAY_LEFT 23
|
||||
#define DISPLAY_TOP 23
|
||||
#define BITMAP_WIDTH 28
|
||||
#define BITMAP_HEIGHT 36
|
||||
#define NUM_BUTTONS 15
|
||||
|
||||
#define NUM_DLOG_B 53
|
||||
|
||||
#define NLS 25
|
||||
// number of left slots for buttons
|
||||
#define NRS 400
|
||||
// number of right slots for scrolling list
|
||||
#define NRSONPAGE 33
|
||||
// number of right slots for scrolling list on page at 1 time
|
||||
|
||||
#define RIGHT_AREA_UL_X 287
|
||||
#define RIGHT_AREA_UL_Y 5
|
||||
#define RIGHT_AREA_WIDTH 290
|
||||
#define RIGHT_AREA_HEIGHT 400
|
||||
|
||||
#define TER_RECT_UL_X 6
|
||||
#define TER_RECT_UL_Y 25
|
||||
|
||||
#define CDGT cd_retrieve_text_edit_str
|
||||
#define CDGN cd_retrieve_text_edit_num
|
||||
#define CDST cd_set_text_edit_str
|
||||
#define CDSN cd_set_text_edit_num
|
||||
|
||||
typedef struct {
|
||||
char x,y;
|
||||
} location;
|
||||
|
||||
typedef struct {
|
||||
short type,sd1,sd2,pic,m1,m2,ex1a,ex1b,ex2a,ex2b,jumpto;
|
||||
} special_node_type;
|
||||
|
||||
typedef struct {
|
||||
short personality,type;
|
||||
char link1[4],link2[4];
|
||||
short extras[4];
|
||||
} talking_node_type;
|
||||
|
||||
typedef struct {
|
||||
unsigned char strlens[200];
|
||||
talking_node_type talk_nodes[60];
|
||||
} talking_record_type;
|
||||
|
||||
typedef struct {
|
||||
short picture;
|
||||
unsigned char blockage,flag1,flag2,special,trans_to_what,fly_over,boat_over;
|
||||
unsigned char block_horse,light_radius,step_sound,shortcut_key,res1,res2,res3;
|
||||
} terrain_type_type;
|
||||
|
||||
typedef struct {
|
||||
unsigned char monst[4];
|
||||
} wandering_type;
|
||||
|
||||
typedef struct {
|
||||
unsigned char monst[7];
|
||||
unsigned char friendly[3];
|
||||
short spec_on_meet,spec_on_win,spec_on_flee,cant_flee;
|
||||
short end_spec1,end_spec2;
|
||||
} out_wandering_type;
|
||||
|
||||
typedef struct {
|
||||
unsigned char terrain[48][48];
|
||||
location special_locs[18];
|
||||
unsigned char special_id[18];
|
||||
location exit_locs[8];
|
||||
char exit_dests[8];
|
||||
location sign_locs[8];
|
||||
out_wandering_type wandering[4],special_enc[4];
|
||||
location wandering_locs[4];
|
||||
Rect info_rect[8];
|
||||
unsigned char strlens[180];
|
||||
special_node_type specials[60];
|
||||
} outdoor_record_type;
|
||||
|
||||
typedef struct {
|
||||
unsigned char number;
|
||||
unsigned char start_attitude;
|
||||
location start_loc;
|
||||
unsigned char mobile;
|
||||
unsigned char time_flag;
|
||||
unsigned char extra1,extra2;
|
||||
short spec1, spec2;
|
||||
char spec_enc_code,time_code;
|
||||
short monster_time,personality;
|
||||
short special_on_kill,facial_pic;
|
||||
|
||||
} creature_start_type;
|
||||
|
||||
|
||||
typedef struct {
|
||||
short variety, item_level;
|
||||
char awkward, bonus, protection, charges, type;
|
||||
unsigned char graphic_num,ability, type_flag, is_special;
|
||||
short value;
|
||||
Boolean identified, magic;
|
||||
unsigned char weight, description_flag;
|
||||
char full_name[25], name[15];
|
||||
unsigned char reserved1,reserved2;
|
||||
unsigned char magic_use_type, ability_strength, treas_class, real_abil;
|
||||
} short_item_record_type;
|
||||
|
||||
|
||||
typedef struct {
|
||||
short variety, item_level;
|
||||
char awkward, bonus, protection, charges, type, magic_use_type;
|
||||
unsigned char graphic_num,ability, ability_strength,type_flag, is_special;
|
||||
short value;
|
||||
unsigned char weight, special_class;
|
||||
location item_loc;
|
||||
char full_name[25], name[15];
|
||||
unsigned char treas_class,item_properties,reserved1,reserved2;
|
||||
} item_record_type;
|
||||
|
||||
typedef struct {
|
||||
location item_loc;
|
||||
short item_code,ability;
|
||||
unsigned char charges,always_there,property,contained;
|
||||
} preset_item_type;
|
||||
|
||||
typedef struct {
|
||||
location field_loc;
|
||||
short field_type;
|
||||
} preset_field_type;
|
||||
|
||||
typedef struct {
|
||||
short town_chop_time,town_chop_key;
|
||||
wandering_type wandering[4];
|
||||
location wandering_locs[4];
|
||||
location special_locs[50];
|
||||
unsigned char spec_id[50];
|
||||
location sign_locs[15];
|
||||
short lighting;
|
||||
location start_locs[4];
|
||||
location exit_locs[4];
|
||||
short exit_specs[4];
|
||||
Rect in_town_rect;
|
||||
preset_item_type preset_items[64];
|
||||
short max_num_monst;
|
||||
preset_field_type preset_fields[50];
|
||||
short spec_on_entry,spec_on_entry_if_dead;
|
||||
short timer_spec_times[8];
|
||||
short timer_specs[8];
|
||||
unsigned char strlens[180];
|
||||
special_node_type specials[100];
|
||||
unsigned char specials1,specials2,res1,res2;
|
||||
short difficulty;
|
||||
} town_record_type;
|
||||
|
||||
typedef struct {
|
||||
unsigned char terrain[64][64];
|
||||
Rect room_rect[16];
|
||||
creature_start_type creatures[60];
|
||||
unsigned char lighting[8][64];
|
||||
} big_tr_type;
|
||||
|
||||
typedef struct {
|
||||
unsigned char terrain[48][48];
|
||||
Rect room_rect[16];
|
||||
creature_start_type creatures[40];
|
||||
unsigned char lighting[6][48];
|
||||
} ave_tr_type;
|
||||
|
||||
typedef struct {
|
||||
unsigned char terrain[32][32];
|
||||
Rect room_rect[16];
|
||||
creature_start_type creatures[30];
|
||||
unsigned char lighting[4][32];
|
||||
} tiny_tr_type;
|
||||
|
||||
typedef struct {
|
||||
short block_type;
|
||||
short block_destroy_time;
|
||||
char block_alignment;
|
||||
char block_key_time;
|
||||
location block_loc;
|
||||
} city_block_type;
|
||||
|
||||
typedef struct {
|
||||
Rect what_rect;
|
||||
unsigned char ter_type;
|
||||
unsigned char hollow;
|
||||
} city_ter_rect_type;
|
||||
|
||||
typedef struct {
|
||||
creature_start_type creatures[30];
|
||||
city_block_type city_block[15];
|
||||
city_ter_rect_type city_ter_rect[10];
|
||||
} template_town_type;
|
||||
|
||||
typedef struct {
|
||||
item_record_type scen_items[400];
|
||||
char monst_names[256][20];
|
||||
char ter_names[256][30];
|
||||
} scen_item_data_type;
|
||||
|
||||
typedef struct {
|
||||
short ter_type,item_num[10],item_odds[10],property;
|
||||
} item_storage_shortcut_type;
|
||||
|
||||
typedef struct {
|
||||
unsigned char m_num,level,m_name[26];
|
||||
short health,m_health,mp,max_mp;
|
||||
unsigned char armor,skill;
|
||||
short a[3];
|
||||
unsigned char a1_type,a23_type,m_type,speed,ap,mu,cl,breath,breath_type,treasure,spec_skill,poison;
|
||||
short morale,m_morale;
|
||||
short corpse_item,corpse_item_chance;
|
||||
short status[15];
|
||||
unsigned char direction,immunities,x_width,y_width,radiate_1,radiate_2;
|
||||
unsigned char default_attitude,summon_type,default_facial_pic,res1,res2,res3;
|
||||
short picture_num;
|
||||
|
||||
} monster_record_type;
|
||||
|
||||
typedef struct {
|
||||
location horse_loc,horse_loc_in_sec,horse_sector;
|
||||
short which_town;
|
||||
Boolean exists,property;
|
||||
} horse_record_type;
|
||||
typedef struct {
|
||||
location boat_loc,boat_loc_in_sec,boat_sector;
|
||||
short which_town;
|
||||
Boolean exists,property;
|
||||
} boat_record_type;
|
||||
|
||||
typedef struct {
|
||||
unsigned char flag1, flag2, flag3, flag4;
|
||||
unsigned char ver[3],min_run_ver,prog_make_ver[3],num_towns;
|
||||
unsigned char out_width,out_height,difficulty,intro_pic,default_ground;
|
||||
unsigned char town_size[200];
|
||||
unsigned char town_hidden[200];
|
||||
short flag_a;
|
||||
short intro_mess_pic,intro_mess_len;
|
||||
location where_start,out_sec_start,out_start;
|
||||
short which_town_start;
|
||||
short flag_b;
|
||||
short town_data_size[200][5];
|
||||
short town_to_add_to[10];
|
||||
short flag_to_add_to_town[10][2];
|
||||
short flag_c;
|
||||
short out_data_size[100][2];
|
||||
Rect store_item_rects[3];
|
||||
short store_item_towns[3];
|
||||
short flag_e;
|
||||
short special_items[50];
|
||||
short special_item_special[50];
|
||||
short rating,uses_custom_graphics;
|
||||
short flag_f;
|
||||
monster_record_type scen_monsters[256];
|
||||
boat_record_type scen_boats[30];
|
||||
horse_record_type scen_horses[30];
|
||||
short flag_g;
|
||||
terrain_type_type ter_types[256];
|
||||
short scenario_timer_times[20];
|
||||
short scenario_timer_specs[20];
|
||||
short flag_h;
|
||||
special_node_type scen_specials[256];
|
||||
item_storage_shortcut_type storage_shortcuts[10];
|
||||
short flag_d;
|
||||
unsigned char scen_str_len[300];
|
||||
short flag_i;
|
||||
location last_out_edited;
|
||||
short last_town_edited;
|
||||
|
||||
} scenario_data_type;
|
||||
|
||||
// for game
|
||||
typedef struct {
|
||||
short personality;
|
||||
short str1,str2;
|
||||
} talk_save_type;
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
short active,attitude;
|
||||
unsigned char number;
|
||||
location m_loc;
|
||||
monster_record_type m_d;
|
||||
short mobile;
|
||||
short summoned;
|
||||
creature_start_type monst_start;
|
||||
} creature_data_type;
|
||||
|
||||
typedef struct {
|
||||
creature_data_type dudes[60];
|
||||
short which_town;
|
||||
short friendly;
|
||||
} creature_list_type;
|
||||
|
||||
typedef struct {
|
||||
Boolean exists;
|
||||
short direction;
|
||||
out_wandering_type what_monst;
|
||||
location which_sector,m_loc;
|
||||
} outdoor_creature_type;
|
||||
|
||||
typedef struct {
|
||||
long age;
|
||||
short gold,food;
|
||||
unsigned char stuff_done[310][10],item_taken[200][8];
|
||||
short light_level;
|
||||
location outdoor_corner,i_w_c,p_loc,loc_in_sec;
|
||||
boat_record_type boats[30];
|
||||
horse_record_type horses[30];
|
||||
creature_list_type creature_save[4];
|
||||
short in_boat,in_horse;
|
||||
outdoor_creature_type out_c[10];
|
||||
item_record_type magic_store_items[5][10];
|
||||
short imprisoned_monst[4];
|
||||
char m_seen[256];
|
||||
char journal_str[50];
|
||||
short journal_day[50];
|
||||
short special_notes_str[140][2];
|
||||
talk_save_type talk_save[120];
|
||||
short direction,at_which_save_slot;
|
||||
char alchemy[20];
|
||||
Boolean can_find_town[200];
|
||||
short key_times[100];
|
||||
short party_event_timers[30];
|
||||
short global_or_town[30];
|
||||
short node_to_call[30];
|
||||
char spec_items[50];
|
||||
} party_record_type;
|
||||
|
||||
typedef struct {
|
||||
char strings_ls[NLS][40];
|
||||
char strings_rs[NRS][40];
|
||||
char town_strs[180][256];
|
||||
char out_strs[120][256];
|
||||
char scen_strs[270][256];
|
||||
char talk_strs[170][256];
|
||||
scen_item_data_type scen_item_list;
|
||||
} piles_of_stuff_dumping_type;
|
||||
|
||||
short get_ran (short times,short min,short max);
|
||||
short s_pow(short x,short y);
|
||||
short dist(location p1,location p2);
|
||||
|
||||
short max(short a,short b);
|
||||
short min(short a,short b);
|
||||
short minmax(short min,short max,short k);
|
||||
//short abs(short x);
|
||||
405
osx/Scenario Editor/itemlist.h
Normal file
405
osx/Scenario Editor/itemlist.h
Normal file
@@ -0,0 +1,405 @@
|
||||
short_item_record_type item_list[400] = {
|
||||
{3,0, 0,0,0,0,0, 26,0,0,0, 0, 1,0, 0,0, "Gold", "Gold" ,0,0, 0,0,0,0}, //
|
||||
{11,0, 0,0,0,0,0, 42,0,0,0, 0, 1,0, 0,0, "Food", "Food" ,0,0, 0,0,0,0},
|
||||
{11,0, 0,0,0,0,0, 43,0,0,0, 0, 1,0, 0,0, "Food", "Food" ,0,0, 0,0,0,0},
|
||||
{11,0, 0,0,0,0,0, 44,0,0,0, 0, 1,0, 0,0, "Food", "Food" ,0,0, 0,0,0,0},
|
||||
{22,0, 0,0,0,0,0, 23,0,0,0, 2, 1,0, 6,99, "Pants", "Pants" ,0,0, 0,0,0,0},
|
||||
{22,0, 0,0,0,0,0, 24,0,0,0, 2, 1,0, 7,99, "Pants", "Pants" ,0,0, 0,0,0,0}, // 5
|
||||
{13,0, 0,0,0,0,0, 73,0,0,0, 2, 1,0, 5,98, "Shirt", "Shirt" ,0,0, 0,0,0,0},
|
||||
{13,0, 0,0,0,0,0, 74,0,0,0, 2, 1,0, 6,98, "Shirt", "Shirt" ,0,0, 0,0,0,0},
|
||||
{13,1, 0,0,0,0,0, 22,0,0,0, 3, 1,0, 14,100, "Robes", "Robes" ,0,0, 0,0,0,0},
|
||||
{6,3, 0,0,0,0,0, 71,0,15,0, 0, 1,0, 3,29, "Rock", "Rock" ,0,0, 0,0,0,0},
|
||||
{6,3, 0,0,0,0,0, 72,0,15,0, 0, 1,0, 3,29, "Rock", "Rock" ,0,0, 0,0,0,0}, // 10
|
||||
{1,4, 0,0,0,0,2, 69,0,0,0, 0, 1,0, 8,101, "Stick", "Stick" ,0,0, 0,0,0,0},
|
||||
{1,4, 0,0,0,0,2, 70,0,0,0, 0, 1,0, 8,101, "Stick", "Stick" ,0,0, 0,0,0,0},
|
||||
{21,0, 0,0,0,0,0, 76,0,0,0, 0, 1,0, 4,102, "Mug", "Mug" ,0,0, 0,0,0,0},
|
||||
{21,0, 0,0,0,0,0, 77,0,0,0, 0, 1,0, 5,103, "Plate", "Plate" ,0,0, 0,0,0,0},
|
||||
{21,0, 0,0,0,0,0, 80,0,0,0, 0, 1,0, 3,104, "Bottle", "Bottle" ,0,0, 0,0,0,0}, // 15
|
||||
{21,0, 0,0,0,0,0, 81,0,0,0, 0, 1,0, 3,104, "Bottle", "Bottle" ,0,0, 0,0,0,0},
|
||||
{10,1, 0,0,0,1,0, 82,12,38,0, 1, 1,0, 2,105, "Candle", "Candle" ,0,0, 0,2,0,90},
|
||||
{10,8, 0,0,0,1,0, 83,12,0,0, 8, 1,0, 14,106, "Lamp", "Lamp" ,0,0, 0,7,0,90},
|
||||
{21,0, 0,0,0,0,0, 19,0,0,0, 0, 1,0, 15,107, "Garbage", "Garbage" ,0,0, 0,0,0,0},
|
||||
{21,0, 0,0,0,0,0, 84,0,0,0, 0, 1,0, 10,107, "Garbage", "Garbage" ,0,0, 0,0,0,0}, // 20
|
||||
{21,0, 0,0,0,0,0, 87,0,0,0, 0, 1,0, 8,107, "Garbage", "Garbage" ,0,0, 0,0,0,0},
|
||||
{21,0, 0,0,0,0,0, 88,0,0,0, 0, 1,0, 7,107, "Garbage", "Garbage" ,0,0, 0,0,0,0},
|
||||
{21,0, 0,0,0,0,0, 68,0,0,0, 0, 1,0, 18,108, "Bones", "Bones" ,0,0, 0,0,0,0},
|
||||
{21,0, 0,0,0,0,0, 89,0,0,0, 0, 1,0, 6,108, "Skull", "Skull" ,0,0, 0,0,0,0},
|
||||
{10,2, 0,0,0,6,0, 37,12,13,0, 2, 1,0, 3,26, "Torches", "Torches" ,0,0, 0,5,0,90}, // 25
|
||||
{10,2, 0,0,0,3,0, 37,12,13,0, 2, 1,0, 3,26, "Torches", "Torches" ,0,0, 0,5,0,90},
|
||||
{21,0, 0,0,0,0,0, 60,0,0,0, 2, 1,0, 8,109, "Book", "Book" ,0,0, 0,0,0,0},
|
||||
{21,0, 0,0,0,0,0, 61,0,0,0, 2, 1,0, 9,109, "Book", "Book" ,0,0, 0,0,0,0},
|
||||
{21,0, 0,0,0,0,0, 62,0,0,0, 2, 1,0, 11,109, "Book", "Book" ,0,0, 0,0,0,0},
|
||||
{13,2, 0,0,0,0,0, 18,0,0,0, 8, 1,0, 10,126, "Vahnatai Robes", "Robes" ,0,0, 0,0,0,0}, // 30
|
||||
{1,4,0,0,0,0,1,25,0,0,0,2,1,0,4,78,"Stone Knife","Knife" ,0,0, 0,0,1,0}, // 35
|
||||
{1,6,0,0,0,0,1,0,0,0,0,5,1,0,15,79,"Stone Short Sword","Short Sword" ,0,0, 0,0,1,0},
|
||||
{1,5,0,0,0,0,2,62,0,0,0,2,1,0,12,80,"Stone Club","Club" ,0,0, 0,0,1,0},
|
||||
{1,7,0,0,0,0,2,2,0,0,0,5,1,0,18,81,"Stone Mace","Mace" ,0,0, 0,0,1,0},
|
||||
{1,7,0,0,0,0,1,3,0,0,0,6,1,0,20,82,"Stone Axe","Axe" ,0,0, 0,0,1,0},
|
||||
{2,9,0,0,0,0,3,4,0,0,0,10,1,0,30,83,"Stone Spear","Spear" ,0,0, 0,0,1,0}, // 40
|
||||
{1,4,0,1,0,0,1,25,0,0,0,16,0,0,7,110,"Bronze Knife","Knife" ,0,0, 0,0,1,0},
|
||||
{1,6,0,1,0,0,1,0,0,0,0,20,0,0,15,111,"Bronze Short Sword","Short Sword" ,0,0, 0,0,1,0},
|
||||
{1,5,0,1,0,0,2,62,0,0,0,12,0,0,12,80,"Bronze Club","Club" ,0,0, 0,0,1,0},
|
||||
{1,7,0,1,0,0,2,2,0,0,0,22,0,0,18,81,"Bronze Mace","Mace" ,0,0, 0,0,1,0},
|
||||
{1,7,0,1,0,0,1,3,0,0,0,30,0,0,20,82,"Bronze Axe","Axe" ,0,0, 0,0,2,0}, // 45
|
||||
{2,9,0,1,0,0,3,4,0,0,0,40,0,0,30,83,"Bronze Spear","Spear" ,0,0, 0,0,2,0},
|
||||
{1,8,0,1,0,0,2,2,0,0,0,30,0,0,25,84,"Bronze Hammer","Hammer" ,0,0, 0,0,2,0},
|
||||
{1,7,0,1,0,0,1,0,0,0,0,30,0,0,15,85,"Bronze Rapier","Rapier" ,0,0, 0,0,0,0},
|
||||
{1,9,0,1,0,0,1,0,0,0,0,50,0,0,25,86,"Bronze Broadsword","Broadsword" ,0,0, 0,0,0,0},
|
||||
{1,9,0,1,0,0,2,9,0,0,0,45,0,0,30,87,"Bronze Flail","Flail" ,0,0, 0,0,0,0}, // 50
|
||||
{2,12,0,1,0,0,3,8,0,0,0,200,0,0,35,88,"Bronze Bardiche","Bardiche" ,0,0, 0,0,0,0},
|
||||
{2,18,0,1,0,0,3,5,0,0,0,450,0,0,50,89,"Bronze Halberd","Halberd" ,0,0, 0,0,0,0},
|
||||
{2,14,0,1,0,0,1,1,0,0,0,400,0,0,45,90,"Bronze Greatsword","Greatsword" ,0,0, 0,0,0,0},
|
||||
{2,13,0,1,0,0,2,2,0,0,0,375,0,0,45,91,"Bronze Great Mace","Great Mace" ,0,0, 0,0,0,0},
|
||||
{1,4,0,2,0,0,1,25,0,0,0,35,0,0,8,110,"Iron Knife","Knife" ,0,0, 0,0,0,0}, // 55
|
||||
{1,6,0,2,0,0,1,0,0,0,0,50,0,0,15,111,"Iron Short Sword","Short Sword" ,0,0, 0,0,0,0},
|
||||
{1,7,0,2,0,0,2,2,0,0,0,70,0,0,20,81,"Iron Mace","Mace" ,0,0, 0,0,0,0},
|
||||
{1,7,0,2,0,0,1,3,0,0,0,80,0,0,20,82,"Iron Axe","Axe" ,0,0, 0,0,0,0},
|
||||
{2,9,0,2,0,0,3,4,0,0,0,140,0,0,30,83,"Iron Spear","Spear" ,0,0, 0,0,0,0},
|
||||
{1,8,0,2,0,0,2,2,0,0,0,80,0,0,25,84,"Iron Hammer","Hammer" ,0,0, 0,0,0,0}, //60
|
||||
{1,7,0,2,0,0,1,0,0,0,0,80,0,0,18,85,"Iron Rapier","Rapier" ,0,0, 0,0,0,0},
|
||||
{1,9,0,2,0,0,1,0,0,0,0,200,0,0,25,86,"Iron Broadsword","Broadsword" ,0,0, 0,0,0,0},
|
||||
{1,9,0,2,0,0,2,9,0,0,0,200,0,0,30,87,"Iron Flail","Flail" ,0,0, 0,0,0,0},
|
||||
{2,12,0,2,0,0,3,8,0,0,0,600,0,0,40,88,"Iron Bardiche","Bardiche" ,0,0, 0,0,0,0},
|
||||
{2,18,0,2,0,0,3,5,0,0,0,1000,0,0,50,89,"Iron Halberd","Halberd" ,0,0, 0,0,0,0}, //65
|
||||
{2,14,0,2,0,0,1,1,0,0,0,900,0,0,50,90,"Iron Greatsword","Greatsword" ,0,0, 0,0,0,0},
|
||||
{2,13,0,2,0,0,2,2,0,0,0,850,0,0,45,91,"Iron Great Mace","Great Mace" ,0,0, 0,0,0,0},
|
||||
{1,4,0,3,0,0,1,25,0,0,0,70,0,0,8,110,"Steel Knife","Knife" ,0,0, 0,0,0,0},
|
||||
{1,6,0,3,0,0,1,0,0,0,0,120,0,0,15,111,"Steel Short Sword","Short Sword" ,0,0, 0,0,0,0},
|
||||
{1,7,0,3,0,0,2,2,0,0,0,170,0,0,20,81,"Steel Mace","Mace" ,0,0, 0,0,0,0}, // 70
|
||||
{1,7,0,3,0,0,1,3,0,0,0,200,0,0,20,82,"Steel Axe","Axe" ,0,0, 0,0,0,0},
|
||||
{2,9,0,3,0,0,3,4,0,0,0,340,0,0,30,83,"Steel Spear","Spear" ,0,0, 0,0,0,0},
|
||||
{1,8,0,3,0,0,2,2,0,0,0,200,0,0,25,84,"Steel Hammer","Hammer" ,0,0, 0,0,0,0},
|
||||
{1,7,0,3,0,0,1,0,0,0,0,200,0,0,18,85,"Steel Rapier","Rapier" ,0,0, 0,0,0,0},
|
||||
{1,9,0,3,0,0,1,0,0,0,0,500,0,0,25,86,"Steel Broadsword","Broadsword" ,0,0, 0,0,0,0}, //75
|
||||
{1,9,0,3,0,0,2,9,0,0,0,500,0,0,30,87,"Steel Flail","Flail" ,0,0, 0,0,0,0},
|
||||
{2,12,0,3,0,0,3,8,0,0,0,1500,0,0,40,88,"Steel Bardiche","Bardiche" ,0,0, 0,0,0,0},
|
||||
{2,18,0,3,0,0,3,5,0,0,0,2000,0,0,50,89,"Steel Halberd","Halberd" ,0,0, 0,0,0,0},
|
||||
{2,14,0,3,0,0,1,1,0,0,0,1800,0,0,50,90,"Steel Greatsword","Greatsword" ,0,0, 0,0,0,0},
|
||||
{2,13,0,3,0,0,2,2,0,0,0,1700,0,0,50,91,"Steel Great Mace","Great Mace" ,0,0, 0,0,0,0}, // 80
|
||||
{1,4,0,5,0,0,1,25,0,0,0,150,0,1,8,110,"Magic Knife","Knife" ,0,0, 0,0,0,0},
|
||||
{1,6,0,5,0,0,1,0,0,0,0,250,0,1,15,111,"Magic Short Sword","Short Sword" ,0,0, 0,0,0,0},
|
||||
{1,7,0,5,0,0,2,2,0,0,0,350,0,1,20,81,"Magic Mace","Mace" ,0,0, 0,0,0,0},
|
||||
{1,7,0,5,0,0,1,3,0,0,0,400,0,1,20,82,"Magic Axe","Axe" ,0,0, 0,0,0,0},
|
||||
{2,9,0,5,0,0,3,4,0,0,0,700,0,1,30,83,"Magic Spear","Spear" ,0,0, 0,0,0,0}, // 85
|
||||
{1,8,0,5,0,0,2,2,0,0,0,400,0,1,25,84,"Magic Hammer","Hammer" ,0,0, 0,0,0,0},
|
||||
{1,7,0,5,0,0,1,0,0,0,0,400,0,1,18,85,"Magic Rapier","Rapier" ,0,0, 0,0,0,0},
|
||||
{1,9,0,5,0,0,1,0,0,0,0,1000,0,1,25,86,"Magic Broadsword","Broadsword" ,0,0, 0,0,0,0},
|
||||
{1,9,0,5,0,0,2,9,0,0,0,1000,0,1,30,87,"Magic Flail","Flail" ,0,0, 0,0,0,0},
|
||||
{2,12,0,5,0,0,3,8,0,0,0,3000,0,1,40,88,"Magic Bardiche","Bardiche" ,0,0, 0,0,0,0}, // 90
|
||||
{2,18,0,5,0,0,3,5,0,0,0,4000,0,1,50,89,"Magic Halberd","Halberd" ,0,0, 0,0,0,0},
|
||||
{2,14,0,5,0,0,1,1,0,0,0,3600,0,1,45,90,"Magic Greatsword","Greatsword" ,0,0, 0,0,0,0},
|
||||
{2,13,0,5,0,0,2,2,0,0,0,3400,0,1,45,91,"Magic Great Mace","Great Mace" ,0,0, 0,0,0,0},
|
||||
{2,12,0,2,0,0,3,6,0,0,0,400,0,0,40,95,"Iron Slith Spear","Slith Spear" ,0,0, 0,0,0,0},
|
||||
{2,12,0,3,0,0,3,6,0,0,0,750,0,0,40,95,"Steel Slith Spear","Slith Spear" ,0,0, 0,0,0,0}, // 95
|
||||
{1,10,0,1,0,0,1,7,0,0,0,50,0,0,20,94,"Bronze Wave Blade","Wave Blade" ,0,0, 0,0,0,0},
|
||||
{1,10,0,2,0,0,1,7,0,0,0,200,0,0,20,94,"Iron Wave Blade","Wave Blade" ,0,0, 0,0,0,0},
|
||||
{1,10,0,3,0,0,1,7,0,0,0,500,0,0,20,94,"Steel Wave Blade","Wave Blade" ,0,0, 0,0,0,0},
|
||||
{1,10,0,5,0,0,1,7,0,0,0,1000,0,1,20,94,"Magic Wave Blade","Wave Blade" ,0,0, 0,0,0,0},
|
||||
{6,9,0,1,0,8,0,29,0,9,0,10,0,0,1,6,"Iron Razordisks","Razordisks" ,0,0, 0,0,0,0}, // 100
|
||||
{6,9,0,2,0,8,0,29,0,10,0,22,0,0,1,6,"Steel Razordisks","Razordisks" ,0,0, 0,0,0,0},
|
||||
{6,4,0,0,0,10,0,28,0,1,0,1,0,0,1,4,"Darts","Darts" ,0,0, 0,0,0,0},
|
||||
{6,4,0,1,0, 8,0,28,0,2, 0,3,0,0,1,4,"Iron Darts","Darts" ,0,0, 0,0,0,0},
|
||||
{6,4,0,5,0, 6,0,28,0,3, 0,15,0,1,1,5,"Magic Darts","Darts" ,0,0, 0,0,0,0},
|
||||
{6,7,0,0,0, 10,0,25,0,4, 0,2,0,0,2,96,"Throwing Knives","Small Knives" ,0,0, 0,0,0,0}, //105
|
||||
{6,7,0,2,0,10,0,25,0,5,0,7,0,0,2,96,"Iron Throwing Knives","Small Knives" ,0,0, 0,0,0,0},
|
||||
{5,9,0,0,0,12,0,27,0,6,0,1,0,0,1,2,"Arrows","Arrows" ,0,0, 0,0,0,0},
|
||||
{5,9,0,2,0,10,0,27,0,7,0,20,0,0,1,2,"Iron Arrows","Arrows" ,0,0, 0,0,0,0},
|
||||
{5,9,0,5,0,8,0,27,0,8,0,40,0,1,1,3,"Magic Arrows","Arrows" ,0,0, 0,0,0,0},
|
||||
{6,8,0,0,0,8,0,11,0,11,0,2,0,0,3,7,"Javelins","Javelins" ,0,0, 0,0,0,0}, // 110
|
||||
{6,8,0,1,0,8,0,11,0,12,0,12,0,0,3,7,"Iron Javelins","Javelins" ,0,0, 0,0,0,0},
|
||||
{4,0,0,0,0,0,0,10,0,0,0,30,0,0,20,1,"Cavewood Bow","Bow" ,0,0, 0,0,0,0},
|
||||
{4,0,0,1,0,0,0,10,0,0,0,120,0,0,20,1,"Lemonwood Bow","Bow" ,0,0, 0,0,0,0},
|
||||
{4,0,0,2,0,0,0,10,0,0,0,240,0,0,20,1,"Yew Bow","Bow" ,0,0, 0,0,0,0},
|
||||
{4,0,0,4,0,0,0,10,0,0,0,1000,0,1,10,1,"Magic Bow","Bow" ,0,0, 0,0,0,0}, // 115
|
||||
{23,0,0,0,0,0,0,21,0,0,0,80,0,0,35,93,"Crossbow","Crossbow" ,0,0, 0,0,0,0},
|
||||
{23,0,0,1,0,0,0,21,0,0,0,250,0,0,35,93,"Fine Crossbow","Crossbow" ,0,0, 0,0,0,0},
|
||||
{23,0,0,4,0,0,0,21,0,0,0,3000,0,1,20,93,"Magic Crossbow","Crossbow" ,0,0, 0,0,0,0},
|
||||
{24,14,0,0,0,12,0,86,0,16,0,3,0,0,1,30,"Bolts","Bolts" ,0,0, 0,0,0,0},
|
||||
{24,14,0,2,0,10,0,86,0,17,0,40,0,0,1,30,"Iron Bolts","Bolts" ,0,0, 0,0,0,0}, // 120
|
||||
{24,14,0,5,0,8,0,86,0,18,0,80,0,1,1,30,"Magic Bolts","Bolts" ,0,0, 0,0,0,0},
|
||||
{25,8, 0,0,0,0,0, 0,0,0,0, 20, 0,0, 25,0, "Leather Sling", "Sling" ,0,0, 0,0,0,0},
|
||||
{25,12, 0,3,0,0,0, 0,0,0,0, 3000, 0,1, 25,0, "Magic Sling", "Sling" ,0,0, 0,0,0,0},
|
||||
{13,1,0,0,0,0,0,14,0,0,0,4,1,0,40,50,"Leather Baldric","Leather Coat" ,0,0, 0,0,0,0},
|
||||
{13,2,0,0,0,0,0,14,0,0,0,10,1,0,50,51,"Leather Armor","Leather Armor" ,0,0, 0,0,0,0}, // 125
|
||||
{13,3,1,0,1,0,0,14,0,0,0,30,0,0,70,52,"Bronze Studded Armor","Studded Armor" ,0,0, 0,0,0,0},
|
||||
{13,5,2,0,1,0,0,15,0,0,0,75,0,0,90,53,"Bronze Chain Mail","Chain Mail" ,0,0, 0,0,0,0},
|
||||
{13,7,3,0,1,0,0,16,0,0,0,150,0,0,110,77,"Bronze Breastplate","Breastplate" ,0,0, 0,0,0,0},
|
||||
{13,9,4,0,1,0,0,16,0,0,0,350,0,0,130,54,"Bronze Plate","Plate" ,0,0, 0,0,0,0},
|
||||
{13,3,1,0,2,0,0,14,0,0,0,100,0,0,80,52,"Iron Studded Armor","Studded Armor" ,0,0, 0,0,0,0}, // 130
|
||||
{13,5,2,0,2,0,0,15,0,0,0,250,0,0,100,53,"Iron Chain Mail","Chain Mail" ,0,0, 0,0,0,0},
|
||||
{13,7,3,0,2,0,0,16,0,0,0,500,0,0,120,77,"Iron Breastplate","Breastplate" ,0,0, 0,0,0,0},
|
||||
{13,9,4,0,2,0,0,16,0,0,0,1200,0,0,140,54,"Iron Plate","Plate" ,0,0, 0,0,0,0},
|
||||
{13,3,1,0,3,0,0,14,0,0,0,200,0,0,80,52,"Steel Studded Armor","Studded Armor" ,0,0, 0,0,0,0},
|
||||
{13,5,2,0,3,0,0,15,0,0,0,400,0,0,100,53,"Steel Chain Mail","Chain Mail" ,0,0, 0,0,0,0}, // 135
|
||||
{13,7,3,0,3,0,0,16,0,0,0,800,0,0,120,77,"Steel Breastplate","Breastplate" ,0,0, 0,0,0,0},
|
||||
{13,9,4,0,3,0,0,16,0,0,0,2000,0,0,140,54,"Steel Plate","Plate" ,0,0, 0,0,0,0},
|
||||
{13,3,0,0,5,0,0,14,0,0,0,400,0,1,80,52,"Magic Studded Armor","Studded Armor" ,0,0, 0,0,0,0},
|
||||
{13,5,1,0,5,0,0,15,0,0,0,800,0,1,100,53,"Magic Chain Mail","Chain Mail" ,0,0, 0,0,0,0},
|
||||
{13,7,2,0,5,0,0,16,0,0,0,1600,0,1,120,77,"Magic Breastplate","Breastplate" ,0,0, 0,0,0,0}, //140
|
||||
{13,9,3,0,5,0,0,16,0,0,0,4000,0,1,140,54,"Magic Plate","Plate" ,0,0, 0,0,0,0},
|
||||
{13,5,0,0,4,0,0,15,0,0,0,1500,0,0,50,112,"Mithral Chain Mail","Chain Mail" ,0,0, 0,0,0,0},
|
||||
{12,1,1,0,0,0,0,45,0,0,0,2,0,0,20,46,"Crude Buckler","Buckler" ,0,0, 0,0,0,0},
|
||||
{12,1,1,0,1,0,0,45,0,0,0,15,0,0,20,46,"Bronze Buckler","Buckler" ,0,0, 0,0,0,0},
|
||||
{12,1,0,0,2,0,0,45,0,0,0,40,0,0,20,46,"Iron Buckler","Buckler" ,0,0, 0,0,0,0}, // 145
|
||||
{12,1,0,0,3,0,0,45,0,0,0,200,0,0,20,46,"Steel Buckler","Buckler" ,0,0, 0,0,0,0},
|
||||
{12,3,0,0,3,0,0,45,0,0,0,500,0,1,10,46,"Magic Buckler","Buckler" ,0,0, 0,0,0,0},
|
||||
{12,4,2,0,0,0,0,13,0,0,0,8,0,0,30,47,"Crude Shield","Shield" ,0,0, 0,0,0,0},
|
||||
{12,4,2,0,1,0,0,13,0,0,0,40,0,0,30,47,"Bronze Shield","Shield" ,0,0, 0,0,0,0},
|
||||
{12,4,1,0,2,0,0,13,0,0,0,100,0,0,30,47,"Iron Shield","Shield" ,0,0, 0,0,0,0}, // 150
|
||||
{12,4,1,0,3,0,0,13,0,0,0,400,0,0,30,47,"Steel Shield","Shield" ,0,0, 0,0,0,0},
|
||||
{12,6,1,0,3,0,0,13,0,0,0,1000,0,1,25,49,"Magic Shield","Shield" ,0,0, 0,0,0,0},
|
||||
{12,7,3,0,0,0,0,12,0,0,0,20,0,0,50,48,"Crude Large Shield","Shield" ,0,0, 0,0,0,0},
|
||||
{12,7,2,0,1,0,0,12,0,0,0,100,0,0,50,48,"Bronze Large Shield","Shield" ,0,0, 0,0,0,0},
|
||||
{12,7,2,0,2,0,0,12,0,0,0,250,0,0,50,84,"Iron Large Shield","Shield" ,0,0, 0,0,0,0}, // 155
|
||||
{12,7,2,0,3,0,0,12,0,0,0,700,0,0,50,48,"Steel Large Shield","Shield" ,0,0, 0,0,0,0},
|
||||
{12,8,1,0,3,0,0,12,0,0,0,2000,0,1,45,49,"Magic Large Shield","Shield" ,0,0, 0,0,0,0},
|
||||
{14,1,0,0,0,0,0,46,0,0,0,3,0,0,15,55,"Leather Helm","Helm" ,0,0, 0,0,0,0},
|
||||
{14,2,1,0,0,0,0,46,0,0,0,20,0,0,15,55,"Bronze Helm","Helm" ,0,0, 0,0,0,0},
|
||||
{14,3,1,0,0,0,0,46,0,0,0,40,0,0,15,55,"Iron Helm","Helm" ,0,0, 0,0,0,0}, // 160
|
||||
{14,4,1,0,0,0,0,46,0,0,0,100,0,0,15,55,"Steel Helm","Helm" ,0,0, 0,0,0,0},
|
||||
{14,5,1,0,0,0,0,46,0,0,0,250,0,1,15,56,"Magic Helm","Helm" ,0,0, 0,0,0,0},
|
||||
{14,3,1,0,0,0,0,47,0,0,0,12,0,0,25,57,"Leather Greathelm","Greathelm" ,0,0, 0,0,0,0},
|
||||
{14,4,2,0,0,0,0,47,0,0,0,40,0,0,25,57,"Bronze Greathelm","Greathelm" ,0,0, 0,0,0,0},
|
||||
{14,5,2,0,0,0,0,47,0,0,0,80,0,0,25,57,"Iron Greathelm","Greathelm" ,0,0, 0,0,0,0}, // 165
|
||||
{14,6,1,0,0,0,0,47,0,0,0,250,0,0,25,57,"Steel Greathelm","Greathelm" ,0,0, 0,0,0,0},
|
||||
{14,7,1,0,0,0,0,47,0,0,0,700,0,1,25,58,"Magic Greathelm","Greathelm" ,0,0, 0,0,0,0},
|
||||
{15,1,0,0,0,0,0,48,0,0,0,10,0,0,7,59,"Leather Gloves","Gloves" ,0,0, 0,0,0,0},
|
||||
{15,2,1,0,0,0,0,17,0,0,0,25,0,0,10,60,"Bronze Gauntlets","Gauntlets" ,0,0, 0,0,0,0},
|
||||
{15,3,1,0,0,0,0,17,0,0,0,55,0,0,12,60,"Iron Gauntlets","Gauntlets" ,0,0, 0,0,0,0}, // 170
|
||||
{15,4,1,0,0,0,0,17,0,0,0,150,0,0,12,60,"Steel Gauntlets","Gauntlets" ,0,0, 0,0,0,0},
|
||||
{15,5,1,0,0,0,0,17,0,0,0,400,0,1,10,60,"Magic Gauntlets","Gauntlets" ,0,0, 0,0,0,0},
|
||||
{17,1,0,0,0,0,0,91,0,0,0,10,0,0,8,61,"Boots","Boots" ,0,0, 0,0,0,0},
|
||||
{17,2,0,0,0,0,0,91,0,0,0,50,0,0,12,62,"Steel-Toed Boots","Boots" ,0,0, 0,0,0,0},
|
||||
{10,0,0,0,0,4,0,36,11,14,0,8,0,0,1,27,"Lockpicks","Lockpicks" ,0,0, 0,3,0,161},// 175
|
||||
{20,2,0,0,0,1,0,55,8,31,0,15,0,0,3,40,"Weak Poison","Poison" ,0,0, 0,2,0,70},
|
||||
{20,4,0,0,0,1,0,55,8,32,0,50,0,0,3,40,"Medium Poison","Poison" ,0,0, 0,4,0,70},
|
||||
{20,6,0,0,0,1,0,55,8,33,0,150,0,0,3,40,"Strong Poison","Poison" ,0,0, 0,6,0,70},
|
||||
{20,8,0,0,0,1,0,55,8,34,0,400,0,0,3,40,"Killer Poison","Poison" ,0,0, 0,8,0,70},
|
||||
{21,0,0,0,0,0,0,56,0,0,0,350,0,0,1,114,"Ruby","Gem" ,0,0, 0,0,0,0}, // 180
|
||||
{21,0,0,0,0,1,0,57,17,19,0,250,0,0,1,31,"Sapphire","Gem" ,0,0, 0,0,0,158},
|
||||
{10,2,0,0,0,4,0,36,11,29,0,40,0,0,1,27,"Fine Lockpicks","Lockpicks" ,0,0, 0,5,0,161},
|
||||
{10,4,0,0,0,4,0,36,11,30,0,90,0,1,1,28,"Magic Lockpicks","Lockpicks" ,0,0, 0,8,0,161},
|
||||
{8,0,0,0,0,1,0,58,10,0,0,300,0,1,1,117,"Orb of Sight","Orb" ,0,0, 0,0,0,131},
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 0,0, 0,0, "Smoky Crystal", "Crystal" ,0,0, 0,0,0,159}, // 185
|
||||
{7,0,0,0,0,1,0,57,41,0,0,200,0,1,1,118,"Piercing Crystal","Crystal" ,0,0, 0,0,0,132},
|
||||
{8,0,0,0,0,1,0,58,28,0,0,200,0,1,1,117,"Mist Globe","Orb" ,0,0, 1,8,0,85}, //h
|
||||
{8,0,0,0,0,1,0,58,24,0,0,200,0,1,1,117,"Mist Globe","Orb" ,0,0, 0,4,0,86}, // h
|
||||
{8,0,0,0,0,1,0,58,40,0,0,200,0,1,1,117,"Mist Globe","Orb" ,0,0, 2,9,0,84}, // h
|
||||
{7,0,0,0,0,4,0,57,27,0,0,200,0,1,1,118,"Shielding Crystal","Crystal" ,0,0, 0,3,0,133},
|
||||
{8,0,0,0,0,1,0,58,85,0,0,100,0,1,1,117,"Goo Bomb","Orb" ,0,0, 0,7,0,127},
|
||||
{8,0,0,0,0,1,0,58,86,0,0,100,0,1,1,117,"Orb of Foul Vapors","Orb" ,0,0, 0,0,0,122},
|
||||
{7,0,0,0,0,3,0,63,87,0,0,100,0,1,1,42,"Dust of Hiding","Dust" ,0,0, 2,6,0,78}, //195
|
||||
{7,0,0,0,0,6,0,63,28,0,0,1,0,1,1,43,"Dust of Choking","Dust" ,0,0, 1,8,0,72},
|
||||
{7,0,0,0,0,6,0,63,88,36,0,150,0,1,1,44,"Cleansing Powder","Dust" ,0,0, 0,9,0,77},
|
||||
{8,0,0,0,0,1,0,64,72,0,0,750,0,1,1,120,"Gold Statue","Figure" ,0,0, 0,0,0,119}, //m
|
||||
{8,0,0,0,0,1,0,64,73,0,0,200,0,1,1,120,"Ivory Bug","Figure" ,0,0, 0,0,0,119}, //m
|
||||
{8,0,0,0,0,1,0,64,76,0,0,70,0,1,1,120,"Ebony Lizard","Figure" ,0,0, 0,0,0,119}, // m
|
||||
{7,0,0,0,0,5,0,65,89,0,0,100,0,1,1,121,"Horn of Warriors","Horn" ,0,0, 0,0,0,120},//m
|
||||
{8,0,0,0,0,1,0,33,5,0,0,50,0,1,1,16,"Scroll: Flame","Scroll" ,0,0, 0,7,0,110},
|
||||
{8,0,0,0,0,1,0,33,39,0,0,50,0,1,1,16,"Scroll: Slow","Scroll" ,0,0, 0,7,0,115},
|
||||
{8,0,0,0,0,1,0,33,19,0,0,100,0,1,1,17,"Scroll: Poison","Scroll" ,0,0, 0,7,0,124},
|
||||
{8,0,0,0,0,1,0,33,21,0,0,150,0,1,1,17,"Scroll: Stealth","Scroll" ,0,0, 0,7,0,91}, // 205
|
||||
{8,0,0,0,0,1,0,33,23,0,0,400,0,1,1,18,"Scroll: Kill","Scroll" ,0,0, 0,7,0,113},
|
||||
{8,0,0,0,0,1,0,33,38,0,0,200,0,1,1,18,"Scroll: Ice Bolt","Scroll" ,0,0, 0,7,0,114},
|
||||
{8,0,0,0,0,1,0,33,6,0,0,200,0,1,1,19,"Scroll: Fireball","Scroll" ,0,0, 0,7,0,111},
|
||||
{8,0,0,0,0,1,0,33,22,0,0,300,0,1,1,19,"Scroll: Firestorm","Scroll" ,0,0, 0,7,0,112},
|
||||
{8,0,0,0,0,1,0,33,90,0,0,500,0,1,1,19,"Scroll: Shockstorm","Scroll" ,0,0, 0,7,0,125}, // 210
|
||||
{8,0,0,0,0,1,0,33,37,0,0,600,0,1,1,16,"Scroll: Shockwave","Scroll" ,0,0, 0,7,0,116},
|
||||
{8,0,0,0,0,1,0,33,80,0,0,250,0,1,1,17,"Scroll: Charm","Scroll" ,0,0, 0,7,0,134},
|
||||
{8,0,0,0,0,1,0,33,36,0,0,300,0,1,1,18,"Scroll: Magic Res.","Scroll" ,0,0, 2,5,0,75},
|
||||
{8,0,0,0,0,1,0,64,91,0,0,100,0,1,1,120,"Alabaster Lizard","Figure" ,0,0, 0,0,0,119}, //m
|
||||
{9,0,0,0,0,6,0,34,45,0,0,150,0,1,1,21,"Prismatic Wand","Wand" ,0,0, 0,0,0,117},
|
||||
{9,0,0,0,0,6,0,34,44,0,0,100,0,1,1,22,"Crystal Wand","Wand" ,0,0, 0,0,0,118},
|
||||
{7,0,0,0,0,1,1,30,31,0,0,2000,0,1,1,8,"Brew of Knowledge","Potion" ,0,0, 0,2,0,88},
|
||||
{7,1,0,0,0,1,1,31,27,0,0,1200,0,1,1,9,"Brew of Ironskin","Potion" ,0,0, 0,4,0,74},
|
||||
{7,0,0,0,0,1,1,32,115,0,0,900,0,1,1,10,"Brew of Battle","Potion" ,0,0, 0,8,0,71},
|
||||
{7,0,0,0,0,1,1,30,63,0,0,500,0,1,1,11,"Brew of Lethe","Potion" ,0,0, 1,8,0,85}, // h
|
||||
{21,0,0,0,0,0,0,56,0,39,0,700,0,0,1,116,"Diamond","Gem" ,0,0, 0,0,0,0},
|
||||
{21,0,0,0,0,0,0,58,0,40,0,400,0,0,1,116,"Emerald","Gem" ,0,0, 0,0,0,0},// 225
|
||||
{14,3,4,0,0,0,0,46,14,0,0,10,0,1,14,56,"Cursed Helm","Helm" ,0,0, 0,0,0,0},
|
||||
{14,4,1,0,0,5,0,46,6,0,0,150,0,1,14,56,"Ruby Helm","Helm" ,0,0, 0,4,0,111},
|
||||
{14,4,1,0,0,5,0,46,19,0,0,120,0,1,14,56,"Emerald Helm","Helm" ,0,0, 0,6,0,124},
|
||||
{14,4,1,0,0,0,0,47,42,0,0,1400,0,1,14,56,"Helm of Speed","Helm" ,0,0, 0,0,0,55},
|
||||
{14,5,0,1,0,0,0,46,0,0,0,1200,0,1,14,56,"Runed Helm","Helm" ,0,0, 0,0,0,0}, // 230
|
||||
{21,0,0,0,0,0,0,57,0,0,0,10,0,0,0,116,"Crystal","Crystal" ,0,0, 0,0,0,0},
|
||||
{21,0,0,0,0,0,0,67,0,0,0,10,0,0,20,127, "Iron Bar", "Metal Bar" ,0,0, 0,0,0,0},
|
||||
{21,0,0,0,0,0,0,67,0,0,0,100,0,0,20,127, "Silver Bar", "Metal Bar" ,0,0, 0,0,0,0},
|
||||
{21,0,0,0,0,0,0,67,0,0,0,1000,0,0,18,127, "Platinum bar", "Metal Bar" ,0,0, 0,0,0,0},
|
||||
{15,1,0,0,0,0,0,48,61,0,0,1000,0,1,7,123,"Nimble Gloves","Gloves" ,0,0, 0,6,0,42}, // 235
|
||||
{15,3,1,0,0,0,0,17,96,0,0,1000,0,1,10,123,"Ogrish Gauntlets","Gauntlets" ,0,0, 0,4,0,43},
|
||||
{15,3,1,0,0,0,0,17,97,0,0,3000,0,1,10,123,"Giantish Gauntlets","Gauntlets" ,0,0, 0,8,0,43},
|
||||
{15,0,2,0,0,0,0,17,14,0,0,10,0,1,10,123,"Glue Gauntlets","Gauntlets" ,0,0, 0,0,0,0},
|
||||
{15,1,0,0,0,0,0,48,49,0,0,800,0,1,7,123,"Aspskin Gloves","Gloves" ,0,0, 0,2,0,51},
|
||||
{15,1,0,0,1,0,0,48,99,0,0,4000,0,1,7,123,"Micah's Gloves","Gloves" ,0,0, 0,8,0,40},
|
||||
{17,2,0,0,1,0,0,91,0,0,0,300,0,1,8,61,"Magic Boots","Boots" ,0,0, 0,0,0,0},
|
||||
{17,1,0,0,0,0,0,91,95,0,0,20,0,1,8,62,"Dancing Boots","Boots" ,0,0, 0,5,0,56}, //h
|
||||
{17,2,0,0,1,10,0,91,26,0,0,100,0,1,8,63,"Boots of Apollo","Boots" ,0,0, 0,5,0,73},
|
||||
{17,2,0,0,1,0,0,91,94,0,0,3000,0,1,8,62,"Boots of Speed","Boots" ,0,0, 0,0,0,55}, // 245
|
||||
{17,1,2,0,-3,0,0,91,14,0,0,10,0,1,8,63,"Cursed Boots","Boots" ,0,0, 0,0,0,0},
|
||||
{12,6,2,2,0,0,0,12,25,0,0,1000,0,1,30,49,"Crystal Shield","Shield" ,0,0, 0,0,0,49},
|
||||
{12,6,2,2,0,0,0,12,16,0,0,1500,0,1,30,49,"Iceshield","Shield" ,0,0, 0,0,0,33},
|
||||
{12,6,2,1,0,6,0,12,24,0,0,200,0,1,30,49,"Shield of Khar","Shield" ,0,0, 0,4,0,87},
|
||||
{12,6,2,1,0,6,0,12,18,0,0,200,0,1,30,49,"Shield of Klin","Shield" ,0,0, 0,6,0,71}, //250???
|
||||
{12,7,2,2,0,1,0,12,9,0,0,5000,0,1,30,49,"Lifeshield","Shield" ,0,0, 0,0,0,48},
|
||||
{12,6,2,1,0,5,0,12,90,0,0,150,0,1,30,49,"Shield of Klud","Shield" ,0,0, 0,0,0,0},//??
|
||||
{12,5,2,2,0,5,0,13,100,0,0,100,0,1,30,49,"Martyr's Shield","Shield" ,0,0, 0,4,0,80},
|
||||
{12,6,0,2,0,0,0,13,0,0,0,1500,0,1,30,49,"Runeshield","Shield" ,0,0, 0,0,0,0},
|
||||
{12,4,5,0,0,0,0,13,14,0,0,10,0,1,30,49,"Cursed Shield","Shield" ,0,0, 0,0,0,0}, //255
|
||||
{7,3,0,0,0,1,1,30,4,0,0,350,0,1,5,8,"Strong Curing P.","Potion" ,0,0, 0,8,0,72},
|
||||
{7,3,0,0,0,1,1,30,3,0,0,350,0,1,5,9,"Strong Healing P.","Potion" ,0,0, 0,8,0,87},
|
||||
{7,3,0,0,0,1,1,30,20,0,0,600,0,1,5,10,"Strong Energy P.","Potion" ,0,0, 0,8,0,88},
|
||||
{7,3,0,0,0,1,1,30,18,0,0,160,0,1,5,11,"Strong Strength P.","Potion" ,0,0, 0,8,0,71},
|
||||
{7,3,0,0,0,1,1,30,26,0,0,200,0,1,5,12,"Strong Speed P.","Potion" ,0,0, 0,8,0,73}, //260
|
||||
{7,3,0,0,0,1,1,30,27,0,0,600,0,1,5,14,"Strong Invuln. P.","Potion" ,0,0, 0,8,0,74},
|
||||
{7,3,0,0,0,1,1,30,31,0,0,1600,0,1,5,15,"Strong Skill P.","Potion" ,0,0, 0,4,0,86},
|
||||
{7,1,0,0,0,1,1,30,4,0,0,120,0,1,5,8,"Medium Curing P.","Potion" ,0,0, 0,5,0,72},
|
||||
{7,1,0,0,0,1,1,30,3,0,0,180,0,1,5,9,"Medium Healing P.","Potion" ,0,0, 0,5,0,87}, //265
|
||||
{7,1,0,0,0,1,1,30,20,0,0,300,0,1,5,10,"Medium Energy P.","Potion" ,0,0, 0,5,0,88},
|
||||
{7,1,0,0,0,1,1,30,18,0,0,80,0,1,5,11,"Medium Strength P.","Potion" ,0,0, 0,5,0,71},
|
||||
{7,1,0,0,0,1,1,30,26,0,0,100,0,1,5,12,"Medium Speed P.","Potion" ,0,0, 0,5,0,73},
|
||||
{7,1,0,0,0,1,1,30,27,0,0,300,0,1,5,14,"Medium Invuln. P.","Potion" ,0,0, 0,5,0,74},//270
|
||||
{7,1,0,0,0,1,1,30,31,0,0,800,0,1,5,15,"Medium Skill P.","Potion" ,0,0, 0,2,0,86},
|
||||
{7,0,0,0,0,1,1,30,4,0,0,40,0,1,5,8,"Weak Curing P.","Potion" ,0,0, 0,2,0,72},
|
||||
{7,0,0,0,0,1,1,30,3,0,0,60,0,1,5,9,"Weak Healing P.","Potion" ,0,0, 0,2,0,87},
|
||||
{7,0,0,0,0,1,1,30,20,0,0,100,0,1,5,10,"Weak Energy P.","Potion" ,0,0, 0,2,0,88},
|
||||
{7,0,0,0,0,1,1,30,18,0,0,40,0,1,5,11,"Weak Strength P.","Potion" ,0,0, 0,2,0,71},//275
|
||||
{7,0,0,0,0,1,1,30,26,0,0,50,0,1,5,12,"Weak Speed P.","Potion" ,0,0, 0,2,0,73},
|
||||
{7,0,0,0,0,1,1,30,27,0,0,150,0,1,5,14,"Weak Invuln. P.","Potion" ,0,0, 0,2,0,74},
|
||||
{7,0,0,0,0,1,1,30,31,0,0,400,0,1,5,15,"Weak Skill P.","Potion" ,0,0, 0,1,0,86},
|
||||
{7,0,0,0,0,1,1,30,24,0,0,400,0,1,5,8,"Ambrosia","Potion" ,0,0, 0,20,0,87},//280
|
||||
{7,0,0,0,0,1,1,30,30,0,0,250,0,1,5,9,"Potion of Bliss","Potion" ,0,0, 0,7,0,84},
|
||||
{7,0,0,0,0,1,1,30,28,0,0,10,0,1,5,10,"Poison Potion","Potion" ,0,0, 1,7,0,72},
|
||||
{7,0,0,0,0,1,1,30,29,0,0,20,0,1,5,11,"Potion of Doom","Potion" ,0,0, 0,5,0,89},//h
|
||||
{7,0,0,0,0,1,1,30,63,0,0,50,0,1,5,12,"Brew of Lethe","Potion" ,0,0, 1,8,0,85},//h
|
||||
{7,0,0,0,0,1,1,30,79,0,0,200,0,1,5,13,"Potion of Clarity","Potion" ,0,0, 0,8,0,79},//285
|
||||
{6,4,0,2,0,1,0,28,65,0,0,250,0,1,1,5,"Dart of Returning","Darts" ,0,0, 0,0,0,170},
|
||||
{6,8,0,0,0,4,0,11,33,35,0,25,0,1,1,7,"Lightning Rods","Javelins" ,0,0, 0,20,0,171},
|
||||
{5,9,0,1,0,1,0,27,65,0,0,1000,0,1,1,3,"Regenerating Arrows","Arrows" ,0,0, 0,0,0,170},
|
||||
{5,9,0,2,0,5,0,27,34,0,0,150,0,1,1,3,"Arrows of Light","Arrows" ,0,0, 0,8,0,2},
|
||||
{5,9,0,2,0,6,0,27,35,0,0,75,0,1,1,3,"Arrows of Life","Arrows" ,0,0, 0,8,0,3},//290
|
||||
{5,9,0,1,0,6,0,27,33,0,0,30,0,1,1,3,"Burning Arrows","Arrows" ,0,0, 0,7,0,1},
|
||||
{5,9,0,1,0,4,0,27,92,0,0,150,0,1,1,3,"Exploding Arrows","Arrows" ,0,0, 0,25,0,172},
|
||||
{4,0,0,3,5,0,0,10,0,0,0,2000,0,1,1,1,"Archer's Bow","Bow" ,0,0, 0,0,0,0},//h
|
||||
{4,0,0,0,0,0,0,10,93,0,0,200,0,1,1,1,"Bow of Kag","Bow" ,0,0, 0,0,0,11}, //h
|
||||
{6,4,0,3,0,6,0,28,32,0,0,18,0,1,1,5,"Poison Darts","Darts" ,0,0, 0,8,0,14},//295
|
||||
{9,0,0,0,0,8,0,34,19,0,0,80,0,1,8,21,"Wand of Venom","Wand" ,0,0, 0,0,0,124},
|
||||
{9,0,0,0,0,6,0,34,6,0,0,120,0,1,8,22,"Wand of Fireballs","Wand" ,0,0, 0,0,0,111},
|
||||
{9,0,0,0,0,8,0,34,5,0,0,60,0,1,8,23,"Wand of Flame","Wand" ,0,0, 0,0,0,110},
|
||||
{9,0,0,0,0,6,0,34,43,0,0,40,0,1,8,24,"Wand of Carrunos","Wand" ,0,0, 0,0,0,128},//h
|
||||
{9,0,0,0,0,8,0,34,39,0,0,20,0,1,8,25,"Wand of Slow","Wand" ,0,0, 0,0,0,115},//300
|
||||
{9,0,0,0,0,4,0,34,23,0,0,400,0,1,8,21,"Wand of Death","Wand" ,0,0, 0,0,0,113},
|
||||
{9,0,0,0,0,6,0,34,80,0,0,80,0,1,8,22,"Wand of Charming","Wand" ,0,0, 0,0,0,134},
|
||||
{9,0,0,0,0,5,0,34,81,0,0,80,0,1,8,23,"Wand of Nullity","Wand" ,0,0, 0,0,0,135},//h
|
||||
{9,0,0,0,0,6,0,34,83,0,0,10,0,1,8,25,"Wand of Vorb","Wand" ,0,0, 1,10,0,87},//h
|
||||
{9,0,0,0,0,6,0,34,84,0,0,60,0,1,8,21,"Wand of Rats","Wand" ,0,0, 0,0,0,119}, // m
|
||||
{18,2,0,0,0,0,0,49,46,0,0,2500,0,1,1,65,"Gold Ring of Regen.","Ring" ,0,0, 0,9,0,50},
|
||||
{18,2,0,0,7,0,0,49,0,0,0,675,0,1,1,65,"Gold Ring of Prot.","Ring" ,0,0, 0,0,0,0},
|
||||
{18,2,0,0,0,0,0,49,70,0,0,540,0,1,1,65,"Gold Ring of Accuracy","Ring" ,0,0, 0,8,0,41},
|
||||
{18,2,0,0,0,0,0,49,101,0,0,1400,0,1,1,65,"Gold Ring of Skill","Ring" ,0,0, 0,8,0,37}, //310
|
||||
{18,0,4,0,0,0,0,49,14,0,0,50,0,1,1,65,"Gold Ring of Weight","Ring" ,0,0, 0,8,0,45}, //h
|
||||
{18,0,0,0,0,0,0,49,0,0,0,270,0,0,1,65,"Gold Ring","Ring" ,0,0, 0,0,0,0},
|
||||
{18,2,0,0,0,3,0,49,71,0,0,180,0,1,1,65,"Gold Serpent Ring","Ring" ,0,0, 0,0,0,120},//m
|
||||
{18,1,0,0,0,0,0,49,46,0,0,1000,0,1,1,66,"Silver Ring of Regen.","Ring" ,0,0, 0,5,0,50},
|
||||
{18,1,0,0,5,0,0,49,0,0,0,300,0,1,1,66,"Silver Ring of Prot.","Ring" ,0,0, 0,5,0,0}, //315
|
||||
{18,1,0,0,0,0,0,49,70,0,0,240,0,1,1,66,"Silver Ring of Accuracy","Ring" ,0,0, 0,5,0,41},
|
||||
{18,1,0,0,0,0,0,49,101,0,0,600,0,1,1,66,"Silver Ring of Skill","Ring" ,0,0, 0,5,0,37},
|
||||
{18,0,3,0,0,0,0,49,14,0,0,20,0,1,1,66,"Silver Ring of Weight","Ring" ,0,0, 0,5,0,45},//h
|
||||
{18,0,0,0,0,0,0,49,0,0,0,100,0,0,1,66,"Silver Ring","Ring" ,0,0, 0,0,0,0},
|
||||
{18,1,0,0,0,7,0,49,71,0,0,40,0,1,1,66,"Silver Serpent Ring","Ring" ,0,0, 0,0,0,119},//m
|
||||
{18,0,0,0,0,0,0,49,46,0,0,500,0,1,1,67,"Bronze Ring of Regen.","Ring" ,0,0, 0,2,0,50},
|
||||
{18,0,0,0,3,0,0,49,0,0,0,150,0,1,1,67,"Bronze Ring of Prot.","Ring" ,0,0, 0,0,0,0},
|
||||
{18,0,0,0,0,0,0,49,70,0,0,120,0,1,1,67,"Bronze Ring of Accuracy","Ring" ,0,0, 0,2,0,41},
|
||||
{18,0,0,0,0,0,0,49,101,0,0,300,0,1,1,67,"Bronze Ring of Skill","Ring" ,0,0, 0,2,0,37},
|
||||
{18,0,2,0,0,0,0,49,14,0,0,10,0,1,1,67,"Bronze Ring of Weight","Ring" ,0,0, 0,2,0,45},//h
|
||||
{18,0,0,0,0,0,0,49,0,0,0,60,0,0,1,67,"Bronze Ring","Ring" ,0,0, 0,0,0,0},
|
||||
{18,0,0,0,0,3,0,49,71,0,0,40,0,1,1,67,"Bronze Serpent Ring","Ring" ,0,0, 0,0,0,119}, //m
|
||||
{18,0,0,0,0,0,0,49,66,0,0,1000,0,1,1,68,"Ring of Warmth","Ring" ,0,0, 0,4,0,33},
|
||||
{18,0,0,0,0,0,0,49,16,0,0,1200,0,1,1,68,"Ring of Fire Res.","Ring" ,0,0, 0,4,0,32},
|
||||
{18,0,0,0,0,0,0,49,74,0,0,3000,0,1,1,68,"Ring of Speed","Ring" ,0,0, 0,3,0,55},//330
|
||||
{18,0,0,0,0,0,0,49,75,0,0,800,0,1,1,69,"Ring of Will","Ring" ,0,0, 0,7,0,53},
|
||||
{18,0,0,0,0,0,0,49,67,0,0,750,0,1,1,69,"Aescal's Ring","Ring" ,0,0, 0,2,0,94},
|
||||
{19,0,0,0,0,0,0,54,48,0,0,600,0,1,1,71,"Silver Ankh","Necklace" ,0,0, 0,6,0,57},
|
||||
{19,0,0,0,0,0,0,53,49,0,0,500,0,1,3,72,"Amulet of the Cobra","Necklace" ,0,0, 0,3,0,51},
|
||||
{19,0,0,0,0,0,0,54,16,0,0,1200,0,1,3,124,"Ruby Charm","Necklace" ,0,0, 0,5,0,32},//335
|
||||
{19,0,0,0,0,0,0,53,2,0,0,1000,0,1,3,70,"Onyx Charm","Necklace" ,0,0, 0,5,0,35},
|
||||
{19,0,0,0,0,0,0,53,47,0,0,750,0,1,3,72,"Fang Necklace","Necklace" ,0,0, 0,4,0,46},
|
||||
{19,0,0,0,0,6,0,52,22,0,0,150,0,1,3,125,"Fire Orb Necklace","Necklace" ,0,0, 0,7,0,111},
|
||||
{19,0,0,0,0,0,0,54,0,0,0,1000,0,0,3,70,"Diamond Necklace","Necklace" ,0,0, 0,0,0,0},
|
||||
{19,0,0,0,0,0,0,52,0,0,0,400,0,0,3,70,"Gold necklace","Necklace" ,0,0, 0,0,0,0},//340
|
||||
{19,0,0,0,0,1,0,52,9,0,0,2000,0,1,3,70,"Lifesaver Amulet","Necklace" ,0,0, 0,0,0,48},
|
||||
{19,0,0,0,0,5,0,53,76,0,0,80,0,1,3,72,"Scale Necklace","Necklace" ,0,0, 0,0,0,119}, //m
|
||||
{19,0,0,0,0,0,0,54,77,0,0,600,0,1,3,71,"Amber Periapt","Necklace" ,0,0, 0,0,0,34},
|
||||
{19,0,0,0,-4,0,0,53,14,0,0,10,0,1,3,72,"Feldspar Charm","Necklace" ,0,0, 0,0,0,0}, //345
|
||||
{19,0,0,0,4,0,0,52,0,0,0,700,0,1,3,71,"Ivory Charm","Necklace" ,0,0, 0,0,0,0},
|
||||
{19,0,0,0,0,0,0,54,0,0,0,150,0,0,3,71,"Silver necklace","Necklace" ,0,0, 0,0,0,0},
|
||||
{21,0,0,0,0,0,0,67,110,0,0,200,0,0,20,127, "Uranium bar", "Metal Bar" ,0,0, 0,3,0,52},
|
||||
{21,0,0,0,0,0,0,92,0,0,0,750,0,0,20,127, "Gold bar", "Metal Bar" ,0,0, 0,0,0,0},
|
||||
{7,0, 0,0,0,1,0, 30,59,0,0, 120, 1,1, 3,97, "Graymold Salve", "Salve" ,0,0, 2,3,0,77}, // 350
|
||||
{21,0, 0,0,0,1,0, 31,13,0,0, 200, 1,1, 3,97, "Ressurection Balm", "Balm" ,0,0, 0,0,0,160},
|
||||
{21,0, 0,0,0,0,0, 71,0,0,0, 400, 0,0, 5,135, "Rough Diamond", "Rock" ,0,0, 0,0,0,0},
|
||||
{21,3, 0,0,0,5,0, 71,20,0,0, 150, 0,1, 5,135, "Power Geode", "Rock" ,0,0, 0,3,0,88},
|
||||
{21,0, 0,0,0,9,0, 72,5,0,0, 80, 0,1, 5,135, "Firestone", "Rock" ,0,0, 0,3,0,110},
|
||||
{1,4, 0,6,0,0,1, 25,0,0,0, 800, 0,1, 5,110, "Ravage Knife", "Knife" ,0,0, 0,0,0,0}, // 355
|
||||
{1,6, 0,3,0,0,1, 25,32,0,0, 1000, 0,1, 5,110, "Assassin's Knife", "Knife" ,0,0, 0,8,0,14},
|
||||
{1,13, 0,3,0,0,1, 7,32,0,0, 5000, 0,1, 30,94, "Alien Blade", "Waveblade" ,0,0, 0,3,0,14},
|
||||
{2,18, 0,5,0,0,1, 1,50,0,0, 8000, 0,1, 80,136, "Demonslayer", "Greatsword" ,0,0, 0,8,0,2},
|
||||
{1,12, 0,2,0,0,1, 0,131,0,0, 4000, 0,1, 30,86, "Wyrmsbane", "Broadsword" ,0,0, 0,6,0,4},
|
||||
{1,10, 0,1,0,0,1, 0,33,0,0, 1200, 0,1, 30,138, "Flaming Sword", "Red Sword" ,0,0, 0,5,0,1}, // 360
|
||||
{1,10, 0,3,0,0,2, 2,51,0,0, 4000, 0,1, 30,84, "Smite", "Hammer" ,0,0, 0,8,0,5},
|
||||
{1,10, 0,2,0,0,2, 2,35,0,0, 1250, 0,1, 40,81, "Mace of Disruption", "Mace" ,0,0, 0,7,0,3},
|
||||
{21,0, 0,0,0,0,0, 72,129,0,0, 100, 0,1, 5,29, "Lodestone", "Rock" ,0,0, 0,4,0,45}, // h
|
||||
{21,0, 0,0,0,0,0, 71,117,0,0, 400, 0,1, 5,29, "Airy Stone", "Rock" ,0,0, 0,4,0,44},
|
||||
{8,0, 0,0,0,4,0, 63,121,41,0, 40, 0,1, 2,42, "Basic Powder", "Powder" ,0,0, 2,8,0,83},
|
||||
{8,0, 0,0,0,2,0, 63,63,42,0, 30, 0,1, 2,43, "Powder of Lethe", "Powder" ,0,0, 3,4,0,85}, //h
|
||||
{7,0, 0,0,0,1,0, 30,130,0,0, 30, 0,1, 4,14, "Potion of Paralysis", "Potion" ,0,0, 1,10,0,82}, // h
|
||||
{18,0, 0,0,0,0,0, 49,120,0,0, 1000, 0,1, 2,69, "Ring of Free Action", "Ring" ,0,0, 0,7,0,54},
|
||||
{18,0, 0,0,0,0,0, 49,127,0,0, 4000, 0,1, 2,68, "Ring of Resistance", "Ring" ,0,0, 0,8,0,31},
|
||||
{19,0, 0,0,0,0,0, 53,122,0,0, 500, 0,1, 4,72, "Basic Necklace", "Necklace" ,0,0, 0,4,0,36},
|
||||
{9,0, 0,0,0,5,0, 34,125,0,0, 170, 0,1, 6,24, "Wand of Paralysis", "Wand" ,0,0, 0,6,0,126},
|
||||
{9,0, 0,0,0,7,0, 35,124,0,0, 100, 0,1, 7,25, "Wand of Acid", "Wand" ,0,0, 0,7,0,121}, // 375
|
||||
{14,4, 0,0,1,0,0, 46,118,0,0, 750, 0,1, 20,56, "Helm of Alertness", "Helm" ,0,0, 0,3,0,54},
|
||||
{12,6, 1,0,2,6,0, 13,123,0,0, 250, 0,1, 40,49, "Shield of Kron", "Shield" ,0,0, 0,0,0,123},
|
||||
{1,8, 0,0,0,8,1, 0,5,0,0, 50, 0,1, 20,111, "Boltblade", "Short Sword" ,0,0, 0,3,0,110}, // 380
|
||||
{12,8, 0,0,3,0,2, 2,0,0,0, 400, 0,1, 30,81, "Shield Mace", "Mace" ,0,0, 0,0,0,0},
|
||||
{18,2, 0,0,0,5,0, 49,26,0,0, 120, 0,1, 4,66, "Quicksilver Band", "Ring" ,0,0, 0,3,0,73},
|
||||
{21,0, 0,0,0,3,0, 39,52,0,0, 10, 1,0, 1,128, "Holly", "Holly" ,0,0, 0,0,0,150},
|
||||
{21,0, 0,0,0,3,0, 40,53,0,0, 15, 1,0, 1,129, "Comfrey Root", "Comfrey Root" ,0,0, 0,0,0,151}, // 385
|
||||
{21,0, 0,0,0,3,0, 41,54,0,0, 30, 1,0, 1,130, "Glowing Nettle", "Glowing Nettle" ,0,0, 0,0,0,152},
|
||||
{21,0, 0,0,0,3,0, 39,55,0,0, 50, 1,0, 1,131, "Wormgrass", "Wormgrass" ,0,0, 0,0,0,153},
|
||||
{21,0, 0,0,0,3,0, 40,53,0,0, 70, 1,0, 1,129, "Asptongue Mold", "Asptongue Mold" ,0,0, 0,0,0,154}, // 385
|
||||
{21,0, 0,0,0,2,0, 40,58,0,0, 90, 1,0, 1,132, "Graymold", "Graymold" ,0,0, 0,0,0,156},
|
||||
{21,0, 0,0,0,2,0, 41,59,0,0, 120, 1,0, 1,133, "Ember Flowers", "Ember Flowers" ,0,0, 0,0,0,155},
|
||||
{21,0, 0,0,0,2,0, 40,56,0,0, 400, 1,0, 1,134, "Mandrake Root", "Mandrake Root" ,0,0, 0,0,0,157}, // 390
|
||||
{21,0, 0,0,0,1,0, 96,58,0,0, 40, 1,0, 1,144, "Asp Fangs", "Asp Fangs" ,0,0, 0,0,0,154},
|
||||
{1,3, 0,0,0,0,1, 3,14,0,0, 10, 0,1, 20,82, "Cursed Axe", "Axe" ,0,0, 0,0,0,0},
|
||||
{1,6, 0,0,0,0,1, 0,14,0,0, 10, 0,1, 25,86, "Cursed Broadsword", "Broadsword" ,0,0, 0,0,0,0},// 395
|
||||
{2,8, 0,0,0,0,1, 1,14,0,0, 10, 0,1, 45,90, "Cursed Greatsword", "Greatsword" ,0,0, 0,0,0,0},
|
||||
{1,1, 0,0,0,0,1, 25,14,0,0, 10, 0,1, 8,110, "Cursed Knife", "Knife" ,0,0, 0,0,0,0},
|
||||
{12,1, 2,0,0,0,0, 13,14,0,0, 10, 0,1, 30,47, "Cursed Shield", "Shield" ,0,0, 0,0,0,0},
|
||||
{1,1, 0,0,0,0,2, 2,14,0,0, 10, 0,1, 20,81, "Cursed Mace", "Mace" ,0,0, 0,0,0,0},
|
||||
{18,0, 3,0,0,0,0, 49,14,0,0, 10, 0,1, 1,65, "Cursed Ring", "Ring" ,0,0, 0,0,0,0}, // 400
|
||||
{2,8, 0,0,0,0,3, 5,14,0,0, 10, 0,1, 50,89, "Cursed Halberd", "Halberd" ,0,0, 0,0,0,0},
|
||||
{21,0, 0,0,0,0,0, 71,0,46,0, 8, 1,0, 3,146, "Silver Ore", "Ore" ,0,0, 0,0,0,0},
|
||||
{21,0, 0,0,0,0,0, 72,0,47,0, 15, 1,0, 3,146, "Gold Ore", "Ore" ,0,0, 0,0,0,0},
|
||||
{1,10,0,6,0,0,1,0,0,0,0,3000,0,1,25,86,"Mithral Broadsword","Broadsword" ,0,0, 0,0,0,0},
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}, //
|
||||
{0,0, 0,0,0,0,0, 0,0,0,0, 0, 1,0, 0,0, "Empty", "Empty" ,0,0, 0,0,0,0}
|
||||
|
||||
|
||||
|
||||
};
|
||||
1359
osx/Scenario Editor/keydlgs.c
Normal file
1359
osx/Scenario Editor/keydlgs.c
Normal file
File diff suppressed because it is too large
Load Diff
37
osx/Scenario Editor/keydlgs.h
Normal file
37
osx/Scenario Editor/keydlgs.h
Normal file
@@ -0,0 +1,37 @@
|
||||
void fancy_choice_dialog_event_filter (short item_hit);
|
||||
short fancy_choice_dialog(short which_dlog,short parent);
|
||||
void display_strings_event_filter (short item_hit);
|
||||
Boolean cre(short val,short min,short max,char *text1, char *text2,short parent_num) ;
|
||||
void give_error(char *text1, char *text2,short parent_num);
|
||||
void display_strings_event_filter (short item_hit);
|
||||
void display_strings(char *text1, char *text2,
|
||||
char *title,short sound_num,short graphic_num,short parent_num);
|
||||
void choose_graphic_event_filter (short item_hit);
|
||||
void put_choice_pics();
|
||||
short choose_graphic(short first_g,short last_g,short cur_choice,short parent_num);
|
||||
void put_text_res();
|
||||
short choose_text_res(short res_list,short first_t,short last_t,short cur_choice,short parent_num,char *title);
|
||||
void choose_text_res_event_filter (short item_hit);
|
||||
void edit_text_event_filter (short item_hit);
|
||||
void edit_text_str(short which_str,short mode);
|
||||
Boolean save_spec_enc();
|
||||
void put_spec_enc_in_dlog();
|
||||
void edit_spec_enc_event_filter (short item_hit);
|
||||
void edit_spec_enc(short which_node,short mode,short parent_num);
|
||||
short get_fresh_spec(short which_mode);
|
||||
void edit_spec_text_event_filter (short item_hit);
|
||||
void edit_spec_text(short mode,short *str1,short *str2,short parent);
|
||||
void edit_dialog_text(short mode,short *str1,short parent);
|
||||
void edit_spec_text(short mode,short *str1,short *str2,short parent);
|
||||
void edit_special_num_event_filter (short item_hit);
|
||||
short edit_special_num(short mode,short what_start);
|
||||
void edit_scen_intro_event_filter (short item_hit);
|
||||
void edit_scen_intro();
|
||||
short choice_dialog(short pic,short num);
|
||||
Boolean edit_area_rect_str(short which_str,short mode);
|
||||
void edit_area_rect_event_filter (short item_hit);
|
||||
void make_cursor_sword() ;
|
||||
void edit_dialog_text_event_filter (short item_hit);
|
||||
void edit_dialog_text(short mode,short *str1,short parent);
|
||||
void set_cursor(short which_c) ;
|
||||
void restore_cursor();
|
||||
2889
osx/Scenario Editor/scenario.c
Normal file
2889
osx/Scenario Editor/scenario.c
Normal file
File diff suppressed because it is too large
Load Diff
66
osx/Scenario Editor/scenario.h
Normal file
66
osx/Scenario Editor/scenario.h
Normal file
@@ -0,0 +1,66 @@
|
||||
monster_record_type return_monster_template(unsigned char store);
|
||||
item_record_type convert_item (short_item_record_type s_item) ;
|
||||
void init_scenario();
|
||||
short edit_ter_type(short which_ter);
|
||||
void edit_ter_type_event_filter (short item_hit);
|
||||
Boolean save_ter_info();
|
||||
void put_ter_info_in_dlog();
|
||||
void put_monst_info_in_dlog();
|
||||
Boolean save_monst_info();
|
||||
void edit_monst_type_event_filter (short item_hit);
|
||||
short edit_monst_type(short which_monst);
|
||||
void put_monst_abils_in_dlog();
|
||||
Boolean save_monst_abils();
|
||||
void edit_monst_abil_event_filter (short item_hit);
|
||||
monster_record_type edit_monst_abil(monster_record_type starting_record,short parent_num);
|
||||
void put_item_info_in_dlog();
|
||||
Boolean save_item_info();
|
||||
void edit_item_type_event_filter (short item_hit);
|
||||
short edit_item_type(short which_item);
|
||||
void put_item_abils_in_dlog();
|
||||
Boolean save_item_abils();
|
||||
void edit_item_abil_event_filter (short item_hit);
|
||||
item_record_type edit_item_abil(item_record_type starting_record,short parent_num);
|
||||
void edit_spec_item(short which_item);
|
||||
void edit_spec_item_event_filter (short spec_item_hit);
|
||||
Boolean save_spec_item();
|
||||
void put_spec_item_in_dlog();
|
||||
void put_save_rects_in_dlog();
|
||||
Boolean save_save_rects();
|
||||
void edit_save_rects_event_filter (short save_rects_hit);
|
||||
void edit_save_rects();
|
||||
void edit_horses();
|
||||
void edit_horses_event_filter (short item_hit);
|
||||
void put_horses_in_dlog();
|
||||
Boolean save_horses();
|
||||
Boolean save_add_town();
|
||||
void put_add_town_in_dlog();
|
||||
void edit_add_town_event_filter (short item_hit);
|
||||
void edit_add_town();
|
||||
void edit_item_placement();
|
||||
void edit_item_placement_event_filter (short item_hit);
|
||||
void put_item_placement_in_dlog();
|
||||
Boolean save_item_placement();
|
||||
void edit_scen_details_event_filter (short item_hit);
|
||||
void edit_scen_details();
|
||||
short edit_make_scen_2(short *val_array);
|
||||
void edit_make_scen_2_event_filter (short item_hit);
|
||||
void put_make_scen_2_in_dlog();
|
||||
short edit_make_scen_1(char *filename,char *title,short *grass);
|
||||
void edit_make_scen_1_event_filter (short item_hit);
|
||||
void put_make_scen_1_in_dlog();
|
||||
short get_password();
|
||||
void give_password_filter (short item_hit);
|
||||
void edit_scenario_events();
|
||||
void edit_scenario_events_event_filter (short item_hit);
|
||||
void put_scenario_events_in_dlog();
|
||||
Boolean save_scenario_events();
|
||||
short enter_password();
|
||||
void build_scenario();
|
||||
void set_starting_loc_filter (short item_hit);
|
||||
void set_starting_loc();
|
||||
void edit_boats_event_filter (short item_hit);
|
||||
void edit_boats();
|
||||
|
||||
void user_password_filter (short item_hit);
|
||||
short wd_to_pwd(Str255 str);
|
||||
181
osx/Scenario Editor/sound.c
Normal file
181
osx/Scenario Editor/sound.c
Normal file
@@ -0,0 +1,181 @@
|
||||
#include "math.h"
|
||||
|
||||
#include <Carbon/Carbon.h>
|
||||
|
||||
#include "sound.h"
|
||||
#include "global.h"
|
||||
|
||||
#define NUM_SOUNDS 99
|
||||
|
||||
Handle sound_handles[NUM_SOUNDS];
|
||||
|
||||
extern Boolean play_sounds,in_startup_mode;
|
||||
extern WindowPtr mainPtr;
|
||||
extern Boolean gInBackground;
|
||||
extern party_record_type party;
|
||||
|
||||
short last_played = 10000;
|
||||
|
||||
Boolean always_asynch[100] = {FALSE,FALSE,FALSE,FALSE,FALSE,
|
||||
FALSE,TRUE,FALSE,FALSE,FALSE,
|
||||
FALSE,FALSE,FALSE,FALSE,FALSE, // 10
|
||||
FALSE,FALSE,FALSE,FALSE,FALSE,
|
||||
FALSE,FALSE,FALSE,FALSE,TRUE, // 20
|
||||
TRUE,FALSE,FALSE,FALSE,FALSE,
|
||||
FALSE,FALSE,FALSE,FALSE,TRUE, // 30
|
||||
FALSE,FALSE,TRUE,FALSE,TRUE,
|
||||
FALSE,TRUE,TRUE,TRUE,TRUE, // 40
|
||||
TRUE,TRUE,TRUE,TRUE,TRUE,
|
||||
TRUE,FALSE,FALSE,FALSE,FALSE, // 50
|
||||
TRUE,FALSE,FALSE,FALSE,FALSE,
|
||||
FALSE,TRUE,FALSE,FALSE,FALSE, // 60
|
||||
FALSE,FALSE,FALSE,FALSE,FALSE,
|
||||
FALSE,FALSE,FALSE,FALSE,FALSE, // 70
|
||||
FALSE,TRUE,TRUE,TRUE,TRUE,
|
||||
TRUE,TRUE,TRUE,TRUE,FALSE, // 80
|
||||
TRUE,FALSE,FALSE,FALSE,FALSE,
|
||||
FALSE,TRUE,FALSE,FALSE,FALSE, // 90
|
||||
FALSE,FALSE,FALSE,FALSE,FALSE};
|
||||
Boolean load_when_play[100] = {
|
||||
0,0,1,1,1,1,0,1,1,1,
|
||||
0,0,0,1,0,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,0,1,1,
|
||||
1,1,1,1,0,1,1,0,1,1,
|
||||
1,1,1,1,1,1,1,0,0,0,
|
||||
0,1,1,1,1,0,1,1,1,1,
|
||||
1,0,1,1,1,1,1,1,1,0,
|
||||
0,0,0,0,0,0,1,1,1,1,
|
||||
1,1,1,1,1,0,0,0,0,0,
|
||||
1,1,1,1,1,1,1,1,1,0
|
||||
};
|
||||
|
||||
|
||||
|
||||
short sound_delay[100] = {0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,25,25,0,0,0,0,
|
||||
0,0,0,0,8,0,0,8,0,0,
|
||||
0,0,0,10,20,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,13,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0
|
||||
};
|
||||
//Allocate SndChannelPtr chan[4] as a global variable.
|
||||
//Allocate char numchannel = 3; (This gives 4 channels, = 2 gives 3 etc...
|
||||
//Allocate char channel; This is just used as a counter so each sound is played by the next
|
||||
//channel in line. You can have up to 4 sounds playing at once.
|
||||
|
||||
SndChannelPtr chan[4];
|
||||
char numchannel = 3;
|
||||
char channel;
|
||||
|
||||
void load_sounds ()
|
||||
{
|
||||
short i,t;
|
||||
|
||||
for (i = 0; i < NUM_SOUNDS; i++) {
|
||||
load_when_play[i] = TRUE;
|
||||
always_asynch[i] = FALSE;
|
||||
if (load_when_play[i] == FALSE) {
|
||||
sound_handles[i] = GetResource('snd ', 20000 + i);
|
||||
}
|
||||
}
|
||||
|
||||
for(t=0;t<4;t++)/****** setup 4 sound channels **********/
|
||||
{
|
||||
SndNewChannel(&chan[t], sampledSynth, initMono + initNoDrop, NIL);
|
||||
chan[t]->qLength = 128;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void play_sound(short which) // if < 0, play asynch
|
||||
{
|
||||
if (play_sounds == TRUE)
|
||||
force_play_sound(which);
|
||||
}
|
||||
|
||||
/*
|
||||
sound(id)
|
||||
int id;
|
||||
{
|
||||
Boolean secondtry = FALSE;
|
||||
|
||||
channel++;
|
||||
|
||||
if (channel > numchannel) channel = 0;
|
||||
|
||||
sndhandle = NIL;
|
||||
sndhandle = GetResource('snd ',abs(id));
|
||||
|
||||
if (sndhandle != NIL)
|
||||
{
|
||||
HLock(sndhandle);
|
||||
HNoPurge(sndhandle);
|
||||
|
||||
if (id > 0) SndPlay(chan[channel],sndhandle,TRUE);/****** Normal SndPlay *****/
|
||||
/* else SndPlay(chan[channel],sndhandle,FALSE);/****** play ASYNC *****/
|
||||
/* }
|
||||
}
|
||||
*/
|
||||
|
||||
void force_play_sound(short which)
|
||||
{
|
||||
Handle sndhandle;
|
||||
unsigned long dummy;
|
||||
OSErr err;
|
||||
|
||||
// if (play_sounds == TRUE)
|
||||
// SndPlay(NIL, sound_handles[which], TRUE);
|
||||
|
||||
// if (play_sounds == TRUE) {
|
||||
channel++;
|
||||
|
||||
if (channel > numchannel) channel = 0;
|
||||
|
||||
if (load_when_play[((which < 0) ? -1 * which : which)] == TRUE)
|
||||
sndhandle = GetResource('snd ',20000 + ((which < 0) ? -1 * which : which));
|
||||
else sndhandle = sound_handles[((which < 0) ? -1 * which : which)];
|
||||
|
||||
if (which > 0)
|
||||
if (always_asynch[which] == TRUE)
|
||||
which = which * -1;
|
||||
|
||||
if (sndhandle != NIL)
|
||||
{
|
||||
HLock(sndhandle);
|
||||
|
||||
if (which < 0) err = SndPlay(chan[channel],(SndListHandle) sndhandle,TRUE);/****** Normal SndPlay *****/
|
||||
else {
|
||||
err = SndPlay(chan[channel],(SndListHandle) sndhandle,FALSE);
|
||||
}
|
||||
if (err != 0) {
|
||||
}
|
||||
HUnlock(sndhandle);
|
||||
}
|
||||
else SysBeep(2);
|
||||
if (which < 0)
|
||||
Delay(sound_delay[-1 * which],&dummy);
|
||||
// }
|
||||
}
|
||||
|
||||
void one_sound(short which)
|
||||
{
|
||||
if (which == last_played)
|
||||
return;
|
||||
play_sound(which);
|
||||
last_played = which;
|
||||
}
|
||||
|
||||
void clear_sound_memory()
|
||||
{
|
||||
last_played = 100;
|
||||
}
|
||||
|
||||
void flip_sound()
|
||||
{
|
||||
play_sounds = (play_sounds == TRUE) ? FALSE : TRUE;
|
||||
}
|
||||
|
||||
6
osx/Scenario Editor/sound.h
Normal file
6
osx/Scenario Editor/sound.h
Normal file
@@ -0,0 +1,6 @@
|
||||
void flip_sound();
|
||||
void clear_sound_memory();
|
||||
void one_sound(short which);
|
||||
void force_play_sound(short which);
|
||||
void play_sound(short which);
|
||||
void load_sounds ();
|
||||
1709
osx/Scenario Editor/tGraphics.c
Normal file
1709
osx/Scenario Editor/tGraphics.c
Normal file
File diff suppressed because it is too large
Load Diff
66
osx/Scenario Editor/tGraphics.h
Normal file
66
osx/Scenario Editor/tGraphics.h
Normal file
@@ -0,0 +1,66 @@
|
||||
void Set_up_win ();
|
||||
void run_startup_g();
|
||||
void load_main_screen();
|
||||
void draw_main_screen();
|
||||
void redraw_screen();
|
||||
void draw_lb();
|
||||
void draw_lb_slot (short which,short mode) ;
|
||||
void draw_rb();
|
||||
void draw_rb_slot (short which,short mode) ;
|
||||
void set_up_terrain_buttons();
|
||||
GWorldPtr load_pict(int picture_to_get);
|
||||
void draw_terrain();
|
||||
void draw_monsts();
|
||||
Rect get_item_template_rect (short type_wanted);
|
||||
void draw_items();
|
||||
void force_tiny_redraw();
|
||||
void redraw_selected_ter();
|
||||
void draw_one_terrain_spot (short i,short j,unsigned char terrain_to_draw);
|
||||
void draw_one_tiny_terrain_spot (short i,short j,unsigned char terrain_to_draw);
|
||||
void Draw_Some_Item ( GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,location target,
|
||||
char masked,short main_win);
|
||||
void rect_draw_some_item (GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,Rect targ_rect,
|
||||
char masked,short main_win);
|
||||
Rect get_template_rect (unsigned char type_wanted);
|
||||
void draw_frames();
|
||||
void place_location();
|
||||
void place_just_location();
|
||||
void set_string(char *string,char *string2);
|
||||
void undo_clip();
|
||||
Boolean is_special(short i,short j);
|
||||
void take_special(short i,short j);
|
||||
void make_special(short i,short j);
|
||||
void sort_specials();
|
||||
Boolean is_field_type(short i,short j,short field_type);
|
||||
void make_field_type(short i,short j,short field_type);
|
||||
void take_field_type(short i,short j,short field_type);
|
||||
Boolean is_web(short i,short j);
|
||||
void make_web(short i,short j);
|
||||
void take_web(short i,short j);
|
||||
Boolean is_crate(short i,short j);
|
||||
void make_crate(short i,short j);
|
||||
void take_crate(short i,short j);
|
||||
Boolean is_barrel(short i,short j);
|
||||
void make_barrel(short i,short j);
|
||||
void take_barrel(short i,short j);
|
||||
Boolean is_fire_barrier(short i,short j);
|
||||
void make_fire_barrier(short i,short j);
|
||||
void take_fire_barrier(short i,short j);
|
||||
Boolean is_force_barrier(short i,short j);
|
||||
void make_force_barrier(short i,short j);
|
||||
void take_force_barrier(short i,short j);
|
||||
Boolean is_sfx(short i,short j,short type);
|
||||
void make_sfx(short i,short j,short type);
|
||||
void take_sfx(short i,short j,short type);
|
||||
Boolean is_quickfire(short i,short j);
|
||||
void make_quickfire(short i,short j);
|
||||
void take_quickfire(short i,short j);
|
||||
Boolean container_there(location l);
|
||||
void char_win_draw_string(WindowPtr dest_window,Rect dest_rect,char *str,short mode,short line_height);
|
||||
void char_port_draw_string(GrafPtr dest_window,Rect dest_rect,char *str,short mode,short line_height);
|
||||
void win_draw_string(GrafPtr dest_window,Rect dest_rect,Str255 str,short mode,short line_height);
|
||||
void c2p(Str255 str) ;
|
||||
void p2c(Str255 str);
|
||||
void get_str(Str255 str,short i, short j);
|
||||
short string_length(char *str);
|
||||
Rect get_custom_rect (short which_rect);
|
||||
3625
osx/Scenario Editor/tactions.c
Normal file
3625
osx/Scenario Editor/tactions.c
Normal file
File diff suppressed because it is too large
Load Diff
69
osx/Scenario Editor/tactions.h
Normal file
69
osx/Scenario Editor/tactions.h
Normal file
@@ -0,0 +1,69 @@
|
||||
void init_current_terrain();
|
||||
void init_screen_locs();
|
||||
Boolean handle_action(Point the_point,EventRecord event);
|
||||
void flash_rect(Rect to_flash);
|
||||
void swap_terrain();
|
||||
void set_new_terrain(unsigned char selected_terrain);
|
||||
void handle_keystroke(char chr,char chr2,EventRecord event);
|
||||
void get_wandering_monst();
|
||||
void get_town_info();
|
||||
void edit_monst(short mode,short x,short y);
|
||||
void get_sign_resource();
|
||||
void set_info_strings();
|
||||
preset_item_type edit_item(preset_item_type item);
|
||||
void modify_lists();
|
||||
void set_up_lights();
|
||||
Boolean is_wall(short i,short j);
|
||||
Boolean is_correctable_wall(short i,short j);
|
||||
Boolean is_mountain(short i,short j);
|
||||
Boolean is_hill(short i,short j);
|
||||
Boolean is_hill_or_mountain(short i,short j);
|
||||
Boolean is_water(short i,short j);
|
||||
Boolean is_correctable_water(short i,short j);
|
||||
void shy_change_circle_terrain(location center,short radius,unsigned char terrain_type,short probability);
|
||||
void change_circle_terrain(location center,short radius,unsigned char terrain_type,short probability);
|
||||
void change_rect_terrain(Rect r,unsigned char terrain_type,short probability,Boolean hollow);
|
||||
void swap_val(unsigned char *val,short a,short b);
|
||||
void change_val_4 (unsigned char *val,short a,short b,short c,short d);
|
||||
void change_val (unsigned char *val,short a,short b);
|
||||
void frill_up_terrain();
|
||||
void unfrill_terrain();
|
||||
void set_terrain(location l,unsigned char terrain_type);
|
||||
Boolean fix_rubble(location l);
|
||||
Boolean fix_cave(location l);
|
||||
Boolean fix_mountain(location l);
|
||||
Boolean fix_hill(location l);
|
||||
Boolean fix_water(location l);
|
||||
Boolean out_fix_rubble(location l);
|
||||
Boolean out_fix_cave(location l);
|
||||
Boolean out_fix_mountain(location l);
|
||||
Boolean out_fix_hill(location l);
|
||||
Boolean out_fix_water(location l);
|
||||
void adjust_space(location l);
|
||||
Boolean is_lava(short x,short y);
|
||||
unsigned char coord_to_ter(short x,short y);
|
||||
short get_obscurity(short x,short y);
|
||||
short can_see(location p1,location p2,short mode);
|
||||
Boolean place_item(location spot_hit,short which_item,short property,short always,short odds);
|
||||
void place_items_in_town();
|
||||
void set_up_start_screen();
|
||||
void set_up_main_screen();
|
||||
void start_town_edit();
|
||||
void start_out_edit();
|
||||
void shut_down_menus(short mode);
|
||||
void start_terrain_editing();
|
||||
void start_monster_editing(short just_redo_text);
|
||||
void start_item_editing(short just_redo_text);
|
||||
void start_special_item_editing();
|
||||
void start_string_editing(short mode,short just_redo_text);
|
||||
void start_special_editing(short mode,short just_redo_text);
|
||||
void town_entry(location spot_hit);
|
||||
void start_dialogue_editing(short restoring);
|
||||
Boolean is_erasable_water(short i,short j);
|
||||
|
||||
Boolean monst_on_space(location loc,short m_num);
|
||||
void place_edit_special(location loc);
|
||||
void set_special(location spot_hit);
|
||||
Boolean save_check(short which_dlog);
|
||||
void update_item_menu();
|
||||
|
||||
2171
osx/Scenario Editor/tfileio.c
Normal file
2171
osx/Scenario Editor/tfileio.c
Normal file
File diff suppressed because it is too large
Load Diff
41
osx/Scenario Editor/tfileio.h
Normal file
41
osx/Scenario Editor/tfileio.h
Normal file
@@ -0,0 +1,41 @@
|
||||
void init_directories();
|
||||
void save_scenario();
|
||||
void load_scenario();
|
||||
void augment_terrain(location to_create);
|
||||
void load_outdoors(location which_out,short mode);
|
||||
void load_town(short which_town);
|
||||
void import_town(short which_town);
|
||||
void create_basic_scenario();
|
||||
void make_new_scenario(Str255 file_name,short out_width,short out_height,short making_warriors_grove,
|
||||
short use_grass);
|
||||
|
||||
void oops_error(short error);
|
||||
short init_data(short flag);
|
||||
short town_s(short flag);
|
||||
short out_s(short flag);
|
||||
short str_size_1(short flag);
|
||||
short str_size_2(short flag);
|
||||
short str_size_3(short flag);
|
||||
short get_buf_ptr(short flag);
|
||||
Boolean check_p (short pword);
|
||||
Boolean check_p2 (short pword);
|
||||
Boolean check_p3 (short pword);
|
||||
void reset_pwd();
|
||||
void start_data_dump();
|
||||
Boolean import_check_p (short pword);
|
||||
void scen_text_dump();
|
||||
|
||||
void port_talk_nodes();
|
||||
void port_town();
|
||||
void port_t_d();
|
||||
void port_scenario();
|
||||
void port_item_list();
|
||||
void port_out(outdoor_record_type *out);
|
||||
void flip_spec_node(special_node_type *spec);
|
||||
void flip_short(short *s);
|
||||
void flip_rect(Rect *s);
|
||||
void port_dummy_talk_nodes();
|
||||
void port_dummy_t_d(short size,char *buffer);
|
||||
void port_dummy_town();
|
||||
void load_spec_graphics();
|
||||
|
||||
1863
osx/Scenario Editor/townout.c
Normal file
1863
osx/Scenario Editor/townout.c
Normal file
File diff suppressed because it is too large
Load Diff
62
osx/Scenario Editor/townout.h
Normal file
62
osx/Scenario Editor/townout.h
Normal file
@@ -0,0 +1,62 @@
|
||||
void init_town(short size);
|
||||
void init_out();
|
||||
void edit_placed_monst(short which_m);
|
||||
void edit_placed_monst_event_filter (short item_hit);
|
||||
Boolean get_placed_monst_in_dlog();
|
||||
void put_placed_monst_in_dlog();
|
||||
creature_start_type edit_placed_monst_adv(creature_start_type monst_record);
|
||||
void edit_placed_monst_adv_event_filter (short item_hit);
|
||||
Boolean get_placed_monst_adv_in_dlog();
|
||||
void put_placed_monst_adv_in_dlog();
|
||||
void edit_sign(short which_sign,short picture);
|
||||
void edit_sign_event_filter (short item_hit);
|
||||
Boolean save_out_strs();
|
||||
void put_out_strs_in_dlog();
|
||||
void edit_out_strs_event_filter (short item_hit);
|
||||
void edit_out_strs();
|
||||
Boolean save_town_strs();
|
||||
void put_town_strs_in_dlog();
|
||||
void edit_town_strs_event_filter (short item_hit);
|
||||
void edit_town_strs();
|
||||
void pick_town_num_event_filter (short item_hit);
|
||||
short pick_town_num(short which_dlog,short def);
|
||||
void change_ter(short *change_from,short *change_to,short *chance);
|
||||
void change_ter_event_filter (short item_hit);
|
||||
void edit_out_wand(short mode);
|
||||
void edit_out_wand_event_filter (short item_hit);
|
||||
Boolean get_out_wand_in_dlog();
|
||||
void put_out_wand_in_dlog();
|
||||
void outdoor_details_event_filter (short item_hit);
|
||||
void outdoor_details();
|
||||
void edit_town_details();
|
||||
void edit_town_details_event_filter (short item_hit);
|
||||
void put_town_details_in_dlog();
|
||||
Boolean save_town_details();
|
||||
void edit_town_events();
|
||||
void edit_town_events_event_filter (short item_hit);
|
||||
void put_town_events_in_dlog();
|
||||
Boolean save_town_events();
|
||||
void edit_advanced_town();
|
||||
void edit_advanced_town_event_filter (short item_hit);
|
||||
void put_advanced_town_in_dlog();
|
||||
Boolean save_advanced_town();
|
||||
void edit_basic_dlog(short which_node);
|
||||
void edit_basic_dlog_event_filter (short item_hit);
|
||||
void put_basic_dlog_in_dlog();
|
||||
Boolean save_basic_dlog();
|
||||
void edit_talk_node(short which_node,short parent_num);
|
||||
void edit_talk_node_event_filter (short item_hit);
|
||||
void put_talk_node_in_dlog();
|
||||
Boolean save_talk_node();
|
||||
void pick_out_event_filter (short item_hit);
|
||||
short pick_out(location default_loc);
|
||||
void pick_import_town_event_filter (short item_hit);
|
||||
short pick_import_town(short which_dlog,short def);
|
||||
Boolean new_town(short which_town);
|
||||
void new_town_event_filter (short item_hit);
|
||||
void edit_placed_item_event_filter (short item_hit);
|
||||
void edit_placed_item(short which_i);
|
||||
|
||||
void delete_last_town();
|
||||
void edit_town_wand_event_filter (short item_hit);
|
||||
void edit_town_wand();
|
||||
Reference in New Issue
Block a user