wpdev-commits Mailing List for Wolfpack Emu (Page 198)
Brought to you by:
rip,
thiagocorrea
You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(14) |
Aug
(121) |
Sep
(256) |
Oct
(59) |
Nov
(73) |
Dec
(120) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(259) |
Feb
(381) |
Mar
(501) |
Apr
(355) |
May
(427) |
Jun
(270) |
Jul
(394) |
Aug
(412) |
Sep
(724) |
Oct
(578) |
Nov
(65) |
Dec
|
|
From: <dar...@us...> - 2003-08-27 00:50:12
|
Update of /cvsroot/wpdev/wolfpack In directory sc8-pr-cvs1:/tmp/cvs-serv6189/src Modified Files: res.rc Log Message: Implemented SQLite support. driver=sqlite database name is the filename Index: res.rc =================================================================== RCS file: /cvsroot/wpdev/wolfpack/res.rc,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** res.rc 26 Aug 2003 15:36:44 -0000 1.13 --- res.rc 27 Aug 2003 00:50:08 -0000 1.14 *************** *** 1,5 **** //Microsoft Developer Studio generated resource script. // - #include "resrc1.h" #define APSTUDIO_READONLY_SYMBOLS --- 1,4 ---- |
|
From: <dar...@us...> - 2003-08-27 00:40:27
|
Update of /cvsroot/wpdev/wolfpack In directory sc8-pr-cvs1:/tmp/cvs-serv4990/src Modified Files: wolfpack.pro Log Message: Implemented SQLite support. driver=sqlite database name is the filename Index: wolfpack.pro =================================================================== RCS file: /cvsroot/wpdev/wolfpack/wolfpack.pro,v retrieving revision 1.140 retrieving revision 1.141 diff -C2 -d -r1.140 -r1.141 *** wolfpack.pro 26 Aug 2003 15:42:07 -0000 1.140 --- wolfpack.pro 27 Aug 2003 00:40:22 -0000 1.141 *************** *** 127,131 **** ai_vendors.cpp \ basechar.cpp \ - basechar_flatstore.cpp \ basics.cpp \ boats.cpp \ --- 127,130 ---- *************** *** 148,152 **** house.cpp \ iserialization.cpp \ - item_flatstore.cpp \ itemid.cpp \ items.cpp \ --- 147,150 ---- *************** *** 158,162 **** network.cpp \ npc.cpp \ - npc_flatstore.cpp \ encryption.cpp \ pfactory.cpp \ --- 156,159 ---- *************** *** 165,169 **** preferences.cpp \ player.cpp \ - player_flatstore.cpp \ pythonscript.cpp \ resources.cpp \ --- 162,165 ---- *************** *** 186,190 **** Trade.cpp \ uobject.cpp \ - uobject_flatstore.cpp \ utilsys.cpp \ wolfpack.cpp \ --- 182,185 ---- |
|
From: <dar...@us...> - 2003-08-26 15:42:11
|
Update of /cvsroot/wpdev/wolfpack In directory sc8-pr-cvs1:/tmp/cvs-serv9550/src Modified Files: wolfpack.pro Log Message: Implemented SQLite support. driver=sqlite database name is the filename Index: wolfpack.pro =================================================================== RCS file: /cvsroot/wpdev/wolfpack/wolfpack.pro,v retrieving revision 1.139 retrieving revision 1.140 diff -C2 -d -r1.139 -r1.140 *** wolfpack.pro 26 Jul 2003 01:10:55 -0000 1.139 --- wolfpack.pro 26 Aug 2003 15:42:07 -0000 1.140 *************** *** 229,241 **** HEADERS += python/content.h ! # Flatstore Module ! HEADERS += flatstore/exceptions.h \ ! flatstore/flatstore.h \ ! flatstore/flatstore_keys.h \ ! flatstore/version.h ! ! unix:SOURCES += flatstore/exceptions.cpp \ ! flatstore/flatstore.cpp \ ! flatstore/flatstore_c.cpp INTERFACES = --- 229,272 ---- HEADERS += python/content.h ! # SQLite Sources ! SOURCES += sqlite/attach.c \ ! sqlite/auth.c \ ! sqlite/btree.c \ ! sqlite/btree_rb.c \ ! sqlite/build.c \ ! sqlite/copy.c \ ! sqlite/delete.c \ ! sqlite/expr.c \ ! sqlite/func.c \ ! sqlite/hash.c \ ! sqlite/insert.c \ ! sqlite/main.c \ ! sqlite/opcodes.c \ ! sqlite/os.c \ ! sqlite/pager.c \ ! sqlite/parse.c \ ! sqlite/pragma.c \ ! sqlite/printf.c \ ! sqlite/random.c \ ! sqlite/select.c \ ! sqlite/table.c \ ! sqlite/tokenize.c \ ! sqlite/trigger.c \ ! sqlite/update.c \ ! sqlite/util.c \ ! sqlite/vacuum.c \ ! sqlite/vdbe.c \ ! sqlite/where.c ! ! HEADERS += sqlite/btree.h \ ! sqlite/config.h \ ! sqlite/hash.h \ ! sqlite/opcodes.h \ ! sqlite/os.h \ ! sqlite/pager.h \ ! sqlite/parse.h \ ! sqlite/sqlite.h \ ! sqlite/sqliteInt.h \ ! sqlite/vdbe.h INTERFACES = |
Update of /cvsroot/wpdev/wolfpack
In directory sc8-pr-cvs1:/tmp/cvs-serv8708/src
Modified Files:
books.cpp customtags.cpp pagesystem.h persistentbroker.cpp
persistentbroker.h res.rc world.cpp
Log Message:
Implemented SQLite support.
driver=sqlite
database name is the filename
Index: books.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/books.cpp,v
retrieving revision 1.42
retrieving revision 1.43
diff -C2 -d -r1.42 -r1.43
*** books.cpp 26 Aug 2003 15:01:05 -0000 1.42
--- books.cpp 26 Aug 2003 15:36:44 -0000 1.43
***************
*** 142,146 ****
for ( QStringList::iterator it = content_.begin(); it != content_.end(); ++it )
{
! persistentBroker->executeQuery( QString( "INSERT INTO bookpages SET serial = '%1', page = '%2', text = '%3'" ).arg( serial() ).arg( i ).arg( __escapeReservedCharacters( *it ) ) );
++i;
}
--- 142,146 ----
for ( QStringList::iterator it = content_.begin(); it != content_.end(); ++it )
{
! persistentBroker->executeQuery( QString( "INSERT INTO bookpages SET serial = '%1', page = '%2', text = '%3'" ).arg( serial() ).arg( i ).arg( persistentBroker->quoteString( *it ) ) );
++i;
}
Index: customtags.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/customtags.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** customtags.cpp 20 Jul 2003 00:04:51 -0000 1.23
--- customtags.cpp 26 Aug 2003 15:36:44 -0000 1.24
***************
*** 696,700 ****
QString name = it.key();
! persistentBroker->executeQuery( QString( "INSERT INTO tags SET serial = '%1', type = '%2', value = '%3', name = '%4'" ).arg( key ).arg( type ).arg( __escapeReservedCharacters( value ) ).arg( __escapeReservedCharacters( name ) ) );
}
if ( tags_.count() > 6 )
--- 696,700 ----
QString name = it.key();
! persistentBroker->executeQuery( QString( "INSERT INTO tags SET serial = '%1', type = '%2', value = '%3', name = '%4'" ).arg( key ).arg( type ).arg( persistentBroker->quoteString( value ) ).arg( persistentBroker->quoteString( name ) ) );
}
if ( tags_.count() > 6 )
Index: pagesystem.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/pagesystem.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** pagesystem.h 19 Jan 2003 16:09:00 -0000 1.9
--- pagesystem.h 26 Aug 2003 15:36:44 -0000 1.10
***************
*** 103,107 ****
QString sql( "INSERT INTO pages SET charserial = '%1', pagetype = '%2', pagetime = '%3', pagepos = '%4', content = '%5', category = '%6', pageorder = '%7'" );
! sql = sql.arg( page->charSerial() ).arg( page->pageType() ).arg( __escapeReservedCharacters( page->pageTime() ) ).arg( QString( "%1,%2,%3,%4" ).arg( page->pagePos().x ).arg( page->pagePos().y ).arg( page->pagePos().z ).arg( page->pagePos().map ) ).arg( __escapeReservedCharacters( page->content() ) ).arg( page->pageCategory() ).arg( i++ );
persistentBroker->executeQuery( sql );
--- 103,107 ----
QString sql( "INSERT INTO pages SET charserial = '%1', pagetype = '%2', pagetime = '%3', pagepos = '%4', content = '%5', category = '%6', pageorder = '%7'" );
! sql = sql.arg( page->charSerial() ).arg( page->pageType() ).arg( persistentBroker->quoteString( page->pageTime() ) ).arg( QString( "%1,%2,%3,%4" ).arg( page->pagePos().x ).arg( page->pagePos().y ).arg( page->pagePos().z ).arg( page->pagePos().map ) ).arg( persistentBroker->quoteString( page->content() ) ).arg( page->pageCategory() ).arg( i++ );
persistentBroker->executeQuery( sql );
Index: persistentbroker.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/persistentbroker.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** persistentbroker.cpp 26 Aug 2003 15:01:05 -0000 1.14
--- persistentbroker.cpp 26 Aug 2003 15:36:44 -0000 1.15
***************
*** 60,69 ****
--- 60,76 ----
if( driver == "sqlite" )
+ {
connection = new cSQLiteDriver();
+ sqlite = true;
+ }
else
+ {
connection = new cDBDriver;
+ sqlite = false;
+ }
if ( !connection )
return false;
+
return true;
}
***************
*** 83,86 ****
--- 90,97 ----
return false;
+ // Disable fsynch for sqlite
+ if( sqlite )
+ connection->exec( "PRAGMA synchronous = OFF;" );
+
return true;
}
***************
*** 94,104 ****
bool PersistentBroker::saveObject( PersistentObject* object )
{
! /* static const bool hasTransaction = connection->driver()->hasFeature(QSqlDriver::Transactions);
! if ( hasTransaction )
! connection->transaction();*/
! object->save();
! /* if ( hasTransaction )
! connection->commit();*/
return true;
--- 105,127 ----
bool PersistentBroker::saveObject( PersistentObject* object )
{
! // Start Transaction
! if( sqlite )
! connection->exec( "BEGIN TRANSACTION;" );
! try
! {
! object->save();
! }
! catch( ... )
! {
! // Rollback
! if( sqlite )
! connection->exec( "ROLLBACK TRANSACTION;" );
! throw;
! }
!
! // Commit
! if( sqlite )
! connection->exec( "COMMIT TRANSACTION;" );
return true;
Index: persistentbroker.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/persistentbroker.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** persistentbroker.h 26 Aug 2003 15:01:05 -0000 1.17
--- persistentbroker.h 26 Aug 2003 15:36:44 -0000 1.18
***************
*** 51,54 ****
--- 51,55 ----
{
cDBDriver* connection;
+ bool sqlite;
std::vector< stDeleteItem > deleteQueue;
***************
*** 66,69 ****
--- 67,77 ----
void clearDeleteQueue();
void addToDeleteQueue( const QString &tables, const QString &conditions );
+ QString quoteString( const QString &d )
+ {
+ if( sqlite )
+ return QString(d).replace( QRegExp("'"), "''" );
+ else
+ return QString(d).replace( QRegExp("'"), "\\'" );
+ }
void lockTable( const QString& table ) const;
***************
*** 76,88 ****
};
- // Pseudo helper functions.
- // We should consider inline templates in future.
-
- inline QString __escapeReservedCharacters( const QString& d )
- {
- //return QString(d).replace( QRegExp("'"), "\\'" );
- return QString(d).replace( QRegExp("'"), "''" );
- }
-
#define savePersistentIntValue(field, value) \
SqlStatement += QString("%1='%2',").arg(field).arg(value)
--- 84,87 ----
***************
*** 90,94 ****
#define savePersistentStrValue(field, value) \
if ( !value.isNull() ) \
! SqlStatement += QString("%1='%2',").arg(field).arg(__escapeReservedCharacters(value))
#define startSaveSqlStatement(table) \
--- 89,93 ----
#define savePersistentStrValue(field, value) \
if ( !value.isNull() ) \
! SqlStatement += QString("%1='%2',").arg(field).arg(persistentBroker->quoteString(value))
#define startSaveSqlStatement(table) \
***************
*** 152,163 ****
// for inserting we use the faster VALUES() method
! #define addField( name, value ) fields.push_back( name ); values.push_back( QString::number( value ) );
! #define addStrField( name, value ) fields.push_back( name ); values.push_back( "'" + ( value.isNull() ? QString( "" ) : __escapeReservedCharacters( value ) ) + "'" );
! #define addCondition( name, value ) conditions.push_back( QString( "`%1` = '%2'" ).arg( name ).arg( value ) );
#define saveFields \
if( isPersistent ) \
! persistentBroker->executeQuery( QString( "UPDATE %1 (%2) VALUES(%3) WHERE %4" ).arg( table ).arg( fields.join( "," ) ).arg( values.join( "," ) ).arg( conditions.join( " AND " ) ) ); \
else \
! persistentBroker->executeQuery( QString( "INSERT INTO %1 (%2) VALUES(%3)" ).arg( table ).arg( fields.join( "," ) ).arg( values.join( "," ) ) );
#endif // __PERSISTENTBROKER_H__
--- 151,183 ----
// for inserting we use the faster VALUES() method
! #define addField( name, value ) \
! if( isPersistent ) \
! fields.push_back( QString( "%1='%2'" ).arg( name ).arg( QString::number( value ) ) ); \
! else \
! { \
! fields.push_back( name ); \
! values.push_back( QString::number( value ) ); \
! }
!
! #define addStrField( name, value ) \
! if( isPersistent ) \
! fields.push_back( QString( "%1='%2'" ).arg( name ).arg( persistentBroker->quoteString( value ) ) ); \
! else \
! { \
! fields.push_back( name ); \
! values.push_back( "'" + ( value.isNull() ? QString( "" ) : persistentBroker->quoteString( value ) ) + "'" ); \
! }
!
! #define addCondition( name, value ) conditions.push_back( QString( "%1 = '%2'" ).arg( name ).arg( value ) );
!
#define saveFields \
if( isPersistent ) \
! { \
! persistentBroker->executeQuery( QString( "UPDATE %1 SET %2 WHERE %3" ).arg( table ).arg( fields.join( "," ) ).arg( conditions.join( " AND " ) ) ); \
! } \
else \
! { \
! persistentBroker->executeQuery( QString( "INSERT INTO %1 (%2) VALUES(%3)" ).arg( table ).arg( fields.join( "," ) ).arg( values.join( "," ) ) ); \
! }
#endif // __PERSISTENTBROKER_H__
Index: res.rc
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/res.rc,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** res.rc 5 May 2003 11:59:13 -0000 1.12
--- res.rc 26 Aug 2003 15:36:44 -0000 1.13
***************
*** 1,6 ****
//Microsoft Developer Studio generated resource script.
//
! #include "resource.h"
VS_VERSION_INFO VERSIONINFO
--- 1,16 ----
//Microsoft Developer Studio generated resource script.
//
! #include "resrc1.h"
+ #define APSTUDIO_READONLY_SYMBOLS
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // Generated from the TEXTINCLUDE 2 resource.
+ //
+ #include "resource.h"
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // Version
+ //
VS_VERSION_INFO VERSIONINFO
***************
*** 41,43 ****
--- 51,60 ----
END
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // Icon
+ //
+
+ // Icon with lowest ID value placed first to ensure application icon
+ // remains consistent on all systems.
IDI_ICON2 ICON DISCARDABLE "icon2.ico"
Index: world.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/world.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** world.cpp 26 Aug 2003 15:05:38 -0000 1.28
--- world.cpp 26 Aug 2003 15:36:44 -0000 1.29
***************
*** 453,457 ****
catch( QString &e )
{
! clConsole.log( LOG_FATAL, QString( "An error occured while connecting to the database: %1\n" ).arg( e ) );
return;
}
--- 453,457 ----
catch( QString &e )
{
! clConsole.log( LOG_FATAL, QString( "Couldn't open the database: %1\n" ).arg( e ) );
return;
}
***************
*** 467,472 ****
p->purgePendingObjects();
! // try
! // {
cItemIterator iItems;
for( P_ITEM pItem = iItems.first(); pItem; pItem = iItems.next() )
--- 467,472 ----
p->purgePendingObjects();
! try
! {
cItemIterator iItems;
for( P_ITEM pItem = iItems.first(); pItem; pItem = iItems.next() )
***************
*** 476,492 ****
for( P_CHAR pChar = iChars.first(); pChar; pChar = iChars.next() )
persistentBroker->saveObject( pChar );
- /* }
- catch( QString& error )
- {
- clConsole.log( LOG_ERROR, error );
}
! catch( ... )
{
clConsole.ChangeColor( WPC_RED );
! clConsole.send( "\nERROR" );
clConsole.ChangeColor( WPC_NORMAL );
! clConsole.send( ": Unhandled Exception\n" );
}
! */
ISerialization *archive = cPluginFactory::serializationArchiver( "xml" );
archive->prepareWritting( "effects" );
--- 476,490 ----
for( P_CHAR pChar = iChars.first(); pChar; pChar = iChars.next() )
persistentBroker->saveObject( pChar );
}
! catch( QString &e )
{
clConsole.ChangeColor( WPC_RED );
! clConsole.send( " Failed" );
clConsole.ChangeColor( WPC_NORMAL );
!
! clConsole.log( LOG_ERROR, "Saving failed: " + e );
! return;
}
!
ISerialization *archive = cPluginFactory::serializationArchiver( "xml" );
archive->prepareWritting( "effects" );
***************
*** 495,501 ****
delete archive;
- // Save The pages
- // cPagesManager::getInstance()->save();
-
// Save the accounts
Accounts::instance()->save();
--- 493,496 ----
***************
*** 510,513 ****
--- 505,509 ----
clConsole.send( QString( " [%1ms]\n" ).arg( getNormalizedTime() - startTime ) );
+
}
|
|
From: <dar...@us...> - 2003-08-26 15:05:44
|
Update of /cvsroot/wpdev/wolfpack
In directory sc8-pr-cvs1:/tmp/cvs-serv3182/src
Modified Files:
srvparams.cpp wolf.dsp wolfpack.cpp world.cpp
Log Message:
Implemented SQLite support.
driver=sqlite
database name is the filename
Index: srvparams.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/srvparams.cpp,v
retrieving revision 1.85
retrieving revision 1.86
diff -C2 -d -r1.85 -r1.86
*** srvparams.cpp 26 Aug 2003 15:01:05 -0000 1.85
--- srvparams.cpp 26 Aug 2003 15:05:38 -0000 1.86
***************
*** 119,123 ****
databaseUsername_ = getString("Database", "username", "", true);
databaseHost_ = getString("Database", "host", "", true);
! databaseHost_ = getString("Database", "driver", "sqlite", true);
databaseName_ = getString("Database", "name", "world.db", true);
--- 119,123 ----
databaseUsername_ = getString("Database", "username", "", true);
databaseHost_ = getString("Database", "host", "", true);
! databaseDriver_ = getString("Database", "driver", "sqlite", true);
databaseName_ = getString("Database", "name", "world.db", true);
Index: wolf.dsp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/wolf.dsp,v
retrieving revision 1.205
retrieving revision 1.206
diff -C2 -d -r1.205 -r1.206
*** wolf.dsp 26 Aug 2003 15:01:06 -0000 1.205
--- wolf.dsp 26 Aug 2003 15:05:38 -0000 1.206
***************
*** 52,56 ****
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
! # ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt312.lib libmysql.lib flatstore.lib /nologo /subsystem:console /map /machine:I386 /nodefaultlib:"libcmt MSVCRTD" /out:"D:\wolfpack\wolfpack.exe" /libpath:"lib\ZThread\lib" /libpath:"lib\Python\lib" /libpath:"lib\bugreport\lib" /libpath:"flatstore\Release" /opt:ref /opt:nowin98
# SUBTRACT LINK32 /pdb:none
--- 52,56 ----
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
! # ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt312.lib libmysql.lib /nologo /subsystem:console /map /machine:I386 /nodefaultlib:"libcmt MSVCRTD" /out:"D:\wolfpack\wolfpack.exe" /libpath:"lib\ZThread\lib" /libpath:"lib\Python\lib" /libpath:"lib\bugreport\lib" /libpath:"flatstore\Release" /opt:ref /opt:nowin98
# SUBTRACT LINK32 /pdb:none
***************
*** 77,81 ****
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt312.lib libmysql.lib flatstore.lib /nologo /version:12.9 /subsystem:console /map /debug /machine:I386 /out:"..\Wolfpack.exe" /pdbtype:sept /libpath:"lib\bugreport\lib" /libpath:"flatstore\Debug"
# SUBTRACT LINK32 /pdb:none
--- 77,81 ----
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt312.lib libmysql.lib /nologo /version:12.9 /subsystem:console /map /debug /machine:I386 /out:"..\Wolfpack.exe" /pdbtype:sept /libpath:"lib\bugreport\lib" /libpath:"flatstore\Debug"
# SUBTRACT LINK32 /pdb:none
***************
*** 115,122 ****
# Begin Source File
- SOURCE=.\basechar_flatstore.cpp
- # End Source File
- # Begin Source File
-
SOURCE=.\basics.cpp
# End Source File
--- 115,118 ----
***************
*** 203,210 ****
# Begin Source File
- SOURCE=.\item_flatstore.cpp
- # End Source File
- # Begin Source File
-
SOURCE=.\itemid.cpp
# End Source File
--- 199,202 ----
***************
*** 243,250 ****
# Begin Source File
- SOURCE=.\npc_flatstore.cpp
- # End Source File
- # Begin Source File
-
SOURCE=.\persistentbroker.cpp
# End Source File
--- 235,238 ----
***************
*** 263,270 ****
# Begin Source File
- SOURCE=.\player_flatstore.cpp
- # End Source File
- # Begin Source File
-
SOURCE=.\preferences.cpp
# End Source File
--- 251,254 ----
***************
*** 356,363 ****
SOURCE=.\uobject.cpp
- # End Source File
- # Begin Source File
-
- SOURCE=.\uobject_flatstore.cpp
# End Source File
# Begin Source File
--- 340,343 ----
Index: wolfpack.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/wolfpack.cpp,v
retrieving revision 1.438
retrieving revision 1.439
diff -C2 -d -r1.438 -r1.439
*** wolfpack.cpp 26 Aug 2003 15:01:06 -0000 1.438
--- wolfpack.cpp 26 Aug 2003 15:05:38 -0000 1.439
***************
*** 711,715 ****
// Try to open our driver
if( !persistentBroker->openDriver( SrvParams->databaseDriver() ) )
! {
exit( -1 );
}
--- 711,715 ----
// Try to open our driver
if( !persistentBroker->openDriver( SrvParams->databaseDriver() ) )
! {
exit( -1 );
}
Index: world.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/world.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -d -r1.27 -r1.28
*** world.cpp 26 Aug 2003 15:01:06 -0000 1.27
--- world.cpp 26 Aug 2003 15:05:38 -0000 1.28
***************
*** 182,194 ****
clConsole.send( "Loading World...\n" );
! try
! {
! persistentBroker->connect( SrvParams->databaseHost(), SrvParams->databaseName(), SrvParams->databaseUsername(), SrvParams->databasePassword() );
! }
! catch( QString &e )
! {
! clConsole.log( LOG_FATAL, QString( "An error occured while connecting to the database: %1\n" ).arg( e ) );
! return;
! }
ISerialization* archive = cPluginFactory::serializationArchiver( "xml" );
--- 182,186 ----
clConsole.send( "Loading World...\n" );
! persistentBroker->connect( SrvParams->databaseHost(), SrvParams->databaseName(), SrvParams->databaseUsername(), SrvParams->databasePassword() );
ISerialization* archive = cPluginFactory::serializationArchiver( "xml" );
|
Update of /cvsroot/wpdev/wolfpack/sqlite
In directory sc8-pr-cvs1:/tmp/cvs-serv2466/src/sqlite
Added Files:
attach.c auth.c btree.c btree.h btree_rb.c build.c config.h
copy.c delete.c expr.c func.c hash.c hash.h insert.c main.c
opcodes.c opcodes.h os.c os.h pager.c pager.h parse.c parse.h
pragma.c printf.c random.c select.c sqlite.h sqliteInt.h
table.c tokenize.c trigger.c update.c util.c vacuum.c vdbe.c
vdbe.h where.c
Log Message:
Implemented SQLite support.
driver=sqlite
database name is the filename
--- NEW FILE: attach.c ---
/*
** 2003 April 6
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
**
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
**
*************************************************************************
** This file contains code used to implement the ATTACH and DETACH commands.
**
** $Id: attach.c,v 1.1 2003/08/26 15:02:43 dark-storm Exp $
*/
#include "sqliteInt.h"
/*
** This routine is called by the parser to process an ATTACH statement:
**
** ATTACH DATABASE filename AS dbname
**
** The pFilename and pDbname arguments are the tokens that define the
** filename and dbname in the ATTACH statement.
*/
void sqliteAttach(Parse *pParse, Token *pFilename, Token *pDbname){
Db *aNew;
int rc, i;
char *zFile, *zName;
sqlite *db;
if( pParse->explain ) return;
db = pParse->db;
if( db->file_format<4 ){
sqliteErrorMsg(pParse, "cannot attach auxiliary databases to an "
"older format master database", 0);
pParse->rc = SQLITE_ERROR;
return;
}
if( db->nDb>=MAX_ATTACHED+2 ){
sqliteErrorMsg(pParse, "too many attached databases - max %d",
MAX_ATTACHED);
pParse->rc = SQLITE_ERROR;
return;
}
zFile = 0;
sqliteSetNString(&zFile, pFilename->z, pFilename->n, 0);
if( zFile==0 ) return;
sqliteDequote(zFile);
#ifndef SQLITE_OMIT_AUTHORIZATION
if( sqliteAuthCheck(pParse, SQLITE_ATTACH, zFile, 0, 0)!=SQLITE_OK ){
sqliteFree(zFile);
return;
}
#endif /* SQLITE_OMIT_AUTHORIZATION */
zName = 0;
sqliteSetNString(&zName, pDbname->z, pDbname->n, 0);
if( zName==0 ) return;
sqliteDequote(zName);
for(i=0; i<db->nDb; i++){
if( db->aDb[i].zName && sqliteStrICmp(db->aDb[i].zName, zName)==0 ){
sqliteErrorMsg(pParse, "database %z is already in use", zName);
pParse->rc = SQLITE_ERROR;
sqliteFree(zFile);
return;
}
}
if( db->aDb==db->aDbStatic ){
aNew = sqliteMalloc( sizeof(db->aDb[0])*3 );
if( aNew==0 ) return;
memcpy(aNew, db->aDb, sizeof(db->aDb[0])*2);
}else{
aNew = sqliteRealloc(db->aDb, sizeof(db->aDb[0])*(db->nDb+1) );
if( aNew==0 ) return;
}
db->aDb = aNew;
aNew = &db->aDb[db->nDb++];
memset(aNew, 0, sizeof(*aNew));
sqliteHashInit(&aNew->tblHash, SQLITE_HASH_STRING, 0);
sqliteHashInit(&aNew->idxHash, SQLITE_HASH_STRING, 0);
sqliteHashInit(&aNew->trigHash, SQLITE_HASH_STRING, 0);
sqliteHashInit(&aNew->aFKey, SQLITE_HASH_STRING, 1);
aNew->zName = zName;
rc = sqliteBtreeFactory(db, zFile, 0, MAX_PAGES, &aNew->pBt);
if( rc ){
sqliteErrorMsg(pParse, "unable to open database: %s", zFile);
}
sqliteFree(zFile);
db->flags &= ~SQLITE_Initialized;
if( pParse->nErr ) return;
rc = sqliteInit(pParse->db, &pParse->zErrMsg);
if( rc ){
sqliteResetInternalSchema(db, 0);
pParse->nErr++;
pParse->rc = SQLITE_ERROR;
}
}
/*
** This routine is called by the parser to process a DETACH statement:
**
** DETACH DATABASE dbname
**
** The pDbname argument is the name of the database in the DETACH statement.
*/
void sqliteDetach(Parse *pParse, Token *pDbname){
int i;
sqlite *db;
if( pParse->explain ) return;
db = pParse->db;
for(i=0; i<db->nDb; i++){
if( db->aDb[i].pBt==0 || db->aDb[i].zName==0 ) continue;
if( strlen(db->aDb[i].zName)!=pDbname->n ) continue;
if( sqliteStrNICmp(db->aDb[i].zName, pDbname->z, pDbname->n)==0 ) break;
}
if( i>=db->nDb ){
sqliteErrorMsg(pParse, "no such database: %T", pDbname);
return;
}
if( i<2 ){
sqliteErrorMsg(pParse, "cannot detach database %T", pDbname);
return;
}
#ifndef SQLITE_OMIT_AUTHORIZATION
if( sqliteAuthCheck(pParse,SQLITE_DETACH,db->aDb[i].zName,0,0)!=SQLITE_OK ){
return;
}
#endif /* SQLITE_OMIT_AUTHORIZATION */
sqliteBtreeClose(db->aDb[i].pBt);
db->aDb[i].pBt = 0;
sqliteFree(db->aDb[i].zName);
sqliteResetInternalSchema(db, i);
db->nDb--;
if( i<db->nDb ){
db->aDb[i] = db->aDb[db->nDb];
memset(&db->aDb[db->nDb], 0, sizeof(db->aDb[0]));
sqliteResetInternalSchema(db, i);
}
}
/*
** Initialize a DbFixer structure. This routine must be called prior
** to passing the structure to one of the sqliteFixAAAA() routines below.
**
** The return value indicates whether or not fixation is required. TRUE
** means we do need to fix the database references, FALSE means we do not.
*/
int sqliteFixInit(
DbFixer *pFix, /* The fixer to be initialized */
Parse *pParse, /* Error messages will be written here */
int iDb, /* This is the database that must must be used */
const char *zType, /* "view", "trigger", or "index" */
const Token *pName /* Name of the view, trigger, or index */
){
sqlite *db;
if( iDb<0 || iDb==1 ) return 0;
db = pParse->db;
assert( db->nDb>iDb );
pFix->pParse = pParse;
pFix->zDb = db->aDb[iDb].zName;
pFix->zType = zType;
pFix->pName = pName;
return 1;
}
/*
** The following set of routines walk through the parse tree and assign
** a specific database to all table references where the database name
** was left unspecified in the original SQL statement. The pFix structure
** must have been initialized by a prior call to sqliteFixInit().
**
** These routines are used to make sure that an index, trigger, or
** view in one database does not refer to objects in a different database.
** (Exception: indices, triggers, and views in the TEMP database are
** allowed to refer to anything.) If a reference is explicitly made
** to an object in a different database, an error message is added to
** pParse->zErrMsg and these routines return non-zero. If everything
** checks out, these routines return 0.
*/
int sqliteFixSrcList(
DbFixer *pFix, /* Context of the fixation */
SrcList *pList /* The Source list to check and modify */
){
int i;
const char *zDb;
if( pList==0 ) return 0;
zDb = pFix->zDb;
for(i=0; i<pList->nSrc; i++){
if( pList->a[i].zDatabase==0 ){
pList->a[i].zDatabase = sqliteStrDup(zDb);
}else if( sqliteStrICmp(pList->a[i].zDatabase,zDb)!=0 ){
sqliteErrorMsg(pFix->pParse,
"%s %z cannot reference objects in database %s",
pFix->zType, sqliteStrNDup(pFix->pName->z, pFix->pName->n),
pList->a[i].zDatabase);
return 1;
}
if( sqliteFixSelect(pFix, pList->a[i].pSelect) ) return 1;
if( sqliteFixExpr(pFix, pList->a[i].pOn) ) return 1;
}
return 0;
}
int sqliteFixSelect(
DbFixer *pFix, /* Context of the fixation */
Select *pSelect /* The SELECT statement to be fixed to one database */
){
while( pSelect ){
if( sqliteFixExprList(pFix, pSelect->pEList) ){
return 1;
}
if( sqliteFixSrcList(pFix, pSelect->pSrc) ){
return 1;
}
if( sqliteFixExpr(pFix, pSelect->pWhere) ){
return 1;
}
if( sqliteFixExpr(pFix, pSelect->pHaving) ){
return 1;
}
pSelect = pSelect->pPrior;
}
return 0;
}
int sqliteFixExpr(
DbFixer *pFix, /* Context of the fixation */
Expr *pExpr /* The expression to be fixed to one database */
){
while( pExpr ){
if( sqliteFixSelect(pFix, pExpr->pSelect) ){
return 1;
}
if( sqliteFixExprList(pFix, pExpr->pList) ){
return 1;
}
if( sqliteFixExpr(pFix, pExpr->pRight) ){
return 1;
}
pExpr = pExpr->pLeft;
}
return 0;
}
int sqliteFixExprList(
DbFixer *pFix, /* Context of the fixation */
ExprList *pList /* The expression to be fixed to one database */
){
int i;
if( pList==0 ) return 0;
for(i=0; i<pList->nExpr; i++){
if( sqliteFixExpr(pFix, pList->a[i].pExpr) ){
return 1;
}
}
return 0;
}
int sqliteFixTriggerStep(
DbFixer *pFix, /* Context of the fixation */
TriggerStep *pStep /* The trigger step be fixed to one database */
){
while( pStep ){
if( sqliteFixSelect(pFix, pStep->pSelect) ){
return 1;
}
if( sqliteFixExpr(pFix, pStep->pWhere) ){
return 1;
}
if( sqliteFixExprList(pFix, pStep->pExprList) ){
return 1;
}
pStep = pStep->pNext;
}
return 0;
}
--- NEW FILE: auth.c ---
/*
** 2003 January 11
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
**
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
**
*************************************************************************
** This file contains code used to implement the sqlite_set_authorizer()
** API. This facility is an optional feature of the library. Embedded
** systems that do not need this facility may omit it by recompiling
** the library with -DSQLITE_OMIT_AUTHORIZATION=1
**
** $Id: auth.c,v 1.1 2003/08/26 15:02:43 dark-storm Exp $
*/
#include "sqliteInt.h"
/*
** All of the code in this file may be omitted by defining a single
** macro.
*/
#ifndef SQLITE_OMIT_AUTHORIZATION
/*
** Set or clear the access authorization function.
**
** The access authorization function is be called during the compilation
** phase to verify that the user has read and/or write access permission on
** various fields of the database. The first argument to the auth function
** is a copy of the 3rd argument to this routine. The second argument
** to the auth function is one of these constants:
**
** SQLITE_COPY
** SQLITE_CREATE_INDEX
** SQLITE_CREATE_TABLE
** SQLITE_CREATE_TEMP_INDEX
** SQLITE_CREATE_TEMP_TABLE
** SQLITE_CREATE_TEMP_TRIGGER
** SQLITE_CREATE_TEMP_VIEW
** SQLITE_CREATE_TRIGGER
** SQLITE_CREATE_VIEW
** SQLITE_DELETE
** SQLITE_DROP_INDEX
** SQLITE_DROP_TABLE
** SQLITE_DROP_TEMP_INDEX
** SQLITE_DROP_TEMP_TABLE
** SQLITE_DROP_TEMP_TRIGGER
** SQLITE_DROP_TEMP_VIEW
** SQLITE_DROP_TRIGGER
** SQLITE_DROP_VIEW
** SQLITE_INSERT
** SQLITE_PRAGMA
** SQLITE_READ
** SQLITE_SELECT
** SQLITE_TRANSACTION
** SQLITE_UPDATE
**
** The third and fourth arguments to the auth function are the name of
** the table and the column that are being accessed. The auth function
** should return either SQLITE_OK, SQLITE_DENY, or SQLITE_IGNORE. If
** SQLITE_OK is returned, it means that access is allowed. SQLITE_DENY
** means that the SQL statement will never-run - the sqlite_exec() call
** will return with an error. SQLITE_IGNORE means that the SQL statement
** should run but attempts to read the specified column will return NULL
** and attempts to write the column will be ignored.
**
** Setting the auth function to NULL disables this hook. The default
** setting of the auth function is NULL.
*/
int sqlite_set_authorizer(
sqlite *db,
int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
void *pArg
){
db->xAuth = xAuth;
db->pAuthArg = pArg;
return SQLITE_OK;
}
/*
** Write an error message into pParse->zErrMsg that explains that the
** user-supplied authorization function returned an illegal value.
*/
static void sqliteAuthBadReturnCode(Parse *pParse, int rc){
char zBuf[20];
sprintf(zBuf, "(%d)", rc);
sqliteSetString(&pParse->zErrMsg, "illegal return value ", zBuf,
" from the authorization function - should be SQLITE_OK, "
"SQLITE_IGNORE, or SQLITE_DENY", 0);
pParse->nErr++;
pParse->rc = SQLITE_MISUSE;
}
/*
** The pExpr should be a TK_COLUMN expression. The table referred to
** is in pTabList or else it is the NEW or OLD table of a trigger.
** Check to see if it is OK to read this particular column.
**
** If the auth function returns SQLITE_IGNORE, change the TK_COLUMN
** instruction into a TK_NULL. If the auth function returns SQLITE_DENY,
** then generate an error.
*/
void sqliteAuthRead(
Parse *pParse, /* The parser context */
Expr *pExpr, /* The expression to check authorization on */
SrcList *pTabList /* All table that pExpr might refer to */
){
sqlite *db = pParse->db;
int rc;
Table *pTab; /* The table being read */
const char *zCol; /* Name of the column of the table */
int iSrc; /* Index in pTabList->a[] of table being read */
const char *zDBase; /* Name of database being accessed */
if( db->xAuth==0 ) return;
assert( pExpr->op==TK_COLUMN );
for(iSrc=0; iSrc<pTabList->nSrc; iSrc++){
if( pExpr->iTable==pTabList->a[iSrc].iCursor ) break;
}
if( iSrc>=0 && iSrc<pTabList->nSrc ){
pTab = pTabList->a[iSrc].pTab;
}else{
/* This must be an attempt to read the NEW or OLD pseudo-tables
** of a trigger.
*/
TriggerStack *pStack; /* The stack of current triggers */
pStack = pParse->trigStack;
assert( pStack!=0 );
assert( pExpr->iTable==pStack->newIdx || pExpr->iTable==pStack->oldIdx );
pTab = pStack->pTab;
}
if( pTab==0 ) return;
if( pExpr->iColumn>=0 ){
assert( pExpr->iColumn<pTab->nCol );
zCol = pTab->aCol[pExpr->iColumn].zName;
}else if( pTab->iPKey>=0 ){
assert( pTab->iPKey<pTab->nCol );
zCol = pTab->aCol[pTab->iPKey].zName;
}else{
zCol = "ROWID";
}
assert( pExpr->iDb<db->nDb );
zDBase = db->aDb[pExpr->iDb].zName;
rc = db->xAuth(db->pAuthArg, SQLITE_READ, pTab->zName, zCol, zDBase,
pParse->zAuthContext);
if( rc==SQLITE_IGNORE ){
pExpr->op = TK_NULL;
}else if( rc==SQLITE_DENY ){
if( db->nDb>2 || pExpr->iDb!=0 ){
sqliteSetString(&pParse->zErrMsg,"access to ", zDBase, ".",
pTab->zName, ".", zCol, " is prohibited", 0);
}else{
sqliteSetString(&pParse->zErrMsg,"access to ", pTab->zName, ".",
zCol, " is prohibited", 0);
}
pParse->nErr++;
pParse->rc = SQLITE_AUTH;
}else if( rc!=SQLITE_OK ){
sqliteAuthBadReturnCode(pParse, rc);
}
}
/*
** Do an authorization check using the code and arguments given. Return
** either SQLITE_OK (zero) or SQLITE_IGNORE or SQLITE_DENY. If SQLITE_DENY
** is returned, then the error count and error message in pParse are
** modified appropriately.
*/
int sqliteAuthCheck(
Parse *pParse,
int code,
const char *zArg1,
const char *zArg2,
const char *zArg3
){
sqlite *db = pParse->db;
int rc;
if( db->xAuth==0 ){
return SQLITE_OK;
}
rc = db->xAuth(db->pAuthArg, code, zArg1, zArg2, zArg3, pParse->zAuthContext);
if( rc==SQLITE_DENY ){
sqliteSetString(&pParse->zErrMsg, "not authorized", 0);
pParse->rc = SQLITE_AUTH;
pParse->nErr++;
}else if( rc!=SQLITE_OK && rc!=SQLITE_IGNORE ){
rc = SQLITE_DENY;
sqliteAuthBadReturnCode(pParse, rc);
}
return rc;
}
/*
** Push an authorization context. After this routine is called, the
** zArg3 argument to authorization callbacks will be zContext until
** popped. Or if pParse==0, this routine is a no-op.
*/
void sqliteAuthContextPush(
Parse *pParse,
AuthContext *pContext,
const char *zContext
){
pContext->pParse = pParse;
if( pParse ){
pContext->zAuthContext = pParse->zAuthContext;
pParse->zAuthContext = zContext;
}
}
/*
** Pop an authorization context that was previously pushed
** by sqliteAuthContextPush
*/
void sqliteAuthContextPop(AuthContext *pContext){
if( pContext->pParse ){
pContext->pParse->zAuthContext = pContext->zAuthContext;
pContext->pParse = 0;
}
}
#endif /* SQLITE_OMIT_AUTHORIZATION */
--- NEW FILE: btree.c ---
/*
** 2001 September 15
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
**
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
**
*************************************************************************
** $Id: btree.c,v 1.1 2003/08/26 15:02:43 dark-storm Exp $
**
** This file implements a external (disk-based) database using BTrees.
** For a detailed discussion of BTrees, refer to
**
** Donald E. Knuth, THE ART OF COMPUTER PROGRAMMING, Volume 3:
** "Sorting And Searching", pages 473-480. Addison-Wesley
** Publishing Company, Reading, Massachusetts.
[...3546 lines suppressed...]
#endif
};
static BtCursorOps sqliteBtreeCursorOps = {
fileBtreeMoveto,
fileBtreeDelete,
fileBtreeInsert,
fileBtreeFirst,
fileBtreeLast,
fileBtreeNext,
fileBtreePrevious,
fileBtreeKeySize,
fileBtreeKey,
fileBtreeKeyCompare,
fileBtreeDataSize,
fileBtreeData,
fileBtreeCloseCursor,
#ifdef SQLITE_TEST
fileBtreeCursorDump,
#endif
};
--- NEW FILE: btree.h ---
/*
** 2001 September 15
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
**
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
**
*************************************************************************
** This header file defines the interface that the sqlite B-Tree file
** subsystem. See comments in the source code for a detailed description
** of what each interface routine does.
**
** @(#) $Id: btree.h,v 1.1 2003/08/26 15:02:43 dark-storm Exp $
*/
#ifndef _BTREE_H_
#define _BTREE_H_
/*
** Forward declarations of structure
*/
typedef struct Btree Btree;
typedef struct BtCursor BtCursor;
typedef struct BtOps BtOps;
typedef struct BtCursorOps BtCursorOps;
/*
** An instance of the following structure contains pointers to all
** methods against an open BTree. Alternative BTree implementations
** (examples: file based versus in-memory) can be created by substituting
** different methods. Users of the BTree cannot tell the difference.
**
** In C++ we could do this by defining a virtual base class and then
** creating subclasses for each different implementation. But this is
** C not C++ so we have to be a little more explicit.
*/
struct BtOps {
int (*Close)(Btree*);
int (*SetCacheSize)(Btree*, int);
int (*SetSafetyLevel)(Btree*, int);
int (*BeginTrans)(Btree*);
int (*Commit)(Btree*);
int (*Rollback)(Btree*);
int (*BeginCkpt)(Btree*);
int (*CommitCkpt)(Btree*);
int (*RollbackCkpt)(Btree*);
int (*CreateTable)(Btree*, int*);
int (*CreateIndex)(Btree*, int*);
int (*DropTable)(Btree*, int);
int (*ClearTable)(Btree*, int);
int (*Cursor)(Btree*, int iTable, int wrFlag, BtCursor **ppCur);
int (*GetMeta)(Btree*, int*);
int (*UpdateMeta)(Btree*, int*);
char *(*IntegrityCheck)(Btree*, int*, int);
const char *(*GetFilename)(Btree*);
int (*Copyfile)(Btree*,Btree*);
#ifdef SQLITE_TEST
int (*PageDump)(Btree*, int, int);
struct Pager *(*Pager)(Btree*);
#endif
};
/*
** An instance of this structure defines all of the methods that can
** be executed against a cursor.
*/
struct BtCursorOps {
int (*Moveto)(BtCursor*, const void *pKey, int nKey, int *pRes);
int (*Delete)(BtCursor*);
int (*Insert)(BtCursor*, const void *pKey, int nKey,
const void *pData, int nData);
int (*First)(BtCursor*, int *pRes);
int (*Last)(BtCursor*, int *pRes);
int (*Next)(BtCursor*, int *pRes);
int (*Previous)(BtCursor*, int *pRes);
int (*KeySize)(BtCursor*, int *pSize);
int (*Key)(BtCursor*, int offset, int amt, char *zBuf);
int (*KeyCompare)(BtCursor*, const void *pKey, int nKey,
int nIgnore, int *pRes);
int (*DataSize)(BtCursor*, int *pSize);
int (*Data)(BtCursor*, int offset, int amt, char *zBuf);
int (*CloseCursor)(BtCursor*);
#ifdef SQLITE_TEST
int (*CursorDump)(BtCursor*, int*);
#endif
};
/*
** The number of 4-byte "meta" values contained on the first page of each
** database file.
*/
#define SQLITE_N_BTREE_META 10
int sqliteBtreeOpen(const char *zFilename, int mode, int nPg, Btree **ppBtree);
int sqliteRbtreeOpen(const char *zFilename, int mode, int nPg, Btree **ppBtree);
#define btOps(pBt) (*((BtOps **)(pBt)))
#define btCOps(pCur) (*((BtCursorOps **)(pCur)))
#define sqliteBtreeClose(pBt) (btOps(pBt)->Close(pBt))
#define sqliteBtreeSetCacheSize(pBt, sz) (btOps(pBt)->SetCacheSize(pBt, sz))
#define sqliteBtreeSetSafetyLevel(pBt, sl) (btOps(pBt)->SetSafetyLevel(pBt, sl))
#define sqliteBtreeBeginTrans(pBt) (btOps(pBt)->BeginTrans(pBt))
#define sqliteBtreeCommit(pBt) (btOps(pBt)->Commit(pBt))
#define sqliteBtreeRollback(pBt) (btOps(pBt)->Rollback(pBt))
#define sqliteBtreeBeginCkpt(pBt) (btOps(pBt)->BeginCkpt(pBt))
#define sqliteBtreeCommitCkpt(pBt) (btOps(pBt)->CommitCkpt(pBt))
#define sqliteBtreeRollbackCkpt(pBt) (btOps(pBt)->RollbackCkpt(pBt))
#define sqliteBtreeCreateTable(pBt,piTable)\
(btOps(pBt)->CreateTable(pBt,piTable))
#define sqliteBtreeCreateIndex(pBt, piIndex)\
(btOps(pBt)->CreateIndex(pBt, piIndex))
#define sqliteBtreeDropTable(pBt, iTable) (btOps(pBt)->DropTable(pBt, iTable))
#define sqliteBtreeClearTable(pBt, iTable)\
(btOps(pBt)->ClearTable(pBt, iTable))
#define sqliteBtreeCursor(pBt, iTable, wrFlag, ppCur)\
(btOps(pBt)->Cursor(pBt, iTable, wrFlag, ppCur))
#define sqliteBtreeMoveto(pCur, pKey, nKey, pRes)\
(btCOps(pCur)->Moveto(pCur, pKey, nKey, pRes))
#define sqliteBtreeDelete(pCur) (btCOps(pCur)->Delete(pCur))
#define sqliteBtreeInsert(pCur, pKey, nKey, pData, nData) \
(btCOps(pCur)->Insert(pCur, pKey, nKey, pData, nData))
#define sqliteBtreeFirst(pCur, pRes) (btCOps(pCur)->First(pCur, pRes))
#define sqliteBtreeLast(pCur, pRes) (btCOps(pCur)->Last(pCur, pRes))
#define sqliteBtreeNext(pCur, pRes) (btCOps(pCur)->Next(pCur, pRes))
#define sqliteBtreePrevious(pCur, pRes) (btCOps(pCur)->Previous(pCur, pRes))
#define sqliteBtreeKeySize(pCur, pSize) (btCOps(pCur)->KeySize(pCur, pSize) )
#define sqliteBtreeKey(pCur, offset, amt, zBuf)\
(btCOps(pCur)->Key(pCur, offset, amt, zBuf))
#define sqliteBtreeKeyCompare(pCur, pKey, nKey, nIgnore, pRes)\
(btCOps(pCur)->KeyCompare(pCur, pKey, nKey, nIgnore, pRes))
#define sqliteBtreeDataSize(pCur, pSize) (btCOps(pCur)->DataSize(pCur, pSize))
#define sqliteBtreeData(pCur, offset, amt, zBuf)\
(btCOps(pCur)->Data(pCur, offset, amt, zBuf))
#define sqliteBtreeCloseCursor(pCur) (btCOps(pCur)->CloseCursor(pCur))
#define sqliteBtreeGetMeta(pBt, aMeta) (btOps(pBt)->GetMeta(pBt, aMeta))
#define sqliteBtreeUpdateMeta(pBt, aMeta) (btOps(pBt)->UpdateMeta(pBt, aMeta))
#define sqliteBtreeIntegrityCheck(pBt, aRoot, nRoot)\
(btOps(pBt)->IntegrityCheck(pBt, aRoot, nRoot))
#define sqliteBtreeGetFilename(pBt) (btOps(pBt)->GetFilename(pBt))
#define sqliteBtreeCopyFile(pBt1, pBt2) (btOps(pBt1)->Copyfile(pBt1, pBt2))
#ifdef SQLITE_TEST
#define sqliteBtreePageDump(pBt, pgno, recursive)\
(btOps(pBt)->PageDump(pBt, pgno, recursive))
#define sqliteBtreeCursorDump(pCur, aResult)\
(btCOps(pCur)->CursorDump(pCur, aResult))
#define sqliteBtreePager(pBt) (btOps(pBt)->Pager(pBt))
int btree_native_byte_order;
#endif /* SQLITE_TEST */
#endif /* _BTREE_H_ */
--- NEW FILE: btree_rb.c ---
/*
** 2003 Feb 4
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
**
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
**
*************************************************************************
** $Id: btree_rb.c,v 1.1 2003/08/26 15:02:43 dark-storm Exp $
**
** This file implements an in-core database using Red-Black balanced
** binary trees.
**
** It was contributed to SQLite by anonymous on 2003-Feb-04 23:24:49 UTC.
*/
#include "btree.h"
[...1378 lines suppressed...]
(int(*)(BtCursor*,const void*,int,int*)) memRbtreeMoveto,
(int(*)(BtCursor*)) memRbtreeDelete,
(int(*)(BtCursor*,const void*,int,const void*,int)) memRbtreeInsert,
(int(*)(BtCursor*,int*)) memRbtreeFirst,
(int(*)(BtCursor*,int*)) memRbtreeLast,
(int(*)(BtCursor*,int*)) memRbtreeNext,
(int(*)(BtCursor*,int*)) memRbtreePrevious,
(int(*)(BtCursor*,int*)) memRbtreeKeySize,
(int(*)(BtCursor*,int,int,char*)) memRbtreeKey,
(int(*)(BtCursor*,const void*,int,int,int*)) memRbtreeKeyCompare,
(int(*)(BtCursor*,int*)) memRbtreeDataSize,
(int(*)(BtCursor*,int,int,char*)) memRbtreeData,
(int(*)(BtCursor*)) memRbtreeCloseCursor,
#ifdef SQLITE_TEST
(int(*)(BtCursor*,int*)) memRbtreeCursorDump,
#endif
};
#endif /* SQLITE_OMIT_INMEMORYDB */
--- NEW FILE: build.c ---
/*
** 2001 September 15
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
**
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
**
*************************************************************************
** This file contains C code routines that are called by the SQLite parser
** when syntax rules are reduced. The routines in this file handle the
** following kinds of SQL syntax:
**
** CREATE TABLE
** DROP TABLE
** CREATE INDEX
** DROP INDEX
[...2179 lines suppressed...]
** an OP_Commit that will cause the changes to be committed to disk.
**
** Note that checkpoints are automatically committed at the end of
** a statement. Note also that there can be multiple calls to
** sqliteBeginWriteOperation() but there should only be a single
** call to sqliteEndWriteOperation() at the conclusion of the statement.
*/
void sqliteEndWriteOperation(Parse *pParse){
Vdbe *v;
sqlite *db = pParse->db;
if( pParse->trigStack ) return; /* if this is in a trigger */
v = sqliteGetVdbe(pParse);
if( v==0 ) return;
if( db->flags & SQLITE_InTrans ){
/* A BEGIN has executed. Do not commit until we see an explicit
** COMMIT statement. */
}else{
sqliteVdbeAddOp(v, OP_Commit, 0, 0);
}
}
--- NEW FILE: config.h ---
#define SQLITE_PTR_SZ 4
#define NO_TCL 1
--- NEW FILE: copy.c ---
/*
** 2003 April 6
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
**
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
**
*************************************************************************
** This file contains code used to implement the COPY command.
**
** $Id: copy.c,v 1.1 2003/08/26 15:02:44 dark-storm Exp $
*/
#include "sqliteInt.h"
/*
** The COPY command is for compatibility with PostgreSQL and specificially
** for the ability to read the output of pg_dump. The format is as
** follows:
**
** COPY table FROM file [USING DELIMITERS string]
**
** "table" is an existing table name. We will read lines of code from
** file to fill this table with data. File might be "stdin". The optional
** delimiter string identifies the field separators. The default is a tab.
*/
void sqliteCopy(
Parse *pParse, /* The parser context */
SrcList *pTableName, /* The name of the table into which we will insert */
Token *pFilename, /* The file from which to obtain information */
Token *pDelimiter, /* Use this as the field delimiter */
int onError /* What to do if a constraint fails */
){
Table *pTab;
int i;
Vdbe *v;
int addr, end;
Index *pIdx;
char *zFile = 0;
const char *zDb;
sqlite *db = pParse->db;
if( sqlite_malloc_failed ) goto copy_cleanup;
assert( pTableName->nSrc==1 );
pTab = sqliteSrcListLookup(pParse, pTableName);
if( pTab==0 || sqliteIsReadOnly(pParse, pTab, 0) ) goto copy_cleanup;
zFile = sqliteStrNDup(pFilename->z, pFilename->n);
sqliteDequote(zFile);
assert( pTab->iDb<db->nDb );
zDb = db->aDb[pTab->iDb].zName;
if( sqliteAuthCheck(pParse, SQLITE_INSERT, pTab->zName, 0, zDb)
|| sqliteAuthCheck(pParse, SQLITE_COPY, pTab->zName, zFile, zDb) ){
goto copy_cleanup;
}
v = sqliteGetVdbe(pParse);
if( v ){
sqliteBeginWriteOperation(pParse, 1, pTab->iDb);
addr = sqliteVdbeAddOp(v, OP_FileOpen, 0, 0);
sqliteVdbeChangeP3(v, addr, pFilename->z, pFilename->n);
sqliteVdbeDequoteP3(v, addr);
sqliteVdbeAddOp(v, OP_Integer, pTab->iDb, 0);
sqliteVdbeAddOp(v, OP_OpenWrite, 0, pTab->tnum);
sqliteVdbeChangeP3(v, -1, pTab->zName, P3_STATIC);
for(i=1, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
assert( pIdx->iDb==1 || pIdx->iDb==pTab->iDb );
sqliteVdbeAddOp(v, OP_Integer, pIdx->iDb, 0);
sqliteVdbeAddOp(v, OP_OpenWrite, i, pIdx->tnum);
sqliteVdbeChangeP3(v, -1, pIdx->zName, P3_STATIC);
}
if( db->flags & SQLITE_CountRows ){
sqliteVdbeAddOp(v, OP_Integer, 0, 0); /* Initialize the row count */
}
end = sqliteVdbeMakeLabel(v);
addr = sqliteVdbeAddOp(v, OP_FileRead, pTab->nCol, end);
if( pDelimiter ){
sqliteVdbeChangeP3(v, addr, pDelimiter->z, pDelimiter->n);
sqliteVdbeDequoteP3(v, addr);
}else{
sqliteVdbeChangeP3(v, addr, "\t", 1);
}
if( pTab->iPKey>=0 ){
sqliteVdbeAddOp(v, OP_FileColumn, pTab->iPKey, 0);
sqliteVdbeAddOp(v, OP_MustBeInt, 0, 0);
}else{
sqliteVdbeAddOp(v, OP_NewRecno, 0, 0);
}
for(i=0; i<pTab->nCol; i++){
if( i==pTab->iPKey ){
/* The integer primary key column is filled with NULL since its
** value is always pulled from the record number */
sqliteVdbeAddOp(v, OP_String, 0, 0);
}else{
sqliteVdbeAddOp(v, OP_FileColumn, i, 0);
}
}
sqliteGenerateConstraintChecks(pParse, pTab, 0, 0, pTab->iPKey>=0,
0, onError, addr);
sqliteCompleteInsertion(pParse, pTab, 0, 0, 0, 0, -1);
if( (db->flags & SQLITE_CountRows)!=0 ){
sqliteVdbeAddOp(v, OP_AddImm, 1, 0); /* Increment row count */
}
sqliteVdbeAddOp(v, OP_Goto, 0, addr);
sqliteVdbeResolveLabel(v, end);
sqliteVdbeAddOp(v, OP_Noop, 0, 0);
sqliteEndWriteOperation(pParse);
if( db->flags & SQLITE_CountRows ){
sqliteVdbeAddOp(v, OP_ColumnName, 0, 0);
sqliteVdbeChangeP3(v, -1, "rows inserted", P3_STATIC);
sqliteVdbeAddOp(v, OP_Callback, 1, 0);
}
}
copy_cleanup:
sqliteSrcListDelete(pTableName);
sqliteFree(zFile);
return;
}
--- NEW FILE: delete.c ---
/*
** 2001 September 15
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
**
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
**
*************************************************************************
** This file contains C code routines that are called by the parser
** to handle DELETE FROM statements.
**
** $Id: delete.c,v 1.1 2003/08/26 15:02:44 dark-storm Exp $
*/
#include "sqliteInt.h"
/*
** Look up every table that is named in pSrc. If any table is not found,
** add an error message to pParse->zErrMsg and return NULL. If all tables
** are found, return a pointer to the last table.
*/
Table *sqliteSrcListLookup(Parse *pParse, SrcList *pSrc){
Table *pTab = 0;
int i;
for(i=0; i<pSrc->nSrc; i++){
const char *zTab = pSrc->a[i].zName;
const char *zDb = pSrc->a[i].zDatabase;
pTab = sqliteLocateTable(pParse, zTab, zDb);
pSrc->a[i].pTab = pTab;
}
return pTab;
}
/*
** Check to make sure the given table is writable. If it is not
** writable, generate an error message and return 1. If it is
** writable return 0;
*/
int sqliteIsReadOnly(Parse *pParse, Table *pTab, int viewOk){
if( pTab->readOnly ){
sqliteErrorMsg(pParse, "table %s may not be modified", pTab->zName);
return 1;
}
if( !viewOk && pTab->pSelect ){
sqliteErrorMsg(pParse, "cannot modify %s because it is a view",pTab->zName);
return 1;
}
return 0;
}
/*
** Process a DELETE FROM statement.
*/
void sqliteDeleteFrom(
Parse *pParse, /* The parser context */
SrcList *pTabList, /* The table from which we should delete things */
Expr *pWhere /* The WHERE clause. May be null */
){
Vdbe *v; /* The virtual database engine */
Table *pTab; /* The table from which records will be deleted */
const char *zDb; /* Name of database holding pTab */
int end, addr; /* A couple addresses of generated code */
int i; /* Loop counter */
WhereInfo *pWInfo; /* Information about the WHERE clause */
Index *pIdx; /* For looping over indices of the table */
int iCur; /* VDBE Cursor number for pTab */
sqlite *db; /* Main database structure */
int isView; /* True if attempting to delete from a view */
AuthContext sContext; /* Authorization context */
int row_triggers_exist = 0; /* True if any triggers exist */
int before_triggers; /* True if there are BEFORE triggers */
int after_triggers; /* True if there are AFTER triggers */
int oldIdx = -1; /* Cursor for the OLD table of AFTER triggers */
sContext.pParse = 0;
if( pParse->nErr || sqlite_malloc_failed ){
pTabList = 0;
goto delete_from_cleanup;
}
db = pParse->db;
assert( pTabList->nSrc==1 );
/* Locate the table which we want to delete. This table has to be
** put in an SrcList structure because some of the subroutines we
** will be calling are designed to work with multiple tables and expect
** an SrcList* parameter instead of just a Table* parameter.
*/
pTab = sqliteSrcListLookup(pParse, pTabList);
if( pTab==0 ) goto delete_from_cleanup;
before_triggers = sqliteTriggersExist(pParse, pTab->pTrigger,
TK_DELETE, TK_BEFORE, TK_ROW, 0);
after_triggers = sqliteTriggersExist(pParse, pTab->pTrigger,
TK_DELETE, TK_AFTER, TK_ROW, 0);
row_triggers_exist = before_triggers || after_triggers;
isView = pTab->pSelect!=0;
if( sqliteIsReadOnly(pParse, pTab, before_triggers) ){
goto delete_from_cleanup;
}
assert( pTab->iDb<db->nDb );
zDb = db->aDb[pTab->iDb].zName;
if( sqliteAuthCheck(pParse, SQLITE_DELETE, pTab->zName, 0, zDb) ){
goto delete_from_cleanup;
}
/* If pTab is really a view, make sure it has been initialized.
*/
if( isView && sqliteViewGetColumnNames(pParse, pTab) ){
goto delete_from_cleanup;
}
/* Allocate a cursor used to store the old.* data for a trigger.
*/
if( row_triggers_exist ){
oldIdx = pParse->nTab++;
}
/* Resolve the column names in all the expressions.
*/
assert( pTabList->nSrc==1 );
iCur = pTabList->a[0].iCursor = pParse->nTab++;
if( pWhere ){
if( sqliteExprResolveIds(pParse, pTabList, 0, pWhere) ){
goto delete_from_cleanup;
}
if( sqliteExprCheck(pParse, pWhere, 0, 0) ){
goto delete_from_cleanup;
}
}
/* Start the view context
*/
if( isView ){
sqliteAuthContextPush(pParse, &sContext, pTab->zName);
}
/* Begin generating code.
*/
v = sqliteGetVdbe(pParse);
if( v==0 ){
goto delete_from_cleanup;
}
sqliteBeginWriteOperation(pParse, row_triggers_exist, pTab->iDb);
/* If we are trying to delete from a view, construct that view into
** a temporary table.
*/
if( isView ){
Select *pView = sqliteSelectDup(pTab->pSelect);
sqliteSelect(pParse, pView, SRT_TempTable, iCur, 0, 0, 0);
sqliteSelectDelete(pView);
}
/* Initialize the counter of the number of rows deleted, if
** we are counting rows.
*/
if( db->flags & SQLITE_CountRows ){
sqliteVdbeAddOp(v, OP_Integer, 0, 0);
}
/* Special case: A DELETE without a WHERE clause deletes everything.
** It is easier just to erase the whole table. Note, however, that
** this means that the row change count will be incorrect.
*/
if( pWhere==0 && !row_triggers_exist ){
if( db->flags & SQLITE_CountRows ){
/* If counting rows deleted, just count the total number of
** entries in the table. */
int endOfLoop = sqliteVdbeMakeLabel(v);
int addr;
if( !isView ){
sqliteVdbeAddOp(v, OP_Integer, pTab->iDb, 0);
sqliteVdbeAddOp(v, OP_OpenRead, iCur, pTab->tnum);
}
sqliteVdbeAddOp(v, OP_Rewind, iCur, sqliteVdbeCurrentAddr(v)+2);
addr = sqliteVdbeAddOp(v, OP_AddImm, 1, 0);
sqliteVdbeAddOp(v, OP_Next, iCur, addr);
sqliteVdbeResolveLabel(v, endOfLoop);
sqliteVdbeAddOp(v, OP_Close, iCur, 0);
}
if( !isView ){
sqliteVdbeAddOp(v, OP_Clear, pTab->tnum, pTab->iDb);
for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
sqliteVdbeAddOp(v, OP_Clear, pIdx->tnum, pIdx->iDb);
}
}
}
/* The usual case: There is a WHERE clause so we have to scan through
** the table an pick which records to delete.
*/
else{
/* Begin the database scan
*/
pWInfo = sqliteWhereBegin(pParse, pTabList, pWhere, 1, 0);
if( pWInfo==0 ) goto delete_from_cleanup;
/* Remember the key of every item to be deleted.
*/
sqliteVdbeAddOp(v, OP_ListWrite, 0, 0);
if( db->flags & SQLITE_CountRows ){
sqliteVdbeAddOp(v, OP_AddImm, 1, 0);
}
/* End the database scan loop.
*/
sqliteWhereEnd(pWInfo);
/* Open the pseudo-table used to store OLD if there are triggers.
*/
if( row_triggers_exist ){
sqliteVdbeAddOp(v, OP_OpenPseudo, oldIdx, 0);
}
/* Delete every item whose key was written to the list during the
** database scan. We have to delete items after the scan is complete
** because deleting an item can change the scan order.
*/
sqliteVdbeAddOp(v, OP_ListRewind, 0, 0);
end = sqliteVdbeMakeLabel(v);
/* This is the beginning of the delete loop when there are
** row triggers.
*/
if( row_triggers_exist ){
addr = sqliteVdbeAddOp(v, OP_ListRead, 0, end);
sqliteVdbeAddOp(v, OP_Dup, 0, 0);
if( !isView ){
sqliteVdbeAddOp(v, OP_Integer, pTab->iDb, 0);
sqliteVdbeAddOp(v, OP_OpenRead, iCur, pTab->tnum);
}
sqliteVdbeAddOp(v, OP_MoveTo, iCur, 0);
sqliteVdbeAddOp(v, OP_Recno, iCur, 0);
sqliteVdbeAddOp(v, OP_RowData, iCur, 0);
sqliteVdbeAddOp(v, OP_PutIntKey, oldIdx, 0);
if( !isView ){
sqliteVdbeAddOp(v, OP_Close, iCur, 0);
}
sqliteCodeRowTrigger(pParse, TK_DELETE, 0, TK_BEFORE, pTab, -1,
oldIdx, (pParse->trigStack)?pParse->trigStack->orconf:OE_Default,
addr);
}
if( !isView ){
/* Open cursors for the table we are deleting from and all its
** indices. If there are row triggers, this happens inside the
** OP_ListRead loop because the cursor have to all be closed
** before the trigger fires. If there are no row triggers, the
** cursors are opened only once on the outside the loop.
*/
pParse->nTab = iCur + 1;
sqliteVdbeAddOp(v, OP_Integer, pTab->iDb, 0);
sqliteVdbeAddOp(v, OP_OpenWrite, iCur, pTab->tnum);
for(i=1, pIdx=pTab->pIndex; pIdx; i++, pIdx=pIdx->pNext){
sqliteVdbeAddOp(v, OP_Integer, pIdx->iDb, 0);
sqliteVdbeAddOp(v, OP_OpenWrite, pParse->nTab++, pIdx->tnum);
}
/* This is the beginning of the delete loop when there are no
** row triggers */
if( !row_triggers_exist ){
addr = sqliteVdbeAddOp(v, OP_ListRead, 0, end);
}
/* Delete the row */
sqliteGenerateRowDelete(db, v, pTab, iCur, pParse->trigStack==0);
}
/* If there are row triggers, close all cursors then invoke
** the AFTER triggers
*/
if( row_triggers_exist ){
if( !isView ){
for(i=1, pIdx=pTab->pIndex; pIdx; i++, pIdx=pIdx->pNext){
sqliteVdbeAddOp(v, OP_Close, iCur + i, pIdx->tnum);
}
sqliteVdbeAddOp(v, OP_Close, iCur, 0);
}
sqliteCodeRowTrigger(pParse, TK_DELETE, 0, TK_AFTER, pTab, -1,
oldIdx, (pParse->trigStack)?pParse->trigStack->orconf:OE_Default,
addr);
}
/* End of the delete loop */
sqliteVdbeAddOp(v, OP_Goto, 0, addr);
sqliteVdbeResolveLabel(v, end);
sqliteVdbeAddOp(v, OP_ListReset, 0, 0);
/* Close the cursors after the loop if there are no row triggers */
if( !row_triggers_exist ){
for(i=1, pIdx=pTab->pIndex; pIdx; i++, pIdx=pIdx->pNext){
sqliteVdbeAddOp(v, OP_Close, iCur + i, pIdx->tnum);
}
sqliteVdbeAddOp(v, OP_Close, iCur, 0);
pParse->nTab = iCur;
}
}
sqliteEndWriteOperation(pParse);
/*
** Return the number of rows that were deleted.
*/
if( db->flags & SQLITE_CountRows ){
sqliteVdbeAddOp(v, OP_ColumnName, 0, 0);
sqliteVdbeChangeP3(v, -1, "rows deleted", P3_STATIC);
sqliteVdbeAddOp(v, OP_Callback, 1, 0);
}
delete_from_cleanup:
sqliteAuthContextPop(&sContext);
sqliteSrcListDelete(pTabList);
sqliteExprDelete(pWhere);
return;
}
/*
** This routine generates VDBE code that causes a single row of a
** single table to be deleted.
**
** The VDBE must be in a particular state when this routine is called.
** These are the requirements:
**
** 1. A read/write cursor pointing to pTab, the table containing the row
** to be deleted, must be opened as cursor number "base".
**
** 2. Read/write cursors for all indices of pTab must be open as
** cursor number base+i for the i-th index.
**
** 3. The record number of the row to be deleted must be on the top
** of the stack.
**
** This routine pops the top of the stack to remove the record number
** and then generates code to remove both the table record and all index
** entries that point to that record.
*/
void sqliteGenerateRowDelete(
sqlite *db, /* The database containing the index */
Vdbe *v, /* Generate code into this VDBE */
Table *pTab, /* Table containing the row to be deleted */
int iCur, /* Cursor number for the table */
int count /* Increment the row change counter */
){
int addr;
addr = sqliteVdbeAddOp(v, OP_NotExists, iCur, 0);
sqliteGenerateRowIndexDelete(db, v, pTab, iCur, 0);
sqliteVdbeAddOp(v, OP_Delete, iCur, count);
sqliteVdbeChangeP2(v, addr, sqliteVdbeCurrentAddr(v));
}
/*
** This routine generates VDBE code that causes the deletion of all
** index entries associated with a single row of a single table.
**
** The VDBE must be in a particular state when this routine is called.
** These are the requirements:
**
** 1. A read/write cursor pointing to pTab, the table containing the row
** to be deleted, must be opened as cursor number "iCur".
**
** 2. Read/write cursors for all indices of pTab must be open as
** cursor number iCur+i for the i-th index.
**
** 3. The "iCur" cursor must be pointing to the row that is to be
** deleted.
*/
void sqliteGenerateRowIndexDelete(
sqlite *db, /* The database containing the index */
Vdbe *v, /* Generate code into this VDBE */
Table *pTab, /* Table containing the row to be deleted */
int iCur, /* Cursor number for the table */
char *aIdxUsed /* Only delete if aIdxUsed!=0 && aIdxUsed[i]!=0 */
){
int i;
Index *pIdx;
for(i=1, pIdx=pTab->pIndex; pIdx; i++, pIdx=pIdx->pNext){
int j;
if( aIdxUsed!=0 && aIdxUsed[i-1]==0 ) continue;
sqliteVdbeAddOp(v, OP_Recno, iCur, 0);
for(j=0; j<pIdx->nColumn; j++){
int idx = pIdx->aiColumn[j];
if( idx==pTab->iPKey ){
sqliteVdbeAddOp(v, OP_Dup, j, 0);
}else{
sqliteVdbeAddOp(v, OP_Column, iCur, idx);
}
}
sqliteVdbeAddOp(v, OP_MakeIdxKey, pIdx->nColumn, 0);
if( db->file_format>=4 ) sqliteAddIdxKeyType(v, pIdx);
sqliteVdbeAddOp(v, OP_IdxDelete, iCur+i, 0);
}
}
--- NEW FILE: expr.c ---
/*
** 2001 September 15
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
**
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
**
*************************************************************************
** This file contains routines used for analyzing expressions and
** for generating VDBE code that evaluates expressions in SQLite.
**
** $Id: expr.c,v 1.1 2003/08/26 15:02:44 dark-storm Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
[...1585 lines suppressed...]
pMaybe = 0;
while( p && p->nArg!=nArg ){
if( p->nArg<0 && !createFlag && (p->xFunc || p->xStep) ) pMaybe = p;
p = p->pNext;
}
if( p && !createFlag && p->xFunc==0 && p->xStep==0 ){
return 0;
}
if( p==0 && pMaybe ){
assert( createFlag==0 );
return pMaybe;
}
if( p==0 && createFlag && (p = sqliteMalloc(sizeof(*p)))!=0 ){
p->nArg = nArg;
p->pNext = pFirst;
p->dataType = pFirst ? pFirst->dataType : SQLITE_NUMERIC;
sqliteHashInsert(&db->aFunc, zName, nName, (void*)p);
}
return p;
}
--- NEW FILE: func.c ---
/*
** 2002 February 23
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
**
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
**
*************************************************************************
** This file contains the C functions that implement various SQL
** functions of SQLite.
**
** There is only one exported symbol in this file - the function
** sqliteRegisterBuildinFunctions() found at the bottom of the file.
** All other code has file scope.
**
** $Id: func.c,v 1.1 2003/08/26 15:02:44 dark-storm Exp $
*/
#include <ctype.h>
#include <math.h>
#include <stdlib.h>
#include <assert.h>
#include "sqliteInt.h"
#include "os.h"
/*
** Implementation of the non-aggregate min() and max() functions
*/
static void minFunc(sqlite_func *context, int argc, const char **argv){
const char *zBest;
int i;
if( argc==0 ) return;
zBest = argv[0];
if( zBest==0 ) return;
for(i=1; i<argc; i++){
if( argv[i]==0 ) return;
if( sqliteCompare(argv[i], zBest)<0 ){
zBest = argv[i];
}
}
sqlite_set_result_string(context, zBest, -1);
}
static void maxFunc(sqlite_func *context, int argc, const char **argv){
const char *zBest;
int i;
if( argc==0 ) return;
zBest = argv[0];
if( zBest==0 ) return;
for(i=1; i<argc; i++){
if( argv[i]==0 ) return;
if( sqliteCompare(argv[i], zBest)>0 ){
zBest = argv[i];
}
}
sqlite_set_result_string(context, zBest, -1);
}
/*
** Implementation of the length() function
*/
static void lengthFunc(sqlite_func *context, int argc, const char **argv){
const char *z;
int len;
assert( argc==1 );
z = argv[0];
if( z==0 ) return;
#ifdef SQLITE_UTF8
for(len=0; *z; z++){ if( (0xc0&*z)!=0x80 ) len++; }
#else
len = strlen(z);
#endif
sqlite_set_result_int(context, len);
}
/*
** Implementation of the abs() function
*/
static void absFunc(sqlite_func *context, int argc, const char **argv){
const char *z;
assert( argc==1 );
z = argv[0];
if( z==0 ) return;
if( z[0]=='-' && isdigit(z[1]) ) z++;
sqlite_set_result_string(context, z, -1);
}
/*
** Implementation of the substr() function
*/
static void substrFunc(sqlite_func *context, int argc, const char **argv){
const char *z;
#ifdef SQLITE_UTF8
const char *z2;
int i;
#endif
int p1, p2, len;
assert( argc==3 );
z = argv[0];
if( z==0 ) return;
p1 = atoi(argv[1]?argv[1]:0);
p2 = atoi(argv[2]?argv[2]:0);
#ifdef SQLITE_UTF8
for(len=0, z2=z; *z2; z2++){ if( (0xc0&*z2)!=0x80 ) len++; }
#else
len = strlen(z);
#endif
if( p1<0 ){
p1 += len;
if( p1<0 ){
p2 += p1;
p1 = 0;
}
}else if( p1>0 ){
p1--;
}
if( p1+p2>len ){
p2 = len-p1;
}
#ifdef SQLITE_UTF8
for(i=0; i<p1; i++){
assert( z[i] );
if( (z[i]&0xc0)==0x80 ) p1++;
}
while( z[i] && (z[i]&0xc0)==0x80 ){ i++; p1++; }
for(; i<p1+p2; i++){
assert( z[i] );
if( (z[i]&0xc0)==0x80 ) p2++;
}
while( z[i] && (z[i]&0xc0)==0x80 ){ i++; p2++; }
#endif
if( p2<0 ) p2 = 0;
sqlite_set_result_string(context, &z[p1], p2);
}
/*
** Implementation of the round() function
*/
static void roundFunc(sqlite_func *context, int argc, const char **argv){
int n;
double r;
char zBuf[100];
assert( argc==1 || argc==2 );
if( argv[0]==0 || (argc==2 && argv[1]==0) ) return;
n = argc==2 ? atoi(argv[1]) : 0;
if( n>30 ) n = 30;
if( n<0 ) n = 0;
r = atof(argv[0]);
sprintf(zBuf,"%.*f",n,r);
sqlite_set_result_string(context, zBuf, -1);
}
/*
** Implementation of the upper() and lower() SQL functions.
*/
static void upperFunc(sqlite_func *context, int argc, const char **argv){
char *z;
int i;
if( argc<1 || argv[0]==0 ) return;
z = sqlite_set_result_string(context, argv[0], -1);
if( z==0 ) return;
for(i=0; z[i]; i++){
if( islower(z[i]) ) z[i] = toupper(z[i]);
}
}
static void lowerFunc(sqlite_func *context, int argc, const char **argv){
char *z;
int i;
if( argc<1 || argv[0]==0 ) return;
z = sqlite_set_result_string(context, argv[0], -1);
if( z==0 ) return;
for(i=0; z[i]; i++){
if( isupper(z[i]) ) z[i] = tolower(z[i]);
}
}
/*
** Implementation of the IFNULL(), NVL(), and COALESCE() functions.
** All three do the same thing. They return the first argument
** non-NULL argument.
*/
static void ifnullFunc(sqlite_func *context, int argc, const char **argv){
int i;
for(i=0; i<argc; i++){
if( argv[i] ){
sqlite_set_result_string(context, argv[i], -1);
break;
}
}
}
/*
** Implementation of random(). Return a random integer.
*/
static void randomFunc(sqlite_func *context, int argc, const char **argv){
sqlite_set_result_int(context, sqliteRandomInteger());
}
/*
** Implementation of the last_insert_rowid() SQL function. The return
** value is the same as the sqlite_last_insert_rowid() API function.
*/
static void last_insert_rowid(sqlite_func *context, int arg, const char **argv){
sqlite *db = sqlite_user_data(context);
sqlite_set_result_int(context, sqlite_last_insert_rowid(db));
}
/*
** Implementation of the like() SQL function. This function implements
** the build-in LIKE operator. The first argument to the function is the
** string and the second argument is the pattern. So, the SQL statements:
**
** A LIKE B
**
** is implemented as like(A,B).
*/
static void likeFunc(sqlite_func *context, int arg, const char **argv){
if( argv[0]==0 || argv[1]==0 ) return;
sqlite_set_result_int(context, sqliteLikeCompare(argv[0], argv[1]));
}
/*
** Implementation of the glob() SQL function. This function implements
** the build-in GLOB operator. The first argument to the function is the
** string and the second argument is the pattern. So, the SQL statements:
**
** A GLOB B
**
** is implemented as glob(A,B).
*/
static void globFunc(sqlite_func *context, int arg, const char **argv){
if( argv[0]==0 || argv[1]==0 ) return;
sqlite_set_result_int(context, sqliteGlobCompare(argv[0], argv[1]));
}
/*
** Implementation of the NULLIF(x,y) function. The result is the first
** argument if the arguments are different. The result is NULL if the
** arguments are equal to each other.
*/
static void nullifFunc(sqlite_func *context, int argc, const char **argv){
if( argv[0]!=0 && sqliteCompare(argv[0],argv[1])!=0 ){
sqlite_set_result_string(context, argv[0], -1);
}
}
/*
** Implementation of the VERSION(*) function. The result is the version
** of the SQLite library that is running.
*/
static void versionFunc(sqlite_func *context, int argc, const char **argv){
sqlite_set_result_string(context, sqlite_version, -1);
}
/*
** EXPERIMENTAL - This is not an official function. The interface may
** change. This function may disappear. Do not write code that depends
** on this function.
**
** Implementation of the QUOTE() function. This function takes a single
** argument. If the argument is numeric, the return value is the same as
** the argument. If the argument is NULL, the return value is the string
** "NULL". Otherwise, the argument is enclosed in single quotes with
** single-quote escapes.
*/
static void quoteFunc(sqlite_func *context, int argc, const char **argv){
if( argc<1 ) return;
if( argv[0]==0 ){
sqlite_set_result_string(context, "NULL", 4);
}else if( sqliteIsNumber(argv[0]) ){
sqlite_set_result_string(context, argv[0], -1);
}else{
int i,j,n;
char *z;
for(i=n=0; argv[0][i]; i++){ if( argv[0][i]=='\'' ) n++; }
z = sqliteMalloc( i+n+3 );
if( z==0 ) return;
z[0] = '\'';
for(i=0, j=1; argv[0][i]; i++){
z[j++] = argv[0][i];
if( argv[0][i]=='\'' ){
z[j++] = '\'';
}
}
z[j++] = '\'';
z[j] = 0;
sqlite_set_result_string(context, z, j);
sqliteFree(z);
}
}
#ifdef SQLITE_SOUNDEX
/*
** Compute the soundex encoding of a word.
*/
static void soundexFunc(sqlite_func *context, int argc, const char **argv){
char zResult[8];
const char *zIn;
int i, j;
static const unsigned char iCode[] = {
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, 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, 1, 2, 3, 0, 1, 2, 0, 0, 2, 2, 4, 5, 5, 0,
1, 2, 6, 2, 3, 0, 1, 0, 2, 0, 2, 0, 0, 0, 0, 0,
0, 0, 1, 2, 3, 0, 1, 2, 0, 0, 2, 2, 4, 5, 5, 0,
1, 2, 6, 2, 3, 0, 1, 0, 2, 0, 2, 0, 0, 0, 0, 0,
};
assert( argc==1 );
zIn = argv[0];
for(i=0; zIn[i] && !isalpha(zIn[i]); i++){}
if( zIn[i] ){
zResult[0] = toupper(zIn[i]);
for(j=1; j<4 && zIn[i]; i++){
int code = iCode[zIn[i]&0x7f];
if( code>0 ){
zResult[j++] = code + '0';
}
}
while( j<4 ){
zResult[j++] = '0';
}
zResult[j] = 0;
sqlite_set_result_string(context, zResult, 4);
}else{
sqlite_set_result_string(context, "?000", 4);
}
}
#endif
#ifdef SQLITE_TEST
/*
** This function generates a string of random characters. Used for
** generating test data.
*/
static void randStr(sqlite_func *context, int argc, const char **argv){
static const char zSrc[] =
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789"
".-!,:*^+=_|?/<> ";
int iMin, iMax, n, r, i;
char zBuf[1000];
if( argc>=1 ){
iMin = atoi(argv[0]);
if( iMin<0 ) iMin = 0;
if( iMin>=sizeof(zBuf) ) iMin = sizeof(zBuf)-1;
}else{
iMin = 1;
}
if( argc>=2 ){
iMax = atoi(argv[1]);
if( iMax<iMin ) iMax = iMin;
if( iMax>=sizeof(zBuf) ) iMax = sizeof(zBuf);
}else{
iMax = 50;
}
n = iMin;
if( iMax>iMin ){
r = sqliteRandomInteger() & 0x7fffffff;
n += r%(iMax + 1 - iMin);
}
r = 0;
for(i=0; i<n; i++){
r = (r + sqliteRandomByte())% (sizeof(zSrc)-1);
zBuf[i] = zSrc[r];
}
zBuf[n] = 0;
sqlite_set_result_string(context, zBuf, n);
}
#endif
/*
** An instance of the following structure holds the context of a
** sum() or avg() aggregate computation.
*/
typedef struct SumCtx SumCtx;
struct SumCtx {
double sum; /* Sum of terms */
int cnt; /* Number of elements summed */
};
/*
** Routines used to compute the sum or average.
*/
static void sumStep(sqlite_func *context, int argc, const char **argv){
SumCtx *p;
if( argc<1 ) return;
p = sqlite_aggregate_context(context, sizeof(*p));
if( p && argv[0] ){
p->sum += atof(argv[0]);
p->cnt++;
}
}
static void sumFinalize(sqlite_func *context){
SumCtx *p;
p = sqlite_aggregate_context(context, sizeof(*p));
sqlite_set_result_double(context, p ? p->sum : 0.0);
}
static void avgFinalize(sqlite_func *context){
SumCtx *p;
p = sqlite_aggregate_context(context, sizeof(*p));
if( p && p->cnt>0 ){
sqlite_set_result_double(context, p->sum/(double)p->cnt);
}
}
/*
** An instance of the following structure holds the context of a
** variance or standard deviation computation.
*/
typedef struct StdDevCtx StdDevCtx;
struct StdDevCtx {
double sum; /* Sum of terms */
double sum2; /* Sum of the squares of terms */
int cnt; /* Number of terms counted */
};
#if 0 /* Omit because math library is required */
/*
** Routines used to compute the standard deviation as an aggregate.
*/
static void stdDevStep(sqlite_func *context, int argc, const char **argv){
StdDevCtx *p;
double x;
if( argc<1 ) return;
p = sqlite_aggregate_context(context, sizeof(*p));
if( p && argv[0] ){
x = atof(argv[0]);
p->sum += x;
p->sum2 += x*x;
p->cnt++;
}
}
static void stdDevFinalize(sqlite_func *context){
double rN = sqlite_aggregate_count(context);
StdDevCtx *p = sqlite_aggregate_context(context, sizeof(*p));
if( p && p->cnt>1 ){
double rCnt = cnt;
sqlite_set_result_double(context,
sqrt((p->sum2 - p->sum*p->sum/rCnt)/(rCnt-1.0)));
}
}
#endif
/*
** The following structure keeps track of state information for the
** count() aggregate function.
*/
typedef struct CountCtx CountCtx;
struct CountCtx {
int n;
};
/*
** Routines to implement the count() aggregate function.
*/
static void countStep(sqlite_func *context, int argc, const char **argv){
CountCtx *p;
p = sqlite_aggregate_context(context, sizeof(*p));
if( (argc==0 || argv[0]) && p ){
p->n++;
}
}
static void countFinalize(sqlite_func *context){
CountCtx *p;
p = sqlite_aggregate_context(context, sizeof(*p));
sqlite_set_result_int(context, p ? p->n : 0);
}
/*
** This function tracks state information for the min() and max()
** aggregate functions.
*/
typedef struct MinMaxCtx MinMaxCtx;
struct MinMaxCtx {
char *z; /* The best so far */
char zBuf[28]; /* Space that can be used for storage */
};
/*
** Routines to implement min() and max() aggregate functions.
*/
static void minStep(sqlite_func *context, int argc, const char **argv){
MinMaxCtx *p;
p = sqlite_aggregate_context(context, sizeof(*p));
if( p==0 || argc<1 || argv[0]==0 ) return;
if( p->z==0 || sqliteCompare(argv[0],p->z)<0 ){
int len;
if( p->z && p->z!=p->zBuf ){
sqliteFree(p->z);
}
len = strlen(argv[0]);
if( len < sizeof(p->zBuf) ){
p->z = p->zBuf;
}else{
p->z = sqliteMalloc( len+1 );
if( p->z==0 ) return;
}
strcpy(p->z, argv[0]);
}
}
static void maxStep(sqlite_func *context, int argc, const char **argv){
MinMaxCtx *p;
p = sqlite_aggregate_context(context, sizeof(*p));
if( p==0 || argc<1 || argv[0]==0 ) return;
if( p->z==0 || sqliteCompare(argv[0],p->z)>0 ){
int len;
if( p->z && p->z!=p->zBuf ){
sqliteFree(p->z);
}
len = strlen(argv[0]);
if( len < sizeof(p->zBuf) ){
p->z = p->zBuf;
}else{
p->z = sqliteMalloc( len+1 );
if( p->z==0 ) return;
}
strcpy(p->z, argv[0]);
}
}
static void minMaxFinalize(sqlite_func *context){
MinMaxCtx *p;
p = sqlite_aggregate_context(context, sizeof(*p));
if( p && p->z ){
sqlite_set_result_string(context, p->z, strlen(p->z));
}
if( p && p->z && p->z!=p->zBuf ){
sqliteFree(p->z);
}
}
/****************************************************************************
** Time and date functions.
**
** SQLite processes all times and dates as Julian Day numbers. The
** dates and times are stored as the number of days since noon
** in Greenwich on November 24, 4714 B.C. according to the Gregorian
** calendar system.
**
** This implement requires years to be expressed as a 4-digit number
** which means that only dates between 0000-01-01 and 9999-12-31 can
** be represented, even though julian day numbers allow a much wider
** range of dates.
**
** The Gregorian calendar system is used for all dates and times,
** even those that predate the Gregorian calendar. Historians usually
** use the Julian calendar for dates prior to 1582-10-15 and for some
** dates afterwards, depending on locale. Beware of this ...
[truncated message content] |
|
From: <dar...@us...> - 2003-08-26 15:01:57
|
Update of /cvsroot/wpdev/wolfpack/sqlite In directory sc8-pr-cvs1:/tmp/cvs-serv2288/sqlite Log Message: Directory /cvsroot/wpdev/wolfpack/sqlite added to the repository |
Update of /cvsroot/wpdev/wolfpack
In directory sc8-pr-cvs1:/tmp/cvs-serv2057/src
Modified Files:
basechar.cpp basechar.h books.cpp books.h dbdriver.cpp
dbdriver.h items.cpp items.h npc.cpp npc.h
persistentbroker.cpp persistentbroker.h player.cpp player.h
srvparams.cpp srvparams.h uobject.h wolf.dsp wolf.dsw
wolfpack.cpp world.cpp world.h
Removed Files:
basechar_flatstore.cpp flatstore_keys.h item_flatstore.cpp
npc_flatstore.cpp player_flatstore.cpp uobject_flatstore.cpp
Log Message:
Implemented SQLite support.
driver=sqlite
database name is the filename
Index: basechar.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/basechar.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -C2 -d -r1.34 -r1.35
*** basechar.cpp 26 Aug 2003 03:55:13 -0000 1.34
--- basechar.cpp 26 Aug 2003 15:01:05 -0000 1.35
***************
*** 249,253 ****
addStrField( "name", orgName_ );
addStrField( "title", title_ );
! addField( "creationdate", creationDate_.toString() );
addField( "body", bodyID_ );
addField( "orgbody", orgBodyID_ );
--- 249,253 ----
addStrField( "name", orgName_ );
addStrField( "title", title_ );
! addStrField( "creationdate", creationDate_.toString() );
addField( "body", bodyID_ );
addField( "orgbody", orgBodyID_ );
Index: basechar.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/basechar.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** basechar.h 21 Aug 2003 01:02:41 -0000 1.23
--- basechar.h 26 Aug 2003 15:01:05 -0000 1.24
***************
*** 82,88 ****
void load( char **, ushort& );
void save();
- void save( FlatStore::OutputFile*, bool first = false ) throw();
- bool load( unsigned char chunkGroup, unsigned char chunkType, FlatStore::InputFile* ) throw();
- bool postload() throw();
bool del();
--- 82,85 ----
Index: books.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/books.cpp,v
retrieving revision 1.41
retrieving revision 1.42
diff -C2 -d -r1.41 -r1.42
*** books.cpp 21 Aug 2003 01:02:41 -0000 1.41
--- books.cpp 26 Aug 2003 15:01:05 -0000 1.42
***************
*** 39,46 ****
#include "globals.h"
- // Flatstore
- #include "flatstore_keys.h"
- #include "flatstore/flatstore.h"
-
#include <qregexp.h>
#include <qsqlcursor.h>
--- 39,42 ----
***************
*** 62,66 ****
UObjectFactory::instance()->registerType( "cBook", productCreator );
- UObjectFactory::instance()->registerType( QString::number( CHUNK_BOOK ), productCreator );
}
--- 58,61 ----
***************
*** 120,216 ****
BOOK_PAGES, // unsigned short + count * utf8
};
-
- void cBook::save( FlatStore::OutputFile *output, bool first ) throw()
- {
- cItem::save( output, first );
- return;
-
- if( first )
- output->startObject( serial_, CHUNK_BOOK );
-
- cItem::save( output );
-
- output->startChunkGroup( CHUNK_BOOK );
-
- if( predefined_ )
- output->startChunk( BOOK_PREDEFINED );
-
- if( readonly_ )
- output->startChunk( BOOK_READONLY );
-
- if( !title_.isNull() && !title_.isEmpty() )
- output->chunkData( BOOK_TITLE, (const char*)title_.utf8().data() );
-
- if( !author_.isNull() && !author_.isEmpty() )
- output->chunkData( BOOK_AUTHOR, (const char*)author_.utf8().data() );
-
- if( !section_.isNull() && !section_.isEmpty() )
- output->chunkData( BOOK_SECTION, (const char*)section_.utf8().data() );
-
- // Write pages
- output->chunkData( BOOK_PAGES, (unsigned short)pages_ );
-
- unsigned int i;
- for( i = 0; i < pages_; ++i )
- {
- if( i >= content_.count() )
- output->writeString( "" );
- else
- output->writeString( content_[i].utf8().data() );
- }
-
- if( first )
- output->finishObject();
- }
-
- bool cBook::load( unsigned char chunkGroup, unsigned char chunkType, FlatStore::InputFile *input ) throw()
- {
- // if( chunkGroup != CHUNK_BOOK )
- return cItem::load( chunkGroup, chunkType, input );
- /*
- unsigned int i;
-
- switch( chunkType )
- {
- case BOOK_PREDEFINED:
- predefined_ = true;
- break;
-
- case BOOK_READONLY:
- readonly_ = true;
- break;
-
- case BOOK_TITLE:
- title_ = QString::fromUtf8( input->readString() );
- break;
-
- case BOOK_AUTHOR:
- author_ = QString::fromUtf8( input->readString() );
- break;
-
- case BOOK_SECTION:
- section_ = QString::fromUtf8( input->readString() );
- break;
-
- case BOOK_PAGES:
- input->readUShort( pages_ );
- content_.clear();
-
- for( i = 0; i < pages_; ++i )
- content_.push_back( QString::fromUtf8( input->readString() ) );
-
- break;
-
- default:
- return false;
- };
-
- return true;*/
- }
-
- bool cBook::postload() throw()
- {
- return cItem::postload();
- }
void cBook::save()
--- 115,118 ----
Index: books.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/books.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -d -r1.27 -r1.28
*** books.h 21 Aug 2003 05:04:35 -0000 1.27
--- books.h 26 Aug 2003 15:01:05 -0000 1.28
***************
*** 63,71 ****
virtual void flagUnchanged() { cBook::changed_ = false; cItem::flagUnchanged(); }
- // FlatStore
- void save( FlatStore::OutputFile*, bool first = false ) throw();
- bool load( unsigned char chunkGroup, unsigned char chunkType, FlatStore::InputFile* ) throw();
- bool postload() throw();
-
// setters/getters
QString title( void ) const;
--- 63,66 ----
Index: dbdriver.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/dbdriver.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** dbdriver.cpp 9 May 2003 05:11:33 -0000 1.16
--- dbdriver.cpp 26 Aug 2003 15:01:05 -0000 1.17
***************
*** 44,47 ****
--- 44,48 ----
#include <errmsg.h>
#include <stdlib.h>
+ #include "sqlite/sqlite.h"
/*****************************************************************************
***************
*** 64,68 ****
cDBDriver::~cDBDriver()
{
! close();
}
--- 65,69 ----
cDBDriver::~cDBDriver()
{
! //close();
}
***************
*** 78,88 ****
if ( !connection )
throw QString("mysql_init(): insufficient memory to allocate a new object");
- connection->reconnect = 1;
! if ( !mysql_real_connect(connection, _host.latin1(), _username.latin1(), _password.latin1(), _dbname.latin1(), 0, 0, CLIENT_COMPRESS ) )
{ // Named pipes are acctually slower :(
! throw QString( "Connection to DB failed: %1" ).arg( mysql_error( connection ) );
}
! connections[ id ] = connection;
return true;
--- 79,90 ----
if ( !connection )
throw QString("mysql_init(): insufficient memory to allocate a new object");
! ( (MYSQL*)connection )->reconnect = 1;
!
! if ( !mysql_real_connect((MYSQL*)connection, _host.latin1(), _username.latin1(), _password.latin1(), _dbname.latin1(), 0, 0, CLIENT_COMPRESS ) )
{ // Named pipes are acctually slower :(
! throw QString( "Connection to DB failed: %1" ).arg( mysql_error( (MYSQL*)connection ) );
}
! connections[ id ] = (MYSQL*)connection;
return true;
***************
*** 94,98 ****
void cDBDriver::close()
{
! mysql_close( connection );
}
--- 96,100 ----
void cDBDriver::close()
{
! mysql_close( (MYSQL*)connection );
}
***************
*** 103,107 ****
cDBResult cDBDriver::query( const QString &query )
{
! MYSQL *mysql = connection;
if( !mysql )
--- 105,109 ----
cDBResult cDBDriver::query( const QString &query )
{
! MYSQL *mysql = (MYSQL*)connection;
if( !mysql )
***************
*** 121,139 ****
Returns true if executed successfully.
*/
! bool cDBDriver::exec( const QString &query ) const
{
if( !connection )
throw QString( "Not connected to mysql server. Unable to execute query." );
! bool ok = !mysql_query( connection, query.latin1() );
return ok;
}
! void cDBDriver::lockTable( const QString& table ) const
{
exec( QString("LOCK TABLES %1 WRITE;").arg(table) );
}
! void cDBDriver::unlockTable( const QString& table ) const
{
exec( QString("UNLOCK TABLES") );
--- 123,141 ----
Returns true if executed successfully.
*/
! bool cDBDriver::exec( const QString &query )
{
if( !connection )
throw QString( "Not connected to mysql server. Unable to execute query." );
! bool ok = !mysql_query( (MYSQL*)connection, query.latin1() );
return ok;
}
! void cDBDriver::lockTable( const QString& table )
{
exec( QString("LOCK TABLES %1 WRITE;").arg(table) );
}
! void cDBDriver::unlockTable( const QString& table )
{
exec( QString("UNLOCK TABLES") );
***************
*** 143,147 ****
QString cDBDriver::error()
{
! const char *error = mysql_error( connection );
if( error != 0 )
--- 145,149 ----
QString cDBDriver::error()
{
! const char *error = mysql_error( (MYSQL*)connection );
if( error != 0 )
***************
*** 178,183 ****
return false;
! _row = mysql_fetch_row( _result );
! return ( _row != 0 );
}
--- 180,195 ----
return false;
! if( mysql_type )
! {
! _row = mysql_fetch_row( (st_mysql_res*)_result );
! return ( _row != 0 );
! }
! else
! {
! int count;
! const char **columns;
!
! return ( sqlite_step( (sqlite_vm*)_result, &count, (const char***)&_row, &columns ) == SQLITE_ROW );
! }
}
***************
*** 185,189 ****
void cDBResult::free()
{
! mysql_free_result( _result );
_result = 0;
_row = 0;
--- 197,222 ----
void cDBResult::free()
{
! if( mysql_type )
! {
! mysql_free_result( (st_mysql_res*)_result );
! }
! else
! {
! char *error;
! if( sqlite_finalize( (sqlite_vm*)_result, &error ) != SQLITE_OK )
! {
! if( error )
! {
! QString err( error );
! sqlite_freemem( error );
! throw err;
! }
! else
! {
! throw QString( "Unknown SQLite error while finalizing query." );
! }
! }
! }
!
_result = 0;
_row = 0;
***************
*** 213,215 ****
--- 246,331 ----
return _row[offset];
+ }
+
+ /*****************************************************************************
+ cSQLiteDriver member functions
+ *****************************************************************************/
+
+ bool cSQLiteDriver::open( int id )
+ {
+ char *error = NULL;
+
+ close();
+
+ connection = sqlite_open( _dbname.latin1(), 0, &error );
+
+ if( !connection )
+ {
+ if( error )
+ {
+ QString err( error );
+ sqlite_freemem( error );
+ throw err;
+ }
+ else
+ {
+ throw QString( "Unknown SQLite error while opening database." );
+ }
+ }
+
+ return true;
+ }
+
+ void cSQLiteDriver::close()
+ {
+ if( connection != 0 )
+ {
+ sqlite_close( (sqlite*)connection );
+ connection = 0;
+ }
+ }
+
+ bool cSQLiteDriver::exec( const QString &query )
+ {
+ char *error;
+
+ if( sqlite_exec( (sqlite*)connection, query.latin1(), NULL, NULL, &error ) != SQLITE_OK )
+ {
+ if( error )
+ {
+ QString err( QString( error ) + " (" + query + ")" );
+ sqlite_freemem( error );
+ throw err;
+ }
+ else
+ {
+ throw QString( "Unknown SQLite error while executing: %1" ).arg( query );
+ }
+ }
+
+ return true;
+ }
+
+ cDBResult cSQLiteDriver::query( const QString &query )
+ {
+ char *error = NULL;
+ sqlite_vm *result;
+
+
+ // Compile a VM and pass it to cSQLiteResult
+ if( sqlite_compile( (sqlite*)connection, query.latin1(), NULL, &result, &error ) != SQLITE_OK )
+ {
+ if( error )
+ {
+ QString err( QString( error ) + " (" + query + ")" );
+ sqlite_freemem( error );
+ throw err;
+ }
+ else
+ {
+ throw QString( "Unknown SQLite error while querying: %1" ).arg( query );
+ }
+ }
+
+ return cDBResult( result, connection, false );
}
Index: dbdriver.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/dbdriver.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** dbdriver.h 30 Apr 2003 05:54:31 -0000 1.9
--- dbdriver.h 26 Aug 2003 15:01:05 -0000 1.10
***************
*** 35,38 ****
--- 35,40 ----
struct st_mysql;
struct st_mysql_res;
+ struct sqlite;
+ struct sqlite_vm;
#include <qstring.h>
***************
*** 41,51 ****
class cDBResult;
class cDBDriver
{
friend class cDBResult;
! private:
std::map< int, st_mysql* > connections;
! st_mysql *connection;
QString _host, _dbname, _username, _password;
QString lasterror_;
--- 43,55 ----
class cDBResult;
+ class cSQLiteResult;
class cDBDriver
{
friend class cDBResult;
! protected:
std::map< int, st_mysql* > connections;
! void *connection;
!
QString _host, _dbname, _username, _password;
QString lasterror_;
***************
*** 57,67 ****
virtual ~cDBDriver();
! bool open( int id = CONN_MAIN );
! void close();
! bool exec( const QString &query ) const; // Just execute some SQL code, no return!
! cDBResult query( const QString &query ); // Executes a query
! void lockTable( const QString& table ) const;
! void unlockTable( const QString& table ) const;
! QString error(); // Returns an error (if there is one), uses the current connection
// Setters + Getters
--- 61,71 ----
virtual ~cDBDriver();
! virtual bool open( int id = CONN_MAIN );
! virtual void close();
! virtual bool exec( const QString &query ); // Just execute some SQL code, no return!
! virtual cDBResult query( const QString &query ); // Executes a query
! virtual void lockTable( const QString& table );
! virtual void unlockTable( const QString& table );
! virtual QString error(); // Returns an error (if there is one), uses the current connection
// Setters + Getters
***************
*** 77,89 ****
};
class cDBResult
{
! private:
char **_row;
! st_mysql_res *_result;
! st_mysql *_connection; // Connection occupied by this query
public:
! cDBResult(): _row( 0 ), _result( 0 ), _connection( 0 ) {} // Standard Constructor
! cDBResult( st_mysql_res *result, st_mysql *connection ): _row( 0 ), _result( result ), _connection( connection ) {}; // MySQL Constructor
virtual ~cDBResult() {}
--- 81,111 ----
};
+ class cSQLiteDriver : public cDBDriver
+ {
+ public:
+ cSQLiteDriver() {}
+ virtual ~cSQLiteDriver() {}
+
+ bool open( int id = CONN_MAIN );
+ void close();
+
+ void lockTable( const QString &table ) {}
+ void unlockTable( const QString &table ) {}
+ QString error() { return QString::null; }
+
+ bool exec( const QString &query );
+ cDBResult query( const QString &query );
+ };
+
class cDBResult
{
! public:
char **_row;
! void *_result;
! void *_connection; // Connection occupied by this query
! bool mysql_type;
public:
! cDBResult(): _row( 0 ), _result( 0 ), _connection( 0 ), mysql_type( true ) {} // Standard Constructor
! cDBResult( void *result, void *connection, bool mysql_type = true ): _row( 0 ), _result( result ), _connection( connection ) { this->mysql_type = mysql_type; }; // MySQL Constructor
virtual ~cDBResult() {}
Index: items.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/items.cpp,v
retrieving revision 1.334
retrieving revision 1.335
diff -C2 -d -r1.334 -r1.335
*** items.cpp 23 Aug 2003 15:20:29 -0000 1.334
--- items.cpp 26 Aug 2003 15:01:05 -0000 1.335
***************
*** 2002,2005 ****
--- 2002,2019 ----
}
+ static cUObject* productCreator()
+ {
+ return new cItem;
+ }
+
+ void cItem::registerInFactory()
+ {
+ QStringList fields, tables, conditions;
+ buildSqlString( fields, tables, conditions ); // Build our SQL string
+ QString sqlString = QString( "SELECT /*! STRAIGHT_JOIN SQL_SMALL_RESULT */ uobjectmap.serial,uobjectmap.type,%1 FROM uobjectmap,%2 WHERE uobjectmap.type = 'cItem' AND %3" ).arg( fields.join( "," ) ).arg( tables.join( "," ) ).arg( conditions.join( " AND " ) );
+ UObjectFactory::instance()->registerType("cItem", productCreator);
+ UObjectFactory::instance()->registerSqlQuery( "cItem", sqlString );
+ }
+
void cItem::load( char **result, UINT16 &offset )
{
Index: items.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/items.h,v
retrieving revision 1.169
retrieving revision 1.170
diff -C2 -d -r1.169 -r1.170
*** items.h 26 Aug 2003 03:55:13 -0000 1.169
--- items.h 26 Aug 2003 15:01:05 -0000 1.170
***************
*** 101,107 ****
void load( char **, UINT16& );
void save();
- void save( FlatStore::OutputFile*, bool first = false ) throw();
- bool load( unsigned char chunkGroup, unsigned char chunkType, FlatStore::InputFile* ) throw();
- bool postload() throw();
bool del();
--- 101,104 ----
Index: npc.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/npc.cpp,v
retrieving revision 1.31
retrieving revision 1.32
diff -C2 -d -r1.31 -r1.32
*** npc.cpp 21 Aug 2003 01:02:42 -0000 1.31
--- npc.cpp 26 Aug 2003 15:01:05 -0000 1.32
***************
*** 94,97 ****
--- 94,106 ----
}
+ void cNPC::registerInFactory()
+ {
+ QStringList fields, tables, conditions;
+ buildSqlString( fields, tables, conditions ); // Build our SQL string
+ QString sqlString = QString( "SELECT /*! STRAIGHT_JOIN SQL_SMALL_RESULT */ uobjectmap.serial,uobjectmap.type,%1 FROM uobjectmap,%2 WHERE uobjectmap.type = 'cNPC' AND %3" ).arg( fields.join( "," ) ).arg( tables.join( "," ) ).arg( conditions.join( " AND " ) );
+ UObjectFactory::instance()->registerType( "cNPC", productCreator );
+ UObjectFactory::instance()->registerSqlQuery( "cNPC", sqlString );
+ }
+
void cNPC::buildSqlString( QStringList &fields, QStringList &tables, QStringList &conditions )
{
Index: npc.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/npc.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** npc.h 21 Aug 2003 05:04:35 -0000 1.19
--- npc.h 26 Aug 2003 15:01:05 -0000 1.20
***************
*** 83,89 ****
void load( char **, UINT16& );
void save();
- void save( FlatStore::OutputFile*, bool first = false ) throw();
- bool load( unsigned char chunkGroup, unsigned char chunkType, FlatStore::InputFile* ) throw();
- bool postload() throw();
bool del();
--- 83,86 ----
Index: persistentbroker.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/persistentbroker.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** persistentbroker.cpp 11 May 2003 16:03:32 -0000 1.13
--- persistentbroker.cpp 26 Aug 2003 15:01:05 -0000 1.14
***************
*** 52,56 ****
bool PersistentBroker::openDriver( const QString& driver )
{
! connection = new cDBDriver();
if ( !connection )
return false;
--- 52,67 ----
bool PersistentBroker::openDriver( const QString& driver )
{
! if( connection != 0 )
! {
! connection->close();
! delete connection;
! connection = 0;
! }
!
! if( driver == "sqlite" )
! connection = new cSQLiteDriver();
! else
! connection = new cDBDriver;
!
if ( !connection )
return false;
***************
*** 75,78 ****
--- 86,95 ----
}
+ void PersistentBroker::disconnect()
+ {
+ if( connection )
+ connection->close();
+ }
+
bool PersistentBroker::saveObject( PersistentObject* object )
{
***************
*** 109,112 ****
--- 126,132 ----
bool PersistentBroker::executeQuery( const QString& query )
{
+ if( !connection )
+ throw QString( "PersistentBroker not connected to database." );
+
bool result = connection->exec(query);
if( !result )
***************
*** 129,133 ****
{
if( !connection )
! return cDBResult( 0, 0 );
return connection->query( query );
--- 149,153 ----
{
if( !connection )
! throw QString( "PersistentBroker not connected to database." );
return connection->query( query );
Index: persistentbroker.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/persistentbroker.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** persistentbroker.h 5 May 2003 11:59:13 -0000 1.16
--- persistentbroker.h 26 Aug 2003 15:01:05 -0000 1.17
***************
*** 57,61 ****
--- 57,64 ----
~PersistentBroker();
bool openDriver( const QString& driver );
+
bool connect( const QString& host, const QString& db, const QString& username, const QString& password );
+ void disconnect();
+
bool executeQuery( const QString& query );
cDBResult query( const QString& query );
***************
*** 78,82 ****
inline QString __escapeReservedCharacters( const QString& d )
{
! return QString(d).replace( QRegExp("'"), "\\'" );
}
--- 81,86 ----
inline QString __escapeReservedCharacters( const QString& d )
{
! //return QString(d).replace( QRegExp("'"), "\\'" );
! return QString(d).replace( QRegExp("'"), "''" );
}
***************
*** 141,146 ****
#endif
! #define initSave QStringList conditions; QStringList fields; QString table;
! #define clearFields conditions.clear(); fields.clear();
#define setTable( value ) table = value;
--- 145,150 ----
#endif
! #define initSave QStringList conditions, fields, values; QString table;
! #define clearFields conditions.clear(); fields.clear(); values.clear();
#define setTable( value ) table = value;
***************
*** 148,163 ****
// for inserting we use the faster VALUES() method
! #define addField( name, value ) fields.push_back( QString( "`%1` = '%2'" ).arg( name ).arg( value ) );
! #define addStrField( name, value ) fields.push_back( QString( "`%1` = '%2'" ).arg( name ).arg( __escapeReservedCharacters( value.isNull() ? QString( "" ) : value ) ) );
#define addCondition( name, value ) conditions.push_back( QString( "`%1` = '%2'" ).arg( name ).arg( value ) );
#define saveFields \
if( isPersistent ) \
! { \
! persistentBroker->executeQuery( QString( "UPDATE `%1` SET %2 WHERE %3" ).arg( table ).arg( fields.join(", ") ).arg( conditions.join(" AND ") ) ); \
! } \
else \
! { \
! persistentBroker->executeQuery( QString( "INSERT INTO `%1` SET %2" ).arg( table ).arg( fields.join( ", " ) ) ); \
! }
#endif // __PERSISTENTBROKER_H__
--- 152,163 ----
// for inserting we use the faster VALUES() method
! #define addField( name, value ) fields.push_back( name ); values.push_back( QString::number( value ) );
! #define addStrField( name, value ) fields.push_back( name ); values.push_back( "'" + ( value.isNull() ? QString( "" ) : __escapeReservedCharacters( value ) ) + "'" );
#define addCondition( name, value ) conditions.push_back( QString( "`%1` = '%2'" ).arg( name ).arg( value ) );
#define saveFields \
if( isPersistent ) \
! persistentBroker->executeQuery( QString( "UPDATE %1 (%2) VALUES(%3) WHERE %4" ).arg( table ).arg( fields.join( "," ) ).arg( values.join( "," ) ).arg( conditions.join( " AND " ) ) ); \
else \
! persistentBroker->executeQuery( QString( "INSERT INTO %1 (%2) VALUES(%3)" ).arg( table ).arg( fields.join( "," ) ).arg( values.join( "," ) ) );
#endif // __PERSISTENTBROKER_H__
Index: player.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/player.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -d -r1.24 -r1.25
*** player.cpp 21 Aug 2003 01:02:42 -0000 1.24
--- player.cpp 26 Aug 2003 15:01:05 -0000 1.25
***************
*** 87,90 ****
--- 87,99 ----
}
+ void cPlayer::registerInFactory()
+ {
+ QStringList fields, tables, conditions;
+ buildSqlString( fields, tables, conditions ); // Build our SQL string
+ QString sqlString = QString( "SELECT /*! STRAIGHT_JOIN SQL_SMALL_RESULT */ uobjectmap.serial,uobjectmap.type,%1 FROM uobjectmap,%2 WHERE uobjectmap.type = 'cPlayer' AND %3" ).arg( fields.join( "," ) ).arg( tables.join( "," ) ).arg( conditions.join( " AND " ) );
+ UObjectFactory::instance()->registerType( "cPlayer", productCreator );
+ UObjectFactory::instance()->registerSqlQuery( "cPlayer", sqlString );
+ }
+
void cPlayer::buildSqlString( QStringList &fields, QStringList &tables, QStringList &conditions )
{
Index: player.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/player.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** player.h 21 Aug 2003 05:04:35 -0000 1.16
--- player.h 26 Aug 2003 15:01:05 -0000 1.17
***************
*** 62,68 ****
void load( char **, UINT16& );
void save();
- void save( FlatStore::OutputFile*, bool first = false ) throw();
- bool load( unsigned char chunkGroup, unsigned char chunkType, FlatStore::InputFile* ) throw();
- bool postload() throw();
bool del();
--- 62,65 ----
Index: srvparams.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/srvparams.cpp,v
retrieving revision 1.84
retrieving revision 1.85
diff -C2 -d -r1.84 -r1.85
*** srvparams.cpp 21 Aug 2003 05:04:35 -0000 1.84
--- srvparams.cpp 26 Aug 2003 15:01:05 -0000 1.85
***************
*** 119,127 ****
databaseUsername_ = getString("Database", "username", "", true);
databaseHost_ = getString("Database", "host", "", true);
! databaseName_ = getString("Database", "name", "", true);
!
! // Remote Admin
! ra_port_ = getNumber("Remote Admin", "Port", 2594, true);
! EnableRA_ = getBool("Remote Admin", "Enable", false, true);
// Repsys
--- 119,124 ----
databaseUsername_ = getString("Database", "username", "", true);
databaseHost_ = getString("Database", "host", "", true);
! databaseHost_ = getString("Database", "driver", "sqlite", true);
! databaseName_ = getString("Database", "name", "world.db", true);
// Repsys
***************
*** 272,281 ****
walkDisturbsCast_ = getBool( "Magic", "Walking Disturbs Casting", true, true );
precasting_ = getBool( "Magic", "Precasting", true, true );
-
- // Worldsave
- saveModule_ = getString( "Worldsaves", "Saver", "sql", true );
- loadModule_ = getString( "Worldsaves", "Loader", "sql", true );
- savePrefix_ = getString( "Worldsaves", "Prefix", "", true );
- savePath_ = getString( "Worldsaves", "Path", "", true );
// Path Finding
--- 269,272 ----
Index: srvparams.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/srvparams.h,v
retrieving revision 1.53
retrieving revision 1.54
diff -C2 -d -r1.53 -r1.54
*** srvparams.h 21 Aug 2003 05:04:35 -0000 1.53
--- srvparams.h 26 Aug 2003 15:01:05 -0000 1.54
***************
*** 145,148 ****
--- 145,149 ----
unsigned int beggingTime_;
unsigned char season_;
+ QString databaseDriver_;
QString databaseName_;
QString databaseUsername_;
***************
*** 158,165 ****
QString accountsArchiver_;
bool categoryTagAddMenu_;
- QString saveModule_;
- QString loadModule_;
- QString savePath_;
- QString savePrefix_;
double npcMoveTime_;
double tamedNpcMoveTime_;
--- 159,162 ----
***************
*** 171,178 ****
unsigned int animalWildFleeRange_;
- // Remote Admin
- unsigned int ra_port_;
- bool EnableRA_;
-
// Regenerate
unsigned int hitpointrate_;
--- 168,171 ----
***************
*** 350,353 ****
--- 343,347 ----
// Persistency Module
+ QString databaseDriver() const;
QString databaseHost() const;
QString databasePassword() const;
***************
*** 355,362 ****
QString databaseName() const;
- // Remote Admin
- unsigned int ra_port() const;
- bool EnableRA() const;
-
// Regenerate
unsigned int hitpointrate() const;
--- 349,352 ----
***************
*** 422,431 ****
bool enableGame() const;
- // Worldsave
- QString savePath() const;
- QString saveModule() const;
- QString loadModule() const;
- QString savePrefix() const;
-
// Path Finding
int pathfindMaxSteps() const;
--- 412,415 ----
***************
*** 942,955 ****
}
- inline unsigned int cSrvParams::ra_port() const
- {
- return ra_port_;
- }
-
- inline bool cSrvParams::EnableRA() const
- {
- return EnableRA_;
- }
-
inline long int cSrvParams::murderdecay() const
{
--- 926,929 ----
***************
*** 1092,1095 ****
--- 1066,1074 ----
}
+ inline QString cSrvParams::databaseDriver() const
+ {
+ return databaseDriver_;
+ }
+
inline QString cSrvParams::databaseHost() const
{
***************
*** 1140,1163 ****
{
return categoryTagAddMenu_;
- }
-
- inline QString cSrvParams::saveModule() const
- {
- return saveModule_;
- }
-
- inline QString cSrvParams::loadModule() const
- {
- return loadModule_;
- }
-
- inline QString cSrvParams::savePrefix() const
- {
- return savePrefix_;
- }
-
- inline QString cSrvParams::savePath() const
- {
- return savePath_;
}
--- 1119,1122 ----
Index: uobject.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/uobject.h,v
retrieving revision 1.71
retrieving revision 1.72
diff -C2 -d -r1.71 -r1.72
*** uobject.h 22 Aug 2003 16:57:09 -0000 1.71
--- uobject.h 26 Aug 2003 15:01:05 -0000 1.72
***************
*** 57,66 ****
class cItem;
- namespace FlatStore
- {
- class OutputFile;
- class InputFile;
- };
-
struct stError;
--- 57,60 ----
***************
*** 110,116 ****
void save();
bool del();
- virtual void save( FlatStore::OutputFile*, bool first = false ) throw();
- virtual bool load( unsigned char chunkGroup, unsigned char chunkType, FlatStore::InputFile* ) throw();
- virtual bool postload() throw();
QString eventList( void ) const; // Returns the list of events
--- 104,107 ----
Index: wolf.dsp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/wolf.dsp,v
retrieving revision 1.204
retrieving revision 1.205
diff -C2 -d -r1.204 -r1.205
*** wolf.dsp 23 Aug 2003 01:03:31 -0000 1.204
--- wolf.dsp 26 Aug 2003 15:01:06 -0000 1.205
***************
*** 1,23 ****
# Microsoft Developer Studio Project File - Name="wolf" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
! # ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=wolf - Win32 Debug
! !MESSAGE This is not a valid makefile. To build this project using NMAKE,
! !MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "wolf.mak".
!MESSAGE
! !MESSAGE You can specify a configuration when running NMAKE
! !MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "wolf.mak" CFG="wolf - Win32 Debug"
!MESSAGE
! !MESSAGE Possible choices for configuration are:
!MESSAGE
! !MESSAGE "wolf - Win32 Release" (based on "Win32 (x86) Console Application")
! !MESSAGE "wolf - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
--- 1,23 ----
# Microsoft Developer Studio Project File - Name="wolf" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
! # ** NICHT BEARBEITEN **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=wolf - Win32 Debug
! !MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
! !MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
!MESSAGE
!MESSAGE NMAKE /f "wolf.mak".
!MESSAGE
! !MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
! !MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
!MESSAGE
!MESSAGE NMAKE /f "wolf.mak" CFG="wolf - Win32 Debug"
!MESSAGE
! !MESSAGE Für die Konfiguration stehen zur Auswahl:
!MESSAGE
! !MESSAGE "wolf - Win32 Release" (basierend auf "Win32 (x86) Console Application")
! !MESSAGE "wolf - Win32 Debug" (basierend auf "Win32 (x86) Console Application")
!MESSAGE
***************
*** 26,30 ****
# PROP Scc_ProjName "wolf"
# PROP Scc_LocalPath "."
! CPP=xicl6.exe
RSC=rc.exe
--- 26,30 ----
# PROP Scc_ProjName "wolf"
# PROP Scc_LocalPath "."
! CPP=cl.exe
RSC=rc.exe
***************
*** 50,54 ****
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
! LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt312.lib libmysql.lib flatstore.lib /nologo /subsystem:console /map /machine:I386 /nodefaultlib:"libcmt MSVCRTD" /out:"D:\wolfpack\wolfpack.exe" /libpath:"lib\ZThread\lib" /libpath:"lib\Python\lib" /libpath:"lib\bugreport\lib" /libpath:"flatstore\Release" /opt:ref /opt:nowin98
--- 50,54 ----
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
! LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt312.lib libmysql.lib flatstore.lib /nologo /subsystem:console /map /machine:I386 /nodefaultlib:"libcmt MSVCRTD" /out:"D:\wolfpack\wolfpack.exe" /libpath:"lib\ZThread\lib" /libpath:"lib\Python\lib" /libpath:"lib\bugreport\lib" /libpath:"flatstore\Release" /opt:ref /opt:nowin98
***************
*** 75,81 ****
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
! LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt320.lib libmysql.lib flatstore.lib /nologo /version:12.9 /subsystem:console /map /debug /machine:I386 /out:"..\Wolfpack.exe" /pdbtype:sept /libpath:"lib\bugreport\lib" /libpath:"flatstore\Debug"
# SUBTRACT LINK32 /pdb:none
--- 75,81 ----
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
! LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt312.lib libmysql.lib flatstore.lib /nologo /version:12.9 /subsystem:console /map /debug /machine:I386 /out:"..\Wolfpack.exe" /pdbtype:sept /libpath:"lib\bugreport\lib" /libpath:"flatstore\Debug"
# SUBTRACT LINK32 /pdb:none
***************
*** 1617,1620 ****
--- 1617,1776 ----
SOURCE=.\moc_wptargetrequests.cpp
+ # End Source File
+ # End Group
+ # Begin Group "SQLite"
+
+ # PROP Default_Filter ""
+ # Begin Source File
+
+ SOURCE=.\sqlite\attach.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\auth.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\btree.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\btree.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\btree_rb.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\build.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\config.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\copy.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\delete.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\expr.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\func.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\hash.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\hash.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\insert.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\main.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\opcodes.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\opcodes.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\os.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\os.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\pager.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\pager.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\parse.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\parse.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\pragma.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\printf.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\random.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\select.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\sqlite.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\sqliteInt.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\table.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\tokenize.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\trigger.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\update.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\util.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\vacuum.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\vdbe.c
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\vdbe.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\sqlite\where.c
# End Source File
# End Group
Index: wolf.dsw
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/wolf.dsw,v
retrieving revision 1.40
retrieving revision 1.41
diff -C2 -d -r1.40 -r1.41
*** wolf.dsw 23 Aug 2003 01:03:31 -0000 1.40
--- wolf.dsw 26 Aug 2003 15:01:06 -0000 1.41
***************
*** 1,16 ****
Microsoft Developer Studio Workspace File, Format Version 6.00
! # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
!
! ###############################################################################
!
! Project: "flatstore"=.\flatstore\flatstore.dsp - Package Owner=<4>
!
! Package=<5>
! {{{
! }}}
!
! Package=<4>
! {{{
! }}}
###############################################################################
--- 1,4 ----
Microsoft Developer Studio Workspace File, Format Version 6.00
! # WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN!
###############################################################################
Index: wolfpack.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/wolfpack.cpp,v
retrieving revision 1.437
retrieving revision 1.438
diff -C2 -d -r1.437 -r1.438
*** wolfpack.cpp 23 Aug 2003 15:20:29 -0000 1.437
--- wolfpack.cpp 26 Aug 2003 15:01:06 -0000 1.438
***************
*** 710,730 ****
// Try to open our driver
! if( !persistentBroker->openDriver( "mysql" ) )
{
exit( -1 );
- }
-
- // Don't connect if everything is empty
- if( !SrvParams->databaseHost().isEmpty() || !SrvParams->databaseName().isEmpty() || !SrvParams->databaseUsername().isEmpty() || !SrvParams->databasePassword().isEmpty() )
- {
- try
- {
- persistentBroker->connect( SrvParams->databaseHost(), SrvParams->databaseName(), SrvParams->databaseUsername(), SrvParams->databasePassword() );
- }
- catch( QString &e )
- {
- clConsole.log( LOG_FATAL, QString( "An error occured while connecting to the database: %1\n" ).arg( e ) );
- exit( -1 );
- }
}
--- 710,716 ----
// Try to open our driver
! if( !persistentBroker->openDriver( SrvParams->databaseDriver() ) )
{
exit( -1 );
}
Index: world.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/world.cpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** world.cpp 21 Aug 2003 05:04:35 -0000 1.26
--- world.cpp 26 Aug 2003 15:01:06 -0000 1.27
***************
*** 45,48 ****
--- 45,49 ----
#include "player.h"
#include "npc.h"
+ #include "sqlite/sqlite.h"
// Postprocessing stuff, can be deleted later on
***************
*** 60,67 ****
#include "python/tempeffect.h"
- // FlatStore Includes
- #include "flatstore_keys.h"
- #include "flatstore/flatstore.h"
-
// Library Includes
#include <list>
--- 61,64 ----
***************
*** 107,111 ****
pendingObjects.clear();
-
}
};
--- 104,107 ----
***************
*** 182,190 ****
}
! /*!
! Load a World using the SQL database
! */
! void cWorld::loadSql()
{
ISerialization* archive = cPluginFactory::serializationArchiver( "xml" );
--- 178,195 ----
}
! void cWorld::load()
{
+ clConsole.send( "Loading World...\n" );
+
+ try
+ {
+ persistentBroker->connect( SrvParams->databaseHost(), SrvParams->databaseName(), SrvParams->databaseUsername(), SrvParams->databasePassword() );
+ }
+ catch( QString &e )
+ {
+ clConsole.log( LOG_FATAL, QString( "An error occured while connecting to the database: %1\n" ).arg( e ) );
+ return;
+ }
+
ISerialization* archive = cPluginFactory::serializationArchiver( "xml" );
***************
*** 437,538 ****
deleteItems.clear();
}
- }
-
- void cWorld::loadFlatstore( const QString &prefix )
- {
- FlatStore::InputFile input;
-
- input.startRead( QString( "%1world.fsd" ).arg( prefix ).latin1() );
-
- unsigned int serial;
- unsigned short objectType;
-
- while( input.readObject( objectType, serial ) )
- {
- // Create a new object based on the object-type
- unsigned char group, chunk;
- cUObject *object = 0;
-
- // Get an object
- object = UObjectFactory::instance()->createObject( QString::number( objectType ) );
-
- if( !object )
- {
- clConsole.log( LOG_ERROR, QString( "Invalid object type encountered: %1" ).arg( objectType ) );
- continue;
- }
-
- object->setSerial( serial ); // This autoregisters the object too
-
- while( input.readChunk( group, chunk ) )
- {
- if( !object->load( group, chunk, &input ) )
- {
- clConsole.log( LOG_ERROR, QString( "Invalid chunk key found in worldfile: %1 (Group: %2)." ).arg( chunk ).arg( group ) );
-
- unregisterObject( object );
- delete object;
-
- break; // Problem about this is that most likely the whole object is corrupted until we have a world.fsh file
- }
- }
- }
! // Postprocessing (Items first)
! cItemIterator i_iter;
! for( P_ITEM pItem = i_iter.first(); pItem; pItem = i_iter.next() )
! {
! if( !pItem->postload() )
! quickdelete( pItem );
! }
!
! cCharIterator c_iter;
!
! for( P_CHAR pChar = c_iter.first(); pChar; pChar = c_iter.next() )
! {
! pChar->postload();
! // I think we could delete characters the normal way here
! // But it seems like characters never get deleted during postprocess
! }
! input.finishRead();
}
! void cWorld::load( QString basepath, QString prefix, QString module )
{
! clConsole.send( "Loading World..." );
!
! if( module == QString::null )
! module = SrvParams->loadModule();
!
! if( prefix == QString::null )
! prefix = SrvParams->savePrefix();
!
! if( basepath == QString::null )
! basepath = SrvParams->savePath();
!
! prefix.prepend( basepath );
! if( module == "sql" )
! loadSql();
! else if( module == "flatstore" )
! loadFlatstore( prefix );
! else
{
! clConsole.ChangeColor( WPC_RED );
! clConsole.send( " Failed\n" );
! clConsole.ChangeColor( WPC_NORMAL );
!
! throw QString( "Unknown worldsave module: %1" ).arg( module );
}
! clConsole.send("World Loading ");
! clConsole.ChangeColor( WPC_GREEN );
! clConsole.send( "Completed\n" );
! clConsole.ChangeColor( WPC_NORMAL );
! }
! void cWorld::saveSql()
! {
SrvParams->flush();
--- 442,471 ----
deleteItems.clear();
}
! persistentBroker->disconnect();
! clConsole.send("World Loading ");
! clConsole.ChangeColor( WPC_GREEN );
! clConsole.send( "Completed\n" );
! clConsole.ChangeColor( WPC_NORMAL );
}
! void cWorld::save()
{
! clConsole.send( "Saving World..." );
! try
{
! persistentBroker->connect( SrvParams->databaseHost(), SrvParams->databaseName(), SrvParams->databaseUsername(), SrvParams->databasePassword() );
! }
! catch( QString &e )
! {
! clConsole.log( LOG_FATAL, QString( "An error occured while connecting to the database: %1\n" ).arg( e ) );
! return;
}
! unsigned int startTime = getNormalizedTime();
! // Try to Benchmark
SrvParams->flush();
***************
*** 577,669 ****
uiCurrentTime = getNormalizedTime();
! }
!
! void cWorld::saveFlatstore( const QString &prefix )
! {
! persistentBroker->clearDeleteQueue(); // prevents us from accidently not freeing memory
!
! FlatStore::OutputFile output;
! std::list< cUObject* >::const_iterator delIt;
!
! output.startOutput( QString( prefix + "world.fsd" ).latin1() );
!
! // Save Characters
! CharMap::const_iterator char_it;
! for( char_it = p->chars.begin(); char_it != p->chars.end(); ++char_it )
! {
! P_CHAR pChar = char_it->second;
! try
! {
! pChar->save( &output, true );
! }
! catch( ... )
! {
! clConsole.ChangeColor( WPC_RED );
! clConsole.send( " Failed\n" );
! clConsole.ChangeColor( WPC_NORMAL );
!
! clConsole.log( LOG_ERROR, QString( "Couldn't save character: 0x%1" ).arg( pChar->serial(), 0, 16 ) );
!
! clConsole.send( "Continuing...");
! }
! }
!
! // Save Items
! ItemMap::const_iterator item_it;
! for( item_it = p->items.begin(); item_it != p->items.end(); ++item_it )
! {
! P_ITEM pItem = item_it->second;
!
! try
! {
! pItem->save( &output, true );
! }
! catch( ... )
! {
! clConsole.ChangeColor( WPC_RED );
! clConsole.send( " Failed\n" );
! clConsole.ChangeColor( WPC_NORMAL );
!
! clConsole.log( LOG_ERROR, QString( "Couldn't save item: 0x%1" ).arg( pItem->serial(), 0, 16 ) );
!
! clConsole.send( "Continuing...");
! }
! }
!
! for( delIt = p->pendingObjects.begin(); delIt != p->pendingObjects.end(); ++delIt )
! // Now we can finally delete pending objects
! delete *delIt;
!
! p->pendingObjects.clear();
!
! output.finishOutput();
! }
!
! void cWorld::save( QString basepath, QString prefix, QString module )
! {
! if( module == QString::null )
! module = SrvParams->saveModule();
!
! if( prefix == QString::null )
! prefix = SrvParams->savePrefix();
!
! if( basepath == QString::null )
! basepath = SrvParams->savePath();
!
! prefix.prepend( basepath );
!
! clConsole.send( "Saving World..." );
!
! unsigned int startTime = getNormalizedTime();
!
! // Try to Benchmark
! if( module == "sql" )
! saveSql();
! else if( module == "flatstore" )
! saveFlatstore( prefix );
!
clConsole.ChangeColor( WPC_GREEN );
clConsole.send( " Done" );
clConsole.ChangeColor( WPC_NORMAL );
clConsole.send( QString( " [%1ms]\n" ).arg( getNormalizedTime() - startTime ) );
--- 510,519 ----
uiCurrentTime = getNormalizedTime();
!
clConsole.ChangeColor( WPC_GREEN );
clConsole.send( " Done" );
clConsole.ChangeColor( WPC_NORMAL );
+
+ persistentBroker->disconnect();
clConsole.send( QString( " [%1ms]\n" ).arg( getNormalizedTime() - startTime ) );
Index: world.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/world.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** world.h 11 May 2003 21:30:21 -0000 1.3
--- world.h 26 Aug 2003 15:01:06 -0000 1.4
***************
*** 75,84 ****
SERIAL _lastCharSerial, _lastItemSerial;
- void loadFlatstore( const QString &prefix );
- void loadSql();
-
- void saveFlatstore( const QString &prefix );
- void saveSql();
-
public:
// Constructor/Destructor
--- 75,78 ----
***************
*** 87,92 ****
// WorldLoader interface
! void load( QString basepath = QString::null, QString prefix = QString::null, QString module = QString::null );
! void save( QString basepath = QString::null, QString prefix = QString::null, QString module = QString::null );
// Book-keeping functions
--- 81,86 ----
// WorldLoader interface
! void load();
! void save();
// Book-keeping functions
--- basechar_flatstore.cpp DELETED ---
--- flatstore_keys.h DELETED ---
--- item_flatstore.cpp DELETED ---
--- npc_flatstore.cpp DELETED ---
--- player_flatstore.cpp DELETED ---
--- uobject_flatstore.cpp DELETED ---
|
Update of /cvsroot/wpdev/wolfpack/flatstore In directory sc8-pr-cvs1:/tmp/cvs-serv2057/src/flatstore Removed Files: exceptions.cpp exceptions.h flatstore.cpp flatstore.def flatstore.dsp flatstore.dsw flatstore.h flatstore.pro flatstore.vcproj flatstore_c.cpp flatstore_keys.h flatstoretest.cpp flatstoretest.vcproj item-fields.txt version.h Log Message: Implemented SQLite support. driver=sqlite database name is the filename --- exceptions.cpp DELETED --- --- exceptions.h DELETED --- --- flatstore.cpp DELETED --- --- flatstore.def DELETED --- --- flatstore.dsp DELETED --- --- flatstore.dsw DELETED --- --- flatstore.h DELETED --- --- flatstore.pro DELETED --- --- flatstore.vcproj DELETED --- --- flatstore_c.cpp DELETED --- --- flatstore_keys.h DELETED --- --- flatstoretest.cpp DELETED --- --- flatstoretest.vcproj DELETED --- --- item-fields.txt DELETED --- --- version.h DELETED --- |
|
From: <thi...@us...> - 2003-08-26 03:55:28
|
Update of /cvsroot/wpdev/wolfpack
In directory sc8-pr-cvs1:/tmp/cvs-serv30835
Modified Files:
basechar.cpp items.h pythonscript.cpp pythonscript.h
Log Message:
Fixed several missing Py_DECREF in the python script code.
also fixed issue with every item decaying.
Index: basechar.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/basechar.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -C2 -d -r1.33 -r1.34
*** basechar.cpp 21 Aug 2003 01:02:40 -0000 1.33
--- basechar.cpp 26 Aug 2003 03:55:13 -0000 1.34
***************
*** 1159,1163 ****
}
! return (char*)0;
}
--- 1159,1163 ----
}
! return QString::null;
}
Index: items.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/items.h,v
retrieving revision 1.168
retrieving revision 1.169
diff -C2 -d -r1.168 -r1.169
*** items.h 23 Aug 2003 01:03:31 -0000 1.168
--- items.h 26 Aug 2003 03:55:13 -0000 1.169
***************
*** 213,217 ****
void setLodamage( SI16 nValue ) { lodamage_ = nValue; flagChanged(); changed( TOOLTIP );};
void setWipe( bool nValue ) { ( nValue ) ? priv_ &= 0x10 : priv_ |= 0xEF; flagChanged();};
! void setNoDecay( bool nValue ) { ( nValue ) ? priv_ &= 0x01 : priv_ |= 0xFE; flagChanged(); };
void setWeight( SI16 nValue );
void setHp( SI16 nValue ) { hp_ = nValue; flagChanged(); changed( TOOLTIP );};
--- 213,217 ----
void setLodamage( SI16 nValue ) { lodamage_ = nValue; flagChanged(); changed( TOOLTIP );};
void setWipe( bool nValue ) { ( nValue ) ? priv_ &= 0x10 : priv_ |= 0xEF; flagChanged();};
! void setNoDecay( bool nValue ) { ( nValue ) ? priv_ |= 0x01 : priv_ &= ~0x01; flagChanged(); };
void setWeight( SI16 nValue );
void setHp( SI16 nValue ) { hp_ = nValue; flagChanged(); changed( TOOLTIP );};
Index: pythonscript.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/pythonscript.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** pythonscript.cpp 6 Jul 2003 16:44:14 -0000 1.3
--- pythonscript.cpp 26 Aug 2003 03:55:13 -0000 1.4
***************
*** 87,105 ****
void cPythonScript::unload( void )
{
! if( codeModule == NULL )
return;
! if( PyObject_HasAttr( codeModule, PyString_FromString( "onUnload" ) ) )
! {
! PyObject* method = PyObject_GetAttr( codeModule, PyString_FromString( "onUnload" ) );
!
! if( ( method == NULL ) || ( !PyCallable_Check( method ) ) )
! return;
! PyObject_CallObject( method, NULL );
! PyReportError();
}
codeModule = 0;
}
--- 87,117 ----
void cPythonScript::unload( void )
{
! if( !codeModule )
return;
! PyObject* method = PyObject_GetAttrString( codeModule, "onUnload" );
! if( !method )
! {
! PyErr_Clear();
! Py_DECREF( codeModule );
! codeModule = 0;
! return;
}
+ if ( !PyCallable_Check( method ) )
+ {
+ Py_DECREF( method );
+ Py_DECREF( codeModule );
+ codeModule = 0;
+ }
+
+ PyObject* result = PyObject_CallObject( method, NULL );
+ PyReportError();
+ Py_XDECREF( result ); // void
+ Py_DECREF( method );
+ Py_DECREF( codeModule );
codeModule = 0;
+
}
***************
*** 113,117 ****
QString name = element->text();
! if( name == QString::null )
return false;
--- 125,129 ----
QString name = element->text();
! if( name.isNull() )
return false;
***************
*** 123,133 ****
return false;
! // Compile the codemodule
! char moduleNameStr[1024]; // Just to be sure
! strcpy( &moduleNameStr[ 0 ], moduleName.latin1() );
!
! codeModule = PyImport_ImportModule( moduleNameStr );
! if( codeModule == NULL )
{
clConsole.ProgressFail();
--- 135,141 ----
return false;
! codeModule = PyImport_ImportModule( const_cast<char*>(moduleName.latin1()) );
! if( !codeModule )
{
clConsole.ProgressFail();
***************
*** 142,157 ****
// Call the load Function
! if( PyObject_HasAttr( codeModule, PyString_FromString( "onLoad" ) ) )
! {
! PyObject* method = PyObject_GetAttr( codeModule, PyString_FromString( "onLoad" ) );
!
! if( ( method == NULL ) || ( !PyCallable_Check( method ) ) )
! return true;
! PyObject_CallObject( method, NULL );
! PyReportError();
}
!
! handleSpeech_ = PyObject_HasAttr( codeModule, PyString_FromString( "onSpeech" ) );
return true;
}
--- 150,167 ----
// Call the load Function
! PyObject* method = PyObject_GetAttrString( codeModule, "onLoad" );
! if ( method )
! {
! if ( PyCallable_Check( method ) )
! {
! PyObject* result = PyObject_CallObject( method, NULL );
! PyReportError();
! Py_XDECREF( result );
! }
! Py_DECREF( method );
}
!
! handleSpeech_ = PyObject_HasAttrString( codeModule, "onSpeech" );
return true;
}
***************
*** 161,168 ****
{
PyHasMethod( "onServerstart" )
!
! PyObject *tuple = PyTuple_New( 0 );
!
! PyEvalMethod( "onServerstart" )
}
--- 171,175 ----
{
PyHasMethod( "onServerstart" )
! return PyEvalMethod( "onServerstart", PyTuple_New( 0 ) );
}
***************
*** 176,180 ****
PyTuple_SetItem( tuple, 1, PyGetItemObject( Used ) );
! PyEvalMethod( "onUse" )
}
--- 183,187 ----
PyTuple_SetItem( tuple, 1, PyGetItemObject( Used ) );
! return PyEvalMethod( "onUse", tuple );
}
***************
*** 187,191 ****
PyTuple_SetItem( tuple, 1, PyGetCharObject( Viewer ) );
! PyEvalMethod( "onSingleClick" )
}
--- 194,198 ----
PyTuple_SetItem( tuple, 1, PyGetCharObject( Viewer ) );
! return PyEvalMethod( "onSingleClick", tuple );
}
***************
*** 198,202 ****
PyTuple_SetItem( tuple, 1, PyGetCharObject( Viewer ) );
! PyEvalMethod( "onSingleClick" )
}
--- 205,209 ----
PyTuple_SetItem( tuple, 1, PyGetCharObject( Viewer ) );
! return PyEvalMethod( "onSingleClick", tuple );
}
***************
*** 208,212 ****
PyTuple_SetItem( tuple, 0, PyGetCharObject( Character ) );
! PyEvalMethod( "onLogout" )
}
--- 215,219 ----
PyTuple_SetItem( tuple, 0, PyGetCharObject( Character ) );
! return PyEvalMethod( "onLogout", tuple );
}
***************
*** 218,222 ****
PyTuple_SetItem( tuple, 0, PyGetCharObject( Character ) );
! PyEvalMethod( "onLogin" )
}
--- 225,229 ----
PyTuple_SetItem( tuple, 0, PyGetCharObject( Character ) );
! return PyEvalMethod( "onLogin", tuple );
}
***************
*** 229,233 ****
PyTuple_SetItem( tuple, 1, PyGetItemObject( Obstacle ) );
! PyEvalMethod( "onCollideItem" )
}
--- 236,240 ----
PyTuple_SetItem( tuple, 1, PyGetItemObject( Obstacle ) );
! return PyEvalMethod( "onCollideItem", tuple );
}
***************
*** 240,244 ****
PyTuple_SetItem( tuple, 1, PyGetCharObject( Obstacle ) );
! PyEvalMethod( "onCollideChar" )
}
--- 247,251 ----
PyTuple_SetItem( tuple, 1, PyGetCharObject( Obstacle ) );
! return PyEvalMethod( "onCollideChar", tuple );
}
***************
*** 252,256 ****
PyTuple_SetItem( tuple, 2, PyInt_FromLong( Sequence ) );
! PyEvalMethod( "onWalk" )
}
--- 259,263 ----
PyTuple_SetItem( tuple, 2, PyInt_FromLong( Sequence ) );
! return PyEvalMethod( "onWalk", tuple );
}
***************
*** 268,272 ****
PyTuple_SetItem( tuple, 5, PyString_FromString( Lang.ascii() ) );
! PyEvalMethod( "onTalk" )
}
--- 275,279 ----
PyTuple_SetItem( tuple, 5, PyString_FromString( Lang.ascii() ) );
! return PyEvalMethod( "onTalk", tuple );
}
***************
*** 279,283 ****
PyTuple_SetItem( tuple, 1, ( War ? PyInt_FromLong( 1 ) : PyInt_FromLong( 0 ) ) );
! PyEvalMethod( "onWarModeToggle" )
}
--- 286,290 ----
PyTuple_SetItem( tuple, 1, ( War ? PyInt_FromLong( 1 ) : PyInt_FromLong( 0 ) ) );
! return PyEvalMethod( "onWarModeToggle", tuple );
}
***************
*** 289,293 ****
PyTuple_SetItem( tuple, 0, PyGetCharObject( Character ) );
! PyEvalMethod( "onHelp" )
}
--- 296,300 ----
PyTuple_SetItem( tuple, 0, PyGetCharObject( Character ) );
! return PyEvalMethod( "onHelp", tuple );
}
***************
*** 300,304 ****
PyTuple_SetItem( tuple, 0, PyGetCharObject( Character ) );
! PyEvalMethod( "onChat" )
}
--- 307,311 ----
PyTuple_SetItem( tuple, 0, PyGetCharObject( Character ) );
! return PyEvalMethod( "onChat", tuple );
}
***************
*** 312,316 ****
PyTuple_SetItem( tuple, 1, PyInt_FromLong( Skill ) );
! PyEvalMethod( "onSkillUse" )
}
--- 319,323 ----
PyTuple_SetItem( tuple, 1, PyInt_FromLong( Skill ) );
! return PyEvalMethod( "onSkillUse", tuple );
}
***************
*** 326,330 ****
PyTuple_SetItem( tuple, 4, PyInt_FromLong( success ) );
! PyEvalMethod( "onSkillGain" )
}
--- 333,337 ----
PyTuple_SetItem( tuple, 4, PyInt_FromLong( success ) );
! return PyEvalMethod( "onSkillGain", tuple );
}
***************
*** 338,342 ****
PyTuple_SetItem( tuple, 2, PyInt_FromLong( amount ) );
! PyEvalMethod( "onStatGain" )
}
--- 345,349 ----
PyTuple_SetItem( tuple, 2, PyInt_FromLong( amount ) );
! return PyEvalMethod( "onStatGain", tuple );
}
***************
*** 355,359 ****
PyTuple_SetItem( tuple, 2, PyInt_FromLong( id ) );
! PyEvalMethod( "onContextEntry" )
}
--- 362,366 ----
PyTuple_SetItem( tuple, 2, PyInt_FromLong( id ) );
! return PyEvalMethod( "onContextEntry", tuple );
}
***************
*** 370,374 ****
PyTuple_SetItem( tuple, 1, PyGetCharObject( (P_CHAR)pObject ) );
! PyEvalMethod( "onShowContextMenu" )
}
--- 377,381 ----
PyTuple_SetItem( tuple, 1, PyGetCharObject( (P_CHAR)pObject ) );
! return PyEvalMethod( "onShowContextMenu", tuple );
}
***************
*** 387,402 ****
PyTuple_SetItem( tuple, 2, PyGetTooltipObject( tooltip ) );
! PyEvalMethod( "onShowToolTip" )
}
unsigned int cPythonScript::onDamage( P_CHAR pChar, unsigned char type, unsigned int amount, cUObject *source )
{
! if( !codeModule || !PyObject_HasAttr( codeModule, PyString_FromString( "onDamage" ) ) )
return amount;
! PyObject *method = PyObject_GetAttr( codeModule, PyString_FromString( "onDamage" ) );
! if( !method || !PyCallable_Check( method ) )
return amount;
PyObject *args = PyTuple_New( 4 );
--- 394,415 ----
PyTuple_SetItem( tuple, 2, PyGetTooltipObject( tooltip ) );
! return PyEvalMethod( "onShowToolTip", tuple );
}
unsigned int cPythonScript::onDamage( P_CHAR pChar, unsigned char type, unsigned int amount, cUObject *source )
{
! if( !codeModule )
return amount;
! PyObject *method = PyObject_GetAttrString( codeModule, "onDamage" );
! if( !method )
! return amount;
!
! if ( !PyCallable_Check( method ) )
! {
! Py_DECREF( method );
return amount;
+ }
PyObject *args = PyTuple_New( 4 );
***************
*** 414,423 ****
PyObject *returnValue = PyObject_CallObject( method, args );
! PyReportError();
! if( !returnValue || !PyInt_Check( returnValue ) )
return amount;
! return PyInt_AsLong( returnValue );
}
--- 427,445 ----
PyObject *returnValue = PyObject_CallObject( method, args );
! PyReportError();
! Py_DECREF( args );
! Py_DECREF( method );
! if( !returnValue )
return amount;
+ if ( !PyInt_Check( returnValue ) )
+ {
+ Py_DECREF( returnValue );
+ return amount;
+ }
! amount = PyInt_AsLong( returnValue );
! Py_DECREF( returnValue );
! return amount;
}
***************
*** 430,434 ****
PyTuple_SetItem( tuple, 1, PyInt_FromLong( spell ) );
! PyEvalMethod( "onCastSpell" )
}
--- 452,456 ----
PyTuple_SetItem( tuple, 1, PyInt_FromLong( spell ) );
! return PyEvalMethod( "onCastSpell", tuple );
}
***************
*** 446,450 ****
PyTuple_SetItem( tuple, 1, PyString_FromString( definition.latin1() ) );
! PyEvalMethod( "onCreate" )
}
--- 468,472 ----
PyTuple_SetItem( tuple, 1, PyString_FromString( definition.latin1() ) );
! return PyEvalMethod( "onCreate", tuple );
}
***************
*** 469,473 ****
PyTuple_SetItem( tuple, 3, list );
! PyEvalMethod( "onSpeech" )
}
--- 491,495 ----
PyTuple_SetItem( tuple, 3, list );
! return PyEvalMethod( "onSpeech", tuple );
}
***************
*** 480,484 ****
PyTuple_SetItem( tuple, 1, PyGetItemObject( pItem ) );
! PyEvalMethod( "onDropOnChar" )
}
--- 502,506 ----
PyTuple_SetItem( tuple, 1, PyGetItemObject( pItem ) );
! return PyEvalMethod( "onDropOnChar", tuple );
}
***************
*** 491,495 ****
PyTuple_SetItem( tuple, 1, PyGetItemObject( pItem ) );
! PyEvalMethod( "onDropOnItem" )
}
--- 513,517 ----
PyTuple_SetItem( tuple, 1, PyGetItemObject( pItem ) );
! return PyEvalMethod( "onDropOnItem", tuple );
}
***************
*** 502,506 ****
PyTuple_SetItem( tuple, 1, PyGetCoordObject( pos ) );
! PyEvalMethod( "onDropOnGround" )
}
--- 524,528 ----
PyTuple_SetItem( tuple, 1, PyGetCoordObject( pos ) );
! return PyEvalMethod( "onDropOnGround", tuple );
}
***************
*** 513,517 ****
PyTuple_SetItem( tuple, 1, PyGetItemObject( pItem ) );
! PyEvalMethod( "onPickup" )
}
--- 535,539 ----
PyTuple_SetItem( tuple, 1, PyGetItemObject( pItem ) );
! return PyEvalMethod( "onPickup", tuple );
}
***************
*** 526,530 ****
PyTuple_SetItem( tuple, 2, PyString_FromString( args.latin1() ) );
! PyEvalMethod( "onCommand" )
}
--- 548,552 ----
PyTuple_SetItem( tuple, 2, PyString_FromString( args.latin1() ) );
! return PyEvalMethod( "onCommand", tuple );
}
***************
*** 538,542 ****
PyTuple_SetItem( tuple, 1, PyGetCharObject( pOrigin ) );
! PyEvalMethod( "onShowPaperdoll" )
}
--- 560,564 ----
PyTuple_SetItem( tuple, 1, PyGetCharObject( pOrigin ) );
! return PyEvalMethod( "onShowPaperdoll", tuple );
}
***************
*** 548,552 ****
PyObject *tuple = PyTuple_New( 1 );
PyTuple_SetItem( tuple, 0, PyGetCharObject( pChar ) );
! PyEvalMethod( "onDeath" )
}
--- 570,574 ----
PyObject *tuple = PyTuple_New( 1 );
PyTuple_SetItem( tuple, 0, PyGetCharObject( pChar ) );
! return PyEvalMethod( "onDeath", tuple );
}
***************
*** 559,571 ****
PyTuple_SetItem( tuple, 0, PyGetCharObject( pChar ) );
! PyEvalMethod( "onShowSkillGump" )
}
QString cPythonScript::onShowPaperdollName( P_CHAR pChar, P_CHAR pOrigin )
{
! if( codeModule == NULL )
! return (char*)0;
! if( !PyObject_HasAttr( codeModule, PyString_FromString( "onShowPaperdollName" ) ) )
! return (char*)0;
// Create our args for the python function
--- 581,602 ----
PyTuple_SetItem( tuple, 0, PyGetCharObject( pChar ) );
! return PyEvalMethod( "onShowSkillGump", tuple );
}
QString cPythonScript::onShowPaperdollName( P_CHAR pChar, P_CHAR pOrigin )
{
! if( !codeModule )
! return QString::null;
!
! PyObject* method = PyObject_GetAttrString( codeModule, "onShowPaperdollName" );
!
! if ( !method )
! return QString::null;
!
! if( !PyCallable_Check( method ) )
! {
! Py_DECREF( method );
! return QString::null;
! }
// Create our args for the python function
***************
*** 574,589 ****
PyTuple_SetItem( tuple, 1, PyGetCharObject( pOrigin ) );
- PyObject* method = PyObject_GetAttr( codeModule, PyString_FromString( "onShowPaperdollName" ) );
- if( ( method == NULL ) || ( !PyCallable_Check( method ) ) )
- return (char*)0;
-
PyObject *returnValue = PyObject_CallObject( method, tuple );
! PyReportError();
! if( returnValue == NULL )
! return (char*)0;
if( !PyString_Check( returnValue ) )
! return (char*)0;
! return PyString_AsString( returnValue );
}
--- 605,624 ----
PyTuple_SetItem( tuple, 1, PyGetCharObject( pOrigin ) );
PyObject *returnValue = PyObject_CallObject( method, tuple );
! PyReportError();
! Py_DECREF( tuple );
! Py_DECREF( method );
!
! if( !returnValue )
! return QString::null;
if( !PyString_Check( returnValue ) )
! {
! Py_DECREF( returnValue );
! return QString::null;
! }
! QString result = PyString_AsString( returnValue );
! Py_DECREF( returnValue );
! return result;
}
Index: pythonscript.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/pythonscript.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** pythonscript.h 4 Aug 2003 07:28:17 -0000 1.3
--- pythonscript.h 26 Aug 2003 03:55:13 -0000 1.4
***************
*** 129,132 ****
--- 129,166 ----
// It shouldn't be that much.
bool onCastSpell( cPlayer *player, unsigned int spell );
+
+ // Method Calling Macro!
+ inline bool PyEvalMethod( char* a, PyObject* tuple )
+ {
+ PyObject* method = PyObject_GetAttrString( codeModule, a );
+ if ( !method )
+ {
+ Py_XDECREF( tuple );
+ return false;
+ }
+
+ PyObject *returnValue = PyObject_CallObject( method, tuple );
+
+ Py_XDECREF( tuple );
+ Py_DECREF( method );
+ if( PyErr_Occurred() )
+ {
+ PyErr_Print();
+ PyErr_Clear();
+ }
+
+ if( !returnValue )
+ return false;
+ int isTrue = PyObject_IsTrue( returnValue );
+ Py_DECREF( returnValue );
+ switch ( isTrue )
+ {
+ case -1:
+ case 0: return false;
+ case 1:
+ default: return true;
+ }
+ }
+
};
|
|
From: <thi...@us...> - 2003-08-26 03:55:27
|
Update of /cvsroot/wpdev/wolfpack/python In directory sc8-pr-cvs1:/tmp/cvs-serv30835/python Modified Files: utilities.h Log Message: Fixed several missing Py_DECREF in the python script code. also fixed issue with every item decaying. Index: utilities.h =================================================================== RCS file: /cvsroot/wpdev/wolfpack/python/utilities.h,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** utilities.h 26 Jul 2003 01:10:55 -0000 1.19 --- utilities.h 26 Aug 2003 03:55:13 -0000 1.20 *************** *** 56,63 **** #define PyFalse PyInt_FromLong( 0 ) #define PyTrue PyInt_FromLong( 1 ) ! #define PyHasMethod(a) if( codeModule == NULL ) return false; if( !PyObject_HasAttr( codeModule, PyString_FromString( a ) ) ) return false; ! ! // Method Calling Macro! ! #define PyEvalMethod(a) PyObject* method = PyObject_GetAttr( codeModule, PyString_FromString( a ) ); if( ( method == NULL ) || ( !PyCallable_Check( method ) ) ) return false; PyObject *returnValue = PyObject_CallObject( method, tuple ); PyReportError(); if( returnValue == NULL ) return false; if( !PyInt_Check( returnValue ) ) return false; if( PyInt_AsLong( returnValue ) == 1 ) return true; else return false; // Setting and getting item/char properties --- 56,60 ---- #define PyFalse PyInt_FromLong( 0 ) #define PyTrue PyInt_FromLong( 1 ) ! #define PyHasMethod(a) if( codeModule == NULL ) return false; if( !PyObject_HasAttrString( codeModule, a ) ) return false; // Setting and getting item/char properties |
|
From: <thi...@us...> - 2003-08-26 03:53:14
|
Update of /cvsroot/wpdev/xmlscripts/scripts/wolfpack/commands In directory sc8-pr-cvs1:/tmp/cvs-serv30580/wolfpack/commands Modified Files: import.py Log Message: the check boxes on the import gump works ( sort of ) Index: import.py =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/scripts/wolfpack/commands/import.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** import.py 26 Jun 2003 12:34:54 -0000 1.2 --- import.py 26 Aug 2003 03:53:05 -0000 1.3 *************** *** 213,217 **** file = open( filename, 'rt' ) # We know it's \r\n ! ( count, warnings ) = parseTxt( file, char.pos.map ) file.close() --- 213,224 ---- file = open( filename, 'rt' ) # We know it's \r\n ! format = choice.switches[0] ! ! if format == 1: #Sphere ! char.socket.sysmessage( "Sorry, it's not implemented, yet" ) ! elif format == 2: #WSC ! ( count, warnings ) = parseWsc( file, char.pos.map ) ! else: # Text ! ( count, warnings ) = parseTxt( file, char.pos.map ) file.close() |
|
From: <thi...@us...> - 2003-08-26 01:59:23
|
Update of /cvsroot/wpdev/xmlscripts/scripts/wolfpack/commands In directory sc8-pr-cvs1:/tmp/cvs-serv15850/wolfpack/commands Modified Files: info.py Log Message: trying to fix 'info after internal changes of the objects. Index: info.py =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/scripts/wolfpack/commands/info.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** info.py 15 Jul 2003 15:41:45 -0000 1.6 --- info.py 26 Aug 2003 01:59:05 -0000 1.7 *************** *** 368,372 **** gump.addText( 50, 120, "Account:", 0x834 ) ! gump.addInputField( 200, 120, 200, 16, 0x834, 40, char.account ) gump.addText( 50, 140, "Muted:", 0x834 ) gump.addInputField( 200, 140, 200, 16, 0x834, 41, str( char.muted ) ) --- 368,372 ---- gump.addText( 50, 120, "Account:", 0x834 ) ! gump.addInputField( 200, 120, 200, 16, 0x834, 40, char.account.name ) gump.addText( 50, 140, "Muted:", 0x834 ) gump.addInputField( 200, 140, 200, 16, 0x834, 41, str( char.muted ) ) *************** *** 636,640 **** gump.addResizeGump( 195, 260, 0xBB8, 215, 20 ) gump.addResizeGump( 195, 280, 0xBB8, 215, 20 ) ! gump.addResizeGump( 195, 300, 0xBB8, 215, 20 ) gump.addText( 50, 120, "Dyable:", 0x834 ) --- 636,640 ---- gump.addResizeGump( 195, 260, 0xBB8, 215, 20 ) gump.addResizeGump( 195, 280, 0xBB8, 215, 20 ) ! #gump.addResizeGump( 195, 300, 0xBB8, 215, 20 ) gump.addText( 50, 120, "Dyable:", 0x834 ) *************** *** 659,664 **** gump.addText( 50, 280, "Poisoned:", 0x834 ) gump.addInputField( 200, 280, 200, 16, 0x834, 29, str( item.poisoned ) ) - gump.addText( 50, 300, "Spawnregion:", 0x834 ) - gump.addInputField( 200, 300, 200, 16, 0x834, 30, str( item.spawnregion ) ) gump.addText( 310, 340, "Page "+str( page_ )+" of "+str( pages ), 0x834 ) --- 659,662 ---- *************** *** 713,731 **** gump.addResizeGump( 195, 120, 0xBB8, 215, 20 ) ! gump.addResizeGump( 195, 140, 0xBB8, 215, 20 ) ! gump.addResizeGump( 195, 160, 0xBB8, 215, 20 ) ! gump.addResizeGump( 195, 180, 0xBB8, 215, 20 ) ! gump.addResizeGump( 195, 200, 0xBB8, 215, 20 ) gump.addText( 50, 120, "More4:", 0x834 ) gump.addInputField( 200, 120, 200, 16, 0x834, 41, str( item.more4 ) ) ! gump.addText( 50, 140, "Moreb1:", 0x834 ) ! gump.addInputField( 200, 140, 200, 16, 0x834, 42, str( item.moreb1 ) ) ! gump.addText( 50, 160, "Moreb2:", 0x834 ) ! gump.addInputField( 200, 160, 200, 16, 0x834, 43, str( item.moreb2 ) ) ! gump.addText( 50, 180, "Moreb3:", 0x834 ) ! gump.addInputField( 200, 180, 200, 16, 0x834, 44, str( item.moreb3 ) ) ! gump.addText( 50, 200, "Moreb4:", 0x834 ) ! gump.addInputField( 200, 200, 200, 16, 0x834, 45, str( item.moreb4 ) ) gump.addText( 310, 340, "Page "+str( page_ )+" of "+str( pages ), 0x834 ) --- 711,729 ---- gump.addResizeGump( 195, 120, 0xBB8, 215, 20 ) ! #gump.addResizeGump( 195, 140, 0xBB8, 215, 20 ) ! #gump.addResizeGump( 195, 160, 0xBB8, 215, 20 ) ! #gump.addResizeGump( 195, 180, 0xBB8, 215, 20 ) ! #gump.addResizeGump( 195, 200, 0xBB8, 215, 20 ) gump.addText( 50, 120, "More4:", 0x834 ) gump.addInputField( 200, 120, 200, 16, 0x834, 41, str( item.more4 ) ) ! #gump.addText( 50, 140, "Moreb1:", 0x834 ) ! #gump.addInputField( 200, 140, 200, 16, 0x834, 42, str( item.moreb1 ) ) ! #gump.addText( 50, 160, "Moreb2:", 0x834 ) ! #gump.addInputField( 200, 160, 200, 16, 0x834, 43, str( item.moreb2 ) ) ! #gump.addText( 50, 180, "Moreb3:", 0x834 ) ! #gump.addInputField( 200, 180, 200, 16, 0x834, 44, str( item.moreb3 ) ) ! #gump.addText( 50, 200, "Moreb4:", 0x834 ) ! #gump.addInputField( 200, 200, 200, 16, 0x834, 45, str( item.moreb4 ) ) gump.addText( 310, 340, "Page "+str( page_ )+" of "+str( pages ), 0x834 ) |
|
From: <dr...@us...> - 2003-08-23 22:05:26
|
Update of /cvsroot/wpdev/xmlscripts/definitions/items/equipment
In directory sc8-pr-cvs1:/tmp/cvs-serv27554
Modified Files:
clothes.xml hair.xml misc.xml
Log Message:
Fixes to be more like OSI.
Index: clothes.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/equipment/clothes.xml,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** clothes.xml 28 Dec 2002 15:30:31 -0000 1.5
--- clothes.xml 23 Aug 2003 22:05:24 -0000 1.6
***************
*** 3,8 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: DarkStorm |
! | )).-' {{ ;'` | Revised by: |
! | ( ( ;._ \\ ctr | Last Modification: Created |
=================================================================
-->
--- 3,8 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: DarkStorm |
! | )).-' {{ ;'` | Revised by: Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
***************
*** 172,175 ****
--- 172,178 ----
<id>0x153f</id>
<dye />
+ <defense>0</defense>
+ <requires type='str'>10</requires>
+ <durability><random min="20" max="25" /></durability>
<buyprice>14</buyprice>
<sellprice>6</sellprice>
***************
*** 203,206 ****
--- 206,212 ----
<id>0x1543</id>
<dye />
+ <defense>0</defense>
+ <requires type='str'>10</requires>
+ <durability><random min="6" max="10" /></durability>
<buyprice>12</buyprice>
<sellprice>6</sellprice>
***************
*** 220,223 ****
--- 226,232 ----
<id>0x1545</id>
<dye />
+ <defense>5</defense>
+ <requires type='str'>10</requires>
+ <durability><random min="20" max="25" /></durability>
<decay />
<value>40</value>
***************
*** 238,241 ****
--- 247,253 ----
<id>0x1547</id>
<dye />
+ <defense>2</defense>
+ <requires type='str'>10</requires>
+ <durability><random min="20" max="25" /></durability>
<weight>4.0</weight>
</item>
***************
*** 248,253 ****
</item>
! <!-- Tribal Mask n/s -->
<item id="1549">
<category>Clothes\Headwear\Tribal Mask (N/S)</category>
<id>0x1549</id>
--- 260,268 ----
</item>
! <!-- Tribal Mask Horned n/s -->
<item id="1549">
+ <defense>6</defense>
+ <requires type='str'>10</requires>
+ <durability><random min="20" max="25" /></durability>
<category>Clothes\Headwear\Tribal Mask (N/S)</category>
<id>0x1549</id>
***************
*** 255,259 ****
</item>
! <!-- Tribal Mask w/e -->
<item id="154a">
<inherit id="1549" />
--- 270,274 ----
</item>
! <!-- Tribal Mask Horned w/e -->
<item id="154a">
<inherit id="1549" />
***************
*** 262,267 ****
</item>
! <!-- Tribal Mask 2 n/s -->
<item id="154b">
<category>Clothes\Headwear\Tribal Mask 2 (N/S)</category>
<id>0x154b</id>
--- 277,285 ----
</item>
! <!-- Tribal Mask Red n/s -->
<item id="154b">
+ <defense>3</defense>
+ <requires type='str'>10</requires>
+ <durability><random min="20" max="25" /></durability>
<category>Clothes\Headwear\Tribal Mask 2 (N/S)</category>
<id>0x154b</id>
***************
*** 269,273 ****
</item>
! <!-- Tribal Mask 2 w/e -->
<item id="154c">
<inherit id="154b" />
--- 287,291 ----
</item>
! <!-- Tribal Mask Red w/e -->
<item id="154c">
<inherit id="154b" />
***************
*** 279,282 ****
--- 297,303 ----
<item id="141b">
<id>0x141b</id>
+ <defense>1</defense>
+ <requires type='str'>10</requires>
+ <durability><random min="20" max="25" /></durability>
<category>Clothes\Headwear\Orc Mask (N/S)</category>
<weight>4.0</weight>
***************
*** 374,388 ****
</item>
- <!-- Orc Helmet -->
- <item id="1f0b">
- <id>0x1f0b</id>
- <category>Clothes\Headwear\Orc Helm (N/S)</category>
- </item>
-
- <item id="1f0c">
- <id>0x1f0c</id>
- <category>Clothes\Headwear\Orc Helm (W/E)</category>
- </item>
-
<!-- Boots n/s -->
<item id="170b">
--- 395,398 ----
***************
*** 457,460 ****
--- 467,473 ----
<id>0x1713</id>
<dye />
+ <defense>0</defense>
+ <durability><random min="20" max="25" /></durability>
+ <requires type='str'>10</requires>
<buyprice>25</buyprice>
<sellprice>12</sellprice>
***************
*** 467,470 ****
--- 480,486 ----
<id>0x1714</id>
<dye />
+ <defense>0</defense>
+ <durability><random min="20" max="25" /></durability>
+ <requires type='str'>10</requires>
<buyprice>26</buyprice>
<sellprice>13</sellprice>
***************
*** 477,480 ****
--- 493,499 ----
<id>0x1715</id>
<dye />
+ <defense>0</defense>
+ <durability><random min="20" max="25" /></durability>
+ <requires type='str'>10</requires>
<buyprice>27</buyprice>
<sellprice>13</sellprice>
***************
*** 487,490 ****
--- 506,512 ----
<id>0x1716</id>
<dye />
+ <defense>0</defense>
+ <durability><random min="20" max="25" /></durability>
+ <requires type='str'>10</requires>
<buyprice>26</buyprice>
<sellprice>13</sellprice>
***************
*** 497,500 ****
--- 519,525 ----
<id>0x1717</id>
<dye />
+ <defense>0</defense>
+ <durability><random min="20" max="25" /></durability>
+ <requires type='str'>10</requires>
<buyprice>25</buyprice>
<sellprice>12</sellprice>
***************
*** 507,510 ****
--- 532,538 ----
<id>0x1718</id>
<dye />
+ <defense>0</defense>
+ <durability><random min="20" max="25" /></durability>
+ <requires type='str'>10</requires>
<buyprice>30</buyprice>
<sellprice>15</sellprice>
***************
*** 517,520 ****
--- 545,551 ----
<id>0x1719</id>
<dye />
+ <defense>0</defense>
+ <durability><random min="20" max="25" /></durability>
+ <requires type='str'>10</requires>
<buyprice>26</buyprice>
<sellprice>13</sellprice>
***************
*** 527,530 ****
--- 558,564 ----
<id>0x171a</id>
<dye />
+ <defense>0</defense>
+ <durability><random min="20" max="25" /></durability>
+ <requires type='str'>10</requires>
<buyprice>27</buyprice>
<sellprice>13</sellprice>
***************
*** 537,540 ****
--- 571,577 ----
<id>0x171b</id>
<dye />
+ <defense>0</defense>
+ <durability><random min="20" max="25" /></durability>
+ <requires type='str'>10</requires>
<buyprice>26</buyprice>
<sellprice>13</sellprice>
***************
*** 547,550 ****
--- 584,590 ----
<id>0x171c</id>
<dye />
+ <defense>0</defense>
+ <durability><random min="20" max="25" /></durability>
+ <requires type='str'>10</requires>
<buyprice>31</buyprice>
<sellprice>15</sellprice>
***************
*** 557,560 ****
--- 597,603 ----
<id>0x172e</id>
<dye />
+ <defense>0</defense>
+ <durability><random min="20" max="25" /></durability>
+ <requires type='str'>10</requires>
</item>
Index: hair.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/equipment/hair.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** hair.xml 22 Dec 2002 16:24:28 -0000 1.2
--- hair.xml 23 Aug 2003 22:05:24 -0000 1.3
***************
*** 10,13 ****
--- 10,14 ----
-->
<definitions>
+
<!-- Hair -->
<item id="203b">
***************
*** 114,116 ****
</item>
! </definitions>
\ No newline at end of file
--- 115,117 ----
</item>
! </definitions>
Index: misc.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/equipment/misc.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** misc.xml 30 Dec 2002 18:42:08 -0000 1.3
--- misc.xml 23 Aug 2003 22:05:24 -0000 1.4
***************
*** 10,13 ****
--- 10,14 ----
-->
<definitions>
+
<!-- Kindling -->
<item id="de1">
***************
*** 19,21 ****
</item>
! </definitions>
\ No newline at end of file
--- 20,22 ----
</item>
! </definitions>
|
Update of /cvsroot/wpdev/xmlscripts/definitions/items/armory
In directory sc8-pr-cvs1:/tmp/cvs-serv27441
Modified Files:
bone.xml chainmail.xml colored.xml helmets.xml leather.xml
magic_bone.xml plate.xml ring.xml shields.xml studded.xml
Log Message:
Fixes to be more like OSI.
Index: bone.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/armory/bone.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** bone.xml 29 Dec 2002 03:54:46 -0000 1.3
--- bone.xml 23 Aug 2003 22:05:00 -0000 1.4
***************
*** 3,84 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: DarkStorm |
! | )).-' {{ ;'` | Revised by: Viper |
! | ( ( ;._ \\ ctr | Last Modification: Item Properties Added |
=================================================================
-->
<definitions>
<item id="1453">
<id>0x1453</id>
! <name>bone arms</name>
! <decay />
! <nodye />
! <requires type="str">40</requires>
! <modifier type="dex">-2</modifier>
! <defense>4.4</defense>
! <durability>28</durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <value>0</value>
<category>Armor\Bone\Bone Arms</category>
</item>
<item id="144f">
<id>0x144f</id>
! <name>bone armor</name>
! <decay />
! <nodye />
! <requires type="str">40</requires>
! <modifier type="dex">-6</modifier>
! <defense>10.7</defense>
! <durability>28</durability>
! <restock>10</restock>
! <weight>6.0</weight>
! <value>0</value>
<category>Armor\Bone\Bone Armor</category>
</item>
<item id="1455">
<id>0x1455</id>
! <name>bone gloves</name>
! <decay />
! <nodye />
! <requires type="str">40</requires>
! <modifier type="dex">-1</modifier>
! <defense>2.1</defense>
! <durability>28</durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <value>0</value>
<category>Armor\Bone\Bone Gloves</category>
</item>
<item id="1456">
<id>0x1456</id>
! <name>bone helmet</name>
! <decay />
! <nodye />
! <requires type="str">40</requires>
! <defense>4.1</defense>
! <durability>28</durability>
! <restock>10</restock>
! <weight>3.0</weight>
! <value>0</value>
<category>Armor\Bone\Bone Helmet</category>
</item>
<item id="1452">
<id>0x1452</id>
! <name>bone leggings</name>
! <decay />
! <nodye />
! <requires type="str">40</requires>
! <modifier type="dex">-4</modifier>
! <defense>6.6</defense>
! <durability>28</durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <value>0</value>
<category>Armor\Bone\Leggings</category>
</item>
! </definitions>
\ No newline at end of file
--- 3,86 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: DarkStorm |
! | )).-' {{ ;'` | Revised by: Viper, Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
+
+ <!-- Bone ARms -->
<item id="1453">
<id>0x1453</id>
! <name>bone arms</name>
! <decay />
! <nodye />
! <requires type="str">55</requires>
! <defense>3</defense>
! <durability><random min="25" max="30" /></durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <value>0</value>
<category>Armor\Bone\Bone Arms</category>
</item>
+ <!-- Bone Armor, Body -->
<item id="144f">
<id>0x144f</id>
! <name>bone armor</name>
! <decay />
! <nodye />
! <requires type="str">60</requires>
! <defense>3</defense>
! <durability><random min="25" max="30" /></durability>
! <restock>10</restock>
! <weight>6.0</weight>
! <value>0</value>
<category>Armor\Bone\Bone Armor</category>
</item>
+ <!-- Bone Gloves -->
<item id="1455">
<id>0x1455</id>
! <name>bone gloves</name>
! <decay />
! <nodye />
! <requires type="str">55</requires>
! <defense>3</defense>
! <durability><random min="25" max="30" /></durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <value>0</value>
<category>Armor\Bone\Bone Gloves</category>
</item>
+ <!-- Bone Helm -->
<item id="1456">
<id>0x1456</id>
! <name>bone helmet</name>
! <decay />
! <nodye />
! <requires type="str">20</requires>
! <defense>3</defense>
! <durability><random min="25" max="30" /></durability>
! <restock>10</restock>
! <weight>3.0</weight>
! <value>0</value>
<category>Armor\Bone\Bone Helmet</category>
</item>
+ <!-- Bone Leggings -->
<item id="1452">
<id>0x1452</id>
! <name>bone leggings</name>
! <decay />
! <nodye />
! <requires type="str">55</requires>
! <defense>3</defense>
! <durability><random min="25" max="30" /></durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <value>0</value>
<category>Armor\Bone\Leggings</category>
</item>
! </definitions>
Index: chainmail.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/armory/chainmail.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** chainmail.xml 18 Jan 2003 16:09:23 -0000 1.4
--- chainmail.xml 23 Aug 2003 22:05:00 -0000 1.5
***************
*** 2,57 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Viper |
! | ( ( ;._ \\ ctr | Last Modification: |
================================================================= -->
<definitions>
! <!-- chainmail coif -->
! <item id="13bb">
! <name>chainmail coif</name>
! <decay />
! <nodye />
! <requires type="str">20</requires>
! <defense>3.8</defense>
! <durability>40</durability>
! <id>0x13BB</id>
! <restock>10</restock>
! <smelt>8</smelt>
! <weight>7.0</weight>
! <buyprice>130</buyprice>
! <sellprice>65</sellprice>
! <category>Armor\Chainmail\Coif</category>
! </item>
! <!-- chainmail leggings -->
! <item id="13be">
! <name>chainmail leggings</name>
! <decay />
! <nodye />
! <modifier type="dex">-3</modifier>
! <requires type="str">20</requires>
! <defense>6.2</defense>
! <durability>52</durability>
! <id>0x13BE</id>
! <restock>10</restock>
! <smelt>14</smelt>
! <weight>7.0</weight>
! <buyprice>166</buyprice>
! <sellprice>83</sellprice>
! <category>Armor\Chainmail\Leggings</category>
! </item>
! <!-- chainmail tunic -->
! <item id="13bf">
! <name>chainmail tunic</name>
! <decay />
! <nodye />
! <modifier type="dex">-5</modifier>
! <requires type="str">20</requires>
! <defense>10.0</defense>
! <durability>52</durability>
! <id>0x13bf</id>
! <restock>10</restock>
! <smelt>14</smelt>
! <weight>7.0</weight>
! <buyprice>103</buyprice>
! <category>Armor\Chainmail\Tunic</category>
! </item>
! </definitions>
\ No newline at end of file
--- 2,59 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Viper, Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
================================================================= -->
<definitions>
!
! <!-- Chainmail Coif -->
! <item id="13bb">
! <name>chainmail coif</name>
! <decay />
! <nodye />
! <requires type="str">60</requires>
! <defense>4</defense>
! <durability><random min="45" max="60" /></durability>
! <id>0x13BB</id>
! <restock>10</restock>
! <smelt>8</smelt>
! <weight>7.0</weight>
! <buyprice>130</buyprice>
! <sellprice>65</sellprice>
! <category>Armor\Chainmail\Coif</category>
! </item>
!
! <!-- Chainmail Leggings -->
! <item id="13be">
! <name>chainmail leggings</name>
! <decay />
! <nodye />
! <requires type="str">60</requires>
! <defense>4</defense>
! <durability><random min="45" max="60" /></durability>
! <id>0x13BE</id>
! <restock>10</restock>
! <smelt>14</smelt>
! <weight>7.0</weight>
! <buyprice>166</buyprice>
! <sellprice>83</sellprice>
! <category>Armor\Chainmail\Leggings</category>
! </item>
!
! <!-- Chainmail Tunic -->
! <item id="13bf">
! <name>chainmail tunic</name>
! <decay />
! <nodye />
! <requires type="str">60</requires>
! <defense>4</defense>
! <durability><random min="45" max="60" /></durability>
! <id>0x13bf</id>
! <restock>10</restock>
! <smelt>14</smelt>
! <weight>7.0</weight>
! <buyprice>103</buyprice>
! <category>Armor\Chainmail\Tunic</category>
! </item>
!
! </definitions>
Index: colored.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/armory/colored.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** colored.xml 28 Mar 2003 22:14:36 -0000 1.4
--- colored.xml 23 Aug 2003 22:05:00 -0000 1.5
***************
*** 16,20 ****
<name>dull copper %1</name>
<color>0x0973</color>
! <defense>1.1</defense>
<value>1.1</value>
</define>
--- 16,20 ----
<name>dull copper %1</name>
<color>0x0973</color>
! <defense>+6</defense>
<value>1.1</value>
</define>
***************
*** 23,27 ****
<name>shadow %1</name>
<color>0x0966</color>
! <defense>1.2</defense> <!-- this means 110 percent of original defense -->
<value>1.2</value>
</define>
--- 23,27 ----
<name>shadow %1</name>
<color>0x0966</color>
! <defense>+2</defense> <!-- this means 110 percent of original defense -->
<value>1.2</value>
</define>
***************
*** 30,35 ****
<name>copper %1</name>
<color>0x096e</color>
! <defense>1.3</defense>
! <value>1.3</value>
</define>
--- 30,35 ----
<name>copper %1</name>
<color>0x096e</color>
! <defense>+1</defense>
! <value>1.3</value>
</define>
***************
*** 37,42 ****
<name>bronze %1</name>
<color>0x08a9</color>
! <defense>1.4</defense>
! <value>1.4</value>
</define>
--- 37,42 ----
<name>bronze %1</name>
<color>0x08a9</color>
! <defense>+3</defense>
! <value>1.4</value>
</define>
***************
*** 44,48 ****
<name>gold %1</name>
<color>0x08a5</color>
! <defense>1.5</defense>
<value>1.5</value>
</define>
--- 44,48 ----
<name>gold %1</name>
<color>0x08a5</color>
! <defense>+1</defense>
<value>1.5</value>
</define>
***************
*** 51,55 ****
<name>agapite %1</name>
<color>0x0979</color>
! <defense>1.6</defense>
<value>1.6</value>
</define>
--- 51,55 ----
<name>agapite %1</name>
<color>0x0979</color>
! <defense>+2</defense>
<value>1.6</value>
</define>
***************
*** 58,62 ****
<name>verite %1</name>
<color>0x089f</color>
! <defense>1.7</defense>
<value>1.7</value>
</define>
--- 58,62 ----
<name>verite %1</name>
<color>0x089f</color>
! <defense>+3</defense>
<value>1.7</value>
</define>
***************
*** 65,69 ****
<name>valorite %1</name>
<color>0x08ab</color>
! <defense>1.8</defense>
<value>1.8</value>
</define>
--- 65,69 ----
<name>valorite %1</name>
<color>0x08ab</color>
! <defense>+4</defense>
<value>1.8</value>
</define>
***************
*** 72,76 ****
<name>merkite %1</name>
<color>0x02C3</color>
! <defense>1.2</defense>
<value>1.6</value>
</define>
--- 72,76 ----
<name>merkite %1</name>
<color>0x02C3</color>
! <defense>+5</defense>
<value>1.6</value>
</define>
***************
*** 1422,1424 ****
<category>Armor\valorite\Shields\Kite</category>
</item>
! </definitions>
\ No newline at end of file
--- 1422,1424 ----
<category>Armor\valorite\Shields\Kite</category>
</item>
! </definitions>
Index: helmets.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/armory/helmets.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** helmets.xml 18 Jan 2003 16:10:18 -0000 1.4
--- helmets.xml 23 Aug 2003 22:05:00 -0000 1.5
***************
*** 8,20 ****
-->
<definitions>
! <!-- bascinet helmet -->
<item id="140c">
<name>bascinet</name>
<decay />
<nodye />
! <defense>2.4</defense>
! <durability>108</durability>
<id>0x140c</id>
! <requires type='str'>10</requires>
<restock>10</restock>
<smelt>12</smelt>
--- 8,21 ----
-->
<definitions>
!
! <!-- Bascinet Helmet -->
<item id="140c">
<name>bascinet</name>
<decay />
<nodye />
! <defense>7</defense>
! <durability><random min="40" max="50" /></durability>
<id>0x140c</id>
! <requires type='str'>40</requires>
<restock>10</restock>
<smelt>12</smelt>
***************
*** 25,37 ****
</item>
! <!-- nose helmet -->
<item id="140e">
<name>nose helmet</name>
<decay />
<nodye />
! <defense>4.1</defense>
! <durability>52</durability>
<id>0x140e</id>
! <requires type='str'>40</requires>
<restock>10</restock>
<smelt>12</smelt>
--- 26,38 ----
</item>
! <!-- Nose Helmet -->
<item id="140e">
<name>nose helmet</name>
<decay />
<nodye />
! <defense>4</defense>
! <durability><random min="45" max="60" /></durability>
<id>0x140e</id>
! <requires type='str'>55</requires>
<restock>10</restock>
<smelt>12</smelt>
***************
*** 42,54 ****
</item>
! <!-- normal helmet -->
<item id="140a">
<name>helmet</name>
<decay />
<nodye />
! <defense>4.1</defense>
! <durability>52</durability>
<id>0x140A</id>
! <requires type='str'>40</requires>
<restock>10</restock>
<smelt>12</smelt>
--- 43,55 ----
</item>
! <!-- Helmet -->
<item id="140a">
<name>helmet</name>
<decay />
<nodye />
! <defense>2</defense>
! <durability><random min="45" max="60" /></durability>
<id>0x140A</id>
! <requires type='str'>45</requires>
<restock>10</restock>
<smelt>12</smelt>
***************
*** 59,71 ****
</item>
! <!-- close helmet -->
<item id="1408">
<name>close helmet</name>
<decay />
<nodye />
! <defense>4.1</defense>
! <durability>52</durability>
<id>0x1408</id>
! <requires type='str'>40</requires>
<restock>10</restock>
<smelt>12</smelt>
--- 60,72 ----
</item>
! <!-- Close Helmet -->
<item id="1408">
<name>close helmet</name>
<decay />
<nodye />
! <defense>3</defense>
! <durability><random min="45" max="60" /></durability>
<id>0x1408</id>
! <requires type='str'>55</requires>
<restock>10</restock>
<smelt>12</smelt>
***************
*** 75,78 ****
--- 76,106 ----
<category>Armor\Helmets\Close Helm</category>
</item>
+
+ <!-- Orc Helmet -->
+ <item id="1f0b">
+ <name>orc helm</name>
+ <decay />
+ <nodye />
+ <defense>3</defense>
+ <durability><random min="30" max="50" /></durability>
+ <id>0x1f0b</id>
+ <requires type='str'>30</requires>
+ <restock>10</restock>
+ <smelt>12</smelt>
+ <weight>5.0</weight>
+ <buyprice>127</buyprice>
+ <sellprice>63</sellprice>
+ <category>Armor\Helmets\Orc Helm (N/S)</category>
+ <category>Clothes\Headwear\Orc Helm (N/S)</category>
+ </item>
+
+ <!-- Orc Helm 2 -->
+ <item id="1f0c">
+ <inherit id="140b" />
+ <id>0x1f0c</id>
+ <category>Armor\Helmets\Orc Helm (W/E)</category>
+ <category>Clothes\Headwear\Orc Helm (W/E)</category>
+ </item>
+
</definitions>
Index: leather.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/armory/leather.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** leather.xml 18 Jan 2003 16:10:18 -0000 1.4
--- leather.xml 23 Aug 2003 22:05:00 -0000 1.5
***************
*** 3,8 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: DarkStorm |
! | )).-' {{ ;'` | Revised by: |
! | ( ( ;._ \\ ctr | Last Modification: Created |
=================================================================
| Leather Armors |
--- 3,8 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: DarkStorm |
! | )).-' {{ ;'` | Revised by: Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
| Leather Armors |
***************
*** 10,163 ****
-->
<definitions>
! <!-- Male Leather -->
<item id="13c5">
<id>0x13c5</id>
! <name>leather sleeves</name>
! <decay />
! <nodye />
! <requires type="str">10</requires>
! <defense>1.9</defense>
! <durability>34</durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>80</buyprice>
<sellprice>40</sellprice>
<category>Armor\Leather\Sleeves</category>
</item>
<item id="13c6">
<id>0x13c6</id>
! <name>leather gloves</name>
! <decay />
! <nodye />
! <requires type="str">10</requires>
! <defense>0.9</defense>
! <durability>34</durability>
! <restock>10</restock>
! <weight>1.0</weight>
! <buyprice>60</buyprice>
! <sellprice>30</sellprice>
<category>Armor\Leather\Gloves</category>
</item>
<item id="13c7">
<id>0x13c7</id>
! <name>leather gorget</name>
! <decay />
! <nodye />
! <requires type="str">10</requires>
! <defense>0.9</defense>
! <durability>34</durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>74</buyprice>
<sellprice>37</sellprice>
<category>Armor\Leather\Gorget</category>
</item>
<item id="13cb">
<id>0x13cb</id>
! <name>leather leggings</name>
! <decay />
! <nodye />
! <requires type="str">10</requires>
! <defense>2.9</defense>
! <durability>34</durability>
! <restock>10</restock>
! <weight>4.0</weight>
! <buyprice>80</buyprice>
<sellprice>40</sellprice>
<category>Armor\Leather\Leggings</category>
</item>
<item id="13cc">
<id>0x13cc</id>
! <name>leather tunic</name>
! <decay />
! <nodye />
! <requires type="str">15</requires>
! <defense>4.7</defense>
! <durability>34</durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>101</buyprice>
<sellprice>52</sellprice>
<category>Armor\Leather\Tunic</category>
</item>
! <!-- Female -->
<item id="1c06">
<id>0x1c06</id>
! <name>female leather armor</name>
! <decay />
! <nodye />
! <requires type="str">15</requires>
! <defense>4.7</defense>
! <durability>34</durability>
! <restock>10</restock>
! <weight>1.0</weight>
! <buyprice>116</buyprice>
<sellprice>58</sellprice>
<category>Armor\Leather\Female Leather Armor</category>
</item>
<item id="1c08">
<id>0x1c08</id>
! <name>leather skirt</name>
! <decay />
! <nodye />
! <requires type="str">10</requires>
! <defense>2.9</defense>
! <durability>34</durability>
! <restock>10</restock>
! <weight>1.0</weight>
! <buyprice>87</buyprice>
<sellprice>43</sellprice>
<category>Armor\Leather\Female Skirt</category>
</item>
<item id="1c0a">
<id>0x1c0a</id>
! <name>leather bustier</name>
! <decay />
! <nodye />
! <requires type="str">10</requires>
! <defense>4.7</defense>
! <durability>34</durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>97</buyprice>
<sellprice>48</sellprice>
<category>Armor\Leather\Bustier</category>
</item>
<item id="1db9">
<id>0x1db9</id>
! <name>leather cap</name>
! <decay />
! <nodye />
! <requires type="str">15</requires>
! <defense>1.8</defense>
! <durability>34</durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>63</buyprice>
<sellprice>31</sellprice>
<category>Armor\Leather\Cap</category>
</item>
<item id="1c00">
<id>0x1c00</id>
! <name>leather shorts</name>
! <decay />
! <nodye />
! <requires type="str">10</requires>
! <defense>2.9</defense>
! <durability>34</durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>86</buyprice>
<sellprice>43</sellprice>
<category>Armor\Leather\Shorts</category>
</item>
! </definitions>
\ No newline at end of file
--- 10,175 ----
-->
<definitions>
!
! <!-- Male Leather -->
! <!-- Leather Sleeves -->
<item id="13c5">
<id>0x13c5</id>
! <name>leather sleeves</name>
! <decay />
! <nodye />
! <requires type="str">20</requires>
! <defense>2</defense>
! <durability><random min="30" max="40" /></durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>80</buyprice>
<sellprice>40</sellprice>
<category>Armor\Leather\Sleeves</category>
</item>
+ <!-- Leather Gloves -->
<item id="13c6">
<id>0x13c6</id>
! <name>leather gloves</name>
! <decay />
! <nodye />
! <requires type="str">20</requires>
! <defense>2</defense>
! <durability><random min="30" max="40" /></durability>
! <restock>10</restock>
! <weight>1.0</weight>
! <buyprice>60</buyprice>
! <sellprice>30</sellprice>
<category>Armor\Leather\Gloves</category>
</item>
+ <!-- Leather Gorget -->
<item id="13c7">
<id>0x13c7</id>
! <name>leather gorget</name>
! <decay />
! <nodye />
! <requires type="str">20</requires>
! <defense>2</defense>
! <durability><random min="30" max="40" /></durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>74</buyprice>
<sellprice>37</sellprice>
<category>Armor\Leather\Gorget</category>
</item>
+ <!-- Leather Leggings -->
<item id="13cb">
<id>0x13cb</id>
! <name>leather leggings</name>
! <decay />
! <nodye />
! <requires type="str">20</requires>
! <defense>2</defense>
! <durability><random min="30" max="40" /></durability>
! <restock>10</restock>
! <weight>4.0</weight>
! <buyprice>80</buyprice>
<sellprice>40</sellprice>
<category>Armor\Leather\Leggings</category>
</item>
+ <!-- Leather Tunic -->
<item id="13cc">
<id>0x13cc</id>
! <name>leather tunic</name>
! <decay />
! <nodye />
! <requires type="str">25</requires>
! <defense>2</defense>
! <durability><random min="30" max="40" /></durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>101</buyprice>
<sellprice>52</sellprice>
<category>Armor\Leather\Tunic</category>
</item>
! <!-- Female Leather -->
! <!-- Female Tunic -->
<item id="1c06">
<id>0x1c06</id>
! <name>leather armor</name>
! <decay />
! <nodye />
! <requires type="str">25</requires>
! <defense>2</defense>
! <durability><random min="30" max="40" /></durability>
! <restock>10</restock>
! <weight>1.0</weight>
! <buyprice>116</buyprice>
<sellprice>58</sellprice>
<category>Armor\Leather\Female Leather Armor</category>
</item>
+ <!-- Leather Skirt -->
<item id="1c08">
<id>0x1c08</id>
! <name>leather skirt</name>
! <decay />
! <nodye />
! <requires type="str">20</requires>
! <defense>2</defense>
! <durability><random min="30" max="40" /></durability>
! <restock>10</restock>
! <weight>1.0</weight>
! <buyprice>87</buyprice>
<sellprice>43</sellprice>
<category>Armor\Leather\Female Skirt</category>
</item>
+ <!-- Leather Bustier -->
<item id="1c0a">
<id>0x1c0a</id>
! <name>leather bustier</name>
! <decay />
! <nodye />
! <requires type="str">20</requires>
! <defense>2</defense>
! <durability><random min="30" max="40" /></durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>97</buyprice>
<sellprice>48</sellprice>
<category>Armor\Leather\Bustier</category>
</item>
+ <!-- Leather Cap -->
<item id="1db9">
<id>0x1db9</id>
! <name>leather cap</name>
! <decay />
! <nodye />
! <requires type="str">20</requires>
! <defense>2</defense>
! <durability><random min="30" max="40" /></durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>63</buyprice>
<sellprice>31</sellprice>
<category>Armor\Leather\Cap</category>
</item>
+ <!-- Leather Shorts -->
<item id="1c00">
<id>0x1c00</id>
! <name>leather shorts</name>
! <decay />
! <nodye />
! <requires type="str">20</requires>
! <defense>2</defense>
! <durability><random min="30" max="40" /></durability>
! <restock>10</restock>
! <weight>2.0</weight>
! <buyprice>86</buyprice>
<sellprice>43</sellprice>
<category>Armor\Leather\Shorts</category>
</item>
!
! </definitions>
Index: magic_bone.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/armory/magic_bone.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** magic_bone.xml 18 Jan 2003 16:10:18 -0000 1.2
--- magic_bone.xml 23 Aug 2003 22:05:00 -0000 1.3
***************
*** 10,322 ****
<definitions>
<item id="def_bone_arms">
! <inherit id="1453" />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\AR Modified Only\Defense\Bone Arms</category>
! </item>
! <item id="guard_bone_arms">
! <inherit id="1453" />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\AR Modified Only\Guarding\Bone Arms</category>
! </item>
! <item id="hard_bone_arms">
! <inherit id="1453" />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\AR Modified Only\Hardening\Bone Arms</category>
! </item>
! <item id="fort_bone_arms">
! <inherit id="1453" />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\AR Modified Only\Fortification\Bone Arms</category>
! </item>
! <item id="invul_bone_arms">
! <inherit id="1453" />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\AR Modified Only\Invulnerability\Bone Arms</category>
! </item>
! <item id="durable_bone_arms">
! <inherit id="1453" />
! <durable />
! <category>Armor\Magical\Bone\Durability Modified Only\Durable\Bone Arms</category>
! </item>
! <item id="dur_def_bone_arms">
! <inherit id="1453" />
! <durable />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\Durable\Defense\Bone Arms</category>
! </item>
! <item id="dur_guard_bone_arms">
! <inherit id="1453" />
! <durable />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\Durable\Guarding\Bone Arms</category>
! </item>
! <item id="dur_hard_bone_arms">
! <inherit id="1453" />
! <durable />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\Durable\Hardening\Bone Arms</category>
! </item>
! <item id="dur_fort_bone_arms">
! <inherit id="1453" />
! <durable />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\Durable\Fortification\Bone Arms</category>
! </item>
! <item id="dur_invul_bone_arms">
! <inherit id="1453" />
! <durable />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\Durable\Invulnerability\Bone Arms</category>
! </item>
! <!-- Substantial -->
! <item id="substantial_bone_arms">
! <inherit id="1453" />
! <substantial />
! <category>Armor\Magical\Bone\Durability Modified Only\Substantial\Bone Arms</category>
! </item>
! <item id="sub_def_bone_arms">
! <inherit id="1453" />
! <substantial />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\Substantial\Defense\Bone Arms</category>
! </item>
! <item id="sub_guard_bone_arms">
! <inherit id="1453" />
! <substantial />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\Substantial\Guarding\Bone Arms</category>
! </item>
! <item id="sub_hard_bone_arms">
! <inherit id="1453" />
! <substantial />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\Substantial\Hardening\Bone Arms</category>
! </item>
! <item id="sub_fort_bone_arms">
! <inherit id="1453" />
! <substantial />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\Substantial\Fortification\Bone Arms</category>
! </item>
! <item id="sub_invul_bone_arms">
! <inherit id="1453" />
! <substantial />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\Substantial\Invulnerability\Bone Arms</category>
! </item>
! <!-- Massive -->
! <item id="massive_bone_arms">
! <inherit id="1453" />
! <massive />
! <category>Armor\Magical\Bone\Durability Modified Only\Massive\Bone Arms</category>
! </item>
! <item id="mass_def_bone_arms">
! <inherit id="1453" />
! <massive />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\Massive\Defense\Bone Arms</category>
! </item>
! <item id="mass_guard_bone_arms">
! <inherit id="1453" />
! <massive />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\Massive\Guarding\Bone Arms</category>
! </item>
! <item id="mass_hard_bone_arms">
! <inherit id="1453" />
! <massive />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\Massive\Hardening\Bone Arms</category>
! </item>
! <item id="mass_fort_bone_arms">
! <inherit id="1453" />
! <massive />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\Massive\Fortification\Bone Arms</category>
! </item>
! <item id="mass_invul_bone_arms">
! <inherit id="1453" />
! <massive />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\Massive\Invulnerability\Bone Arms</category>
! </item>
! <!-- Fortified -->
! <item id="fortified_bone_arms">
! <inherit id="1453" />
! <fortified />
! <category>Armor\Magical\Bone\Durability Modified Only\Fortified\Bone Arms</category>
! </item>
! <item id="fort_def_bone_arms">
! <inherit id="1453" />
! <fortified />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\Fortified\Defense\Bone Arms</category>
! </item>
! <item id="fort_guard_bone_arms">
! <inherit id="1453" />
! <fortified />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\Fortified\Guarding\Bone Arms</category>
! </item>
! <item id="fort_hard_bone_arms">
! <inherit id="1453" />
! <fortified />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\Fortified\Hardening\Bone Arms</category>
! </item>
! <item id="fort_fort_bone_arms">
! <inherit id="1453" />
! <fortified />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\Fortified\Fortification\Bone Arms</category>
! </item>
! <item id="fort_invul_bone_arms">
! <inherit id="1453" />
! <fortified />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\Fortified\Invulnerability\Bone Arms</category>
! </item>
! <!-- Indestructible -->
! <item id="indestructible_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <category>Armor\Magical\Bone\Durability Modified Only\Indestructible\Bone Arms</category>
! </item>
! <item id="indes_def_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\Indestructible\Defense\Bone Arms</category>
! </item>
! <item id="indes_guard_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\Indestructible\Guarding\Bone Arms</category>
! </item>
! <item id="indes_hard_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\Indestructible\Hardening\Bone Arms</category>
! </item>
! <item id="indes_fort_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\Indestructible\Fortification\Bone Arms</category>
! </item>
! <item id="indes_invul_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\Indestructible\Invulnerability\Bone Arms</category>
! </item>
<item id="def_bone_armor">
! <inherit id="144f" />
! <defense_body />
! <category>Armor\Magical\Bone\AR Modified Only\Defense\Bone Armor</category>
! </item>
! <item id="guard_bone_armor">
! <inherit id="144f" />
! <guarding_body />
! <category>Armor\Magical\Bone\AR Modified Only\Guarding\Bone Armor</category>
! </item>
! <item id="hard_bone_armor">
! <inherit id="144f" />
! <hardening_body />
! <category>Armor\Magical\Bone\AR Modified Only\Hardening\Bone Armor</category>
! </item>
! <item id="fort_bone_armor">
! <inherit id="144f" />
! <fortification_body />
! <category>Armor\Magical\Bone\AR Modified Only\Fortification\Bone Armor</category>
! </item>
! <item id="invul_bone_armor">
! <inherit id="144f" />
! <invulnerability_body />
! <category>Armor\Magical\Bone\AR Modified Only\Invulnerability\Bone Armor</category>
! </item>
! <item id="durable_bone_armor">
! <inherit id="144f" />
! <durable />
! <category>Armor\Magical\Bone\Durability Modified Only\Durable\Bone Armor</category>
! </item>
! <item id="dur_def_bone_armor">
! <inherit id="144f" />
! <durable />
! <defense_body />
! <category>Armor\Magical\Bone\Durable\Defense\Bone Armor</category>
! </item>
! <item id="dur_guard_bone_armor">
! <inherit id="144f" />
! <durable />
! <guarding_body />
! <category>Armor\Magical\Bone\Durable\Guarding\Bone Armor</category>
! </item>
! <item id="dur_hard_bone_armor">
! <inherit id="144f" />
! <durable />
! <hardening_body />
! <category>Armor\Magical\Bone\Durable\Hardening\Bone Armor</category>
! </item>
! <item id="dur_fort_bone_armor">
! <inherit id="144f" />
! <durable />
! <fortification_body />
! <category>Armor\Magical\Bone\Durable\Fortification\Bone Armor</category>
! </item>
! <item id="dur_invul_bone_armor">
! <inherit id="144f" />
! <durable />
! <invulnerability_body />
! <category>Armor\Magical\Bone\Durable\Invulnerability\Bone Armor</category>
! </item>
<!-- Substantial -->
--- 10,322 ----
<definitions>
<item id="def_bone_arms">
! <inherit id="1453" />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\AR Modified Only\Defense\Bone Arms</category>
! </item>
! <item id="guard_bone_arms">
! <inherit id="1453" />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\AR Modified Only\Guarding\Bone Arms</category>
! </item>
! <item id="hard_bone_arms">
! <inherit id="1453" />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\AR Modified Only\Hardening\Bone Arms</category>
! </item>
! <item id="fort_bone_arms">
! <inherit id="1453" />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\AR Modified Only\Fortification\Bone Arms</category>
! </item>
! <item id="invul_bone_arms">
! <inherit id="1453" />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\AR Modified Only\Invulnerability\Bone Arms</category>
! </item>
! <item id="durable_bone_arms">
! <inherit id="1453" />
! <durable />
! <category>Armor\Magical\Bone\Durability Modified Only\Durable\Bone Arms</category>
! </item>
! <item id="dur_def_bone_arms">
! <inherit id="1453" />
! <durable />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\Durable\Defense\Bone Arms</category>
! </item>
! <item id="dur_guard_bone_arms">
! <inherit id="1453" />
! <durable />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\Durable\Guarding\Bone Arms</category>
! </item>
! <item id="dur_hard_bone_arms">
! <inherit id="1453" />
! <durable />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\Durable\Hardening\Bone Arms</category>
! </item>
! <item id="dur_fort_bone_arms">
! <inherit id="1453" />
! <durable />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\Durable\Fortification\Bone Arms</category>
! </item>
! <item id="dur_invul_bone_arms">
! <inherit id="1453" />
! <durable />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\Durable\Invulnerability\Bone Arms</category>
! </item>
! <!-- Substantial -->
! <item id="substantial_bone_arms">
! <inherit id="1453" />
! <substantial />
! <category>Armor\Magical\Bone\Durability Modified Only\Substantial\Bone Arms</category>
! </item>
! <item id="sub_def_bone_arms">
! <inherit id="1453" />
! <substantial />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\Substantial\Defense\Bone Arms</category>
! </item>
! <item id="sub_guard_bone_arms">
! <inherit id="1453" />
! <substantial />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\Substantial\Guarding\Bone Arms</category>
! </item>
! <item id="sub_hard_bone_arms">
! <inherit id="1453" />
! <substantial />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\Substantial\Hardening\Bone Arms</category>
! </item>
! <item id="sub_fort_bone_arms">
! <inherit id="1453" />
! <substantial />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\Substantial\Fortification\Bone Arms</category>
! </item>
! <item id="sub_invul_bone_arms">
! <inherit id="1453" />
! <substantial />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\Substantial\Invulnerability\Bone Arms</category>
! </item>
! <!-- Massive -->
! <item id="massive_bone_arms">
! <inherit id="1453" />
! <massive />
! <category>Armor\Magical\Bone\Durability Modified Only\Massive\Bone Arms</category>
! </item>
! <item id="mass_def_bone_arms">
! <inherit id="1453" />
! <massive />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\Massive\Defense\Bone Arms</category>
! </item>
! <item id="mass_guard_bone_arms">
! <inherit id="1453" />
! <massive />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\Massive\Guarding\Bone Arms</category>
! </item>
! <item id="mass_hard_bone_arms">
! <inherit id="1453" />
! <massive />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\Massive\Hardening\Bone Arms</category>
! </item>
! <item id="mass_fort_bone_arms">
! <inherit id="1453" />
! <massive />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\Massive\Fortification\Bone Arms</category>
! </item>
! <item id="mass_invul_bone_arms">
! <inherit id="1453" />
! <massive />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\Massive\Invulnerability\Bone Arms</category>
! </item>
! <!-- Fortified -->
! <item id="fortified_bone_arms">
! <inherit id="1453" />
! <fortified />
! <category>Armor\Magical\Bone\Durability Modified Only\Fortified\Bone Arms</category>
! </item>
! <item id="fort_def_bone_arms">
! <inherit id="1453" />
! <fortified />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\Fortified\Defense\Bone Arms</category>
! </item>
! <item id="fort_guard_bone_arms">
! <inherit id="1453" />
! <fortified />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\Fortified\Guarding\Bone Arms</category>
! </item>
! <item id="fort_hard_bone_arms">
! <inherit id="1453" />
! <fortified />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\Fortified\Hardening\Bone Arms</category>
! </item>
! <item id="fort_fort_bone_arms">
! <inherit id="1453" />
! <fortified />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\Fortified\Fortification\Bone Arms</category>
! </item>
! <item id="fort_invul_bone_arms">
! <inherit id="1453" />
! <fortified />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\Fortified\Invulnerability\Bone Arms</category>
! </item>
! <!-- Indestructible -->
! <item id="indestructible_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <category>Armor\Magical\Bone\Durability Modified Only\Indestructible\Bone Arms</category>
! </item>
! <item id="indes_def_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <defense_arms_head_legs />
! <category>Armor\Magical\Bone\Indestructible\Defense\Bone Arms</category>
! </item>
! <item id="indes_guard_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <guarding_arms_head_legs />
! <category>Armor\Magical\Bone\Indestructible\Guarding\Bone Arms</category>
! </item>
! <item id="indes_hard_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <hardening_arms_head_legs />
! <category>Armor\Magical\Bone\Indestructible\Hardening\Bone Arms</category>
! </item>
! <item id="indes_fort_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <fortification_arms_head_legs />
! <category>Armor\Magical\Bone\Indestructible\Fortification\Bone Arms</category>
! </item>
! <item id="indes_invul_bone_arms">
! <inherit id="1453" />
! <indestructible />
! <invulnerability_arms_head_legs />
! <category>Armor\Magical\Bone\Indestructible\Invulnerability\Bone Arms</category>
! </item>
<item id="def_bone_armor">
! <inherit id="144f" />
! <defense_body />
! <category>Armor\Magical\Bone\AR Modified Only\Defense\Bone Armor</category>
! </item>
! <item id="guard_bone_armor">
! <inherit id="144f" />
! <guarding_body />
! <category>Armor\Magical\Bone\AR Modified Only\Guarding\Bone Armor</category>
! </item>
! <item id="hard_bone_armor">
! <inherit id="144f" />
! <hardening_body />
! <category>Armor\Magical\Bone\AR Modified Only\Hardening\Bone Armor</category>
! </item>
! <item id="fort_bone_armor">
! <inherit id="144f" />
! <fortification_body />
! <category>Armor\Magical\Bone\AR Modified Only\Fortification\Bone Armor</category>
! </item>
! <item id="invul_bone_armor">
! <inherit id="144f" />
! <invulnerability_body />
! <category>Armor\Magical\Bone\AR Modified Only\Invulnerability\Bone Armor</category>
! </item>
! <item id="durable_bone_armor">
! <inherit id="144f" />
! <durable />
! <category>Armor\Magical\Bone\Durability Modified Only\Durable\Bone Armor</category>
! </item>
! <item id="dur_def_bone_armor">
! <inherit id="144f" />
! <durable />
! <defense_body />
! <category>Armor\Magical\Bone\Durable\Defense\Bone Armor</category>
! </item>
! <item id="dur_guard_bone_armor">
! <inherit id="144f" />
! <durable />
! <guarding_body />
! <category>Armor\Magical\Bone\Durable\Guarding\Bone Armor</category>
! </item>
! <item id="dur_hard_bone_armor">
! <inherit id="144f" />
! <durable />
! <hardening_body />
! <category>Armor\Magical\Bone\Durable\Hardening\Bone Armor</category>
! </item>
! <item id="dur_fort_bone_armor">
! <inherit id="144f" />
! <durable />
! <fortification_body />
! <category>Armor\Magical\Bone\Durable\Fortification\Bone Armor</category>
! </item>
! <item id="dur_invul_bone_armor">
! <inherit id="144f" />
! <durable />
! <invulnerability_body />
! <category>Armor\Magical\Bone\Durable\Invulnerability\Bone Armor</category>
! </item>
<!-- Substantial -->
***************
*** 1204,1206 ****
<category>Armor\Magical\Bone\Indestructible\Invulnerability\Bone Leggings</category>
</item>
! </definitions>
\ No newline at end of file
--- 1204,1206 ----
<category>Armor\Magical\Bone\Indestructible\Invulnerability\Bone Leggings</category>
</item>
! </definitions>
Index: plate.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/armory/plate.xml,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** plate.xml 18 Jan 2003 16:10:18 -0000 1.5
--- plate.xml 23 Aug 2003 22:05:00 -0000 1.6
***************
*** 3,21 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Viper |
! | ( ( ;._ \\ ctr | Last Modification: item corrections |
=================================================================
-->
<definitions>
! <!-- female plate armor -->
<item id="1c04">
<name>plate armor</name>
<decay />
<nodye />
! <defense>10.7</defense>
! <durability>58</durability>
<id>0x1C04</id>
! <modifier type='dex'>-5</modifier>
! <requires type='str'>45</requires>
<restock>10</restock>
<smelt>16</smelt>
--- 3,21 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Viper, Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
!
! <!-- Female Plate Armor -->
<item id="1c04">
<name>plate armor</name>
<decay />
<nodye />
! <defense>5</defense>
! <durability><random min="50" max="65" /></durability>
<id>0x1C04</id>
! <requires type='str'>95</requires>
<restock>10</restock>
<smelt>16</smelt>
***************
*** 26,39 ****
</item>
! <!-- male plate armor -->
<item id="1415">
<name>platemail</name>
<decay />
<nodye />
! <defense>14.8</defense>
! <durability>58</durability>
<id>0x1415</id>
! <modifier type='dex'>-8</modifier>
! <requires type='str'>45</requires>
<restock>10</restock>
<smelt>20</smelt>
--- 26,38 ----
</item>
! <!-- Male Plate Armor -->
<item id="1415">
<name>platemail</name>
<decay />
<nodye />
! <defense>5</defense>
! <durability><random min="50" max="65" /></durability>
<id>0x1415</id>
! <requires type='str'>95</requires>
<restock>10</restock>
<smelt>20</smelt>
***************
*** 44,57 ****
</item>
! <!-- plate arms -->
<item id="1410">
<name>platemail arms</name>
<decay />
<nodye />
! <defense>5.9</defense>
! <durability>58</durability>
<id>0x1410</id>
! <modifier type='dex'>-2</modifier>
! <requires type='str'>40</requires>
<restock>10</restock>
<smelt>14</smelt>
--- 43,55 ----
</item>
! <!-- Plate Arms -->
<item id="1410">
<name>platemail arms</name>
<decay />
<nodye />
! <defense>5</defense>
! <durability><random min="50" max="65" /></durability>
<id>0x1410</id>
! <requires type='str'>80</requires>
<restock>10</restock>
<smelt>14</smelt>
***************
*** 62,75 ****
</item>
! <!-- plate gloves -->
<item id="1414">
<name>platemail gloves</name>
<decay />
<nodye />
! <defense>2.8</defense>
! <durability>58</durability>
<id>0x1414</id>
! <modifier type='dex'>-2</modifier>
! <requires type='str'>30</requires>
<restock>10</restock>
<smelt>9</smelt>
--- 60,72 ----
</item>
! <!-- Plate Gloves -->
<item id="1414">
<name>platemail gloves</name>
<decay />
<nodye />
! <defense>5</defense>
! <durability><random min="50" max="65" /></durability>
<id>0x1414</id>
! <requires type='str'>70</requires>
<restock>10</restock>
<smelt>9</smelt>
***************
*** 80,93 ****
</item>
! <!-- plate gorget -->
<item id="1413">
<name>platemail gorget</name>
<decay />
<nodye />
! <defense>2.8</defense>
! <durability>58</durability>
<id>0x1413</id>
! <modifier type='dex'>-1</modifier>
! <requires type='str'>30</requires>
<restock>10</restock>
<smelt>8</smelt>
--- 77,89 ----
</item>
! <!-- Plate Gorget -->
<item id="1413">
<name>platemail gorget</name>
<decay />
<nodye />
! <defense>5</defense>
! <durability><random min="50" max="65" /></durability>
<id>0x1413</id>
! <requires type='str'>45</requires>
<restock>10</restock>
<smelt>8</smelt>
***************
*** 98,111 ****
</item>
! <!-- plate helmet -->
<item id="1412">
<name>plate helmet</name>
<decay />
<nodye />
! <defense>5.4</defense>
! <durability>52</durability>
<id>0x1412</id>
! <modifier type='dex'>-1</modifier>
! <requires type='str'>10</requires>
<restock>10</restock>
<smelt>12</smelt>
--- 94,106 ----
</item>
! <!-- Plate Helmet -->
<item id="1412">
<name>plate helmet</name>
<decay />
<nodye />
! <defense>5</defense>
! <durability><random min="50" max="65" /></durability>
<id>0x1412</id>
! <requires type='str'>80</requires>
<restock>10</restock>
<smelt>12</smelt>
***************
*** 116,129 ****
</item>
! <!-- plate leggings -->
<item id="1411">
<name>platemail legs</name>
<decay />
<nodye />
! <defense>8.8</defense>
! <durability>58</durability>
<id>0x1411</id>
! <modifier type='dex'>-6</modifier>
! <requires type='str'>60</requires>
<restock>10</restock>
<smelt>16</smelt>
--- 111,123 ----
</item>
! <!-- Plate Leggings -->
<item id="1411">
<name>platemail legs</name>
<decay />
<nodye />
! <defense>5</defense>
! <durability><random min="50" max="65" /></durability>
<id>0x1411</id>
! <requires type='str'>90</requires>
<restock>10</restock>
<smelt>16</smelt>
***************
*** 133,135 ****
--- 127,130 ----
<category>Armor\Platemail\leggings</category>
</item>
+
</definitions>
Index: ring.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/armory/ring.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** ring.xml 18 Jan 2003 16:10:19 -0000 1.4
--- ring.xml 23 Aug 2003 22:05:00 -0000 1.5
***************
*** 3,21 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Viper |
! | ( ( ;._ \\ ctr | Last Modification: item corrections |
=================================================================
-->
<definitions>
! <!-- ring gloves -->
<item id="13eb">
<name>ringmail gloves</name>
<decay />
<nodye />
! <defense>1.5</defense>
! <durability>56</durability>
<id>0x13eb</id>
! <modifier type='dex'>-1</modifier>
! <requires type='str'>20</requires>
<restock>10</restock>
<smelt>8</smelt>
--- 3,21 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Viper, Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
!
! <!-- Ring Gloves -->
<item id="13eb">
<name>ringmail gloves</name>
<decay />
<nodye />
! <defense>3</defense>
! <durability><random min="40" max="50" /></durability>
<id>0x13eb</id>
! <requires type='str'>40</requires>
<restock>10</restock>
<smelt>8</smelt>
***************
*** 26,39 ****
</item>
! <!-- ring leggings -->
<item id="13f0">
<name>ringmail leggings</name>
<decay />
<nodye />
! <defense>4.8</defense>
! <durability>56</durability>
<id>0x13f0</id>
! <modifier type='dex'>-1</modifier>
! <requires type='str'>20</requires>
<restock>10</restock>
<smelt>13</smelt>
--- 26,38 ----
</item>
! <!-- Ring Leggings -->
<item id="13f0">
<name>ringmail leggings</name>
<decay />
<nodye />
! <defense>3</defense>
! <durability><random min="40" max="50" /></durability>
<id>0x13f0</id>
! <requires type='str'>40</requires>
<restock>10</restock>
<smelt>13</smelt>
***************
*** 44,57 ****
</item>
! <!-- ring sleeves -->
<item id="13ef">
<name>ringmail sleeves</name>
<decay />
<nodye />
! <defense>3.3</defense>
! <durability>56</durability>
<id>0x13EF</id>
! <modifier type='dex'>-1</modifier>
! <requires type='str'>20</requires>
<restock>10</restock>
<smelt>11</smelt>
--- 43,55 ----
</item>
! <!-- Ring Sleeves -->
<item id="13ef">
<name>ringmail sleeves</name>
<decay />
<nodye />
! <defense>3</defense>
! <durability><random min="40" max="50" /></durability>
<id>0x13EF</id>
! <requires type='str'>40</requires>
<restock>10</restock>
<smelt>11</smelt>
***************
*** 62,75 ****
</item>
! <!-- ring tunic -->
<item id="13ec">
<name>ringmail tunic</name>
<decay />
<nodye />
! <defense>7.9</defense>
! <durability>56</durability>
<id>0x13ec</id>
! <modifier type='dex'>-2</modifier>
! <requires type='str'>20</requires>
<restock>10</restock>
<smelt>11</smelt>
--- 60,72 ----
</item>
! <!-- Ring Tunic -->
<item id="13ec">
<name>ringmail tunic</name>
<decay />
<nodye />
! <defense>3</defense>
! <durability><random min="40" max="50" /></durability>
<id>0x13ec</id>
! <requires type='str'>40</requires>
<restock>10</restock>
<smelt>11</smelt>
***************
*** 79,82 ****
--- 76,80 ----
<category>Armor\Ringmail\tunic</category>
</item>
+
</definitions>
Index: shields.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/armory/shields.xml,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** shields.xml 10 May 2003 00:16:40 -0000 1.10
--- shields.xml 23 Aug 2003 22:05:00 -0000 1.11
***************
*** 3,8 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Viper |
! | ( ( ;._ \\ ctr | Last Modification: item corrections |
=================================================================
-->
--- 3,8 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Viper, Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
***************
*** 14,21 ****
<decay />
<nodye />
! <defense>1.1</defense>
! <durability>28</durability>
<id>0x1B73</id>
! <requires type='str'>15</requires>
<restock>10</restock>
<smelt>8</smelt>
--- 14,21 ----
<decay />
<nodye />
! <defense>0</defense>
! <durability><random min="40" max="50" /></durability>
<id>0x1B73</id>
! <requires type='str'>20</requires>
<restock>10</restock>
<smelt>8</smelt>
***************
*** 31,38 ****
<decay />
<nodye />
! <defense>1.2</defense>
! <durability>22</durability>
<id>0x1B7A</id>
! <requires type='str'>5</requires>
<restock>10</restock>
<weight>5</weight>
--- 31,38 ----
<decay />
<nodye />
! <defense>0</defense>
! <durability><random min="20" max="25" /></durability>
<id>0x1B7A</id>
! <requires type='str'>20</requires>
<restock>10</restock>
<weight>5</weight>
***************
*** 47,52 ****
<decay />
<nodye />
! <defense>1.3</defense>
! <durability>40</durability>
<id>0x1B7B</id>
<requires type='str'>20</requires>
--- 47,52 ----
<decay />
<nodye />
! <defense>0</defense>
! <durability><random min="50" max="65" /></durability>
<id>0x1B7B</id>
<requires type='str'>20</requires>
***************
*** 64,71 ****
<decay />
<nodye />
! <defense>1.4</defense>
! <durability>28</durability>
<id>0x1B72</id>
! <requires type='str'>20</requires>
<restock>10</restock>
<smelt>4</smelt>
--- 64,71 ----
<decay />
<nodye />
! <defense>0</defense>
! <durability><random min="25" max="30" /></durability>
<id>0x1B72</id>
! <requires type='str'>35</requires>
<restock>10</restock>
<smelt>4</smelt>
***************
*** 81,88 ****
<decay />
<nodye />
! <defense>1.6</defense>
! <durability>52</durability>
<id>0x1B78</id>
! <requires type='str'>15</requires>
<restock>10</restock>
<smelt>6</smelt>
--- 81,88 ----
<decay />
<nodye />
! <defense>0</defense>
! <durability><random min="50" max="65" /></durability>
<id>0x1B78</id>
! <requires type='str'>20</requires>
<restock>10</restock>
<smelt>6</smelt>
***************
*** 98,105 ****
<decay />
<dye />
! <defense>1.8</defense>
! <durability>108</durability>
<id>0x1B74</id>
! <requires type='str'>30</requires>
<restock>10</restock>
<smelt>13</smelt>
--- 98,105 ----
<decay />
<dye />
! <defense>0</defense>
! <durability><random min="45" max="60" /></durability>
<id>0x1B74</id>
! <requires type='str'>45</requires>
<restock>10</restock>
<smelt>13</smelt>
***************
*** 115,122 ****
<decay />
<nodye />
! <defense>2.0</defense>
! <durability>34</durability>
<id>0x1B76</id>
! <requires type='str'>30</requires>
<restock>10</restock>
<smelt>14</smelt>
--- 115,122 ----
<decay />
<nodye />
! <defense>0</defense>
! <durability><random min="50" max="65" /></durability>
<id>0x1B76</id>
! <requires type='str'>90</requires>
<restock>10</restock>
<smelt>14</smelt>
***************
*** 132,139 ****
<decay />
<nodye />
! <defense>2.2</defense>
! <durability>108</durability>
<id>0x1BC4</id>
! <requires type='str'>95</requires>
<restock>0</restock>
<weight>5</weight>
--- 132,139 ----
<decay />
<nodye />
! <defense>1</defense>
! <durability><random min="100" max="125" /></durability>
<id>0x1BC4</id>
! <requires type='str'>95</requires>
<restock>0</restock>
<weight>5</weight>
***************
*** 148,153 ****
<decay />
<nodye />
! <defense>2.4</defense>
! <durability>108</durability>
<id>0x1BC3</id>
<requires type='str'>95</requires>
--- 148,153 ----
<decay />
<nodye />
! <defense>1</defense>
! <durability><random min="100" max="125" /></durability>
<id>0x1BC3</id>
<requires type='str'>95</requires>
***************
*** 158,160 ****
--- 158,161 ----
<category>Armor\Shields\chaos shield</category>
</item>
+
</definitions>
Index: studded.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/armory/studded.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** studded.xml 18 Jan 2003 16:18:12 -0000 1.1
--- studded.xml 23 Aug 2003 22:05:00 -0000 1.2
***************
*** 3,8 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Viper |
! | )).-' {{ ;'` | Revised by: |
! | ( ( ;._ \\ ctr | Last Modification: Created |
=================================================================
|Studded Leather Armors |
--- 3,8 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Viper |
! | )).-' {{ ;'` | Revised by: Dreoth ...
[truncated message content] |
|
From: <dr...@us...> - 2003-08-23 22:04:32
|
Update of /cvsroot/wpdev/xmlscripts/definitions/npcs/monsters
In directory sc8-pr-cvs1:/tmp/cvs-serv27339
Modified Files:
elementals.xml giantanimals.xml giants.xml ophidians.xml
Log Message:
Ok, monsters should match OSI's except we need to get the elements working... once that's added I can put those in as well :)
Index: elementals.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/monsters/elementals.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** elementals.xml 9 Apr 2003 06:00:49 -0000 1.4
--- elementals.xml 23 Aug 2003 22:04:29 -0000 1.5
***************
*** 3,11 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: White Wolf |
! | )).-' {{ ;'` | Revised by: Viper |
! | ( ( ;._ \\ ctr | Last Modification: |
=================================================================
-->
<definitions>
<!-- an acid elemental -->
<npc id="acid_elemental">
--- 3,12 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: White Wolf |
! | )).-' {{ ;'` | Revised by: Viper, Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
+
<!-- an acid elemental -->
<npc id="acid_elemental">
***************
*** 16,33 ****
<karma><random min="-10000" max="-12000"/></karma>
<fame><random min="10000" max="12000"/></fame>
! <defense><random min="50" max="50"/></defense>
! <lodamage>7</lodamage>
! <hidamage>22</hidamage>
<!-- Stats -->
! <str><random min="327" max="355"/></str>
<dex><random min="66" max="85"/></dex>
<int><random min="271" max="295"/></int>
<!-- Skills -->
! <wrestling><random min="732" max="909"/></wrestling>
<tactics><random min="801" max="900"/></tactics>
! <magicresistance><random min="602" max="750"/></magicresistance>
! <anatomy><random min="325" max="579"/></anatomy>
! <magery><random min="745" max="872" /></magery>
! </npc>
<!-- an air elemental -->
--- 17,35 ----
<karma><random min="-10000" max="-12000"/></karma>
<fame><random min="10000" max="12000"/></fame>
! <defense><random min="45" max="55"/></defense>
! <lodamage>26</lodamage>
! <hidamage>42</hidamage>
<!-- Stats -->
! <str><random min="326" max="355"/></str>
<dex><random min="66" max="85"/></dex>
<int><random min="271" max="295"/></int>
<!-- Skills -->
! <wrestling><random min="701" max="900"/></wrestling>
<tactics><random min="801" max="900"/></tactics>
! <magicresistance><random min="601" max="750"/></magicresistance>
! <anatomy><random min="303" max="600"/></anatomy>
! <magery><random min="701" max="850" /></magery>
! <evaluatingint><random min="701" max="850"/></evaluatingint>
! </npc>
<!-- an air elemental -->
***************
*** 39,56 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="40" max="40"/></defense>
! <lodamage>7</lodamage>
! <hidamage>18</hidamage>
<!-- Stats -->
! <str><random min="126" max="152"/></str>
! <dex><random min="66" max="85"/></dex>
! <int><random min="166" max="185"/></int>
<!-- Skills -->
! <wrestling><random min="669" max="820"/></wrestling>
! <tactics><random min="625" max="788"/></tactics>
! <magicresistance><random min="638" max="748"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! <magery><random min="671" max="784" /></magery>
! </npc>
<!-- a blood elemental -->
--- 41,58 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="35" max="45"/></defense>
! <lodamage>15</lodamage>
! <hidamage>19</hidamage>
<!-- Stats -->
! <str><random min="126" max="155"/></str>
! <dex><random min="166" max="185"/></dex>
! <int><random min="101" max="125"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="800"/></wrestling>
! <tactics><random min="601" max="800"/></tactics>
! <magicresistance><random min="601" max="750"/></magicresistance>
! <evaluatingint><random min="601" max="750"/></evaluatingint>
! <magery><random min="601" max="750" /></magery>
! </npc>
<!-- a blood elemental -->
***************
*** 62,81 ****
<karma><random min="-10000" max="-15000"/></karma>
<fame><random min="10000" max="1500"/></fame>
! <defense><random min="60" max="60"/></defense>
! <lodamage>20</lodamage>
! <hidamage>40</hidamage>
<!-- Stats -->
! <str><random min="527" max="615"/></str>
! <dex><random min="67" max="85"/></dex>
! <int><random min="226" max="344"/></int>
<!-- Skills -->
! <wrestling><random min="822" max="994"/></wrestling>
! <tactics><random min="805" max="994"/></tactics>
! <magicresistance><random min="804" max="947"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! <magery><random min="875" max="994" /></magery>
! <evaluatingintel><random min="580" max="804" /></evaluatingintel>
! <meditation><random min="221" max="617" /></meditation>
! </npc>
<!-- an earth elemental -->
--- 64,82 ----
<karma><random min="-10000" max="-15000"/></karma>
<fame><random min="10000" max="1500"/></fame>
! <defense><random min="55" max="65"/></defense>
! <lodamage>51</lodamage>
! <hidamage>91</hidamage>
<!-- Stats -->
! <str><random min="526" max="615"/></str>
! <dex><random min="66" max="85"/></dex>
! <int><random min="226" max="350"/></int>
<!-- Skills -->
! <wrestling><random min="801" max="1000"/></wrestling>
! <tactics><random min="801" max="1000"/></tactics>
! <magicresistance><random min="801" max="950"/></magicresistance>
! <magery><random min="851" max="1000" /></magery>
! <evaluatingintel><random min="851" max="1000" /></evaluatingintel>
! <meditation><random min="104" max="500" /></meditation>
! </npc>
<!-- an earth elemental -->
***************
*** 87,103 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="34" max="34"/></defense>
! <lodamage>7</lodamage>
! <hidamage>18</hidamage>
<!-- Stats -->
! <str><random min="131" max="152"/></str>
<dex><random min="66" max="85"/></dex>
! <int><random min="73" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="657" max="929"/></wrestling>
! <tactics><random min="655" max="916"/></tactics>
! <magicresistance><random min="529" max="870"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! </npc>
<!-- a fire elemental -->
--- 88,103 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="30" max="35"/></defense>
! <lodamage>17</lodamage>
! <hidamage>32</hidamage>
<!-- Stats -->
! <str><random min="126" max="155"/></str>
<dex><random min="66" max="85"/></dex>
! <int><random min="71" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="1000"/></wrestling>
! <tactics><random min="601" max="1000"/></tactics>
! <magicresistance><random min="501" max="950"/></magicresistance>
! </npc>
<!-- a fire elemental -->
***************
*** 109,126 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="40" max="40"/></defense>
! <lodamage>7</lodamage>
<hidamage>18</hidamage>
<!-- Stats -->
! <str><random min="129" max="151"/></str>
! <dex><random min="168" max="185"/></dex>
! <int><random min="101" max="119"/></int>
<!-- Skills -->
! <wrestling><random min="758" max="990"/></wrestling>
! <tactics><random min="809" max="953"/></tactics>
! <magicresistance><random min="797" max="948"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! <magery><random min="670" max="774" /></magery>
! </npc>
<!-- an ice elemental -->
--- 109,126 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="35" max="45"/></defense>
! <lodamage>14</lodamage>
<hidamage>18</hidamage>
<!-- Stats -->
! <str><random min="126" max="155"/></str>
! <dex><random min="166" max="185"/></dex>
! <int><random min="101" max="125"/></int>
<!-- Skills -->
! <wrestling><random min="701" max="1000"/></wrestling>
! <tactics><random min="801" max="1000"/></tactics>
! <magicresistance><random min="752" max="1050"/></magicresistance>
! <magery><random min="601" max="750" /></magery>
! <evaluatingint><random min="601" max="750"/></evaluatingint>
! </npc>
<!-- an ice elemental -->
***************
*** 132,149 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="40" max="40"/></defense>
! <lodamage>5</lodamage>
! <hidamage>20</hidamage>
<!-- Stats -->
! <str><random min="158" max="184"/></str>
! <dex><random min="99" max="115"/></dex>
! <int><random min="172" max="192"/></int>
<!-- Skills -->
! <wrestling><random min="764" max="973"/></wrestling>
! <tactics><random min="762" max="982"/></tactics>
! <magicresistance><random min="338" max="783"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! <magery><random min="318" max="477" /></magery>
! </npc>
<!-- a poison elemental -->
--- 132,149 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="35" max="45"/></defense>
! <lodamage>22</lodamage>
! <hidamage>45</hidamage>
<!-- Stats -->
! <str><random min="156" max="185"/></str>
! <dex><random min="96" max="115"/></dex>
! <int><random min="171" max="192"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="1000"/></wrestling>
! <tactics><random min="701" max="1000"/></tactics>
! <magicresistance><random min="301" max="800"/></magicresistance>
! <magery><random min="105" max="600" /></magery>
! <evaluatingint><random min="105" max="600"/></evaluatingint>
! </npc>
<!-- a poison elemental -->
***************
*** 155,174 ****
<karma><random min="-10000" max="-15000"/></karma>
<fame><random min="10000" max="15000"/></fame>
! <defense><random min="70" max="70"/></defense>
! <lodamage>9</lodamage>
! <hidamage>24</hidamage>
<!-- Stats -->
! <str><random min="430" max="515"/></str>
! <dex><random min="166" max="184"/></dex>
! <int><random min="362" max="431"/></int>
<!-- Skills -->
! <wrestling><random min="741" max="895"/></wrestling>
! <tactics><random min="803" max="994"/></tactics>
! <magicresistance><random min="924" max="1134"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! <poisoning><random min="903" max="1000" /></poisoning>
! <magery><random min="836" max="945" /></magery>
! <meditation><random min="870" max="1122" /></meditation>
! </npc>
<!-- a snow elemental -->
--- 155,174 ----
<karma><random min="-10000" max="-15000"/></karma>
<fame><random min="10000" max="15000"/></fame>
! <defense><random min="60" max="70"/></defense>
! <lodamage>36</lodamage>
! <hidamage>57</hidamage>
<!-- Stats -->
! <str><random min="426" max="515"/></str>
! <dex><random min="166" max="185"/></dex>
! <int><random min="361" max="435"/></int>
<!-- Skills -->
! <wrestling><random min="701" max="900"/></wrestling>
! <tactics><random min="801" max="1000"/></tactics>
! <magicresistance><random min="852" max="1150"/></magicresistance>
! <poisoning><random min="901" max="1000" /></poisoning>
! <magery><random min="801" max="950" /></magery>
! <evaluatingint><random min="801" max="950"/></evaluatingint>
! <meditation><random min="802" max="1200" /></meditation>
! </npc>
<!-- a snow elemental -->
***************
*** 180,196 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="50" max="50"/></defense>
! <lodamage>7</lodamage>
! <hidamage>18</hidamage>
<!-- Stats -->
! <str><random min="327" max="353"/></str>
! <dex><random min="167" max="182"/></dex>
! <int><random min="72" max="91"/></int>
<!-- Skills -->
! <wrestling><random min="820" max="978"/></wrestling>
! <tactics><random min="933" max="965"/></tactics>
! <magicresistance><random min="528" max="634"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! </npc>
<!-- a water elemental -->
--- 180,195 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="45" max="55"/></defense>
! <lodamage>31</lodamage>
! <hidamage>45</hidamage>
<!-- Stats -->
! <str><random min="326" max="355"/></str>
! <dex><random min="166" max="185"/></dex>
! <int><random min="71" max="95"/></int>
<!-- Skills -->
! <wrestling><random min="801" max="1000"/></wrestling>
! <tactics><random min="801" max="1000"/></tactics>
! <magicresistance><random min="501" max="650"/></magicresistance>
! </npc>
<!-- a water elemental -->
***************
*** 202,219 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="40" max="40"/></defense>
! <lodamage>7</lodamage>
! <hidamage>18</hidamage>
<!-- Stats -->
! <str><random min="126" max="154"/></str>
<dex><random min="66" max="85"/></dex>
! <int><random min="102" max="124"/></int>
<!-- Skills -->
! <wrestling><random min="551" max="691"/></wrestling>
! <tactics><random min="508" max="677"/></tactics>
! <magicresistance><random min="1016" max="1148"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! <magery><random min="663" max="786" /></magery>
! </npc>
<!-- an agapite elemental -->
--- 201,218 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="35" max="45"/></defense>
! <lodamage>13</lodamage>
! <hidamage>17</hidamage>
<!-- Stats -->
! <str><random min="126" max="155"/></str>
<dex><random min="66" max="85"/></dex>
! <int><random min="101" max="125"/></int>
<!-- Skills -->
! <wrestling><random min="501" max="700"/></wrestling>
! <tactics><random min="501" max="700"/></tactics>
! <magicresistance><random min="1001" max="1150"/></magicresistance>
! <magery><random min="601" max="750" /></magery>
! <evaluatingint><random min="601" max="750"/></evaluatingint>
! </npc>
<!-- an agapite elemental -->
***************
*** 225,241 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="34" max="34"/></defense>
! <lodamage>12</lodamage>
! <hidamage>27</hidamage>
<!-- Stats -->
! <str><random min="239" max="239"/></str>
! <dex><random min="142" max="142"/></dex>
! <int><random min="82" max="82"/></int>
<!-- Skills -->
! <wrestling><random min="838" max="838"/></wrestling>
! <tactics><random min="614" max="614"/></tactics>
! <magicresistance><random min="585" max="585"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! </npc>
<!-- a bronze elemental -->
--- 224,239 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="30" max="40"/></defense>
! <lodamage>59</lodamage>
! <hidamage>69</hidamage>
<!-- Stats -->
! <str><random min="226" max="255"/></str>
! <dex><random min="126" max="145"/></dex>
! <int><random min="70" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="1000"/></wrestling>
! <tactics><random min="601" max="1000"/></tactics>
! <magicresistance><random min="501" max="950"/></magicresistance>
! </npc>
<!-- a bronze elemental -->
***************
*** 247,263 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="34" max="34"/></defense>
! <lodamage>9</lodamage>
! <hidamage>24</hidamage>
<!-- Stats -->
! <str><random min="235" max="251"/></str>
! <dex><random min="129" max="139"/></dex>
! <int><random min="76" max="90"/></int>
<!-- Skills -->
! <wrestling><random min="670" max="769"/></wrestling>
! <tactics><random min="745" max="936"/></tactics>
! <magicresistance><random min="528" max="854"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! </npc>
<!-- a copper elemental -->
--- 245,260 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="30" max="40"/></defense>
! <lodamage>20</lodamage>
! <hidamage>37</hidamage>
<!-- Stats -->
! <str><random min="226" max="255"/></str>
! <dex><random min="126" max="145"/></dex>
! <int><random min="71" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="1000"/></wrestling>
! <tactics><random min="601" max="1000"/></tactics>
! <magicresistance><random min="501" max="950"/></magicresistance>
! </npc>
<!-- a copper elemental -->
***************
*** 269,285 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="34" max="34"/></defense>
! <lodamage>9</lodamage>
! <hidamage>24</hidamage>
<!-- Stats -->
! <str><random min="240" max="243"/></str>
! <dex><random min="127" max="141"/></dex>
! <int><random min="74" max="83"/></int>
<!-- Skills -->
! <wrestling><random min="849" max="953"/></wrestling>
! <tactics><random min="770" max="984"/></tactics>
! <magicresistance><random min="819" max="840"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! </npc>
<!-- a dull copper elemental -->
--- 266,281 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="30" max="40"/></defense>
! <lodamage>20</lodamage>
! <hidamage>37</hidamage>
<!-- Stats -->
! <str><random min="226" max="255"/></str>
! <dex><random min="126" max="145"/></dex>
! <int><random min="71" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="1000"/></wrestling>
! <tactics><random min="601" max="1000"/></tactics>
! <magicresistance><random min="501" max="950"/></magicresistance>
! </npc>
<!-- a dull copper elemental -->
***************
*** 291,307 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="34" max="34"/></defense>
! <lodamage>9</lodamage>
! <hidamage>24</hidamage>
<!-- Stats -->
! <str><random min="232" max="254"/></str>
! <dex><random min="126" max="143"/></dex>
! <int><random min="71" max="91"/></int>
<!-- Skills -->
! <wrestling><random min="661" max="980"/></wrestling>
! <tactics><random min="623" max="988"/></tactics>
! <magicresistance><random min="518" max="988"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! </npc>
<!-- a golden elemental -->
--- 287,302 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="30" max="40"/></defense>
! <lodamage>19</lodamage>
! <hidamage>37</hidamage>
<!-- Stats -->
! <str><random min="226" max="255"/></str>
! <dex><random min="126" max="145"/></dex>
! <int><random min="71" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="1000"/></wrestling>
! <tactics><random min="601" max="1000"/></tactics>
! <magicresistance><random min="501" max="950"/></magicresistance>
! </npc>
<!-- a golden elemental -->
***************
*** 313,329 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="68" max="68"/></defense>
! <lodamage>7</lodamage>
! <hidamage>18</hidamage>
<!-- Stats -->
! <str><random min="237" max="252"/></str>
! <dex><random min="131" max="144"/></dex>
! <int><random min="72" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="775" max="877"/></wrestling>
! <tactics><random min="806" max="987"/></tactics>
! <magicresistance><random min="624" max="937"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! </npc>
<!-- a shadow iron elemental -->
--- 308,323 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="60" max="75"/></defense>
! <lodamage>20</lodamage>
! <hidamage>37</hidamage>
<!-- Stats -->
! <str><random min="226" max="255"/></str>
! <dex><random min="126" max="145"/></dex>
! <int><random min="71" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="1000"/></wrestling>
! <tactics><random min="601" max="1000"/></tactics>
! <magicresistance><random min="501" max="950"/></magicresistance>
! </npc>
<!-- a shadow iron elemental -->
***************
*** 335,351 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="34" max="34"/></defense>
! <lodamage>9</lodamage>
! <hidamage>24</hidamage>
<!-- Stats -->
! <str><random min="237" max="239"/></str>
! <dex><random min="133" max="144"/></dex>
! <int><random min="82" max="83"/></int>
<!-- Skills -->
! <wrestling><random min="737" max="780"/></wrestling>
! <tactics><random min="711" max="862"/></tactics>
! <magicresistance><random min="691" max="740"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! </npc>
<!-- a valorite elemental -->
--- 329,344 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="30" max="40"/></defense>
! <lodamage>20</lodamage>
! <hidamage>37</hidamage>
<!-- Stats -->
! <str><random min="226" max="255"/></str>
! <dex><random min="126" max="145"/></dex>
! <int><random min="71" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="1000"/></wrestling>
! <tactics><random min="601" max="1000"/></tactics>
! <magicresistance><random min="501" max="950"/></magicresistance>
! </npc>
<!-- a valorite elemental -->
***************
*** 357,373 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="68" max="68"/></defense>
! <lodamage>9</lodamage>
! <hidamage>24</hidamage>
<!-- Stats -->
! <str><random min="240" max="240"/></str>
! <dex><random min="142" max="142"/></dex>
! <int><random min="90" max="90"/></int>
<!-- Skills -->
! <wrestling><random min="896" max="896"/></wrestling>
! <tactics><random min="854" max="854"/></tactics>
! <magicresistance><random min="798" max="798"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! </npc>
<!-- a verite elemental -->
--- 350,365 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="65" max="75"/></defense>
! <lodamage>59</lodamage>
! <hidamage>69</hidamage>
<!-- Stats -->
! <str><random min="226" max="255"/></str>
! <dex><random min="126" max="145"/></dex>
! <int><random min="71" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="1000"/></wrestling>
! <tactics><random min="601" max="1000"/></tactics>
! <magicresistance><random min="501" max="950"/></magicresistance>
! </npc>
<!-- a verite elemental -->
***************
*** 379,395 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="34" max="34"/></defense>
! <lodamage>12</lodamage>
! <hidamage>27</hidamage>
<!-- Stats -->
! <str><random min="242" max="248"/></str>
! <dex><random min="126" max="140"/></dex>
! <int><random min="85" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="700" max="721"/></wrestling>
! <tactics><random min="793" max="949"/></tactics>
! <magicresistance><random min="553" max="569"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
</npc>
<npc id="blade_spirit">
<name>a blade spirit</name>
--- 371,388 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="30" max="40"/></defense>
! <lodamage>20</lodamage>
! <hidamage>37</hidamage>
<!-- Stats -->
! <str><random min="226" max="255"/></str>
! <dex><random min="126" max="145"/></dex>
! <int><random min="71" max="92"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="1000"/></wrestling>
! <tactics><random min="601" max="1000"/></tactics>
! <magicresistance><random min="501" max="950"/></magicresistance>
</npc>
+
+ <!-- Blade Spirit -->
<npc id="blade_spirit">
<name>a blade spirit</name>
***************
*** 399,413 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="34" max="34"/></defense>
! <lodamage>12</lodamage>
! <hidamage>27</hidamage>
<!-- Stats -->
! <str><random min="242" max="248"/></str>
! <dex><random min="126" max="140"/></dex>
! <int><random min="85" max="92"/></int>
<!-- Skills -->
! <swordsmanship><random min="700" max="721"/></swordsmanship>
! <tactics><random min="793" max="949"/></tactics>
! <anatomy><random min="0" max="0"/></anatomy>
</npc>
</definitions>
--- 392,407 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="30" max="40"/></defense>
! <lodamage>20</lodamage>
! <hidamage>32</hidamage>
<!-- Stats -->
! <str>150</str>
! <dex>150</dex>
! <int>100</int>
<!-- Skills -->
! <wrestling>900</wrestling>
! <tactics>1000</tactics>
! <magicresistance>700</magicresistance>
</npc>
+
</definitions>
Index: giantanimals.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/monsters/giantanimals.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** giantanimals.xml 19 Feb 2003 02:16:43 -0000 1.7
--- giantanimals.xml 23 Aug 2003 22:04:29 -0000 1.8
***************
*** 4,52 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg |
! | ( ( ;._ \\ ctr | Last Modification: Enhanced |
=================================================================
-->
<definitions>
<!-- a rat (giant) -->
<npc id="rat_giant">
<name>a giant rat</name>
<id>0x0d7</id>
! <category>Monsters\giantanimals\ret giant </category>
<inherit id="monster_base"/>
! <karma>
! <random min="-0" max="-624"/>
! </karma>
! <fame>
! <random min="0" max="1249"/>
! </fame>
! <defense>
! <random min="18" max="18"/>
! </defense>
! <lodamage>2</lodamage>
! <hidamage>8</hidamage>
<!-- Stats -->
! <str>
! <random min="32" max="70"/>
! </str>
! <dex>
! <random min="46" max="65"/>
! </dex>
! <int>
! <random min="16" max="29"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="370" max="428"/>
! </wrestling>
! <tactics>
! <random min="270" max="439"/>
! </tactics>
! <magicresistance>
! <random min="251" max="300"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
<carve>carve_ret_giant</carve>
<totame>291</totame>
--- 4,32 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
+
<!-- a rat (giant) -->
<npc id="rat_giant">
<name>a giant rat</name>
<id>0x0d7</id>
! <category>Monsters\Giant Animals\Giant Rat </category>
<inherit id="monster_base"/>
! <karma><random min="-0" max="-624"/></karma>
! <fame><random min="0" max="1249"/></fame>
! <defense><random min="15" max="20"/></defense>
! <lodamage>5</lodamage>
! <hidamage>11</hidamage>
<!-- Stats -->
! <str><random min="32" max="74"/></str>
! <dex><random min="46" max="65"/></dex>
! <int><random min="16" max="30"/></int>
<!-- Skills -->
! <wrestling><random min="293" max="440"/></wrestling>
! <tactics><random min="293" max="440"/></tactics>
! <magicresistance><random min="251" max="300"/></magicresistance>
<carve>carve_ret_giant</carve>
<totame>291</totame>
***************
*** 59,104 ****
<name>a giant spider</name>
<id>0x01c</id>
! <category>Monsters\giantanimals\spider gaint </category>
<inherit id="monster_base"/>
! <karma>
! <random min="-0" max="-624"/>
! </karma>
! <fame>
! <random min="0" max="1249"/>
! </fame>
! <defense>
! <random min="16" max="16"/>
! </defense>
! <lodamage>2</lodamage>
! <hidamage>14</hidamage>
! <gold>
! <random min="0" max="50"/>
! </gold>
<!-- Stats -->
! <str>
! <random min="76" max="100"/>
! </str>
! <dex>
! <random min="76" max="94"/>
! </dex>
! <int>
! <random min="36" max="59"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="538" max="671"/>
! </wrestling>
! <tactics>
! <random min="368" max="499"/>
! </tactics>
! <magicresistance>
! <random min="252" max="398"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
! <poisoning>
! <random min="604" max="792"/>
! </poisoning>
<carve>carve_spider_gaint</carve>
<totame>591</totame>
--- 39,59 ----
<name>a giant spider</name>
<id>0x01c</id>
! <category>Monsters\Giant Animals\Giant Spider</category>
<inherit id="monster_base"/>
! <karma><random min="-0" max="-624"/></karma>
! <fame><random min="0" max="1249"/></fame>
! <defense><random min="15" max="20"/></defense>
! <lodamage>7</lodamage>
! <hidamage>19</hidamage>
! <gold><random min="0" max="25"/></gold>
<!-- Stats -->
! <str><random min="76" max="100"/></str>
! <dex><random min="76" max="95"/></dex>
! <int><random min="36" max="60"/></int>
<!-- Skills -->
! <wrestling><random min="501" max="650"/></wrestling>
! <tactics><random min="351" max="500"/></tactics>
! <magicresistance><random min="251" max="400"/></magicresistance>
! <poisoning><random min="601" max="800"/></poisoning>
<carve>carve_spider_gaint</carve>
<totame>591</totame>
***************
*** 111,156 ****
<name>a scorpion</name>
<id>0x030</id>
! <category>Monsters\giantanimals\scorpion </category>
<inherit id="monster_base"/>
! <karma>
! <random min="-1250" max="-2499"/>
! </karma>
! <fame>
! <random min="1250" max="2499"/>
! </fame>
! <defense>
! <random min="28" max="28"/>
! </defense>
! <lodamage>3</lodamage>
! <hidamage>12</hidamage>
! <gold>
! <random min="0" max="50"/>
! </gold>
<!-- Stats -->
! <str>
! <random min="82" max="108"/>
! </str>
! <dex>
! <random min="78" max="94"/>
! </dex>
! <int>
! <random min="17" max="29"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="576" max="660"/>
! </wrestling>
! <tactics>
! <random min="624" max="735"/>
! </tactics>
! <magicresistance>
! <random min="301" max="349"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
! <poisoning>
! <random min="834" max="991"/>
! </poisoning>
<carve>carve_scorpion_gaint</carve>
<totame>471</totame>
--- 66,86 ----
<name>a scorpion</name>
<id>0x030</id>
! <category>Monsters\Giant Animals\Scorpion</category>
<inherit id="monster_base"/>
! <karma><random min="-1250" max="-2499"/></karma>
! <fame><random min="1250" max="2499"/></fame>
! <defense><random min="20" max="25"/></defense>
! <lodamage>8</lodamage>
! <hidamage>17</hidamage>
! <gold><random min="25" max="50"/></gold>
<!-- Stats -->
! <str><random min="73" max="115"/></str>
! <dex><random min="76" max="95"/></dex>
! <int><random min="16" max="30"/></int>
<!-- Skills -->
! <wrestling> <random min="503" max="650"/></wrestling>
! <tactics><random min="603" max="750"/></tactics>
! <magicresistance><random min="301" max="350"/></magicresistance>
! <poisoning><random min="801" max="1000"/></poisoning>
<carve>carve_scorpion_gaint</carve>
<totame>471</totame>
***************
*** 163,208 ****
<name>a giant serpent</name>
<id>0x015</id>
! <category>Monsters\giantanimals\serpent gaint </category>
<inherit id="monster_base"/>
! <karma>
! <random min="-1250" max="-2499"/>
! </karma>
! <fame>
! <random min="1250" max="2499"/>
! </fame>
! <defense>
! <random min="32" max="32"/>
! </defense>
! <lodamage>1</lodamage>
! <hidamage>1</hidamage>
! <gold>
! <random min="1250" max="2499"/>
! </gold>
<!-- Stats -->
! <str>
! <random min="188" max="215"/>
! </str>
! <dex>
! <random min="56" max="79"/>
! </dex>
! <int>
! <random min="69" max="85"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="652" max="810"/>
! </wrestling>
! <tactics>
! <random min="653" max="700"/>
! </tactics>
! <magicresistance>
! <random min="255" max="400"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
! <poisoning>
! <random min="784" max="997"/>
! </poisoning>
<carve>carve_serpent_gaint</carve>
<!-- Priv -->
--- 93,113 ----
<name>a giant serpent</name>
<id>0x015</id>
! <category>Monsters\Giant Animals\serpent gaint </category>
<inherit id="monster_base"/>
! <karma><random min="-1250" max="-2499"/></karma>
! <fame><random min="1250" max="2499"/></fame>
! <defense><random min="30" max="35"/></defense>
! <lodamage>19</lodamage>
! <hidamage>35</hidamage>
! <gold><random min="1250" max="2499"/></gold>
<!-- Stats -->
! <str><random min="186" max="215"/></str>
! <dex><random min="56" max="80"/></dex>
! <int><random min="66" max="85"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="800"/></wrestling>
! <tactics><random min="651" max="700"/></tactics>
! <magicresistance><random min="251" max="400"/></magicresistance>
! <poisoning><random min="701" max="1000"/></poisoning>
<carve>carve_serpent_gaint</carve>
<!-- Priv -->
***************
*** 213,252 ****
<name>a gaint toad</name>
<id>0x050</id>
! <category>Monsters\giantanimals\gaint toad </category>
<inherit id="monster_base"/>
! <karma>
! <random min="-0" max="-624"/>
! </karma>
! <fame>
! <random min="0" max="1259"/>
! </fame>
! <defense>
! <random min="24" max="24"/>
! </defense>
! <lodamage>2</lodamage>
! <hidamage>8</hidamage>
<!-- Stats -->
! <str>
! <random min="79" max="99"/>
! </str>
! <dex>
! <random min="10" max="23"/>
! </dex>
! <int>
! <random min="10" max="25"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="445" max="610"/>
! </wrestling>
! <tactics>
! <random min="413" max="583"/>
! </tactics>
! <magicresistance>
! <random min="262" max="394"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
<carve>carve_gaint_toad</carve>
<totame>771</totame>
--- 118,136 ----
<name>a gaint toad</name>
<id>0x050</id>
! <category>Monsters\Giant Animals\gaint toad </category>
<inherit id="monster_base"/>
! <karma><random min="-0" max="-624"/></karma>
! <fame><random min="0" max="1259"/></fame>
! <defense><random min="20" max="25"/></defense>
! <lodamage>11</lodamage>
! <hidamage>27</hidamage>
<!-- Stats -->
! <str><random min="79" max="99"/></str>
! <dex><random min="10" max="23"/></dex>
! <int><random min="10" max="25"/></int>
<!-- Skills -->
! <wrestling><random min="401" max="600"/></wrestling>
! <tactics><random min="401" max="600"/></tactics>
! <magicresistance><random min="251" max="400"/></magicresistance>
<carve>carve_gaint_toad</carve>
<totame>771</totame>
***************
*** 259,298 ****
<name>a giant ice serpent</name>
<id>0x59</id>
! <category>Monsters\giantanimals\Giant Ice Serpent</category>
<skin>0</skin>
<inherit id="monster_base" />
<karma><random min="-2500" max="-4999" /></karma>
<fame><random min="2500" max="4999" /></fame>
! <defense>32</defense>
! <lodamage>4</lodamage>
! <hidamage>12</hidamage>
! <str><random min="222" max="244" /></str>
! <dex><random min="26" max="49" /></dex>
! <int><random min="67" max="84" /></int>
! <wrestling><random min="697" max="809" /></wrestling>
! <tactics><random min="753" max="805" /></tactics>
! <magicresistance><random min="258" max="388" /></magicresistance>
! <anatomy><random min="355" max="417" /></anatomy>
</npc>
! <!-- Giant Ice Serpent -->
<npc id="giant_ice_worm">
<name>a giant ice worm</name>
<id>0x59</id>
! <category>Monsters\giantanimals\Giant Ice Worm</category>
<skin>0</skin>
<inherit id="monster_base" />
<karma><random min="-2500" max="-4999" /></karma>
<fame><random min="2500" max="4999" /></fame>
! <defense>32</defense>
! <lodamage>4</lodamage>
! <hidamage>12</hidamage>
! <str><random min="218" max="234" /></str>
! <dex><random min="77" max="92" /></dex>
! <int><random min="66" max="77" /></int>
! <wrestling><random min="689" max="792" /></wrestling>
! <tactics><random min="752" max="793" /></tactics>
! <magicresistance><random min="459" max="594" /></magicresistance>
! <poisoning><random min="835" max="890" /></poisoning>
</npc>
--- 143,183 ----
<name>a giant ice serpent</name>
<id>0x59</id>
! <category>Monsters\Giant Animals\Giant Ice Serpent</category>
<skin>0</skin>
<inherit id="monster_base" />
<karma><random min="-2500" max="-4999" /></karma>
<fame><random min="2500" max="4999" /></fame>
! <defense><random min="30" max="35" /></defense>
! <lodamage>17</lodamage>
! <hidamage>41</hidamage>
! <str><random min="216" max="245" /></str>
! <dex><random min="26" max="50" /></dex>
! <int><random min="66" max="85" /></int>
! <wrestling><random min="601" max="800" /></wrestling>
! <tactics><random min="751" max="800" /></tactics>
! <magicresistance><random min="251" max="400" /></magicresistance>
! <anatomy><random min="275" max="500" /></anatomy>
</npc>
! <!-- Giant Ice Worm -->
<npc id="giant_ice_worm">
<name>a giant ice worm</name>
<id>0x59</id>
! <category>Monsters\Giant Animals\Giant Ice Worm</category>
<skin>0</skin>
<inherit id="monster_base" />
<karma><random min="-2500" max="-4999" /></karma>
<fame><random min="2500" max="4999" /></fame>
! <defense><random min="30" max="35" /></defense>
! <lodamage>15</lodamage>
! <hidamage>35</hidamage>
! <str><random min="216" max="245" /></str>
! <dex><random min="76" max="100" /></dex>
! <int><random min="66" max="85" /></int>
! <wrestling><random min="601" max="800" /></wrestling>
! <tactics><random min="751" max="800" /></tactics>
! <magicresistance><random min="451" max="600" /></magicresistance>
! <poisoning><random min="751" max="950" /></poisoning>
! <totame>711</totame>
</npc>
***************
*** 301,319 ****
<name>a lava serpent</name>
<id>0x5A</id>
! <category>Monsters\giantanimals\Lava Serpent</category>
<skin>0</skin>
<inherit id="monster_base" />
<karma><random min="-1250" max="-2499" /></karma>
<fame><random min="1250" max="2499" /></fame>
! <defense>40</defense>
! <lodamage>6</lodamage>
! <hidamage>13</hidamage>
! <str><random min="395" max="412" /></str>
! <dex><random min="59" max="79" /></dex>
! <int><random min="67" max="85" /></int>
! <wrestling><random min="644" max="777" /></wrestling>
! <tactics><random min="651" max="694" /></tactics>
! <magicresistance><random min="314" max="571" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
</npc>
--- 186,203 ----
<name>a lava serpent</name>
<id>0x5A</id>
! <category>Monsters\Giant Animals\Lava Serpent</category>
<skin>0</skin>
<inherit id="monster_base" />
<karma><random min="-1250" max="-2499" /></karma>
<fame><random min="1250" max="2499" /></fame>
! <defense><random min="35" max="45" /></defense>
! <lodamage>33</lodamage>
! <hidamage>56</hidamage>
! <str><random min="386" max="415" /></str>
! <dex><random min="56" max="80" /></dex>
! <int><random min="66" max="85" /></int>
! <wrestling><random min="601" max="800" /></wrestling>
! <tactics><random min="651" max="700" /></tactics>
! <magicresistance><random min="253" max="700" /></magicresistance>
</npc>
***************
*** 322,458 ****
<name>a silver serpent</name>
<id>0x5B</id>
! <category>Monsters\giantanimals\Silver Serpent</category>
<skin>0</skin>
<inherit id="monster_base" />
<karma><random min="-5000" max="-9999" /></karma>
<fame><random min="5000" max="9999" /></fame>
! <defense>40</defense>
! <lodamage>4</lodamage>
! <hidamage>12</hidamage>
! <str><random min="196" max="335" /></str>
! <dex><random min="172" max="280" /></dex>
! <int><random min="21" max="37" /></int>
! <wrestling><random min="878" max="982" /></wrestling>
! <tactics><random min="840" max="944" /></tactics>
! <magicresistance><random min="956" max="981" /></magicresistance>
! <poisoning><random min="950" max="997" /></poisoning>
</npc>
! <!-- dread spider -->
! <npc id="dread_spider">
! <name>a dread spider</name>
! <id>0xB</id>
! <category>Monsters\giantanimals\Dread Spider</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense>36</defense>
! <lodamage>9</lodamage>
! <hidamage>21</hidamage>
! <!-- Stats -->
! <str><random min="198" max="210" /></str>
! <dex><random min="126" max="144" /></dex>
! <int><random min="302" max="309" /></int>
! <!-- Skills -->
! <wrestling><random min="717" max="759" /></wrestling>
! <tactics><random min="585" max="693" /></tactics>
! <magicresistance><random min="452" max="559" /></magicresistance>
! <magery><random min="730" max="824" /></magery>
! <carve></carve>
! </npc>
! <!-- frost spider -->
! <npc id="frost_spider">
! <name>a frost</name>
! <id>0x14</id>
! <category>Monsters\giantanimals\Frost Spider</category>
! <skin>0</skin>
! <inherit id="animal_base" />
! <karma><random min="-0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense>28</defense>
! <lodamage>2</lodamage>
! <hidamage>14</hidamage>
! <!-- Stats -->
! <str><random min="76" max="100" /></str>
! <dex><random min="126" max="145" /></dex>
! <int><random min="36" max="60" /></int>
! <!-- Skills -->
! <wrestling><random min="551" max="682" /></wrestling>
! <tactics><random min="362" max="493" /></tactics>
! <magicresistance><random min="253" max="399" /></magicresistance>
! <totame>747</totame>
! <food>1</food>
! </npc>
! <!-- giant black widow -->
! <npc id="giant_black_widow">
! <name>a giant black widown</name>
! <id>0x9d</id>
! <category>Monsters\giantanimals\Giant Black Widow</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense><random min="24" max="24" /></defense>
! <lodamage>2</lodamage>
! <hidamage>12</hidamage>
! <!-- Stats -->
! <str><random min="77" max="88" /></str>
! <dex><random min="96" max="115" /></dex>
! <int><random min="37" max="60" /></int>
! <!-- Skills -->
! <wrestling><random min="741" max="858" /></wrestling>
! <tactics><random min="659" max="765" /></tactics>
! <magicresistance><random min="456" max="596" /></magicresistance>
! <anatomy><random min="410" max="654" /></anatomy>
! <poisoning><random min="612" max="792" /></poisoning>
! </npc>
! <!-- plague beast -->
! <npc id="plague_beast">
! <name>a plague beast</name>
! <id>0x307</id>
! <category>Monsters\giantanimals\Plague Beast</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-5000" max="-9999" /></karma>
! <fame><random min="5000" max="9999" /></fame>
! <defense><random min="30" max="30" /></defense>
! <lodamage>20</lodamage>
! <hidamage>40</hidamage>
! <!-- Stats -->
! <str><random min="518" max="666" /></str>
! <dex><random min="80" max="80" /></dex>
! <int><random min="16" max="20" /></int>
! <!-- Skills -->
! <wrestling><random min="1000" max="1000" /></wrestling>
! <tactics><random min="1000" max="1000" /></tactics>
! <magicresistance><random min="350" max="350" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
! </npc>
! <!-- plague beast lord -->
! <npc id="plague_beast_lord">
! <name>a plague beast lord</name>
! <id>0x307</id>
! <category>Monsters\giantanimals\Plague Beast Lord</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-10000" max="-15000" /></karma>
! <fame><random min="10000" max="15000" /></fame>
! <defense><random min="50" max="50" /></defense>
! <lodamage>20</lodamage>
! <hidamage>40</hidamage>
! <!-- Stats -->
! <str><random min="3000" max="3000" /></str>
! <dex><random min="100" max="100" /></dex>
! <int><random min="30" max="30" /></int>
! <!-- Skills -->
! <wrestling><random min="1000" max="1000" /></wrestling>
! <tactics><random min="1000" max="1000" /></tactics>
! <magicresistance><random min="0" max="0" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
! </npc>
! </definitions>
\ No newline at end of file
--- 206,341 ----
<name>a silver serpent</name>
<id>0x5B</id>
! <category>Monsters\Giant Animals\Silver Serpent</category>
<skin>0</skin>
<inherit id="monster_base" />
<karma><random min="-5000" max="-9999" /></karma>
<fame><random min="5000" max="9999" /></fame>
! <defense><random min="35" max="45" /></defense>
! <lodamage>11</lodamage>
! <hidamage>53</hidamage>
! <str><random min="161" max="360" /></str>
! <dex><random min="151" max="300" /></dex>
! <int><random min="21" max="40" /></int>
! <wrestling><random min="851" max="1000" /></wrestling>
! <tactics><random min="801" max="950" /></tactics>
! <magicresistance><random min="951" max="1000" /></magicresistance>
! <poisoning><random min="901" max="1000" /></poisoning>
</npc>
! <!-- dread spider -->
! <npc id="dread_spider">
! <name>a dread spider</name>
! <id>0xB</id>
! <category>Monsters\Giant Animals\Dread Spider</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense><random min="40" max="50" /></defense>
! <lodamage>13</lodamage>
! <hidamage>33</hidamage>
! <!-- Stats -->
! <str><random min="196" max="220" /></str>
! <dex><random min="126" max="145" /></dex>
! <int><random min="286" max="310" /></int>
! <!-- Skills -->
! <wrestling><random min="601" max="750" /></wrestling>
! <tactics><random min="551" max="700" /></tactics>
! <magicresistance><random min="451" max="600" /></magicresistance>
! <magery><random min="651" max="800" /></magery>
! <evaluatingint><random min="651" max="800"/></evaluatingint>
! <carve></carve>
! </npc>
! <!-- frost spider -->
! <npc id="frost_spider">
! <name>a frost</name>
! <id>0x14</id>
! <category>Monsters\Giant Animals\Frost Spider</category>
! <skin>0</skin>
! <inherit id="animal_base" />
! <karma><random min="-0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense><random min="25" max="30" /></defense>
! <lodamage>9</lodamage>
! <hidamage>28</hidamage>
! <!-- Stats -->
! <str><random min="76" max="100" /></str>
! <dex><random min="126" max="145" /></dex>
! <int><random min="36" max="60" /></int>
! <!-- Skills -->
! <wrestling><random min="501" max="650" /></wrestling>
! <tactics><random min="351" max="500" /></tactics>
! <magicresistance><random min="251" max="400" /></magicresistance>
! <totame>747</totame>
! <food>1</food>
! </npc>
! <!-- giant black widow -->
! <npc id="giant_black_widow">
! <name>a giant black widown</name>
! <id>0x9d</id>
! <category>Monsters\Giant Animals\Giant Black Widow</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense><random min="20" max="30" /></defense>
! <lodamage>11</lodamage>
! <hidamage>35</hidamage>
! <!-- Stats -->
! <str><random min="76" max="100" /></str>
! <dex><random min="96" max="115" /></dex>
! <int><random min="36" max="60" /></int>
! <!-- Skills -->
! <wrestling><random min="701" max="850" /></wrestling>
! <tactics><random min="651" max="800" /></tactics>
! <magicresistance><random min="451" max="600" /></magicresistance>
! <anatomy><random min="303" max="750" /></anatomy>
! <poisoning><random min="601" max="800" /></poisoning>
! </npc>
! <!-- plague beast -->
! <npc id="plague_beast">
! <name>a plague beast</name>
! <id>0x307</id>
! <category>Monsters\Giant Animals\Plague Beast</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-5000" max="-9999" /></karma>
! <fame><random min="5000" max="9999" /></fame>
! <defense><random min="45" max="55" /></defense>
! <lodamage>56</lodamage>
! <hidamage>75</hidamage>
! <!-- Stats -->
! <str><random min="302" max="500" /></str>
! <dex>80</dex>
! <int><random min="16" max="20" /></int>
! <!-- Skills -->
! <wrestling>1000</wrestling>
! <tactics>1000</tactics>
! <magicresistance>350</magicresistance>
! </npc>
! <!-- plague beast lord -->
! <npc id="plague_beast_lord">
! <name>a plague beast lord</name>
! <id>0x307</id>
! <category>Monsters\Giant Animals\Plague Beast Lord</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-10000" max="-15000" /></karma>
! <fame><random min="10000" max="15000" /></fame>
! <defense><random min="45" max="55" /></defense>
! <lodamage>66</lodamage>
! <hidamage>78</hidamage>
! <!-- Stats -->
! <str>500</str>
! <dex>100</dex>
! <int>30</int>
! <!-- Skills -->
! <wrestling>1000</wrestling>
! <tactics>1000</tactics>
! </npc>
!
! </definitions>
Index: giants.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/monsters/giants.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** giants.xml 19 Feb 2003 02:16:52 -0000 1.7
--- giants.xml 23 Aug 2003 22:04:29 -0000 1.8
***************
*** 4,55 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg |
! | ( ( ;._ \\ ctr | Last Modification: Enhanced |
=================================================================
-->
<definitions>
<!-- a cyclops -->
<npc id="cyclops">
<name>a cyclopian warrior</name>
<id>0x04c</id>
! <category>Monsters\giants\cyclopian warrior </category>
<inherit id="monster_base"/>
! <karma>
! <random min="-2500" max="-4999"/>
! </karma>
! <fame>
! <random min="2500" max="4999"/>
! </fame>
! <defense>
! <random min="48" max="48"/>
! </defense>
! <lodamage>8</lodamage>
! <hidamage>28</hidamage>
! <gold>
! <random min="450" max="650"/>
! </gold>
<!-- Stats -->
! <str>
! <random min="339" max="381"/>
! </str>
! <dex>
! <random min="100" max="115"/>
! </dex>
! <int>
! <random min="32" max="52"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="838" max="910"/>
! </wrestling>
! <tactics>
! <random min="816" max="979"/>
! </tactics>
! <magicresistance>
! <random min="776" max="1021"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
<carve>carve_cyclops</carve>
<!-- Priv -->
--- 4,34 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
+
<!-- a cyclops -->
<npc id="cyclops">
<name>a cyclopian warrior</name>
<id>0x04c</id>
! <category>Monsters\Giants\Cyclopian Warrior </category>
<inherit id="monster_base"/>
! <karma><random min="-2500" max="-4999"/></karma>
! <fame><random min="2500" max="4999"/></fame>
! <defense><random min="45" max="50"/></defense>
! <lodamage>21</lodamage>
! <hidamage>63</hidamage>
! <gold><random min="250" max="350"/></gold>
<!-- Stats -->
! <str><random min="336" max="385"/></str>
! <dex><random min="96" max="115"/></dex>
! <int><random min="31" max="55"/></int>
<!-- Skills -->
! <wrestling><random min="801" max="900"/></wrestling>
! <tactics><random min="801" max="1000"/></tactics>
! <magicresistance><random min="603" max="1050"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
<carve>carve_cyclops</carve>
<!-- Priv -->
***************
*** 60,249 ****
<name>an ettin</name>
<id>0x011</id>
! <category>Monsters\giants\ettin </category>
<inherit id="monster_base"/>
! <karma>
! <random min="-2500" max="-4999"/>
! </karma>
! <fame>
! <random min="2500" max="4999"/>
! </fame>
! <defense>
! <random min="38" max="38"/>
! </defense>
! <lodamage>4</lodamage>
! <hidamage>15</hidamage>
! <gold>
! <random min="50" max="150"/>
! </gold>
<!-- Stats -->
! <str>
! <random min="136" max="163"/>
! </str>
! <dex>
! <random min="56" max="74"/>
! </dex>
! <int>
! <random min="31" max="54"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="555" max="633"/>
! </wrestling>
! <tactics>
! <random min="507" max="678"/>
! </tactics>
! <magicresistance>
! <random min="423" max="529"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
<carve>carve_ettin</carve>
<!-- Priv -->
</npc>
<!-- a etitan-->
<npc id="titan">
<name>a titan</name>
<id>0x04a</id>
! <category>Monsters\giants\titan </category>
<inherit id="monster_base"/>
! <karma>
! <random min="-10000" max="-20000"/>
! </karma>
! <fame>
! <random min="10000" max="20000"/>
! </fame>
! <defense>
! <random min="40" max="40"/>
! </defense>
! <lodamage>6</lodamage>
! <hidamage>24</hidamage>
! <gold>
! <random min="500" max="800"/>
! </gold>
<!-- Stats -->
! <str>
! <random min="553" max="583"/>
! </str>
! <dex>
! <random min="126" max="142"/>
! </dex>
! <int>
! <random min="285" max="302"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="478" max="542"/>
! </wrestling>
! <tactics>
! <random min="663" max="788"/>
! </tactics>
! <magicresistance>
! <random min="924" max="1042"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
! <magery>
! <random min="875" max="963"/>
! </magery>
! <evaluatingint>
! <random min="658" max="744"/>
! </evaluatingint>
! <meditation>
! <random min="0" max="0"/>
! </meditation>
<carve>carve_titan</carve>
<!-- Priv -->
</npc>
<!-- a ogre -->
<npc id="ogre">
<name>a ogre</name>
<id>0x001</id>
! <category>Monsters\giants\ogre </category>
<inherit id="monster_base"/>
! <karma>
! <random min="-2500" max="-4999"/>
! </karma>
! <fame>
! <random min="2500" max="4999"/>
! </fame>
! <defense>
! <random min="32" max="32"/>
! </defense>
! <lodamage>5</lodamage>
! <hidamage>18</hidamage>
! <gold>
! <random min="50" max="150"/>
! </gold>
<!-- Stats -->
! <str>
! <random min="148" max="194"/>
! </str>
! <dex>
! <random min="48" max="60"/>
! </dex>
! <int>
! <random min="49" max="65"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="741" max="813"/>
! </wrestling>
! <tactics>
! <random min="605" max="691"/>
! </tactics>
! <magicresistance>
! <random min="563" max="698"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
! <carve>carve_ogr</carve>
<!-- Priv -->
</npc>
<!-- a troll -->
<npc id="troll">
<name>a troll</name>
<id>0x036</id>
! <category>Monsters\giants\troll </category>
<inherit id="monster_base"/>
! <karma>
! <random min="-2500" max="-4999"/>
! </karma>
! <fame>
! <random min="2500" max="4999"/>
! </fame>
! <defense>
! <random min="40" max="40"/>
! </defense>
! <lodamage>8</lodamage>
! <hidamage>18</hidamage>
! <gold>
! <random min="50" max="200"/>
! </gold>
<!-- Stats -->
! <str>
! <random min="177" max="204"/>
! </str>
! <dex>
! <random min="50" max="64"/>
! </dex>
! <int>
! <random min="47" max="63"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="603" max="713"/>
! </wrestling>
! <tactics>
! <random min="501" max="688"/>
! </tactics>
! <magicresistance>
! <random min="451" max="538"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
<carve>carve_troll</carve>
<!-- Priv -->
--- 39,132 ----
<name>an ettin</name>
<id>0x011</id>
! <category>Monsters\Giants\Ettin </category>
<inherit id="monster_base"/>
! <karma><random min="-2500" max="-4999"/></karma>
! <fame><random min="2500" max="4...
[truncated message content] |
|
From: <dar...@us...> - 2003-08-23 16:46:07
|
Update of /cvsroot/wpdev/xmlscripts/definitions/items/buildings In directory sc8-pr-cvs1:/tmp/cvs-serv4491/definitions/items/buildings Modified Files: doors.xml Log Message: Removed door code from the core. Index: doors.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/buildings/doors.xml,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** doors.xml 25 Dec 2002 23:51:10 -0000 1.6 --- doors.xml 23 Aug 2003 15:21:36 -0000 1.7 *************** *** 13,17 **** <item id="675"> <id>0x675</id> ! <type>12</type> <category>Buildings\Doors\Metal Door 1\Metal Door (S/SW)</category> </item> --- 13,17 ---- <item id="675"> <id>0x675</id> ! <events>door</events> <category>Buildings\Doors\Metal Door 1\Metal Door (S/SW)</category> [...1853 lines suppressed...] <item id="35e"> <id>0x035e</id> ! <events>door</events> </item> <item id="360"> <id>0x0360</id> ! <events>door</events> </item> <item id="362"> <id>0x0362</id> ! <events>door</events> </item> <item id="364"> <id>0x0364</id> ! <events>door</events> </item> </definitions> |
Update of /cvsroot/wpdev/wolfpack
In directory sc8-pr-cvs1:/tmp/cvs-serv4263/src
Modified Files:
dbl_single_click.cpp house.cpp items.cpp prototypes.h
targetrequests.cpp wolfpack.cpp
Log Message:
Removed door code from the core.
Index: dbl_single_click.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/dbl_single_click.cpp,v
retrieving revision 1.213
retrieving revision 1.214
diff -C2 -d -r1.213 -r1.214
*** dbl_single_click.cpp 21 Aug 2003 22:34:38 -0000 1.213
--- dbl_single_click.cpp 23 Aug 2003 15:20:29 -0000 1.214
***************
*** 312,328 ****
// End Boats --^
return;
-
- case 2: // Order gates?
- return;// order gates
- case 4: // Chaos gates?
- return;// chaos gates
- case 6: // teleport item (ring?)
- return;// case 6
- case 7: // key
- return;// case 7 (keys)
- case 8: // locked item spawner
- pc_currchar->setObjectDelay( 0 );
- socket->sysMessage( tr("This item is locked.") );
- return;// case 8/64 (locked container)
// Book
--- 312,315 ----
***************
*** 336,385 ****
}
return;
! }
! case 12: // door(unlocked)
! pc_currchar->setObjectDelay( 0 );
! dooruse( socket, pi );
! return;
! case 13: // locked door
! {
! if( pi->multis() != INVALID_SERIAL )
! {
! cMulti* pMulti = dynamic_cast< cMulti* >( FindItemBySerial( pi->multis() ) );
! if( pMulti )
! {
! if( pMulti->authorized( pc_currchar ) )
! {
! socket->sysMessage( tr( "You quickly unlock, use, and then relock the door." ) );
! pc_currchar->setObjectDelay( 0 );
! dooruse( socket, pi );
! return;
! }
! }
! }
! else
! {
! P_ITEM pPack = pc_currchar->getBackpack();
! if( pPack )
! {
! cItem::ContainerContent container = pPack->content();
! cItem::ContainerContent::const_iterator it(container.begin());
! for( ; it != container.end(); ++it )
! {
! P_ITEM pj = *it;
! if( pj && pj->type() == 7 &&
! pj->tags().get( "linkserial" ).isValid() && pj->tags().get( "linkserial" ).toInt() == pi->serial() )
! {
! socket->sysMessage( tr( "You quickly unlock, use, and then relock the door." ) );
! pc_currchar->setObjectDelay( 0 );
! dooruse( socket, pi );
! return;
! }
! }
! }
! }
!
! socket->sysMessage( tr( "This door is locked." ) );
! return;
! }
// Food, OSI style
--- 323,327 ----
}
return;
! }
// Food, OSI style
Index: house.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/house.cpp,v
retrieving revision 1.111
retrieving revision 1.112
diff -C2 -d -r1.111 -r1.112
*** house.cpp 20 Aug 2003 17:10:48 -0000 1.111
--- house.cpp 23 Aug 2003 15:20:29 -0000 1.112
***************
*** 202,206 ****
void cHouse::build( const cElement *Tag, UI16 posx, UI16 posy, SI08 posz, SERIAL senderserial, SERIAL deedserial )
{
! P_PLAYER pc_currchar = dynamic_cast<P_PLAYER>(FindCharBySerial( senderserial ));
if ( !pc_currchar )
return;
--- 202,206 ----
void cHouse::build( const cElement *Tag, UI16 posx, UI16 posy, SI08 posz, SERIAL senderserial, SERIAL deedserial )
{
! P_PLAYER pc_currchar = dynamic_cast<P_PLAYER>( FindCharBySerial( senderserial ) );
if ( !pc_currchar )
return;
***************
*** 219,225 ****
socket->sysMessage( tr("Can not build a house at this location!") );
this->remove();
- this->remove();
return;
}
this->update();
--- 219,225 ----
socket->sysMessage( tr("Can not build a house at this location!") );
this->remove();
return;
}
+
this->update();
***************
*** 229,235 ****
if( !nokey_ )
! createKeys( pc_currchar, tr("house key") );
! RegionIterator4Items ri(this->pos());
for(ri.Begin(); !ri.atEnd(); ri++)
{
--- 229,235 ----
if( !nokey_ )
! createKeys( pc_currchar, tr( "house key" ) );
! RegionIterator4Items ri( this->pos() );
for(ri.Begin(); !ri.atEnd(); ri++)
{
Index: items.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/items.cpp,v
retrieving revision 1.333
retrieving revision 1.334
diff -C2 -d -r1.333 -r1.334
*** items.cpp 23 Aug 2003 01:03:31 -0000 1.333
--- items.cpp 23 Aug 2003 15:20:29 -0000 1.334
***************
*** 2570,2574 ****
// Flags
! else GET_PROPERTY( "decay", priv_ & 0x01 ? 1 : 0 )
else GET_PROPERTY( "newbie", priv_ & 0x02 ? 1 : 0 )
else GET_PROPERTY( "dispellable", priv_ & 0x04 ? 1 : 0 )
--- 2570,2574 ----
// Flags
! else GET_PROPERTY( "decay", priv_ & 0x01 ? 0 : 1 )
else GET_PROPERTY( "newbie", priv_ & 0x02 ? 1 : 0 )
else GET_PROPERTY( "dispellable", priv_ & 0x04 ? 1 : 0 )
Index: prototypes.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/prototypes.h,v
retrieving revision 1.101
retrieving revision 1.102
diff -C2 -d -r1.101 -r1.102
*** prototypes.h 20 Aug 2003 17:10:48 -0000 1.101
--- prototypes.h 23 Aug 2003 15:20:29 -0000 1.102
***************
*** 60,64 ****
int getamount(P_CHAR pc, short id);
void delequan(P_CHAR pc, short id, int amount, int *not_deleted = NULL);
- void dooruse( cUOSocket*, P_ITEM );
void playmonstersound(P_CHAR monster, unsigned short id, int sfx);
void sellaction(int s);
--- 60,63 ----
Index: targetrequests.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/targetrequests.cpp,v
retrieving revision 1.71
retrieving revision 1.72
diff -C2 -d -r1.71 -r1.72
*** targetrequests.cpp 20 Aug 2003 17:10:48 -0000 1.71
--- targetrequests.cpp 23 Aug 2003 15:20:29 -0000 1.72
***************
*** 161,171 ****
bool cBuildMultiTarget::responsed( cUOSocket *socket, cUORxTarget *target )
{
! if( target->x() & 0xFFFF || target->y() & 0xFFFF || target->z() & 0xFF )
return true;
const cElement* DefSection = DefManager->getDefinition( WPDT_MULTI, multisection_ );
if( !DefSection )
return true;
if( DefSection->getAttribute( "type" ) == "house" )
--- 161,177 ----
bool cBuildMultiTarget::responsed( cUOSocket *socket, cUORxTarget *target )
{
! if( target->x() == 0xFFFF || target->y() == 0xFFFF || target->z() == 0xFF )
! {
! socket->sysMessage( "Invalid target." );
return true;
+ }
const cElement* DefSection = DefManager->getDefinition( WPDT_MULTI, multisection_ );
if( !DefSection )
+ {
+ socket->sysMessage( "Invalid multisection." );
return true;
+ }
if( DefSection->getAttribute( "type" ) == "house" )
Index: wolfpack.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/wolfpack.cpp,v
retrieving revision 1.436
retrieving revision 1.437
diff -C2 -d -r1.436 -r1.437
*** wolfpack.cpp 20 Aug 2003 17:10:48 -0000 1.436
--- wolfpack.cpp 23 Aug 2003 15:20:29 -0000 1.437
***************
*** 209,467 ****
}
- // Plays the proper door sfx for doors/gates/secretdoors
- static void doorsfx(P_ITEM pi, int x, int y)
- {
- const int OPENWOOD = 0x00EA;
- const int OPENGATE = 0x00EB;
- const int OPENSTEEL = 0x00EC;
- const int OPENSECRET = 0x00ED;
- const int CLOSEWOOD = 0x00F1;
- const int CLOSEGATE = 0x00F2;
- const int CLOSESTEEL = 0x00F3;
- const int CLOSESECRET = 0x00F4;
-
- if (y==0) // Request open door sfx
- {
- if (((x>=0x0695)&&(x<0x06C5))|| // Open wooden / ratan door
- ((x>=0x06D5)&&(x<=0x06F4)))
- pi->soundEffect( OPENWOOD );
-
- else if (((x>=0x0839)&&(x<=0x0848))|| // Open gate
- ((x>=0x084C)&&(x<=0x085B))||
- ((x>=0x0866)&&(x<=0x0875)))
- pi->soundEffect( OPENGATE );
-
- else if (((x>=0x0675)&&(x<0x0695))|| // Open metal
- ((x>=0x06C5)&&(x<0x06D5)))
- pi->soundEffect( OPENSTEEL );
-
- else if ((x>=0x0314)&&(x<=0x0365)) // Open secret
- pi->soundEffect( OPENSECRET );
- }
- else if (y==1) // Request close door sfx
- {
- if (((x>=0x0695)&&(x<0x06C5))|| // close wooden / ratan door
- ((x>=0x06D5)&&(x<=0x06F4)))
- pi->soundEffect( CLOSEWOOD );
-
- else if (((x>=0x0839)&&(x<=0x0848))|| // close gate
- ((x>=0x084C)&&(x<=0x085B))||
- ((x>=0x0866)&&(x<=0x0875)))
- pi->soundEffect( CLOSEGATE );
-
- else if (((x>=0x0675)&&(x<0x0695))|| // close metal
- ((x>=0x06C5)&&(x<0x06D5)))
- pi->soundEffect( CLOSESTEEL );
-
- else if ((x>=0x0314)&&(x<=0x0365)) // close secret
- pi->soundEffect( CLOSESECRET );
- }
- }
-
- void dooruse( cUOSocket *socket, P_ITEM pi )
- {
- if( !pi )
- return;
- #pragma fixme("dunno how to replace the old tempeffect2, commented out but this introduces a bug here!! please review.")
- if( socket && socket->player() && !socket->player()->inRange( pi, 2 ) )
- {
- socket->sysMessage( tr( "You cannot reach the handle from here." ) );
- return;
- }
-
- UINT16 x = pi->id();
- UINT16 db;
-
- for( UINT32 i = 0; i < DOORTYPES; ++i )
- {
- db = doorbase[i];
-
- if( x == ( db + 0 ) )
- {
- pi->setId( pi->id() + 1 );
- Coord_cl pos( pi->pos() );
- pos.x--;
- pos.y++;
- pi->moveTo( pos );
- doorsfx(pi, x, 0);
- // tempeffect2(0, pi, 13, 0, 0, 0);
- }
- else if( x == ( db + 1 ) )
- {
- pi->setId( pi->id() - 1 );
- Coord_cl pos( pi->pos() );
- pos.x++;
- pos.y--;
- pi->moveTo( pos );
- doorsfx(pi, x, 1);
- pi->setDoorOpen(0);
- }
- else if (x==(db+2))
- {
- pi->setId( pi->id() + 1 );
- Coord_cl pos( pi->pos() );
- pos.x++;
- pos.y++;
- pi->moveTo( pos );
- doorsfx(pi, x, 0);
- // tempeffect2(0, pi, 13, 0, 0, 0);
- }
- else if (x==(db+3))
- {
- pi->setId( pi->id() - 1 );
- Coord_cl pos( pi->pos() );
- pos.x--;
- pos.y--;
- pi->moveTo( pos );
- doorsfx(pi, x, 1);
- pi->setDoorOpen(0);
- }
- else if (x==(db+4))
- {
- pi->setId( pi->id() + 1 );
- Coord_cl pos( pi->pos() );
- pos.x--;
- pi->moveTo( pos );
- doorsfx(pi, x, 0);
- // tempeffect2(0, pi, 13, 0, 0, 0);
- }
- else if (x==(db+5))
- {
- pi->setId( pi->id() - 1 );
- Coord_cl pos( pi->pos() );
- pos.x++;
- pi->moveTo( pos );
- doorsfx(pi, x, 1);
- pi->setDoorOpen(0);
- }
- else if (x==(db+6))
- {
- pi->setId( pi->id() + 1 );
- Coord_cl pos( pi->pos() );
- pos.x++;
- pos.y--;
- pi->moveTo( pos );
- doorsfx(pi, x, 0);
- // tempeffect2(0, pi, 13, 0, 0, 0);
- }
- else if (x==(db+7))
- {
- pi->setId( pi->id() - 1 );
- Coord_cl pos( pi->pos() );
- pos.x--;
- pos.y++;
- pi->moveTo( pos );
- doorsfx(pi, x, 1);
- pi->setDoorOpen(0);
- }
- else if (x==(db+8))
- {
- pi->setId( pi->id() + 1 );
- Coord_cl pos( pi->pos() );
- pos.x++;
- pos.y++;
- pi->moveTo( pos );
- doorsfx(pi, x, 0);
- // tempeffect2(0, pi, 13, 0, 0, 0);
- }
- else if (x==(db+9))
- {
- pi->setId( pi->id() - 1 );
- Coord_cl pos( pi->pos() );
- pos.x--;
- pos.y--;
- pi->moveTo( pos );
- doorsfx(pi, x, 1);
- pi->setDoorOpen(0);
- }
- else if (x==(db+10))
- {
- pi->setId( pi->id() + 1 );
- Coord_cl pos( pi->pos() );
- pos.x++;
- pos.y--;
- pi->moveTo( pos );
- doorsfx(pi, x, 0);
- // tempeffect2(0, pi, 13, 0, 0, 0);
- }
- else if (x==(db+11))
- {
- pi->setId( pi->id() - 1 );
- Coord_cl pos( pi->pos() );
- pos.x--;
- pos.y++;
- pi->moveTo( pos );
- doorsfx(pi, x, 1);
- pi->setDoorOpen(0);
- }
- else if (x==(db+12))
- {
- pi->setId( pi->id() + 1 );
- doorsfx(pi, x, 0);
- // tempeffect2(0, pi, 13, 0, 0, 0);
- }
- else if (x==(db+13))
- {
- pi->setId( pi->id() - 1 );
- doorsfx(pi, x, 1);
- pi->setDoorOpen(0);
- }
- else if( x == ( db + 14 ) )
- {
- pi->setId( pi->id() + 1 );
- Coord_cl pos( pi->pos() );
- pos.y--;
- pi->moveTo( pos );
- doorsfx(pi, x, 0);
- // tempeffect2(0, pi, 13, 0, 0, 0);
- }
- else if( x == ( db + 15 ) )
- {
- pi->setId( pi->id() - 1 );
- Coord_cl pos( pi->pos() );
- pos.y++;
- pi->moveTo( pos );
- doorsfx(pi, x, 1);
- pi->setDoorOpen(0);
- }
-
- // This is *so* obvious...
- if( x != pi->id() )
- {
- pi->update();
- break;
- }
- }
-
- if( socket && ( x != pi->id() ) )
- {
- // house refreshment when a house owner or friend of a houe opens the house door
- float ds = 0;
- P_CHAR pChar = socket->player();
-
- if( !pChar )
- return;
-
- cHouse* pHouse = dynamic_cast<cHouse*>( cMulti::findMulti( pi->pos() ) );
- if( !pHouse )
- return;
-
- if( !( pChar->Owns( pHouse ) || pHouse->isFriend( pChar ) ) )
- return;
-
- if( SrvParams->housedecay_secs() != 0 )
- ds = static_cast<float>((pHouse->time_unused)*100) / (SrvParams->housedecay_secs());
- else
- ds = -1;
-
- if( ds >= 50 ) // sysmessage if decay status >= 50%
- {
- socket->sysMessage( tr( "You refreshed the house" ) );
- }
- pHouse->time_unused = 0;
- pHouse->last_used = getNormalizedTime();
- }
- }
-
void endmessage(int x) // If shutdown is initialized
{
--- 209,212 ----
***************
*** 1351,1378 ****
}
-
- // not_deleted = output parameter, returns number of items that could NOT be deleted
- // somewhat dirty that it defaults to a global dummy variable, sorry for that.
- // but i couldnt find any other way to keep the old signature and old name.
- // if theres a cleaner way, let me know, LB
-
- void delequan(P_CHAR pc, short id, int amount, int *not_deleted)
- {
- if ( pc == NULL )
- return;
-
- P_ITEM pi=pc->getBackpack();
- if (pi == NULL)
- {
- if (not_deleted != NULL)
- *not_deleted = amount;
- return;
- }
-
- int nd = pi->DeleteAmount(amount, id);
- if (not_deleted != NULL)
- *not_deleted = nd;
- }
-
void goldsfx( cUOSocket *socket, UINT16 amount, bool hearall )
{
--- 1096,1099 ----
|
|
From: <dar...@us...> - 2003-08-23 16:29:19
|
Update of /cvsroot/wpdev/wolfpack/python
In directory sc8-pr-cvs1:/tmp/cvs-serv4263/src/python
Modified Files:
item.cpp multi.cpp
Log Message:
Removed door code from the core.
Index: item.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/python/item.cpp,v
retrieving revision 1.70
retrieving revision 1.71
diff -C2 -d -r1.70 -r1.71
*** item.cpp 20 Aug 2003 17:10:49 -0000 1.70
--- item.cpp 23 Aug 2003 15:20:29 -0000 1.71
***************
*** 37,40 ****
--- 37,41 ----
#include "../scriptmanager.h"
#include "../itemid.h"
+ #include "../multis.h"
#include "../books.h"
#include "../basechar.h"
***************
*** 701,704 ****
--- 702,718 ----
}
+ // If we are in a multi, return the multi object for it
+ // otherwise pynone
+ static PyObject* wpItem_multi( wpItem* self, PyObject* args )
+ {
+ if( self->pItem->free )
+ {
+ Py_INCREF( Py_None );
+ return Py_None;
+ }
+
+ return PyGetMultiObject( dynamic_cast< cMulti* >( FindItemBySerial( self->pItem->multis() ) ) );
+ }
+
static PyMethodDef wpItemMethods[] =
{
***************
*** 719,722 ****
--- 733,737 ----
{ "getadv", (getattrofunc)wpItem_getadv, METH_VARARGS,"Get advanced modifiers." },
{ "setadv", (getattrofunc)wpItem_setadv, METH_VARARGS,"Set advanced modifiers." },
+ { "multi", (getattrofunc)wpItem_multi, METH_VARARGS, NULL },
// Effects
Index: multi.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/python/multi.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** multi.cpp 20 Aug 2003 17:10:49 -0000 1.16
--- multi.cpp 23 Aug 2003 15:20:29 -0000 1.17
***************
*** 515,518 ****
--- 515,541 ----
}
+ /*
+ * Is the player authorized?
+ */
+ static PyObject* wpMulti_authorized( wpMulti* self, PyObject* args )
+ {
+ if( self->pMulti->free )
+ return PyFalse;
+
+ if( !checkArgChar( 0 ) )
+ return PyFalse;
+
+ P_PLAYER pChar = dynamic_cast< P_PLAYER >( getArgChar( 0 ) );
+
+ if( pChar )
+ {
+ return self->pMulti->authorized( pChar ) ? PyTrue : PyFalse;
+ }
+ else
+ {
+ return PyFalse;
+ }
+ }
+
static PyMethodDef wpMultiMethods[] =
{
***************
*** 527,533 ****
{ "items", (getattrofunc)wpMulti_items, METH_VARARGS, "Returns the list of the items in this multi." },
{ "friends", (getattrofunc)wpMulti_friends, METH_VARARGS, "Returns the friends list of this multi." },
! { "bans", (getattrofunc)wpMulti_friends, METH_VARARGS, "Returns the ban list of this multi." },
{ "addchtile", (getattrofunc)wpMulti_addchtile, METH_VARARGS, "Adds a tile to the custom house." },
{ "sendcustomhouse", (getattrofunc)wpMulti_sendcustomhouse, METH_VARARGS, "Sends custom house." },
// Tag System
--- 550,557 ----
{ "items", (getattrofunc)wpMulti_items, METH_VARARGS, "Returns the list of the items in this multi." },
{ "friends", (getattrofunc)wpMulti_friends, METH_VARARGS, "Returns the friends list of this multi." },
! { "bans", (getattrofunc)wpMulti_bans, METH_VARARGS, "Returns the ban list of this multi." },
{ "addchtile", (getattrofunc)wpMulti_addchtile, METH_VARARGS, "Adds a tile to the custom house." },
{ "sendcustomhouse", (getattrofunc)wpMulti_sendcustomhouse, METH_VARARGS, "Sends custom house." },
+ { "authorized", (getattrofunc)wpMulti_authorized, METH_VARARGS, NULL },
// Tag System
|
|
From: <dar...@us...> - 2003-08-23 16:28:53
|
Update of /cvsroot/wpdev/xmlscripts/scripts In directory sc8-pr-cvs1:/tmp/cvs-serv4472/scripts Added Files: door.py Log Message: Removed door code from the core. --- NEW FILE: door.py --- import wolfpack # Sound constants for opening and closing a door SOUND_OPENWOOD = 0x00EA SOUND_OPENGATE = 0x00EB SOUND_OPENSTEEL = 0x00EC SOUND_OPENSECRET = 0x00ED SOUND_CLOSEWOOD = 0x00F1 SOUND_CLOSEGATE = 0x00F2 SOUND_CLOSESTEEL = 0x00F3 SOUND_CLOSESECRET = 0x00F4 # How long does it take to close a door automatically (in ms) CLOSEDOOR_DELAY = 5000 # Inco doors = [ # ID (closed), ID (opened), x offset (opened), y offset (opened), OpenSound, CloseSound [ 0x675, 0x676, -1, 1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x677, 0x678, 1, 1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x679, 0x67A, -1, 0, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x67B, 0x67C, 1, -1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x67D, 0x67E, 1, 1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x67F, 0x680, 1, -1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x681, 0x682, 0, 0, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x683, 0x684, 0, -1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x685, 0x686, -1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x687, 0x688, 1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x689, 0x68A, -1, 0, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x68B, 0x68C, 1, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x68D, 0x68E, 1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x68F, 0x690, 1, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x691, 0x692, 0, 0, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x693, 0x694, 0, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x695, 0x696, -1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x697, 0x698, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x699, 0x69A, -1, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x69B, 0x69C, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x69D, 0x69E, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x69F, 0x6a0, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6a1, 0x6a2, 0, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6a3, 0x6a4, 0, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6a5, 0x6a6, -1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6a7, 0x6a8, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6a9, 0x6aA, -1, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6aB, 0x6aC, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6aD, 0x6aE, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6aF, 0x6b0, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6b1, 0x6b2, 0, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6b3, 0x6b4, 0, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6b5, 0x6b6, -1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6b7, 0x6b8, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6b9, 0x6bA, -1, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6bB, 0x6bC, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6bD, 0x6bE, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6bF, 0x6c0, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6c1, 0x6c2, 0, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6c3, 0x6c4, 0, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6c5, 0x6c6, -1, 1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x6c7, 0x6c8, 1, 1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x6c9, 0x6cA, -1, 0, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x6cB, 0x6cC, 1, -1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x6cD, 0x6cE, 1, 1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x6cF, 0x6d0, 1, -1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x6d1, 0x6d2, 0, 0, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x6d3, 0x6d4, 0, -1, SOUND_OPENSTEEL, SOUND_CLOSESTEEL ], [ 0x6d5, 0x6d6, -1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6d7, 0x6d8, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6d9, 0x6dA, -1, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6dB, 0x6dC, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6dD, 0x6dE, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6dF, 0x6e0, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6e1, 0x6e2, 0, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6e3, 0x6e4, 0, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6e5, 0x6e6, -1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6e7, 0x6e8, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6e9, 0x6eA, -1, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6eB, 0x6eC, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6eD, 0x6eE, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6eF, 0x6f0, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6f1, 0x6f2, 0, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x6f3, 0x6f4, 0, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], # Iron Gate 1 [ 0x824, 0x825, -1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x826, 0x827, 1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x828, 0x829, -1, 0, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x82a, 0x82b, 1, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x82c, 0x82d, 1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x82e, 0x82f, 1, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x830, 0x831, 0, 0, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x832, 0x833, 0, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], # Wooden Gate 1 [ 0x839, 0x83a, -1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x83b, 0x83c, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x83d, 0x83e, -1, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x83f, 0x840, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x841, 0x842, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x843, 0x844, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x845, 0x846, 0, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x847, 0x848, 0, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], # Iron Gate 2 [ 0x84c, 0x84d, -1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x84e, 0x84f, 1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x850, 0x851, -1, 0, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x852, 0x853, 1, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x854, 0x855, 1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x856, 0x857, 1, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x858, 0x859, 0, 0, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x85a, 0x85b, 0, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], # Wooden Gate 2 [ 0x866, 0x867, -1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x868, 0x869, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x86a, 0x86b, -1, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x86c, 0x86d, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x86e, 0x86f, 1, 1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x870, 0x871, 1, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x872, 0x873, 0, 0, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], [ 0x874, 0x875, 0, -1, SOUND_OPENWOOD, SOUND_CLOSEWOOD ], # Barred Metal Door [ 0x1fed, 0x1fee, -1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x1fef, 0x1ff0, 1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x1ff1, 0x1ff2, -1, 0, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x1ff3, 0x1ff4, 1, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x1ff5, 0x1ff6, 1, 1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x1ff7, 0x1ff8, 1, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x1ff9, 0x1ffa, 0, 0, SOUND_OPENGATE, SOUND_CLOSEGATE ], [ 0x1ffb, 0x1ffc, 0, -1, SOUND_OPENGATE, SOUND_CLOSEGATE ], # Secret Doors [ 0xE8, 0xE9, -1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0xEA, 0xEB, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0xEC, 0xED, -1, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0xEE, 0xEF, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0xF0, 0xF1, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0xF2, 0xF3, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0xF4, 0xF5, 0, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0xF6, 0xF7, 0, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x314, 0x315, -1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x316, 0x317, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x318, 0x319, -1, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x31A, 0x31B, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x31C, 0x31D, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x31E, 0x31F, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x320, 0x321, 0, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x322, 0x323, 0, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x324, 0x325, -1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x326, 0x327, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x328, 0x329, -1, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x32A, 0x32B, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x32C, 0x32D, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x32E, 0x32F, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x330, 0x331, 0, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x332, 0x333, 0, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x334, 0x335, -1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x336, 0x337, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x338, 0x339, -1, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x33A, 0x33B, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x33C, 0x33D, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x33E, 0x33F, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x340, 0x341, 0, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x342, 0x343, 0, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x344, 0x345, -1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x346, 0x347, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x348, 0x349, -1, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x34A, 0x34B, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x34C, 0x34D, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x34E, 0x34F, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x350, 0x351, 0, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x352, 0x353, 0, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x354, 0x355, -1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x356, 0x357, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x358, 0x359, -1, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x35A, 0x35B, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x35C, 0x35D, 1, 1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x35E, 0x35F, 1, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x360, 0x361, 0, 0, SOUND_OPENSECRET, SOUND_CLOSESECRET ], [ 0x362, 0x363, 0, -1, SOUND_OPENSECRET, SOUND_CLOSESECRET ], ] def searchkey( container, lock ): for item in container.content: # Check if it's a key if 'key' in item.events and item.hastag( 'lock' ) and int( item.gettag( 'lock' ) ) == lock: return 1 if item.type == 1 and searchkey( item, lock ): return 1 return 0 def opendoor( char, item ): pos = item.pos # Search the door information for door in doors: # Use this door information if door[0] == item.id: # Change the Door id and resend item.id = door[1] item.moveto( pos.x + door[2], pos.y + door[3] ) item.update() # Soundeffect (open) char.soundeffect( door[4] ) # This is used to track multiple open/close actions # We cannot dispel the effect on the item, so we have # to do it this way. if not item.hastag( 'opencount' ): opencount = 1 else: opencount = int( item.gettag( 'opencount' ) ) + 1 item.settag( 'opencount', opencount ) # Add an autoclose tempeffect item.addtimer( CLOSEDOOR_DELAY, "door.autoclose", [ opencount ], 1 ) # Refresh a House if we opened it # Multis are completely broken right now. add refresh later here #multi = wolfpack.findmulti( item.pos ) #if multi and multi.ishouse(): # Only Owners and Friends can refresh a house # if multi.owner == char or char in multi.friends: # char.message( 'You refresh the house' ) return 1 # Return to the original state elif door[1] == item.id: # Change the door id and update the clients around it item.id = door[0] item.moveto( pos.x - door[2], pos.y - door[3] ) item.update() # Soundeffect (close) char.soundeffect( door[5] ) return 1 return 0 def autoclose( item, args ): if not item or not item.hastag( 'opencount' ): return # Are we supposed to close this door? opencount = int( item.gettag( 'opencount' ) ) # We are not supposed to close this door if opencount != args[0]: return item.deltag( 'opencount' ) # Find the door definition for this item for door in doors: if door[1] == item.id: pos = item.pos # Change the door id and update the clients around it item.id = door[0] item.moveto( pos.x - door[2], pos.y - door[3] ) item.update() # Soundeffect (close) item.soundeffect( door[5] ) def onUse( char, item ): # Using doors doesnt count against the object-delay char.objectdelay = 0 # In Range? if not char.canreach( item, 2 ): char.message( "You cannot reach the handle from here." ) return 1 # The Door has no lock if not item.hastag( 'lock' ): return opendoor( char, item ) lock = int( item.gettag( 'lock' ) ) if item.hastag( 'locked' ): locked = int( item.gettag( 'locked' ) ) else: locked = 0 if locked == 0: return opendoor( char, item ) # Search for a key in the users backpack backpack = char.getbackpack() if searchkey( backpack, lock ): char.message( 'You quickly unlock, use, and then relock the door.' ) return opendoor( char, item ) char.message( 'This door is locked.' ) return 1 |
|
From: <dar...@us...> - 2003-08-23 15:56:07
|
Update of /cvsroot/wpdev/xmlscripts/definitions In directory sc8-pr-cvs1:/tmp/cvs-serv4491/definitions Modified Files: scripts.xml Log Message: Removed door code from the core. Index: scripts.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/scripts.xml,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** scripts.xml 20 Aug 2003 16:01:04 -0000 1.51 --- scripts.xml 23 Aug 2003 15:21:36 -0000 1.52 *************** *** 28,31 **** --- 28,32 ---- <script>spellbook</script> <script>environment</script> + <script>door</script> <!-- Commands --> |
|
From: <dr...@us...> - 2003-08-23 07:07:32
|
Update of /cvsroot/wpdev/xmlscripts/definitions/npcs/monsters
In directory sc8-pr-cvs1:/tmp/cvs-serv30767
Modified Files:
clockworks.xml commonmonsters.xml deamons.xml dragons.xml
lizardmen.xml orcs.xml ratmen.xml seamonsters.xml solen.xml
terathens.xml undeads.xml
Log Message:
Fixes to be more like current OSI. I'll finish the rest of the monsters tomorrow... :D
Index: clockworks.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/monsters/clockworks.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** clockworks.xml 5 Apr 2003 18:42:04 -0000 1.3
--- clockworks.xml 23 Aug 2003 07:07:25 -0000 1.4
***************
*** 8,12 ****
-->
<definitions>
! <!-- betrayer -->
<npc id="betrayer">
<name>a betrayer</name>
--- 8,13 ----
-->
<definitions>
!
! <!-- Betrayer -->
<npc id="betrayer">
<name>a betrayer</name>
***************
*** 16,37 ****
<karma>-15000</karma>
<fame>15000</fame>
! <defense><random min="62" max="68"/></defense>
! <lodamage>16</lodamage>
! <hidamage>22</hidamage>
<!-- Stats -->
<str><random min="401" max="500"/></str>
! <dex><random min="66" max="85"/></dex>
! <int><random min="96" max="110"/></int>
<!-- Skills -->
<wrestling><random min="901" max="1000"/></wrestling>
<tactics><random min="901" max="1000"/></tactics>
! <magicresist><random min="1200" max="1300"/></magicresist>
<anatomy><random min="901" max="1000"/></anatomy>
<magery><random min="501" max="1000" /></magery>
<evaluatingintelligence><random min="901" max="1000" /></evaluatingintelligence>
<meditation><random min="901" max="1000" /></meditation>
! </npc>
! <!-- juggernaut -->
<npc id="blackthorn_juggernaut">
<name>a blackthorn juggernaut</name>
--- 17,38 ----
<karma>-15000</karma>
<fame>15000</fame>
! <defense><random min="60" max="70"/></defense>
! <lodamage>54</lodamage>
! <hidamage>81</hidamage>
<!-- Stats -->
<str><random min="401" max="500"/></str>
! <dex><random min="81" max="100"/></dex>
! <int><random min="151" max="200"/></int>
<!-- Skills -->
<wrestling><random min="901" max="1000"/></wrestling>
<tactics><random min="901" max="1000"/></tactics>
! <magicresist><random min="1201" max="1300"/></magicresist>
<anatomy><random min="901" max="1000"/></anatomy>
<magery><random min="501" max="1000" /></magery>
<evaluatingintelligence><random min="901" max="1000" /></evaluatingintelligence>
<meditation><random min="901" max="1000" /></meditation>
! </npc>
! <!-- Blackthorn Juggernaut -->
<npc id="blackthorn_juggernaut">
<name>a blackthorn juggernaut</name>
***************
*** 41,47 ****
<karma>1-2000</karma>
<fame>12000</fame>
! <defense><random min="62" max="80"/></defense>
! <lodamage>12</lodamage>
! <hidamage>19</hidamage>
<!-- Stats -->
<str><random min="301" max="400"/></str>
--- 42,48 ----
<karma>1-2000</karma>
<fame>12000</fame>
! <defense><random min="65" max="75"/></defense>
! <lodamage>37</lodamage>
! <hidamage>64</hidamage>
<!-- Stats -->
<str><random min="301" max="400"/></str>
***************
*** 52,59 ****
<tactics><random min="901" max="1000"/></tactics>
<magicresist><random min="1401" max="1500"/></magicresist>
! <anatomy><random min="0" max="0"/></anatomy>
! </npc>
! <!-- exodus overseer -->
<npc id="exodus_overseer">
<name>an exodus overseer</name>
--- 53,60 ----
<tactics><random min="901" max="1000"/></tactics>
<magicresist><random min="1401" max="1500"/></magicresist>
! <anatomy><random min="901" max="1000"/></anatomy>
! </npc>
! <!-- Exodus Overseer -->
<npc id="exodus_overseer">
<name>an exodus overseer</name>
***************
*** 63,69 ****
<karma>-10000"</karma>
<fame>10000</fame>
! <defense><random min="50" max="50"/></defense>
! <lodamage>13</lodamage>
! <hidamage>19</hidamage>
<!-- Stats -->
<str><random min="551" max="650"/></str>
--- 64,70 ----
<karma>-10000"</karma>
<fame>10000</fame>
! <defense><random min="45" max="55"/></defense>
! <lodamage>43</lodamage>
! <hidamage>67</hidamage>
<!-- Stats -->
<str><random min="551" max="650"/></str>
***************
*** 75,173 ****
<magicresist><random min="802" max="980"/></magicresist>
<anatomy><random min="0" max="0"/></anatomy>
! </npc>
! <!-- exodus minion -->
! <npc id="exodus_minion">
! <name>an exodus minion</name>
! <id>0x2f5</id>
! <category>Monsters\Clockworks\Exodus Minion </category>
! <inherit id="monster_base"/>
! <karma>18000</karma>
! <fame>18000</fame>
! <defense><random min="62" max="68"/></defense>
! <lodamage>16</lodamage>
! <hidamage>22</hidamage>
! <!-- Stats -->
! <str><random min="851" max="950"/></str>
! <dex><random min="71" max="80"/></dex>
! <int><random min="61" max="90"/></int>
! <!-- Skills -->
! <wrestling><random min="901" max="1000"/></wrestling>
! <tactics><random min="901" max="1000" /></tactics>
! <magicresist><random min="901" max="1000"/></magicresist>
! <anatomy><random min="0" max="0"/></anatomy>
</npc>
! <!-- golem -->
! <npc id="golem">
! <name>a golem</name>
! <id>0x2f0</id>
! <category>Monsters\Clockworks\Golem</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma>-3500</karma>
! <fame>3500</fame>
! <defense><random min="30" max="54" /></defense>
! <lodamage>13</lodamage>
! <hidamage>24</hidamage>
! <!-- Stats -->
! <str><random min="251" max="350" /></str>
! <dex><random min="76" max="100" /></dex>
! <int><random min="151" max="210" /></int>
! <!-- Skills -->
! <wrestling><random min="601" max="1000" /></wrestling>
! <tactics><random min="601" max="1000" /></tactics>
! <magicresist><random min="1500" max="1900" /></magicresist>
! <anatomy><random min="0" max="0" /></anatomy>
! </npc>
! <!-- tinker's golem -->
! <npc id="tinkered_golem">
! <name>a golem</name>
! <id>0x2f0</id>
! <category>Monsters\Clockworks\Golem ( Tinkered )</category>
! <skin>0</skin>
! <inherit id="animal_base" />
! <karma>10</karma>
! <fame>10</fame>
! <defense><random min="30" max="54" /></defense>
! <lodamage>13</lodamage>
! <hidamage>24</hidamage>
! <!-- Stats -->
! <str><random min="251" max="350" /></str>
! <dex><random min="76" max="100" /></dex>
! <int><random min="151" max="210" /></int>
! <!-- Skills -->
! <wrestling><random min="601" max="1000" /></wrestling>
! <tactics><random min="601" max="1000" /></tactics>
! <magicresist><random min="1500" max="1900" /></magicresist>
! <anatomy><random min="0" max="0" /></anatomy>
! </npc>
! <!-- centaur -->
! <npc id="centaur">
! <name><random list="NAMES_CENTAUR" /></name>
! <id>0x65</id>
! <category>Animals\Land\Centaur</category>
! <skin>0</skin>
! <inherit id="animal_base" />
! <karma>0</karma>
! <fame>6500</fame>
! <defense>50</defense>
! <lodamage>13</lodamage>
! <hidamage>24</hidamage>
! <!-- Stats -->
! <str><random min="202" max="300" /></str>
! <dex><random min="104" max="260" /></dex>
! <int><random min="91" max="100" /></int>
! <!-- Skills -->
! <wrestling><random min="951" max="1000" /></wrestling>
<archery><random min="951" max="1000" /></archery>
! <tactics><random min="901" max="1000" /></tactics>
! <magicresist><random min="503" max="800" /></magicresist>
<anatomy><random min="951" max="1150" /></anatomy>
! <totame>1100</totame>
! <food>5</food>
! <carve></carve>
! </npc>
! </definitions>
\ No newline at end of file
--- 76,175 ----
<magicresist><random min="802" max="980"/></magicresist>
<anatomy><random min="0" max="0"/></anatomy>
! </npc>
! <!-- Exodus Minion -->
! <npc id="exodus_minion">
! <name>an exodus minion</name>
! <id>0x2f5</id>
! <category>Monsters\Clockworks\Exodus Minion </category>
! <inherit id="monster_base"/>
! <karma>18000</karma>
! <fame>18000</fame>
! <defense><random min="60" max="70"/></defense>
! <lodamage>69</lodamage>
! <hidamage>98</hidamage>
! <!-- Stats -->
! <str><random min="851" max="950"/></str>
! <dex><random min="71" max="80"/></dex>
! <int><random min="61" max="90"/></int>
! <!-- Skills -->
! <wrestling><random min="901" max="1000"/></wrestling>
! <tactics><random min="901" max="1000" /></tactics>
! <magicresist><random min="901" max="1000"/></magicresist>
! <anatomy><random min="0" max="0"/></anatomy>
</npc>
! <!-- Golem -->
! <npc id="golem">
! <name>a golem</name>
! <id>0x2f0</id>
! <category>Monsters\Clockworks\Golem</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma>-3500</karma>
! <fame>3500</fame>
! <defense><random min="35" max="55" /></defense>
! <lodamage>31</lodamage>
! <hidamage>64</hidamage>
! <!-- Stats -->
! <str><random min="251" max="350" /></str>
! <dex><random min="76" max="100" /></dex>
! <int><random min="101" max="150" /></int>
! <!-- Skills -->
! <wrestling><random min="601" max="1000" /></wrestling>
! <tactics><random min="601" max="1000" /></tactics>
! <magicresist><random min="1501" max="1900" /></magicresist>
! <anatomy><random min="0" max="0" /></anatomy>
! </npc>
! <!-- tinker's golem -->
! <npc id="tinkered_golem">
! <name>a golem</name>
! <id>0x2f0</id>
! <category>Monsters\Clockworks\Golem ( Tinkered )</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma>-3500</karma>
! <fame>3500</fame>
! <defense><random min="35" max="55" /></defense>
! <lodamage>31</lodamage>
! <hidamage>64</hidamage>
! <!-- Stats -->
! <str><random min="251" max="350" /></str>
! <dex><random min="76" max="100" /></dex>
! <int><random min="101" max="150" /></int>
! <!-- Skills -->
! <wrestling><random min="601" max="1000" /></wrestling>
! <tactics><random min="601" max="1000" /></tactics>
! <magicresist><random min="1501" max="1900" /></magicresist>
! <anatomy><random min="0" max="0" /></anatomy>
! </npc>
! <!-- centaur -->
! <npc id="centaur">
! <name><random list="NAMES_CENTAUR" /></name>
! <id>0x65</id>
! <category>Animals\Land\Centaur</category>
! <skin>0</skin>
! <inherit id="animal_base" />
! <karma>0</karma>
! <fame>6500</fame>
! <defense><random min="45" max="55" /></defense>
! <lodamage>47</lodamage>
! <hidamage>53</hidamage>
! <!-- Stats -->
! <str><random min="202" max="300" /></str>
! <dex><random min="104" max="260" /></dex>
! <int><random min="91" max="100" /></int>
! <!-- Skills -->
! <wrestling><random min="951" max="1000" /></wrestling>
<archery><random min="951" max="1000" /></archery>
! <tactics><random min="901" max="1000" /></tactics>
! <magicresist><random min="503" max="800" /></magicresist>
<anatomy><random min="951" max="1150" /></anatomy>
! <totame>1100</totame>
! <food>5</food>
! <carve></carve>
! </npc>
!
! </definitions>
Index: commonmonsters.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/monsters/commonmonsters.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** commonmonsters.xml 19 Feb 2003 02:14:13 -0000 1.3
--- commonmonsters.xml 23 Aug 2003 07:07:25 -0000 1.4
***************
*** 3,8 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: White Wolf |
! | )).-' {{ ;'` | Revised by: |
! | ( ( ;._ \\ ctr | Last Modification: |
=================================================================
-->
--- 3,8 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: White Wolf |
! | )).-' {{ ;'` | Revised by: Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS |
=================================================================
-->
***************
*** 12,54 ****
<name>a sewer rat</name>
<id>0x0ee</id>
<inherit id="monster_base"/>
! <karma>
! <random min="-0" max="-624"/>
! <category>Monsters\Common Monsters\Sewer Rat</category>
! </karma>
! <fame>
! <random min="0" max="1249"/>
! </fame>
! <defense>
! <random min="6" max="6"/>
! </defense>
<lodamage>1</lodamage>
! <hidamage>4</hidamage>
<!-- Stats -->
! <str>
! <random min="10" max="10"/>
! </str>
! <dex>
! <random min="35" max="35"/>
! </dex>
! <int>
! <random min="10" max="10"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="50" max="50"/>
! </wrestling>
! <tactics>
! <random min="40" max="40"/>
! </tactics>
! <magicresistance>
! <random min="40" max="40"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
<totame>0</totame>
<food>1</food>
<!-- Priv -->
</npc>
--- 12,34 ----
<name>a sewer rat</name>
<id>0x0ee</id>
+ <skin>0</skin>
<inherit id="monster_base"/>
! <karma><random min="0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense><random min="5" max="10" /></defense>
<lodamage>1</lodamage>
! <hidamage>2</hidamage>
<!-- Stats -->
! <str>9</str>
! <dex>25</dex>
! <int><random min="6" max="10" /></int>
<!-- Skills -->
! <wrestling>50</wrestling>
! <tactics>50</tactics>
! <magicresistance>50</magicresistance>
<totame>0</totame>
<food>1</food>
<!-- Priv -->
+ <category>Monsters\Common Monsters\Sewer Rat</category>
</npc>
***************
*** 59,96 ****
<inherit id="monster_base"/>
<category>Monsters\Common Monsters\Frost Ooze</category>
! <karma>
! <random min="-0" max="-624"/>
! </karma>
! <fame>
! <random min="0" max="1249"/>
! </fame>
! <defense>
! <random min="16" max="16"/>
! </defense>
! <lodamage>1</lodamage>
! <hidamage>2</hidamage>
<!-- Stats -->
! <str>
! <random min="19" max="28"/>
! </str>
! <dex>
! <random min="16" max="21"/>
! </dex>
! <int>
! <random min="16" max="20"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="303" max="380"/>
! </wrestling>
! <tactics>
! <random min="197" max="278"/>
! </tactics>
! <magicresistance>
! <random min="59" max="95"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
<!-- Priv -->
</npc>
--- 39,55 ----
<inherit id="monster_base"/>
<category>Monsters\Common Monsters\Frost Ooze</category>
! <karma><random min="-0" max="-624"/></karma>
! <fame><random min="0" max="1249"/></fame>
! <defense><random min="15" max="20"/></defense>
! <lodamage>3</lodamage>
! <hidamage>11</hidamage>
<!-- Stats -->
! <str><random min="18" max="30"/></str>
! <dex><random min="16" max="21"/></dex>
! <int><random min="16" max="20"/></int>
<!-- Skills -->
! <wrestling><random min="253" max="400"/></wrestling>
! <tactics><random min="193" max="340"/></tactics>
! <magicresistance><random min="51" max="100"/></magicresistance>
<!-- Priv -->
</npc>
***************
*** 102,142 ****
<inherit id="monster_base"/>
<category>Monsters\Common Monsters\Slime</category>
! <karma>
! <random min="-0" max="-624"/>
! </karma>
! <fame>
! <random min="0" max="1249"/>
! </fame>
! <defense>
! <random min="8" max="8"/>
! </defense>
<lodamage>1</lodamage>
! <hidamage>5</hidamage>
<!-- Stats -->
! <str>
! <random min="25" max="33"/>
! </str>
! <dex>
! <random min="16" max="21"/>
! </dex>
! <int>
! <random min="16" max="20"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="258" max="329"/>
! </wrestling>
! <tactics>
! <random min="235" max="307"/>
! </tactics>
! <magicresistance>
! <random min="152" max="199"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
! <poisoning>
! <random min="307" max="496"/>
! </poisoning>
<totame>231</totame>
<food>1</food>
--- 61,78 ----
<inherit id="monster_base"/>
<category>Monsters\Common Monsters\Slime</category>
! <karma><random min="-0" max="-624"/></karma>
! <fame><random min="0" max="1249"/></fame>
! <defense><random min="5" max="10"/></defense>
<lodamage>1</lodamage>
! <hidamage>6</hidamage>
<!-- Stats -->
! <str><random min="22" max="34"/></str>
! <dex><random min="16" max="21"/></dex>
! <int><random min="16" max="20"/></int>
<!-- Skills -->
! <wrestling><random min="193" max="340"/></wrestling>
! <tactics><random min="193" max="340"/></tactics>
! <magicresistance><random min="151" max="200"/></magicresistance>
! <poisoning><random min="301" max="500"/></poisoning>
<totame>231</totame>
<food>1</food>
***************
*** 150,199 ****
<inherit id="monster_base"/>
<category>Monsters\Common Monsters\Reaper</category>
! <karma>
! <random min="-2500" max="-4999"/>
! </karma>
! <fame>
! <random min="2500" max="4999"/>
! </fame>
! <defense>
! <random min="40" max="40"/>
! </defense>
! <lodamage>5</lodamage>
! <hidamage>10</hidamage>
! <gold>
! <random min="0" max="150"/>
! </gold>
<!-- Stats -->
! <str>
! <random min="72" max="201"/>
! </str>
! <dex>
! <random min="66" max="75"/>
! </dex>
! <int>
! <random min="110" max="235"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="563" max="631"/>
! </wrestling>
! <tactics>
! <random min="467" max="570"/>
! </tactics>
! <magicresistance>
! <random min="105" max="1218"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
! <magery>
! <random min="932" max="999"/>
! </magery>
! <evaluatingint>
! <random min="15" max="244"/>
! </evaluatingint>
! <meditation>
! <random min="0" max="0"/>
! </meditation>
<!-- Priv -->
</npc>
--- 86,105 ----
<inherit id="monster_base"/>
<category>Monsters\Common Monsters\Reaper</category>
! <karma><random min="-2500" max="-4999"/></karma>
! <fame><random min="2500" max="4999"/></fame>
! <defense><random min="40" max="40"/></defense>
! <lodamage>17</lodamage>
! <hidamage>20</hidamage>
! <gold><random min="60" max="90"/></gold>
<!-- Stats -->
! <str><random min="66" max="215"/></str>
! <dex><random min="66" max="75"/></dex>
! <int><random min="101" max="250"/></int>
<!-- Skills -->
! <wrestling><random min="501" max="600"/></wrestling>
! <tactics><random min="451" max="600"/></tactics>
! <magicresistance><random min="1001" max="1250"/></magicresistance>
! <magery><random min="901" max="1000"/></magery>
! <evaluatingint><random min="901" max="1000"/></evaluatingint>
<!-- Priv -->
</npc>
***************
*** 205,245 ****
<inherit id="monster_base"/>
<category>Monsters\Common Monsters\Corpser</category>
! <karma>
! <random min="-625" max="-1249"/>
! </karma>
! <fame>
! <random min="0" max="1249"/>
! </fame>
! <defense>
! <random min="18" max="18"/>
! </defense>
! <lodamage>6</lodamage>
! <hidamage>16</hidamage>
! <gold>
! <random min="0" max="50"/>
! </gold>
<!-- Stats -->
! <str>
! <random min="158" max="180"/>
! </str>
! <dex>
! <random min="26" max="45"/>
! </dex>
! <int>
! <random min="27" max="40"/>
! </int>
<!-- Skills -->
! <wrestling>
! <random min="518" max="613"/>
! </wrestling>
! <tactics>
! <random min="451" max="570"/>
! </tactics>
! <magicresistance>
! <random min="154" max="182"/>
! </magicresistance>
! <anatomy>
! <random min="0" max="0"/>
! </anatomy>
<!-- Priv -->
</npc>
--- 111,128 ----
<inherit id="monster_base"/>
<category>Monsters\Common Monsters\Corpser</category>
! <karma><random min="-625" max="-1249"/></karma>
! <fame><random min="0" max="1249"/></fame>
! <defense><random min="15" max="20"/></defense>
! <lodamage>21</lodamage>
! <hidamage>43</hidamage>
! <gold><random min="25" max="50"/></gold>
<!-- Stats -->
! <str><random min="156" max="180"/></str>
! <dex><random min="26" max="45"/></dex>
! <int><random min="26" max="40"/></int>
<!-- Skills -->
! <wrestling><random min="451" max="600"/></wrestling>
! <tactics><random min="451" max="600"/></tactics>
! <magicresistance><random min="151" max="200"/></magicresistance>
<!-- Priv -->
</npc>
***************
*** 254,288 ****
<karma><random min="0" max="-624" /></karma>
<fame><random min="0" max="1249" /></fame>
! <defense>30</defense>
! <lodamage>1</lodamage>
! <hidamage>4</hidamage>
! <str><random min="42" max="54" /></str>
! <dex><random min="38" max="44" /></dex>
! <int><random min="26" max="30" /></int>
! <wrestling><random min="444" max="533" /></wrestling>
! <tactics><random min="425" max="500" /></tactics>
! <magicresistance><random min="152" max="194" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
! </npc>
!
! <!-- Ice Snake -->
! <npc id="ice_snake">
! <name>an ice snake</name>
! <id>0x345</id>
! <category>Monsters\Common Monsters\Ice Snake</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense>30</defense>
! <lodamage>1</lodamage>
! <hidamage>4</hidamage>
<str><random min="42" max="54" /></str>
! <dex><random min="38" max="44" /></dex>
<int><random min="26" max="30" /></int>
! <wrestling><random min="444" max="533" /></wrestling>
! <tactics><random min="425" max="500" /></tactics>
! <magicresistance><random min="152" max="194" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
</npc>
--- 137,149 ----
<karma><random min="0" max="-624" /></karma>
<fame><random min="0" max="1249" /></fame>
! <defense><random min="20" max="25" /></defense>
! <lodamage>5</lodamage>
! <hidamage>17</hidamage>
<str><random min="42" max="54" /></str>
! <dex><random min="36" max="45" /></dex>
<int><random min="26" max="30" /></int>
! <wrestling><random min="393" max="540" /></wrestling>
! <tactics><random min="393" max="540" /></tactics>
! <magicresistance><random min="151" max="200" /></magicresistance>
</npc>
***************
*** 296,309 ****
<karma><random min="0" max="-624" /></karma>
<fame><random min="0" max="1249" /></fame>
! <defense>24</defense>
<lodamage>1</lodamage>
! <hidamage>4</hidamage>
! <str><random min="46" max="51" /></str>
! <dex><random min="18" max="25" /></dex>
! <int><random min="10" max="10" /></int>
! <wrestling><random min="250" max="341" /></wrestling>
! <tactics><random min="167" max="278" /></tactics>
! <magicresistance><random min="158" max="197" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
</npc>
--- 157,169 ----
<karma><random min="0" max="-624" /></karma>
<fame><random min="0" max="1249" /></fame>
! <defense><random min="20" max="25" /></defense>
<lodamage>1</lodamage>
! <hidamage>10</hidamage>
! <str><random min="43" max="55" /></str>
! <dex><random min="16" max="25" /></dex>
! <int><random min="6" max="10" /></int>
! <wrestling><random min="193" max="340" /></wrestling>
! <tactics><random min="193" max="340" /></tactics>
! <magicresistance><random min="151" max="200" /></magicresistance>
</npc>
***************
*** 317,330 ****
<karma><random min="0" max="-624" /></karma>
<fame><random min="0" max="1249" /></fame>
! <defense>4</defense>
<lodamage>1</lodamage>
! <hidamage>2</hidamage>
! <str><random min="2000" max="2000" /></str>
! <dex><random min="500" max="500" /></dex>
! <int><random min="1000" max="1000" /></int>
! <wrestling><random min="145" max="145" /></wrestling>
! <tactics><random min="50" max="50" /></tactics>
! <magicresistance><random min="2000" max="2000" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
</npc>
--- 177,189 ----
<karma><random min="0" max="-624" /></karma>
<fame><random min="0" max="1249" /></fame>
! <defense>0</defense>
<lodamage>1</lodamage>
! <hidamage>1</hidamage>
! <str>15</str>
! <dex>2000</dex>
! <int>1000</int>
! <wrestling>5</wrestling>
! <tactics>5</tactics>
! <magicresistance>200</magicresistance>
</npc>
***************
*** 337,547 ****
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="60" max="60"/></defense>
! <lodamage>10</lodamage>
! <hidamage>20</hidamage>
<!-- Stats -->
! <str><random min="296" max="317"/></str>
! <dex><random min="85" max="105"/></dex>
! <int><random min="38" max="57"/></int>
<!-- Skills -->
! <wrestling><random min="910" max="910"/></wrestling>
! <tactics><random min="900" max="900"/></tactics>
! <magicresistance><random min="700" max="1330"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! <carve></carve>
! </npc>
! <!-- elder gazer -->
! <npc id="elder_gazer">
! <name>an elder gazer</name>
! <id>0x44</id>
! <category>Monsters\Common Monsters\Elder Gazer</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="10000" max="15000" /></karma>
! <fame><random min="10000" max="15000" /></fame>
! <defense>50</defense>
! <lodamage>10</lodamage>
! <hidamage>18</hidamage>
! <!-- Stats -->
! <str><random min="298" max="325" /></str>
! <dex><random min="86" max="5101" /></dex>
! <int><random min="301" max="364" /></int>
! <!-- Skills -->
! <wrestling><random min="850" max="977" /></wrestling>
! <tactics><random min="821" max="975" /></tactics>
! <magicresistance><random min="1187" max="1282" /></magicresistance>
! <magery><random min="921" max="992" /></magery>
! <evaluatingintel><random min="258" max="337" /></evaluatingintel>
! <carve></carve>
! </npc>
! <!-- gazer -->
! <npc id="gazer">
! <name>a gazer</name>
! <id>0x16</id>
! <category>Monsters\Common Monsters\Gazer</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-2500" max="-4999" /></karma>
! <fame><random min="2500" max="4999" /></fame>
! <defense><random min="36" max="36" /></defense>
! <lodamage>7</lodamage>
! <hidamage>14</hidamage>
! <!-- Stats -->
! <str><random min="97" max="122" /></str>
! <dex><random min="86" max="103" /></dex>
! <int><random min="106" max="165" /></int>
! <!-- Skills -->
! <wrestling><random min="557" max="727" /></wrestling>
! <tactics><random min="528" max="670" /></tactics>
! <magicresistance><random min="605" max="750" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
! <magery><random min="575" max="685" /></magery>
! </npc>
! <!-- mongbat (strong) -->
! <npc id="mongbat_strong">
! <name>a mongbat</name>
! <id>0x27</id>
! <category>Monsters\Common Monsters\Mongbat (Strong)</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense><random min="20" max="20" /></defense>
! <lodamage>3</lodamage>
! <hidamage>9</hidamage>
! <!-- Stats -->
! <str><random min="56" max="80" /></str>
! <dex><random min="61" max="80" /></dex>
! <int><random min="26" max="50" /></int>
! <!-- Skills -->
! <wrestling><random min="248" max="385" /></wrestling>
! <tactics><random min="356" max="499" /></tactics>
! <magicresistance><random min="151" max="294" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
<totame>711</totame>
<food>1</food>
! </npc>
! <!-- phoenix -->
! <npc id="phoenix">
<name>a phoenix</name>
! <id>0x5</id>
! <category>Monsters\Common Monsters\Phoenix</category>
! <skin>0x66d</skin>
! <inherit id="monster_base" />
! <karma><random min="-0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense><random min="50" max="50" /></defense>
! <lodamage>40</lodamage>
! <hidamage>60</hidamage>
! <!-- Stats -->
! <str><random min="546" max="582" /></str>
! <dex><random min="257" max="201" /></dex>
! <int><random min="550" max="550" /></int>
! <!-- Skills -->
! <wrestling><random min="946" max="999" /></wrestling>
! <tactics><random min="878" max="982" /></tactics>
! <magicresistance><random min="1155" max="1328" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
! <magery><random min="925" max="972" /></magery>
! <meditation><random min="806" max="889" /></meditation>
! </npc>
! <!-- sand vortex -->
! <npc id="sand_vortex">
<name>a sand vortex</name>
! <id>0x316</id>
! <category>Monsters\Common Monsters\Sand Vortex</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-2500" max="-4999" /></karma>
! <fame><random min="2500" max="4999" /></fame>
! <defense><random min="94" max="94" /></defense>
! <lodamage>7</lodamage>
! <hidamage>16</hidamage>
! <!-- Stats -->
! <str><random min="96" max="120" /></str>
! <dex><random min="172" max="193" /></dex>
! <int><random min="82" max="97" /></int>
! <!-- Skills -->
! <wrestling><random min="820" max="820" /></wrestling>
! <tactics><random min="700" max="700" /></tactics>
! <magicresistance><random min="1500" max="1500" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
! </npc>
! <!-- shadow wisp -->
! <npc id="shadow_wisp">
<name>a shadow wisp</name>
! <id>0xA5</id>
! <category>Monsters\Common Monsters\Shadow Wisp</category>
! <skin>0x66d</skin>
! <inherit id="monster_base" />
! <karma><random min="0" max="0" /></karma>
! <fame><random min="0" max="0" /></fame>
! <defense><random min="18" max="18" /></defense>
! <lodamage>1</lodamage>
! <hidamage>2</hidamage>
! <!-- Stats -->
! <str><random min="16" max="40" /></str>
! <dex><random min="16" max="45" /></dex>
! <int><random min="11" max="25" /></int>
! <!-- Skills -->
! <wrestling><random min="270" max="418" /></wrestling>
! <tactics><random min="2" max="147" /></tactics>
! <magicresistance><random min="100" max="100" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
! <magery><random min="508" max="528" /></magery>
! <meditation><random min="0" max="0" /></meditation>
! </npc>
! <!-- swamp tentacle -->
! <npc id="swamp tentacle">
<name>a swamp tentacle</name>
! <id>0x42</id>
! <category>Monsters\Common Monsters\Swamp Tentacle</category>
! <skin>0x66d</skin>
! <inherit id="monster_base" />
! <karma><random min="-2500" max="-4999" /></karma>
! <fame><random min="2500" max="4999" /></fame>
! <defense><random min="30" max="30" /></defense>
! <lodamage>7</lodamage>
! <hidamage>17</hidamage>
! <!-- Stats -->
! <str><random min="96" max="120" /></str>
! <dex><random min="66" max="80" /></dex>
! <int><random min="18" max="30" /></int>
! <!-- Skills -->
! <wrestling><random min="686" max="809" /></wrestling>
! <tactics><random min="661" max="793" /></tactics>
! <magicresistance><random min="151" max="193" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
! </npc>
! <!-- wisp -->
! <npc id="wisp">
<name>a wisp</name>
! <id>0x3a</id>
! <category>Monsters\Common Monsters\Wisp</category>
! <skin>0</skin>
! <inherit id="animal_base" />
! <karma><random min="0" max="0" /></karma>
! <fame><random min="0" max="0" /></fame>
! <defense><random min="40" max="40" /></defense>
! <lodamage>5</lodamage>
! <hidamage>17</hidamage>
! <!-- Stats -->
! <str><random min="196" max="225" /></str>
! <dex><random min="196" max="225" /></dex>
! <int><random min="196" max="225" /></int>
! <!-- Skills -->
! <wrestling><random min="820" max="820" /></wrestling>
! <tactics><random min="800" max="800" /></tactics>
! <magicresistance><random min="800" max="800" /></magicresistance>
! <anatomy><random min="0" max="0" /></anatomy>
! </npc>
! </definitions>
\ No newline at end of file
--- 196,401 ----
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="45" max="60"/></defense>
! <lodamage>21</lodamage>
! <hidamage>54</hidamage>
<!-- Stats -->
! <str><random min="296" max="320"/></str>
! <dex><random min="81" max="105"/></dex>
! <int><random min="36" max="60"/></int>
<!-- Skills -->
! <wrestling>900</wrestling>
! <tactics>900</tactics>
! <magicresistance>700</magicresistance>
! </npc>
! <!-- elder gazer -->
! <npc id="elder_gazer">
! <name>an elder gazer</name>
! <id>0x44</id>
! <category>Monsters\Common Monsters\Elder Gazer</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="10000" max="15000" /></karma>
! <fame><random min="10000" max="15000" /></fame>
! <defense><random min="45" max="55" /</defense>
! <lodamage>23</lodamage>
! <hidamage>59</hidamage>
! <!-- Stats -->
! <str><random min="291" max="325" /></str>
! <dex><random min="86" max="105" /></dex>
! <int><random min="291" max="385" /></int>
! <!-- Skills -->
! <wrestling><random min="801" max="1000" /></wrestling>
! <tactics><random min="801" max="1000" /></tactics>
! <magicresistance><random min="1151" max="1300" /></magicresistance>
! <anatomy><random min="620" max="1000" /></anatomy>
! <magery><random min="901" max="1000" /></magery>
! <evaluatingintel><random min="901" max="1000" /></evaluatingintel>
! </npc>
! <!-- gazer -->
! <npc id="gazer">
! <name>a gazer</name>
! <id>0x16</id>
! <category>Monsters\Common Monsters\Gazer</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-2500" max="-4999" /></karma>
! <fame><random min="2500" max="4999" /></fame>
! <defense><random min="35" max="40" /></defense>
! <lodamage>9</lodamage>
! <hidamage>19</hidamage>
! <!-- Stats -->
! <str><random min="96" max="125" /></str>
! <dex><random min="86" max="105" /></dex>
! <int><random min="141" max="165" /></int>
! <!-- Skills -->
! <wrestling><random min="501" max="700" /></wrestling>
! <tactics><random min="501" max="700" /></tactics>
! <magicresistance><random min="601" max="750" /></magicresistance>
! <magery><random min="501" max="650" /></magery>
! <evaluatingintel><random min="501" max="650" /></evaluatingintel>
! </npc>
! <!-- mongbat (strong) -->
! <npc id="mongbat_strong">
! <name>a mongbat</name>
! <id>0x27</id>
! <category>Monsters\Common Monsters\Mongbat (Strong)</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense><random min="15" max="25" /></defense>
! <lodamage>7</lodamage>
! <hidamage>10</hidamage>
! <!-- Stats -->
! <str><random min="56" max="80" /></str>
! <dex><random min="61" max="80" /></dex>
! <int><random min="26" max="50" /></int>
! <!-- Skills -->
! <wrestling><random min="201" max="350" /></wrestling>
! <tactics><random min="351" max="500" /></tactics>
! <magicresistance><random min="151" max="300" /></magicresistance>
<totame>711</totame>
<food>1</food>
! </npc>
! <!-- phoenix -->
! <npc id="phoenix">
<name>a phoenix</name>
! <id>0x5</id>
! <category>Monsters\Common Monsters\Phoenix</category>
! <skin>0x66d</skin>
! <inherit id="monster_base" />
! <karma><random min="-0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense><random min="45" max="55" /></defense>
! <lodamage>77</lodamage>
! <hidamage>92</hidamage>
! <!-- Stats -->
! <str><random min="504" max="700" /></str>
! <dex><random min="202" max="300" /></dex>
! <int><random min="504" max="700" /></int>
! <!-- Skills -->
! <wrestling><random min="901" max="1000" /></wrestling>
! <tactics><random min="801" max="900" /></tactics>
! <magicresistance><random min="860" max="1350" /></magicresistance>
! <magery><random min="902" max="1000" /></magery>
! <evaluatingintel><random min="902" max="1000" /></evaluatingintel>
! <meditation><random min="751" max="1000" /></meditation>
! </npc>
! <!-- sand vortex -->
! <npc id="sand_vortex">
<name>a sand vortex</name>
! <id>0x316</id>
! <category>Monsters\Common Monsters\Sand Vortex</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="-2500" max="-4999" /></karma>
! <fame><random min="2500" max="4999" /></fame>
! <defense><random min="80" max="90" /></defense>
! <lodamage>5</lodamage>
! <hidamage>27</hidamage>
! <!-- Stats -->
! <str><random min="96" max="120" /></str>
! <dex><random min="171" max="195" /></dex>
! <int><random min="76" max="100" /></int>
! <!-- Skills -->
! <wrestling>800</wrestling>
! <tactics>700</tactics>
! <magicresistance>1500</magicresistance>
! </npc>
! <!-- shadow wisp -->
! <npc id="shadow_wisp">
<name>a shadow wisp</name>
! <id>0xA5</id>
! <category>Monsters\Common Monsters\Shadow Wisp</category>
! <skin>0x66d</skin>
! <inherit id="monster_base" />
! <karma><random min="0" max="0" /></karma>
! <fame><random min="0" max="0" /></fame>
! <defense><random min="15" max="20" /></defense>
! <lodamage>5</lodamage>
! <hidamage>13</hidamage>
! <!-- Stats -->
! <str><random min="16" max="40" /></str>
! <dex><random min="16" max="45" /></dex>
! <int><random min="11" max="25" /></int>
! <!-- Skills -->
! <wrestling><random min="251" max="400" /></wrestling>
! <tactics><random min="1" max="150" /></tactics>
! <magicresistance>100</magicresistance>
! <evaluatingintel>400</evaluatingintel>
! <magery>500</magery>
! <meditation>400</meditation>
! </npc>
! <!-- swamp tentacle -->
! <npc id="swamp tentacle">
<name>a swamp tentacle</name>
! <id>0x42</id>
! <category>Monsters\Common Monsters\Swamp Tentacle</category>
! <skin>0x66d</skin>
! <inherit id="monster_base" />
! <karma><random min="-2500" max="-4999" /></karma>
! <fame><random min="2500" max="4999" /></fame>
! <defense><random min="25" max="35" /></defense>
! <lodamage>11</lodamage>
! <hidamage>21</hidamage>
! <!-- Stats -->
! <str><random min="96" max="120" /></str>
! <dex><random min="66" max="85" /></dex>
! <int><random min="16" max="30" /></int>
! <!-- Skills -->
! <wrestling><random min="651" max="800" /></wrestling>
! <tactics><random min="651" max="800" /></tactics>
! <magicresistance><random min="151" max="200" /></magicresistance>
! </npc>
! <!-- wisp -->
! <npc id="wisp">
<name>a wisp</name>
! <id>0x3a</id>
! <category>Monsters\Common Monsters\Wisp</category>
! <skin>0</skin>
! <inherit id="animal_base" />
! <karma><random min="0" max="0" /></karma>
! <fame><random min="0" max="0" /></fame>
! <defense><random min="35" max="45" /></defense>
! <lodamage>36</lodamage>
! <hidamage>40</hidamage>
! <!-- Stats -->
! <str><random min="196" max="225" /></str>
! <dex><random min="196" max="225" /></dex>
! <int><random min="196" max="225" /></int>
! <!-- Skills -->
! <wrestling>800</wrestling>
! <tactics>800</tactics>
! <magicresistance>800</magicresistance>
! <evaluatingintel>800</evaluatingintel>
! </npc>
! </definitions>
Index: deamons.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/monsters/deamons.xml,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** deamons.xml 10 May 2003 00:16:40 -0000 1.9
--- deamons.xml 23 Aug 2003 07:07:25 -0000 1.10
***************
*** 4,36 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Viper |
! | ( ( ;._ \\ ctr | Last Modification: Enhanced |
=================================================================
-->
<definitions>
! <!-- a hellcat -->
<npc id="hellcat">
<name>a hellcat</name>
<id>0x342</id>
! <category>Monsters\deamons\hellcat </category>
<inherit id="monster_base"/>
<karma><random min="-0" max="-624"/></karma>
<fame><random min="0" max="1249"/></fame>
! <defense><random min="30" max="30"/></defense>
! <lodamage>3</lodamage>
! <hidamage>15</hidamage>
<!-- Stats -->
! <str><random min="77" max="86"/></str>
! <dex><random min="103" max="125"/></dex>
! <int><random min="33" max="63"/></int>
<!-- Skills -->
! <wrestling><random min="368" max="436"/></wrestling>
! <tactics><random min="430" max="548"/></tactics>
! <magicresistance><random min="465" max="595"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
<carve>carve_hellcat</carve>
<totame>711</totame>
<food>1</food>
! </npc>
<!-- a lava lizard -->
--- 4,35 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: Kosh |
! | )).-' {{ ;'` | Revised by: sereg, Viper, Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
! <!-- a hellcat (small) -->
<npc id="hellcat">
<name>a hellcat</name>
<id>0x342</id>
! <category>Monsters\Deamons\hellcat</category>
<inherit id="monster_base"/>
<karma><random min="-0" max="-624"/></karma>
<fame><random min="0" max="1249"/></fame>
! <defense><random min="25" max="35"/></defense>
! <lodamage>9</lodamage>
! <hidamage>18</hidamage>
<!-- Stats -->
! <str><random min="51" max="100"/></str>
! <dex><random min="52" max="150"/></dex>
! <int><random min="13" max="85"/></int>
<!-- Skills -->
! <wrestling><random min="301" max="400"/></wrestling>
! <tactics><random min="401" max="550"/></tactics>
! <magicresistance><random min="451" max="600"/></magicresistance>
<carve>carve_hellcat</carve>
<totame>711</totame>
<food>1</food>
! </npc>
<!-- a lava lizard -->
***************
*** 38,49 ****
<name>a lava lizard</name>
<id>0x0ce</id>
! <category>Monsters\deamons\lava lizard </category>
<inherit id="monster_base"/>
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="40" max="40"/></defense>
! <lodamage>8</lodamage>
! <hidamage>28</hidamage>
! <gold><random min="20" max="50"/></gold>
<!-- Stats -->
<str><random min="126" max="150"/></str>
--- 37,48 ----
<name>a lava lizard</name>
<id>0x0ce</id>
! <category>Monsters\Deamons\lava lizard</category>
<inherit id="monster_base"/>
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="35" max="45"/></defense>
! <lodamage>14</lodamage>
! <hidamage>45</hidamage>
! <gold><random min="25" max="50"/></gold>
<!-- Stats -->
<str><random min="126" max="150"/></str>
***************
*** 51,58 ****
<int><random min="11" max="20"/></int>
<!-- Skills -->
! <wrestling><random min="653" max="818"/></wrestling>
! <tactics><random min="608" max="800"/></tactics>
! <magicresistance><random min="513" max="693"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
<carve>carve_lava_lizard</carve>
<totame>807</totame>
--- 50,56 ----
<int><random min="11" max="20"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="800"/></wrestling>
! <tactics><random min="601" max="800"/></tactics>
! <magicresistance><random min="551" max="700"/></magicresistance>
<carve>carve_lava_lizard</carve>
<totame>807</totame>
***************
*** 64,84 ****
<name>a hell hound</name>
<id>0x0e1</id>
! <category>Monsters\deamons\hell hound </category>
<inherit id="monster_base"/>
<karma><random min="-1250" max="-2499"/></karma>
<fame><random min="1250" max="2499"/></fame>
! <defense><random min="30" max="30"/></defense>
! <lodamage>6</lodamage>
! <hidamage>20</hidamage>
! <gold><random min="0" max="150"/></gold>
<!-- Stats -->
! <str><random min="108" max="139"/></str>
! <dex><random min="81" max="104"/></dex>
! <int><random min="36" max="58"/></int>
<!-- Skills -->
! <wrestling><random min="640" max="815"/></wrestling>
! <tactics><random min="509" max="698"/></tactics>
! <magicresistance><random min="553" max="735"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
<carve>carve_hell_hound</carve>
<totame>855</totame>
--- 62,81 ----
<name>a hell hound</name>
<id>0x0e1</id>
! <category>Monsters\Deamons\hell hound</category>
<inherit id="monster_base"/>
<karma><random min="-1250" max="-2499"/></karma>
<fame><random min="1250" max="2499"/></fame>
! <defense><random min="25" max="35"/></defense>
! <lodamage>21</lodamage>
! <hidamage>31</hidamage>
! <gold><random min="100" max="130"/></gold>
<!-- Stats -->
! <str><random min="102" max="150"/></str>
! <dex><random min="81" max="105"/></dex>
! <int><random min="36" max="60"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="800"/></wrestling>
! <tactics><random min="501" max="700"/></tactics>
! <magicresistance><random min="576" max="750"/></magicresistance>
<carve>carve_hell_hound</carve>
<totame>855</totame>
***************
*** 90,110 ****
<name>a mongbat</name>
<id>0x027</id>
! <category>Monsters\deamons\mongbat </category>
<inherit id="monster_base"/>
<karma><random min="-0" max="-624"/></karma>
<fame><random min="0" max="1249"/></fame>
! <defense><random min="8" max="8"/></defense>
<lodamage>1</lodamage>
! <hidamage>1</hidamage>
! <gold><random min="0" max="10"/></gold>
<!-- Stats -->
! <str><random min="10" max="10"/></str>
! <dex><random min="26" max="37"/></dex>
! <int><random min="10" max="13"/></int>
<!-- Skills -->
! <wrestling><random min="60" max="106"/></wrestling>
! <tactics><random min="56" max="100"/></tactics>
! <magicresistance><random min="53" max="120"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
<carve>carve_mong_bat</carve>
<totame>0</totame>
--- 87,106 ----
<name>a mongbat</name>
<id>0x027</id>
! <category>Monsters\Deamons\mongbat</category>
<inherit id="monster_base"/>
<karma><random min="-0" max="-624"/></karma>
<fame><random min="0" max="1249"/></fame>
! <defense><random min="5" max="10"/></defense>
<lodamage>1</lodamage>
! <hidamage>2</hidamage>
! <gold><random min="0" max="25"/></gold>
<!-- Stats -->
! <str><random min="6" max="10"/></str>
! <dex><random min="26" max="38"/></dex>
! <int><random min="6" max="14"/></int>
<!-- Skills -->
! <wrestling><random min="51" max="100"/></wrestling>
! <tactics><random min="51" max="100"/></tactics>
! <magicresistance><random min="51" max="140"/></magicresistance>
<carve>carve_mong_bat</carve>
<totame>0</totame>
***************
*** 116,167 ****
<name>a imp</name>
<id>0x04A</id>
! <category>Monsters\deamons\imp </category>
<inherit id="monster_base"/>
<karma><random min="-1250" max="-2499"/></karma>
<fame><random min="1250" max="2499"/></fame>
! <defense><random min="30" max="30"/></defense>
! <lodamage>3</lodamage>
! <hidamage>18</hidamage>
! <gold><random min="0" max="50"/></gold>
<!-- Stats -->
! <str><random min="91" max="114"/></str>
! <dex><random min="61" max="81"/></dex>
<int><random min="86" max="110"/></int>
<!-- Skills -->
! <wrestling><random min="462" max="495"/></wrestling>
<tactics><random min="421" max="500"/></tactics>
! <magicresistance><random min="308" max="494"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! <magery><random min="740" max="828"/></magery>
! <evaluatingintel><random min="901" max="997"/></evaluatingintel>
! <meditation><random min="0" max="0"/></meditation>
<carve>carve_imp</carve>
<totame>831</totame>
<food>1</food>
! </npc>
<!-- a gargoyle -->
<npc id="gargoyle">
<name>a gargoyle</name>
<id>0x040</id>
! <category>Monsters\deamons\gargoyle </category>
<inherit id="monster_base"/>
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="27" max="27"/></defense>
! <lodamage>6</lodamage>
! <hidamage>20</hidamage>
! <gold><random min="50" max="150"/></gold>
<!-- Stats -->
! <str><random min="159" max="175"/></str>
! <dex><random min="77" max="94"/></dex>
! <int><random min="82" max="100"/></int>
<!-- Skills -->
! <wrestling><random min="534" max="797"/></wrestling>
! <tactics><random min="506" max="699"/></tactics>
! <magicresistance><random min="710" max="841"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! <magery><random min="752" max="864"/></magery>
! <evaluatingintel><random min="0" max="0"/></evaluatingintel>
! <meditation><random min="0" max="0"/></meditation>
<carve>carve_gargoyle</carve>
</npc>
--- 112,160 ----
<name>a imp</name>
<id>0x04A</id>
! <category>Monsters\Deamons\imp</category>
<inherit id="monster_base"/>
<karma><random min="-1250" max="-2499"/></karma>
<fame><random min="1250" max="2499"/></fame>
! <defense><random min="25" max="35"/></defense>
! <lodamage>15</lodamage>
! <hidamage>24</hidamage>
! <gold><random min="25" max="50"/></gold>
<!-- Stats -->
! <str><random min="91" max="115"/></str>
! <dex><random min="61" max="80"/></dex>
<int><random min="86" max="110"/></int>
<!-- Skills -->
! <wrestling><random min="401" max="440"/></wrestling>
<tactics><random min="421" max="500"/></tactics>
! <magicresistance><random min="301" max="500"/></magicresistance>
! <magery><random min="901" max="1000"/></magery>
! <evaluatingintel><random min="201" max="300"/></evaluatingintel>
<carve>carve_imp</carve>
<totame>831</totame>
<food>1</food>
! </npc>
!
<!-- a gargoyle -->
<npc id="gargoyle">
<name>a gargoyle</name>
<id>0x040</id>
! <category>Monsters\Deamons\gargoyle</category>
<inherit id="monster_base"/>
<karma><random min="-2500" max="-4999"/></karma>
<fame><random min="2500" max="4999"/></fame>
! <defense><random min="30" max="35"/></defense>
! <lodamage>14</lodamage>
! <hidamage>27</hidamage>
! <gold><random min="60" max="100"/></gold>
<!-- Stats -->
! <str><random min="146" max="175"/></str>
! <dex><random min="76" max="95"/></dex>
! <int><random min="81" max="105"/></int>
<!-- Skills -->
! <wrestling><random min="401" max="800"/></wrestling>
! <tactics><random min="501" max="700"/></tactics>
! <magicresistance><random min="701" max="850"/></magicresistance>
! <magery><random min="701" max="850"/></magery>
! <evaluatingintel><random min="701" max="850"/></evaluatingintel>
<carve>carve_gargoyle</carve>
</npc>
***************
*** 171,194 ****
<name><random list="NAMES_DAEMON" /></name>
<id>0x009</id>
! <category>Monsters\deamons\demon </category>
<inherit id="monster_base"/>
<karma><random min="-10000" max="-20000"/></karma>
<fame><random min="10000" max="20000"/></fame>
! <defense><random min="52" max="58"/></defense>
! <lodamage>6</lodamage>
! <hidamage>20</hidamage>
! <gold><random min="400" max="800"/></gold>
<!-- Stats -->
! <str><random min="478" max="505"/></str>
! <dex><random min="82" max="94"/></dex>
! <int><random min="305" max="325"/></int>
<!-- Skills -->
! <wrestling><random min="645" max="808"/></wrestling>
! <tactics><random min="708" max="796"/></tactics>
! <magicresistance><random min="864" max="950"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
! <magery><random min="751" max="828"/></magery>
! <evaluatingint><random min="0" max="0"/></evaluatingint>
! <meditation><random min="0" max="0"/></meditation>
<carve>carve_demon</carve>
<!-- Priv -->
--- 164,185 ----
<name><random list="NAMES_DAEMON" /></name>
<id>0x009</id>
! <category>Monsters\Deamons\demon </category>
<inherit id="monster_base"/>
<karma><random min="-10000" max="-20000"/></karma>
<fame><random min="10000" max="20000"/></fame>
! <defense><random min="45" max="60"/></defense>
! <lodamage>21</lodamage>
! <hidamage>39</hidamage>
! <gold><random min="300" max="400"/></gold>
<!-- Stats -->
! <str><random min="476" max="505"/></str>
! <dex><random min="76" max="95"/></dex>
! <int><random min="301" max="325"/></int>
<!-- Skills -->
! <wrestling><random min="601" max="800"/></wrestling>
! <tactics><random min="701" max="800"/></tactics>
! <magicresistance><random min="851" max="950"/></magicresistance>
! <magery><random min="701" max="800"/></magery>
! <evaluatingint><random min="701" max="800"/></evaluatingint>
<carve>carve_demon</carve>
<!-- Priv -->
***************
*** 198,221 ****
<name><random list="NAMES_BALRON" /></name>
<id>0x028</id>
! <category>Monsters\deamons\Balron </category>
<inherit id="monster_base"/>
<karma><random min="-10000" max="-20000"/></karma>
<fame><random min="10000" max="20000"/></fame>
! <defense><random min="74" max="90"/></defense>
! <lodamage>40</lodamage>
! <hidamage>60</hidamage>
! <gold><random min="800" max="1200"/></gold>
<!-- Stats -->
! <str><random min="1005" max="1183"/></str>
! <dex><random min="187" max="238"/></dex>
! <int><random min="151" max="247"/></int>
<!-- Skills -->
! <wrestling><random min="912" max="997"/></wrestling>
! <tactics><random min="901" max="997"/></tactics>
! <magicresistance><random min="1167" max="1225"/></magicresistance>
! <anatomy><random min="256" max="357"/></anatomy>
! <magery><random min="969" max="991"/></magery>
! <evaluatingint><random min="804" max="936"/></evaluatingint>
! <meditation><random min="273" max="508"/></meditation>
<carve>carve_demon_with_sword</carve>
<!-- Priv -->
--- 189,212 ----
<name><random list="NAMES_BALRON" /></name>
<id>0x028</id>
! <category>Monsters\Deamons\Balron </category>
<inherit id="monster_base"/>
<karma><random min="-10000" max="-20000"/></karma>
<fame><random min="10000" max="20000"/></fame>
! <defense><random min="65" max="80"/></defense>
! <lodamage>107</lodamage>
! <hidamage>155</hidamage>
! <gold><random min="600" max="800"/></gold>
<!-- Stats -->
! <str><random min="986" max="1185"/></str>
! <dex><random min="117" max="255"/></dex>
! <int><random min="151" max="150"/></int>
<!-- Skills -->
! <wrestling><random min="901" max="1000"/></wrestling>
! <tactics><random min="901" max="1000"/></tactics>
! <magicresistance><random min="1005" max="1500"/></magicresistance>
! <anatomy><random min="251" max="500"/></anatomy>
! <magery><random min="955" max="1000"/></magery>
! <evaluatingint><random min="901" max="1000"/></evaluatingint>
! <meditation><random min="251" max="500"/></meditation>
<carve>carve_demon_with_sword</carve>
<!-- Priv -->
***************
*** 229,508 ****
<karma><random min="-1250" max="-2499"/></karma>
<fame><random min="1250" max="2499"/></fame>
! <defense><random min="28" max="28"/></defense>
! <lodamage>5</lodamage>
! <hidamage>16</hidamage>
! <gold><random min="50" max="150"/></gold>
<!-- Stats -->
! <str><random min="96" max="118"/></str>
! <dex><random min="86" max="105"/></dex>
! <int><random min="54" max="71"/></int>
<!-- Skills -->
! <wrestling><random min="731" max="906"/></wrestling>
! <tactics><random min="759" max="994"/></tactics>
! <magicresistance><random min="546" max="650"/></magicresistance>
! <anatomy><random min="0" max="0"/></anatomy>
<!-- Priv -->
</npc>
! <!-- efreet -->
! <npc id="efreet">
! <name>an efreet</name>
! <id>0x83</id>
! <category>Monsters\deamons\Efreet</category>
! <skin>0</skin>
! <inherit id="monster_base" />
! <karma><random min="0" max="-624" /></karma>
! <fame><random min="0" max="1249" /></fame>
! <defense>56</defense>
! <lodamage>15</lodamage>
! <hidamage>20</hidamage>
! <!-- Stats -->
! <str><random min="328" max="354" /></str>
! <dex><random min="271" max="283" /></dex>
! <int><random min="177" max="195" /></int>
! <!-- Skills -->
! <wrestling><random min="649" max="798" /></wrestling>
! <tactics><random min="613" max="793" /></tactics>
! <magicresistance><random min="612" max="740" /></magicresistance>
! <magery><random min="677" max="776" /></magery>
<carve></carve>
! </npc>
! <!-- enslaved gargoyle -->
! <npc id="enslaved_gargoyle">
! <name>an enslaved Gargoyle</name>
! <id>0x2f1</id>
! ...
[truncated message content] |
|
From: <dr...@us...> - 2003-08-23 05:37:57
|
Update of /cvsroot/wpdev/xmlscripts/definitions/npcs/animals In directory sc8-pr-cvs1:/tmp/cvs-serv18980 Modified Files: air.xml land.xml mountables.xml water.xml Log Message: Fixes to be more like current OSI. Index: air.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/animals/air.xml,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** air.xml 14 Jul 2003 12:57:47 -0000 1.8 --- air.xml 23 Aug 2003 05:37:54 -0000 1.9 *************** *** 1,81 **** <definitions> ! <!-- Chicken --> ! <npc id="chicken"> ! <name>a chicken</name> ! <ai>Animal_Domestic</ai> ! <id>0x00D0</id> ! <category>Animals\Air\Chicken</category> ! <skin>0</skin> ! <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="150" /></fame> ! <defense>2</defense> ! <lodamage>1</lodamage> ! <hidamage>1</hidamage> ! <!-- Stats --> ! <str><random min="5" max="5" /></str> ! <dex><random min="15" max="15" /></dex> ! <int><random min="5" max="5" /></int> ! <!-- Skills --> ! <wrestling><random min="55" max="55" /></wrestling> ! <tactics><random min="50" max="50" /></tactics> ! <magicresistance><random min="40" max="40" /></magicresistance> ! <totame>0</totame> ! <food>3</food> ! <carve>carve_chicken</carve> ! </npc> ! ! <!-- bird --> ! <npc id="bird"> ! <name><random list="NAMES_BIRD" /></name> ! <ai>Animal_Wild</ai> ! <id>0x0006</id> ! <category>Animals\Air\Bird</category> ! <skin>0</skin> ! <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>150</fame> ! <defense><random min="0" max="6" /></defense> ! <lodamage>1</lodamage> ! <hidamage>3</hidamage> ! <!-- Stats --> ! <str><random min="1" max="4" /></str> ! <dex><random min="25" max="35" /></dex> ! <int><random min="1" max="3" /></int> ! <!-- Skills --> ! <wrestling><random min="50" max="50" /></wrestling> ! <tactics><random min="50" max="50" /></tactics> ! <magicresistance><random min="50" max="50" /></magicresistance> ! <totame>0</totame> ! <food>3</food> ! <carve>carve_bird</carve> ! </npc> ! <!-- eagle --> ! <npc id="eagle"> ! <name>an eagle</name> ! <ai>Animal_Wild</ai> ! <id>0x5</id> ! <category>Animals\Air\Eagle</category> ! <skin>0</skin> ! <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>300</fame> ! <defense>22</defense> ! <lodamage>5</lodamage> ! <hidamage>10</hidamage> ! <!-- Stats --> ! <str><random min="31" max="47" /></str> ! <dex><random min="36" max="60" /></dex> ! <int><random min="8" max="20" /></int> ! <!-- Skills --> ! <wrestling><random min="201" max="300" /></wrestling> ! <tactics><random min="181" max="370" /></tactics> ! <magicresistance><random min="153" max="300" /></magicresistance> ! <totame>171</totame> ! <food>1</food> ! <carve>carve_eagle</carve> ! </npc> ! </definitions> \ No newline at end of file --- 1,80 ---- <definitions> ! <!-- Chicken --> ! <npc id="chicken"> ! <name>a chicken</name> ! <ai>Animal_Domestic</ai> ! <id>0x00D0</id> ! <category>Animals\Air\Chicken</category> ! <skin>0</skin> ! <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="150" /></fame> ! <defense>1</defense> ! <lodamage>1</lodamage> ! <hidamage>1</hidamage> ! <!-- Stats --> ! <str><random min="5" max="5" /></str> ! <dex><random min="15" max="15" /></dex> ! <int><random min="5" max="5" /></int> ! <!-- Skills --> ! <wrestling><random min="50" max="50" /></wrestling> ! <tactics><random min="50" max="50" /></tactics> ! <magicresistance><random min="40" max="40" /></magicresistance> ! <totame>0</totame> ! <food>3</food> ! <carve>carve_chicken</carve> ! </npc> ! <!-- bird --> ! <npc id="bird"> ! <name><random list="NAMES_BIRD" /></name> ! <ai>Animal_Wild</ai> ! <id>0x0006</id> ! <category>Animals\Air\Bird</category> ! <skin>0</skin> ! <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>150</fame> ! <defense><random min="0" max="0" /></defense> ! <lodamage>1</lodamage> ! <hidamage>1</hidamage> ! <!-- Stats --> ! <str><random min="1" max="4" /></str> ! <dex><random min="25" max="25" /></dex> ! <int><random min="1" max="4" /></int> ! <!-- Skills --> ! <wrestling><random min="50" max="50" /></wrestling> ! <tactics><random min="50" max="50" /></tactics> ! <magicresistance><random min="50" max="50" /></magicresistance> ! <totame>0</totame> ! <food>3</food> ! <carve>carve_bird</carve> ! </npc> + <!-- eagle --> + <npc id="eagle"> + <name>an eagle</name> + <ai>Animal_Wild</ai> + <id>0x5</id> + <category>Animals\Air\Eagle</category> + <skin>0</skin> + <inherit id="animal_base" /> + <karma>0</karma> + <fame>300</fame> + <defense><random min="20" max="25" /></defense> + <lodamage>6</lodamage> + <hidamage>13</hidamage> + <!-- Stats --> + <str><random min="31" max="47" /></str> + <dex><random min="36" max="60" /></dex> + <int><random min="8" max="20" /></int> + <!-- Skills --> + <wrestling><random min="201" max="300" /></wrestling> + <tactics><random min="181" max="370" /></tactics> + <magicresistance><random min="153" max="300" /></magicresistance> + <totame>171</totame> + <food>1</food> + <carve>carve_eagle</carve> + </npc> ! </definitions> Index: land.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/animals/land.xml,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** land.xml 14 Jul 2003 12:57:47 -0000 1.15 --- land.xml 23 Aug 2003 05:37:54 -0000 1.16 *************** *** 1,860 **** <definitions> ! <!-- gorilla --> ! <npc id="gorilla"> ! <name>a gorilla</name> ! <id>0x1D</id> ! <ai>Animal_Wild</ai> ! <category>Animals\Land\Gorilla</category> ! <skin>0</skin> ! <inherit id="animal_base" /> [...1741 lines suppressed...] ! <karma><random min="0" max="-624" /></karma> ! <fame><random min="0" max="1249" /></fame> ! <defense><random min="15" max="20" /></defense> ! <lodamage>4</lodamage> ! <hidamage>10</hidamage> ! <!-- Stats --> ! <str><random min="56" max="80" /></str> ! <dex><random min="56" max="75" /></dex> ! <int><random min="31" max="55" /></int> ! <!-- Skills --> ! <wrestling><random min="451" max="600" /></wrestling> ! <tactics><random min="451" max="600" /></tactics> ! <magicresistance><random min="201" max="350" /></magicresistance> ! <totame>651</totame> ! <food>1</food> ! <carve></carve> ! </npc> </definitions> Index: mountables.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/animals/mountables.xml,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** mountables.xml 16 Jun 2003 13:35:34 -0000 1.14 --- mountables.xml 23 Aug 2003 05:37:54 -0000 1.15 *************** *** 19,25 **** <karma>-4000</karma> <fame>4000</fame> ! <defense>60</defense> ! <lodamage>7</lodamage> ! <hidamage>20</hidamage> <str>300</str> <dex>100</dex> --- 19,25 ---- <karma>-4000</karma> <fame>4000</fame> ! <defense><random min="30" max="40" /></defense> ! <lodamage>18</lodamage> ! <hidamage>51</hidamage> <str>300</str> <dex>100</dex> *************** *** 40,53 **** <karma>-2000</karma> <fame>2000</fame> ! <defense>40</defense> ! <lodamage>3</lodamage> ! <hidamage>4</hidamage> <str><random min="201" max="300" /></str> <dex><random min="66" max="85" /></dex> <int><random min="61" max="100" /></int> ! <wrestling><random min="451" max="500" /></wrestling> ! <tactics><random min="451" max="500" /></tactics> ! <magicresistance><random min="451" max="500" /></magicresistance> ! <anatomy><random min="451" max="500" /></anatomy> <totame>939</totame> <food>1</food> --- 40,53 ---- <karma>-2000</karma> <fame>2000</fame> ! <defense><random min="35" max="40" /></defense> ! <lodamage>7</lodamage> ! <hidamage>9</hidamage> <str><random min="201" max="300" /></str> <dex><random min="66" max="85" /></dex> <int><random min="61" max="100" /></int> ! <wrestling><random min="451" max="550" /></wrestling> ! <tactics><random min="451" max="550" /></tactics> ! <magicresistance><random min="451" max="550" /></magicresistance> ! <anatomy><random min="451" max="550" /></anatomy> <totame>939</totame> <food>1</food> *************** *** 67,77 **** <id>0x00e2</id> <category>Animals\Ridables\Gray Horse (Weak)</category> ! <ai>Animal_Wild</ai> <inherit id="animal_base" /> <karma>300</karma> <fame>300</fame> ! <defense>18</defense> ! <lodamage>3</lodamage> ! <hidamage>4</hidamage> <str><random min="22" max="98" /></str> <dex><random min="56" max="75" /></dex> --- 67,77 ---- <id>0x00e2</id> <category>Animals\Ridables\Gray Horse (Weak)</category> ! <ai>Animal_Wild</ai> <inherit id="animal_base" /> <karma>300</karma> <fame>300</fame> ! <defense><random min="15" max="20" /></defense> ! <lodamage>4</lodamage> ! <hidamage>6</hidamage> <str><random min="22" max="98" /></str> <dex><random min="56" max="75" /></dex> *************** *** 112,116 **** <name>seahorse</name> <id>0x0090</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Seahorse</category> <inherit id="animal_base" /> --- 112,116 ---- <name>seahorse</name> <id>0x0090</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Seahorse</category> <inherit id="animal_base" /> *************** *** 135,148 **** <id>0x84</id> <category>Animals\Ridables\Kirin</category> ! <ai>Animal_Wild</ai> <inherit id="animal_base" /> <karma>9000</karma> <fame>9000</fame> ! <defense>60</defense> ! <lodamage>16</lodamage> ! <hidamage>22</hidamage> <str><random min="296" max="325" /></str> <dex><random min="86" max="105" /></dex> ! <int><random min="195" max="210" /></int> <wrestling><random min="805" max="925" /></wrestling> <tactics><random min="201" max="225" /></tactics> --- 135,148 ---- <id>0x84</id> <category>Animals\Ridables\Kirin</category> ! <ai>Animal_Wild</ai> <inherit id="animal_base" /> <karma>9000</karma> <fame>9000</fame> ! <defense><random min="55" max="65" /></defense> ! <lodamage>35</lodamage> ! <hidamage>45</hidamage> <str><random min="296" max="325" /></str> <dex><random min="86" max="105" /></dex> ! <int><random min="186" max="225" /></int> <wrestling><random min="805" max="925" /></wrestling> <tactics><random min="201" max="225" /></tactics> *************** *** 159,170 **** <name>a ridable llama</name> <id>0x00dc</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Llama</category> <inherit id="animal_base" /> <karma>0</karma> <fame>300</fame> ! <defense>16</defense> <lodamage>3</lodamage> ! <hidamage>5</hidamage> <str><random min="21" max="49" /></str> <dex><random min="56" max="75" /></dex> --- 159,170 ---- <name>a ridable llama</name> <id>0x00dc</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Llama</category> <inherit id="animal_base" /> <karma>0</karma> <fame>300</fame> ! <defense><random min="10" max="15" /></defense> <lodamage>3</lodamage> ! <hidamage>6</hidamage> <str><random min="21" max="49" /></str> <dex><random min="56" max="75" /></dex> *************** *** 186,191 **** <fame>0</fame> <defense><random min="60" max="70" /></defense> ! <lodamage>20</lodamage> ! <hidamage>24</hidamage> <str><random min="201" max="210" /></str> <dex><random min="101" max="110" /></dex> --- 186,191 ---- <fame>0</fame> <defense><random min="60" max="70" /></defense> ! <lodamage>40</lodamage> ! <hidamage>47</hidamage> <str><random min="201" max="210" /></str> <dex><random min="101" max="110" /></dex> *************** *** 205,211 **** <karma>-14000</karma> <fame>14000</fame> ! <defense>60</defense> ! <lodamage>16</lodamage> ! <hidamage>22</hidamage> <str><random min="496" max="525" /></str> <dex><random min="86" max="105" /></dex> --- 205,211 ---- <karma>-14000</karma> <fame>14000</fame> ! <defense><random min="55" max="65" /></defense> ! <lodamage>50</lodamage> ! <hidamage>70</hidamage> <str><random min="496" max="525" /></str> <dex><random min="86" max="105" /></dex> *************** *** 224,228 **** <inherit id="nightmare_1" /> <id>0x00b1</id> ! <category>Animals\Ridables\Nightmare 2 </category> </npc> --- 224,228 ---- <inherit id="nightmare_1" /> <id>0x00b1</id> ! <category>Animals\Ridables\Nightmare 2</category> </npc> *************** *** 245,256 **** <name>a desert ostard</name> <id>0x00d2</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Desert Ostard </category> <inherit id="animal_base" /> <karma>0</karma> <fame>450</fame> ! <defense>20</defense> ! <lodamage>5</lodamage> ! <hidamage>11</hidamage> <str><random min="94" max="170" /></str> <dex><random min="56" max="75" /></dex> --- 245,256 ---- <name>a desert ostard</name> <id>0x00d2</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Desert Ostard </category> <inherit id="animal_base" /> <karma>0</karma> <fame>450</fame> ! <defense><random min="15" max="20" /></defense> ! <lodamage>8</lodamage> ! <hidamage>18</hidamage> <str><random min="94" max="170" /></str> <dex><random min="56" max="75" /></dex> *************** *** 267,278 **** <name>a forest ostard</name> <id>0x00db</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Forest Ostard (Weak)</category> <inherit id="animal_base" /> <karma>0</karma> <fame>450</fame> ! <defense>20</defense> ! <lodamage>8</lodamage> ! <hidamage>14</hidamage> <str><random min="94" max="170" /></str> <dex><random min="56" max="75" /></dex> --- 267,278 ---- <name>a forest ostard</name> <id>0x00db</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Forest Ostard (Weak)</category> <inherit id="animal_base" /> <karma>0</karma> <fame>450</fame> ! <defense><random min="15" max="20" /></defense> ! <lodamage>13</lodamage> ! <hidamage>23</hidamage> <str><random min="94" max="170" /></str> <dex><random min="56" max="75" /></dex> *************** *** 293,299 **** <karma>-1500</karma> <fame>1500</fame> ! <defense>30</defense> ! <lodamage>11</lodamage> ! <hidamage>17</hidamage> <str><random min="94" max="170" /></str> <dex><random min="96" max="115" /></dex> --- 293,299 ---- <karma>-1500</karma> <fame>1500</fame> ! <defense><random min="25" max="30" /></defense> ! <lodamage>25</lodamage> ! <hidamage>35</hidamage> <str><random min="94" max="170" /></str> <dex><random min="96" max="115" /></dex> *************** *** 310,321 **** <name>a ridgeback</name> <id>0x187</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Ridgeback</category> <inherit id="animal_base" /> <karma>0</karma> <fame>300</fame> ! <defense>18</defense> ! <lodamage>3</lodamage> ! <hidamage>5</hidamage> <str><random min="58" max="100" /></str> <dex><random min="56" max="75" /></dex> --- 310,321 ---- <name>a ridgeback</name> <id>0x187</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Ridgeback</category> <inherit id="animal_base" /> <karma>0</karma> <fame>300</fame> ! <defense><random min="15" max="25" /></defense> ! <lodamage>4</lodamage> ! <hidamage>7</hidamage> <str><random min="58" max="100" /></str> <dex><random min="56" max="75" /></dex> *************** *** 333,350 **** <name>a savage ridgeback</name> <id>188</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Savage Ridgeback</category> <inherit id="animal_base" /> <karma>0</karma> <fame>300</fame> ! <defense>18</defense> ! <lodamage>3</lodamage> ! <hidamage>5</hidamage> <str><random min="58" max="100" /></str> ! <dex><random min="58" max="75" /></dex> ! <int><random min="56" max="75" /></int> <wrestling><random min="351" max="450" /></wrestling> <tactics><random min="293" max="440" /></tactics> ! <magicresistance><random min="251" max="400" /></magicresistance> <totame>831</totame> <food>5</food> --- 333,350 ---- <name>a savage ridgeback</name> <id>188</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Savage Ridgeback</category> <inherit id="animal_base" /> <karma>0</karma> <fame>300</fame> ! <defense><random min="15" max="20" /></defense> ! <lodamage>4</lodamage> ! <hidamage>7</hidamage> <str><random min="58" max="100" /></str> ! <dex><random min="56" max="75" /></dex> ! <int><random min="16" max="30" /></int> <wrestling><random min="351" max="450" /></wrestling> <tactics><random min="293" max="440" /></tactics> ! <magicresistance><random min="253" max="400" /></magicresistance> <totame>831</totame> <food>5</food> *************** *** 354,358 **** <npc id="steed_dark"> <name>a dark steed</name> ! <ai>Animal_Wild</ai> <id>0x0074</id> <category>Animals\Ridables\Dark Steed</category> --- 354,358 ---- <npc id="steed_dark"> <name>a dark steed</name> ! <ai>Animal_Wild</ai> <id>0x0074</id> <category>Animals\Ridables\Dark Steed</category> *************** *** 370,380 **** <fame>-20000</fame> <defense><random min="52" max="58" /></defense> ! <lodamage>11</lodamage> ! <hidamage>30</hidamage> <str><random min="376" max="400" /></str> <dex><random min="91" max="120" /></dex> <int><random min="291" max="300" /></int> ! <wrestling><random min="1000" max="1000" /></wrestling> ! <tactics><random min="1000" max="1000" /></tactics> <magicresistance><random min="1000" max="1200" /></magicresistance> <totame>1060</totame> --- 370,380 ---- <fame>-20000</fame> <defense><random min="52" max="58" /></defense> ! <lodamage>34</lodamage> ! <hidamage>86</hidamage> <str><random min="376" max="400" /></str> <dex><random min="91" max="120" /></dex> <int><random min="291" max="300" /></int> ! <wrestling>1000</wrestling> ! <tactics>1000</tactics> <magicresistance><random min="1000" max="1200" /></magicresistance> <totame>1060</totame> *************** *** 385,389 **** <npc id="steed_silver"> <name>silver steed</name> ! <ai>Animal_Wild</ai> <id>0x0075</id> <category>Animals\Ridables\Silver Steed (Weak)</category> --- 385,389 ---- <npc id="steed_silver"> <name>silver steed</name> ! <ai>Animal_Wild</ai> <id>0x0075</id> <category>Animals\Ridables\Silver Steed (Weak)</category> *************** *** 396,412 **** <name>a unicorn</name> <id>0x007a</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Unicorn</category> <inherit id="animal_base" /> <karma>9000</karma> <fame>9000</fame> ! <defense>60</defense> ! <lodamage>16</lodamage> ! <hidamage>22</hidamage> <str><random min="296" max="325" /></str> <dex><random min="96" max="115" /></dex> <int><random min="186" max="225" /></int> <wrestling><random min="805" max="925" /></wrestling> ! <tactics><random min="201" max="221" /></tactics> <magicresistance><random min="753" max="900" /></magicresistance> <magery><random min="602" max="800" /></magery> --- 396,412 ---- <name>a unicorn</name> <id>0x007a</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Unicorn</category> <inherit id="animal_base" /> <karma>9000</karma> <fame>9000</fame> ! <defense><random min="55" max="65" /></defense> ! <lodamage>35</lodamage> ! <hidamage>45</hidamage> <str><random min="296" max="325" /></str> <dex><random min="96" max="115" /></dex> <int><random min="186" max="225" /></int> <wrestling><random min="805" max="925" /></wrestling> ! <tactics><random min="201" max="225" /></tactics> <magicresistance><random min="753" max="900" /></magicresistance> <magery><random min="602" max="800" /></magery> *************** *** 420,431 **** <npc id="ethereal_beetle"> <name>an ethereal giant beetle</name> ! <ai>Animal_Wild</ai> <id>0xC3</id> <category>Animals\Ridables\Ethereal Beetle</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="0" max="-0" /></karma> ! <fame><random min="0" max="0" /></fame> ! <defense>60</defense> <lodamage>0</lodamage> <hidamage>0</hidamage> --- 420,431 ---- <npc id="ethereal_beetle"> <name>an ethereal giant beetle</name> ! <ai>Animal_Wild</ai> <id>0xC3</id> <category>Animals\Ridables\Ethereal Beetle</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> ! <defense>0</defense> <lodamage>0</lodamage> <hidamage>0</hidamage> *************** *** 435,439 **** <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>800</magicresistance> <totame>0</totame> <food>0</food> --- 435,439 ---- <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>1000</magicresistance> <totame>0</totame> <food>0</food> *************** *** 443,454 **** <npc id="ethereal_horse"> <name>an ethereal horse</name> ! <ai>Animal_Wild</ai> <id>0x73</id> <category>Animals\Ridables\Ethereal Horse</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="0" /></fame> ! <defense>60</defense> <lodamage>0</lodamage> <hidamage>0</hidamage> --- 443,454 ---- <npc id="ethereal_horse"> <name>an ethereal horse</name> ! <ai>Animal_Wild</ai> <id>0x73</id> <category>Animals\Ridables\Ethereal Horse</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> ! <defense>0</defense> <lodamage>0</lodamage> <hidamage>0</hidamage> *************** *** 458,462 **** <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>800</magicresistance> <totame>0</totame> <food>0</food> --- 458,462 ---- <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>1000</magicresistance> <totame>0</totame> <food>0</food> *************** *** 466,477 **** <npc id="ethereal_kirin"> <name>an ethereal ki-rin</name> ! <ai>Animal_Wild</ai> <id>0x0317</id> <category>Animals\Ridables\Ethereal Ki-rin</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="0" /></fame> ! <defense>60</defense> <lodamage>0</lodamage> <hidamage>0</hidamage> --- 466,477 ---- <npc id="ethereal_kirin"> <name>an ethereal ki-rin</name> ! <ai>Animal_Wild</ai> <id>0x0317</id> <category>Animals\Ridables\Ethereal Ki-rin</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> ! <defense>0</defense> <lodamage>0</lodamage> <hidamage>0</hidamage> *************** *** 481,485 **** <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>800</magicresistance> <totame>0</totame> <food>0</food> --- 481,485 ---- <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>1000</magicresistance> <totame>0</totame> <food>0</food> *************** *** 489,500 **** <npc id="ethereal_llama"> <name>an ethereal llama</name> ! <ai>Animal_Wild</ai> <id>0xAA</id> <category>Animals\Ridables\Ethereal Llama</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="0" /></fame> ! <defense>60</defense> <lodamage>0</lodamage> <hidamage>0</hidamage> --- 489,500 ---- <npc id="ethereal_llama"> <name>an ethereal llama</name> ! <ai>Animal_Wild</ai> <id>0xAA</id> <category>Animals\Ridables\Ethereal Llama</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> ! <defense>0</defense> <lodamage>0</lodamage> <hidamage>0</hidamage> *************** *** 504,508 **** <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>800</magicresistance> <totame>0</totame> <food>0</food> --- 504,508 ---- <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>1000</magicresistance> <totame>0</totame> <food>0</food> *************** *** 512,522 **** <npc id="ethereal_ostard"> <name>an ethereal ostard</name> ! <ai>Animal_Wild</ai> <id>0xAB</id> <category>Animals\Ridables\Ethereal Ostard</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="0" /></fame> <defense>60</defense> <lodamage>0</lodamage> --- 512,522 ---- <npc id="ethereal_ostard"> <name>an ethereal ostard</name> ! <ai>Animal_Wild</ai> <id>0xAB</id> <category>Animals\Ridables\Ethereal Ostard</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> <defense>60</defense> <lodamage>0</lodamage> *************** *** 527,531 **** <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>800</magicresistance> <totame>0</totame> <food>0</food> --- 527,531 ---- <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>1000</magicresistance> <totame>0</totame> <food>0</food> *************** *** 536,545 **** <name>an ethereal ridgeback</name> <id>0xC1</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Ethereal Ridgeback</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="0" /></fame> <defense>60</defense> <lodamage>0</lodamage> --- 536,545 ---- <name>an ethereal ridgeback</name> <id>0xC1</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Ethereal Ridgeback</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> <defense>60</defense> <lodamage>0</lodamage> *************** *** 550,554 **** <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>800</magicresistance> <totame>0</totame> <food>0</food> --- 550,554 ---- <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>1000</magicresistance> <totame>0</totame> <food>0</food> *************** *** 559,569 **** <name>an ethereal swamp dragon</name> <id>0xC2</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Ethereal Swamp Dragon</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="0" /></fame> ! <defense>60</defense> <lodamage>0</lodamage> <hidamage>0</hidamage> --- 559,569 ---- <name>an ethereal swamp dragon</name> <id>0xC2</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Ethereal Swamp Dragon</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> ! <defense>0</defense> <lodamage>0</lodamage> <hidamage>0</hidamage> *************** *** 573,577 **** <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>800</magicresistance> <totame>0</totame> <food>0</food> --- 573,577 ---- <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>1000</magicresistance> <totame>0</totame> <food>0</food> *************** *** 582,591 **** <name>an ethereal unicorn</name> <id>0xC0</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Ethereal Unicorn</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="-0" max="0" /></karma> ! <fame><random min="0" max="0" /></fame> <defense>60</defense> <lodamage>0</lodamage> --- 582,591 ---- <name>an ethereal unicorn</name> <id>0xC0</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Ethereal Unicorn</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> <defense>60</defense> <lodamage>0</lodamage> *************** *** 596,600 **** <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>800</magicresistance> <totame>0</totame> <food>0</food> --- 596,600 ---- <wrestling>1000</wrestling> <tactics>1000</tactics> ! <magicresistance>1000</magicresistance> <totame>0</totame> <food>0</food> *************** *** 605,620 **** <name>a war horse</name> <id>0x76</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Britannian Warhorse</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="0" /></fame> ! <defense>50</defense> ! <lodamage>5</lodamage> <hidamage>20</hidamage> <str>400</str> <dex>125</dex> ! <int><random min="51" max="56" /></int> <wrestling><random min="393" max="463" /></wrestling> <tactics><random min="259" max="422" /></tactics> --- 605,620 ---- <name>a war horse</name> <id>0x76</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Britannian Warhorse</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> ! <defense><random min="40" max="50" /></defense> ! <lodamage>12</lodamage> <hidamage>20</hidamage> <str>400</str> <dex>125</dex> ! <int><random min="51" max="55" /></int> <wrestling><random min="393" max="463" /></wrestling> <tactics><random min="259" max="422" /></tactics> *************** *** 628,643 **** <name>a war horse</name> <id>0x77</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Council of Mages Warhorse</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="0" /></fame> ! <defense>50</defense> ! <lodamage>5</lodamage> <hidamage>20</hidamage> <str>400</str> <dex>125</dex> ! <int><random min="51" max="56" /></int> <wrestling><random min="393" max="463" /></wrestling> <tactics><random min="259" max="422" /></tactics> --- 628,643 ---- <name>a war horse</name> <id>0x77</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Council of Mages Warhorse</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> ! <defense><random min="40" max="50" /></defense> ! <lodamage>12</lodamage> <hidamage>20</hidamage> <str>400</str> <dex>125</dex> ! <int><random min="51" max="55" /></int> <wrestling><random min="393" max="463" /></wrestling> <tactics><random min="259" max="422" /></tactics> *************** *** 651,666 **** <name>a war horse</name> <id>0x78</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Shadowlord Warhorse</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="0" /></fame> ! <defense>50</defense> ! <lodamage>5</lodamage> <hidamage>20</hidamage> <str>400</str> <dex>125</dex> ! <int><random min="51" max="56" /></int> <wrestling><random min="393" max="463" /></wrestling> <tactics><random min="259" max="422" /></tactics> --- 651,666 ---- <name>a war horse</name> <id>0x78</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Shadowlord Warhorse</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> ! <defense><random min="40" max="50" /></defense> ! <lodamage>12</lodamage> <hidamage>20</hidamage> <str>400</str> <dex>125</dex> ! <int><random min="51" max="55" /></int> <wrestling><random min="393" max="463" /></wrestling> <tactics><random min="259" max="422" /></tactics> *************** *** 674,689 **** <name>a war horse</name> <id>0x76</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Minax Warhorse</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma><random min="0" max="0" /></karma> ! <fame><random min="0" max="0" /></fame> ! <defense>50</defense> ! <lodamage>5</lodamage> <hidamage>20</hidamage> <str>400</str> <dex>125</dex> ! <int><random min="51" max="56" /></int> <wrestling><random min="393" max="463" /></wrestling> <tactics><random min="259" max="422" /></tactics> --- 674,689 ---- <name>a war horse</name> <id>0x76</id> ! <ai>Animal_Wild</ai> <category>Animals\Ridables\Minax Warhorse</category> <skin>0</skin> <inherit id="animal_base" /> ! <karma>0</karma> ! <fame>0</fame> ! <defense><random min="40" max="50" /></defense> ! <lodamage>12</lodamage> <hidamage>20</hidamage> <str>400</str> <dex>125</dex> ! <int><random min="51" max="55" /></int> <wrestling><random min="393" max="463" /></wrestling> <tactics><random min="259" max="422" /></tactics> *************** *** 692,694 **** <food>5</food> </npc> ! </definitions> \ No newline at end of file --- 692,695 ---- <food>5</food> </npc> ! ! </definitions> Index: water.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/animals/water.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** water.xml 16 Jun 2003 13:35:34 -0000 1.3 --- water.xml 23 Aug 2003 05:37:54 -0000 1.4 *************** *** 4,8 **** <npc id="dolphin"> <name>dolphin</name> ! <ai>Animal_Wild</ai> <id>0x0097</id> <category>Animals\Water\dolphin</category> --- 4,8 ---- <npc id="dolphin"> <name>dolphin</name> ! <ai>Animal_Wild</ai> <id>0x0097</id> <category>Animals\Water\dolphin</category> *************** *** 11,17 **** <karma>2000</karma> <fame>500</fame> ! <defense><random min="5" max="10" /></defense> <lodamage>3</lodamage> ! <hidamage>6</hidamage> <!-- Stats --> <str><random min="21" max="49" /></str> --- 11,17 ---- <karma>2000</karma> <fame>500</fame> ! <defense><random min="15" max="20" /></defense> <lodamage>3</lodamage> ! <hidamage>8</hidamage> <!-- Stats --> <str><random min="21" max="49" /></str> *************** *** 26,28 **** </npc> ! </definitions> \ No newline at end of file --- 26,28 ---- </npc> ! </definitions> |
|
From: <dr...@us...> - 2003-08-23 05:37:29
|
Update of /cvsroot/wpdev/xmlscripts/definitions/items/weaponry
In directory sc8-pr-cvs1:/tmp/cvs-serv18927
Modified Files:
archery.xml axes.xml fencing.xml maces.xml staffs.xml
swords.xml
Log Message:
Fixes to be more like current OSI.
Index: archery.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/weaponry/archery.xml,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** archery.xml 17 Feb 2003 06:32:00 -0000 1.8
--- archery.xml 23 Aug 2003 05:37:25 -0000 1.9
***************
*** 3,11 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: sereg |
! | )).-' {{ ;'` | Revised by: |
! | ( ( ;._ \\ ctr | Last Modification: created |
=================================================================
-->
<definitions>
<!-- Bow right -->
<item id="13b2">
--- 3,12 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: sereg |
! | )).-' {{ ;'` | Revised by: Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
+
<!-- Bow right -->
<item id="13b2">
***************
*** 64,67 ****
--- 65,69 ----
</item>
+ <!-- Composite Bow -->
<item id="26c2">
<name>composite bow</name>
***************
*** 82,85 ****
--- 84,88 ----
</item>
+ <!-- Repeating Crossbow -->
<item id="26c3">
<name>repeating crossbow</name>
***************
*** 95,102 ****
<speed>41</speed>
<weight>7.0</weight>
! <requires type="str">80</requires>
<type>1007</type>
<category>Weapons\Bows\Repeating Crossbow</category>
</item>
! </definitions>
\ No newline at end of file
--- 98,105 ----
<speed>41</speed>
<weight>7.0</weight>
! <requires type="str">30</requires>
<type>1007</type>
<category>Weapons\Bows\Repeating Crossbow</category>
</item>
! </definitions>
Index: axes.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/weaponry/axes.xml,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** axes.xml 28 Mar 2003 22:12:05 -0000 1.8
--- axes.xml 23 Aug 2003 05:37:25 -0000 1.9
***************
*** 3,13 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: sereg |
! | )).-' {{ ;'` | Revised by: Viper |
! | ( ( ;._ \\ ctr | Last Modification: Modified to AoS |
=================================================================
-->
<definitions>
- <!-- Two Handed Axe -->
<item id="1443">
<id>0x1443</id>
--- 3,13 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: sereg |
! | )).-' {{ ;'` | Revised by: Viper, Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
+ <!-- Two Handed Axe -->
<item id="1443">
<id>0x1443</id>
***************
*** 24,28 ****
<requires type="str">40</requires>
<category>Weapons\Axes\Two Handed Axe</category>
! <type>1002</type>
</item>
--- 24,28 ----
<requires type="str">40</requires>
<category>Weapons\Axes\Two Handed Axe</category>
! <type>1002</type>
</item>
***************
*** 45,48 ****
--- 45,49 ----
</item>
+ <!-- War Axe -->
<item id="13b0">
<id>0x13b0</id>
***************
*** 98,102 ****
</item>
-
<!-- Battle Axe -->
<item id="f47">
--- 99,102 ----
***************
*** 148,155 ****
<speed>33</speed>
<weight>3.0</weight>
! <requires type="str">35</requires>
<type>1002</type>
<category>Weapons\Axes\Double Axe</category>
</item>
! </definitions>
\ No newline at end of file
--- 148,155 ----
<speed>33</speed>
<weight>3.0</weight>
! <requires type="str">45</requires>
<type>1002</type>
<category>Weapons\Axes\Double Axe</category>
</item>
! </definitions>
Index: fencing.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/weaponry/fencing.xml,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** fencing.xml 17 Feb 2003 06:33:53 -0000 1.9
--- fencing.xml 23 Aug 2003 05:37:25 -0000 1.10
***************
*** 3,11 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: sereg |
! | )).-' {{ ;'` | Revised by: |
! | ( ( ;._ \\ ctr | Last Modification: Created |
=================================================================
-->
<definitions>
<item id="fencing_base">
<events>weapons_blades</events>
--- 3,12 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: sereg |
! | )).-' {{ ;'` | Revised by: Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
+
<item id="fencing_base">
<events>weapons_blades</events>
***************
*** 25,29 ****
<attack min="10" max="11" />
<durability><random min="30" max="39" /></durability>
! <speed>56</speed>
<weight>1.0</weight>
<requires type="str">10</requires>
--- 26,30 ----
<attack min="10" max="11" />
<durability><random min="30" max="39" /></durability>
! <speed>49</speed>
<weight>1.0</weight>
<requires type="str">10</requires>
***************
*** 31,34 ****
--- 32,36 ----
</item>
+ <!-- Kryss -->
<item id="1401">
<inherit id="fencing_base" />
***************
*** 48,51 ****
--- 50,54 ----
</item>
+ <!-- Pitchfork -->
<item id="e87">
<inherit id="fencing_base" />
***************
*** 65,68 ****
--- 68,72 ----
</item>
+ <!-- Double Bladed Staff -->
<item id="26bf">
<inherit id="fencing_base" />
***************
*** 82,85 ****
--- 86,90 ----
</item>
+ <!-- Lance -->
<item id="26c0">
<inherit id="fencing_base" />
***************
*** 99,102 ****
--- 104,108 ----
</item>
+ <!-- Pike -->
<item id="26be">
<inherit id="fencing_base" />
***************
*** 116,119 ****
--- 122,126 ----
</item>
+ <!-- Short Spear -->
<item id="1403">
<inherit id="fencing_base" />
***************
*** 133,136 ****
--- 140,144 ----
</item>
+ <!-- Spear -->
<item id="f62">
<inherit id="fencing_base" />
***************
*** 150,152 ****
</item>
! </definitions>
\ No newline at end of file
--- 158,178 ----
</item>
! <!-- War Fork -->
! <item id="f51">
! <inherit id="fencing_base" />
! <name>war fork</name>
! <id>0x1404</id>
! <onehanded />
! <decay />
! <nodye />
! <sellprice>13</sellprice>
! <buyprice>27</buyprice>
! <attack min="12" max="13" />
! <durability><random min="30" max="39" /></durability>
! <speed>43</speed>
! <weight>1.0</weight>
! <requires type="str">35</requires>
! <category>Weapons\Fencing\War Fork</category>
! </item>
!
! </definitions>
Index: maces.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/weaponry/maces.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** maces.xml 28 Mar 2003 22:11:50 -0000 1.6
--- maces.xml 23 Aug 2003 05:37:25 -0000 1.7
***************
*** 3,11 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: DarkStorm |
! | )).-' {{ ;'` | Revised by: |
! | ( ( ;._ \\ ctr | Last Modification: created |
=================================================================
-->
<definitions>
<!-- Mace Base -->
<item id="mace_base">
--- 3,12 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: DarkStorm |
! | )).-' {{ ;'` | Revised by: Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
+
<!-- Mace Base -->
<item id="mace_base">
***************
*** 43,47 ****
<attack min="11" max="13" />
<durability><random min="30" max="40" /></durability>
! <speed>40</speed>
<weight>14.0</weight>
<requires type="str">40</requires>
--- 44,48 ----
<attack min="11" max="13" />
<durability><random min="30" max="40" /></durability>
! <speed>44</speed>
<weight>14.0</weight>
<requires type="str">40</requires>
***************
*** 79,83 ****
<attack min="17" max="18" />
<durability><random min="30" max="59" /></durability>
! <speed>26</speed>
<weight>10.0</weight>
<requires type="str">95</requires>
--- 80,84 ----
<attack min="17" max="18" />
<durability><random min="30" max="59" /></durability>
! <speed>28</speed>
<weight>10.0</weight>
<requires type="str">95</requires>
***************
*** 121,124 ****
--- 122,126 ----
</item>
+ <!-- Scepter -->
<item id="26bc">
<inherit id="mace_base" />
***************
*** 137,139 ****
<category>Weapons\Maces\Scepter</category>
</item>
! </definitions>
\ No newline at end of file
--- 139,141 ----
<category>Weapons\Maces\Scepter</category>
</item>
! </definitions>
Index: staffs.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/weaponry/staffs.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** staffs.xml 17 Feb 2003 06:35:56 -0000 1.7
--- staffs.xml 23 Aug 2003 05:37:25 -0000 1.8
***************
*** 3,11 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: sereg |
! | )).-' {{ ;'` | Revised by: |
! | ( ( ;._ \\ ctr | Last Modification: Created |
=================================================================
-->
<definitions>
<!-- Staff Base -->
<item id="staff_base">
--- 3,12 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: sereg |
! | )).-' {{ ;'` | Revised by: Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: ixes for AoS Support |
=================================================================
-->
<definitions>
+
<!-- Staff Base -->
<item id="staff_base">
***************
*** 65,72 ****
</item>
! <!-- Crook -->
<item id="13f4">
<inherit id="staff_base" />
! <name>crook</name>
<id>0x13f4</id>
<decay />
--- 66,73 ----
</item>
! <!-- Shepherd's Crook -->
<item id="13f4">
<inherit id="staff_base" />
! <name>shepherd's crook</name>
<id>0x13f4</id>
<decay />
***************
*** 82,84 ****
</item>
! </definitions>
\ No newline at end of file
--- 83,85 ----
</item>
! </definitions>
Index: swords.xml
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/definitions/items/weaponry/swords.xml,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** swords.xml 10 May 2003 00:16:40 -0000 1.9
--- swords.xml 23 Aug 2003 05:37:25 -0000 1.10
***************
*** 3,11 ****
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: DarkStorm |
! | )).-' {{ ;'` | Revised by: |
! | ( ( ;._ \\ ctr | Last Modification: Created |
=================================================================
-->
<definitions>
<item id="swords_base">
<type>1001</type>
--- 3,12 ----
| ) (\_ | WOLFPACK 13.0.0 Scripts |
| (( _/{ "-; | Created by: DarkStorm |
! | )).-' {{ ;'` | Revised by: Dreoth |
! | ( ( ;._ \\ ctr | Last Modification: Fixes for AoS Support |
=================================================================
-->
<definitions>
+
<item id="swords_base">
<type>1001</type>
***************
*** 13,16 ****
--- 14,18 ----
</item>
+ <!-- Broad Sword -->
<item id="f5e">
<inherit id="swords_base" />
***************
*** 48,51 ****
--- 50,54 ----
</item>
+ <!-- Scomitar -->
<item id="13b6">
<inherit id="swords_base" />
***************
*** 65,68 ****
--- 68,72 ----
</item>
+ <!-- Longsword -->
<item id="13b8">
<inherit id="swords_base" />
***************
*** 74,78 ****
<sellprice>12</sellprice>
<buyprice>25</buyprice>
! <attack min="14" max="15" />
<durability><random min="30" max="53" /></durability>
<speed>30</speed>
--- 78,82 ----
<sellprice>12</sellprice>
<buyprice>25</buyprice>
! <attack min="15" max="16" />
<durability><random min="30" max="53" /></durability>
<speed>30</speed>
***************
*** 82,85 ****
--- 86,90 ----
</item>
+ <!-- Viking Sword -->
<item id="13b9">
<inherit id="swords_base" />
***************
*** 99,102 ****
--- 104,108 ----
</item>
+ <!-- Katana -->
<item id="13ff">
<inherit id="swords_base" />
***************
*** 130,134 ****
<speed>25</speed>
<weight>16.0</weight>
! <requires type="str">90</requires>
<category>Weapons\Swords\Halberd</category>
</item>
--- 136,140 ----
<speed>25</speed>
<weight>16.0</weight>
! <requires type="str">95</requires>
<category>Weapons\Swords\Halberd</category>
</item>
***************
*** 227,231 ****
<item id="e86">
<inherit id="swords_base" />
! <name>broadsword</name>
<id>0xe86</id>
<onehanded />
--- 233,237 ----
<item id="e86">
<inherit id="swords_base" />
! <name>pickaxe</name>
<id>0xe86</id>
<onehanded />
***************
*** 241,245 ****
<category>Weapons\Swords\Pickaxe</category>
<category>Professions\Miner\Pickaxe (N/S)</category>
! </item>
<!-- Bone Harvester -->
--- 247,251 ----
<category>Weapons\Swords\Pickaxe</category>
<category>Professions\Miner\Pickaxe (N/S)</category>
! </item>
<!-- Bone Harvester -->
***************
*** 259,263 ****
<requires type="str">25</requires>
<category>Weapons\Swords\Bone Harvester</category>
! </item>
<!-- Crescent Blade-->
--- 265,269 ----
<requires type="str">25</requires>
<category>Weapons\Swords\Bone Harvester</category>
! </item>
<!-- Crescent Blade-->
***************
*** 271,281 ****
<sellprice>20</sellprice>
<buyprice>41</buyprice>
! <attack min="13" max="15" />
<durability><random min="30" max="75" /></durability>
! <speed>35</speed>
<weight>8.0</weight>
<requires type="str">55</requires>
<category>Weapons\Swords\Crescent Blade</category>
! </item>
<!-- Scythe -->
--- 277,287 ----
<sellprice>20</sellprice>
<buyprice>41</buyprice>
! <attack min="11" max="14" />
<durability><random min="30" max="75" /></durability>
! <speed>47</speed>
<weight>8.0</weight>
<requires type="str">55</requires>
<category>Weapons\Swords\Crescent Blade</category>
! </item>
<!-- Scythe -->
***************
*** 295,299 ****
<requires type="str">45</requires>
<category>Weapons\Swords\Scythe</category>
! </item>
<!-- Bladed Staff -->
--- 301,305 ----
<requires type="str">45</requires>
<category>Weapons\Swords\Scythe</category>
! </item>
<!-- Bladed Staff -->
***************
*** 313,316 ****
<requires type="str">40</requires>
<category>Weapons\Swords\Bladed Staff</category>
! </item>
! </definitions>
\ No newline at end of file
--- 319,322 ----
<requires type="str">40</requires>
<category>Weapons\Swords\Bladed Staff</category>
! </item>
! </definitions>
|
Update of /cvsroot/wpdev/wolfpack
In directory sc8-pr-cvs1:/tmp/cvs-serv19416
Modified Files:
Timing.cpp boats.cpp item_flatstore.cpp items.cpp items.h
spawnregions.cpp speech.cpp uobject.cpp wolf.dsp wolf.dsw
Log Message:
Reduced memory usage for cItem
Index: Timing.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/Timing.cpp,v
retrieving revision 1.173
retrieving revision 1.174
diff -C2 -d -r1.173 -r1.174
*** Timing.cpp 21 Aug 2003 05:04:35 -0000 1.173
--- Timing.cpp 23 Aug 2003 01:03:30 -0000 1.174
***************
*** 708,722 ****
// Move Boats
case 117:
- if( pItem->tags().get( "tiller" ).isValid() &&
- ( pItem->gatetime() <= currenttime ) )
{
! cBoat* pBoat = dynamic_cast< cBoat* >( FindItemBySerial( pItem->tags().get( "boatserial" ).toInt() ) );
! if( pBoat )
{
! pBoat->move();
! pItem->setGateTime((UINT32)( currenttime + (double)( SrvParams->boatSpeed() * MY_CLOCKS_PER_SEC ) ));
}
}
- break;
};
}
--- 708,725 ----
// Move Boats
case 117:
{
! bool ok = false;
! if( pItem->tags().get( "tiller" ).isValid() &&
! pItem->tags().get("gatetime").toInt(&ok) <= currenttime && ok )
{
! cBoat* pBoat = dynamic_cast< cBoat* >( FindItemBySerial( pItem->tags().get( "boatserial" ).toInt() ) );
! if( pBoat )
! {
! pBoat->move();
! pItem->tags().set("gatetime", (int)( currenttime + (double)( SrvParams->boatSpeed() * MY_CLOCKS_PER_SEC ) ) );
! }
}
+ break;
}
};
}
Index: boats.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/boats.cpp,v
retrieving revision 1.107
retrieving revision 1.108
diff -C2 -d -r1.107 -r1.108
*** boats.cpp 20 Aug 2003 17:10:48 -0000 1.107
--- boats.cpp 23 Aug 2003 01:03:30 -0000 1.108
***************
*** 158,162 ****
pTiller->tags().set( "boatserial", this->serial() );
this->itemserials[ TILLER ] = pTiller->serial();
! pTiller->setGateTime((unsigned int)(uiCurrentTime + (double)(SrvParams->boatSpeed()*MY_CLOCKS_PER_SEC)));
}
--- 158,162 ----
pTiller->tags().set( "boatserial", this->serial() );
this->itemserials[ TILLER ] = pTiller->serial();
! pTiller->tags().set("gatetime", (int)(uiCurrentTime + (double)(SrvParams->boatSpeed()*MY_CLOCKS_PER_SEC)));
}
Index: item_flatstore.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/item_flatstore.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** item_flatstore.cpp 20 Aug 2003 17:10:48 -0000 1.16
--- item_flatstore.cpp 23 Aug 2003 01:03:31 -0000 1.17
***************
*** 259,271 ****
output->chunkData( ITEM_DISABLED, (int)disabled() );
- if( !spawnregion().isNull() && !spawnregion().isEmpty() )
- output->chunkData( ITEM_SPAWNREGION, spawnregion().utf8().data() );
-
if( good() != -1 )
output->chunkData( ITEM_GOOD, (int)good() );
- if( !description().isNull() && !description().isEmpty() )
- output->chunkData( ITEM_DESCRIPTION, description().utf8().data() );
-
if( accuracy() != 100 )
output->chunkData( ITEM_ACCURACY, (unsigned short)accuracy() );
--- 259,265 ----
***************
*** 470,483 ****
break;
- case ITEM_SPAWNREGION:
- spawnregion_ = QString::fromUtf8( input->readString() );
- break;
-
case ITEM_GOOD:
input->readInt( good_ );
- break;
-
- case ITEM_DESCRIPTION:
- desc_ = QString::fromUtf8( input->readString() );
break;
--- 464,469 ----
Index: items.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/items.cpp,v
retrieving revision 1.332
retrieving revision 1.333
diff -C2 -d -r1.332 -r1.333
*** items.cpp 21 Aug 2003 05:04:35 -0000 1.332
--- items.cpp 23 Aug 2003 01:03:31 -0000 1.333
***************
*** 74,79 ****
// constructor
cItem::cItem(): container_(0), totalweight_(0), incognito(false),
! rndvaluerate_(0), dooropen_(0),gatetime_(0),gatenumber_(-1),
! timeused_last(0), sellprice_( 0 ), buyprice_( 0 ), restock_( 1 ), antispamtimer_( 0 )
{
Init( false );
--- 74,79 ----
// constructor
cItem::cItem(): container_(0), totalweight_(0), incognito(false),
! rndvaluerate_(0), dooropen_(0),timeused_last(0), sellprice_( 0 ),
! buyprice_( 0 ), restock_( 1 ), antispamtimer_( 0 )
{
Init( false );
***************
*** 128,133 ****
this->speed_=src.speed_;
this->magic_ = src.magic_;
- this->gatetime_ = src.gatetime_;
- this->gatenumber_ = src.gatenumber_;
this->decaytime_ = src.decaytime_;
this->setOwnSerialOnly(src.ownSerial());
--- 128,131 ----
***************
*** 142,147 ****
this->time_unused=src.time_unused;
this->timeused_last=getNormalizedTime();
- this->setSpawnRegion( src.spawnregion() );
- this->desc_ = src.desc_;
// We're *NOT* copying the contents over
--- 140,143 ----
***************
*** 514,520 ****
addField("restock", restock_);
addField("disabled", disabled_);
- addStrField("spawnregion", spawnregion_);
addField("good", good_);
- addStrField("description", desc_);
addField("accuracy", accuracy_);
--- 510,514 ----
***************
*** 653,658 ****
this->speed_=0; //The speed of the weapon
this->magic_ = 0; // 0=Default as stored in client, 1=Always movable, 2=Never movable, 3=Owner movable.
- this->gatetime_= 0;
- this->gatenumber_= -1;
this->decaytime_ = 0;
this->setOwnSerialOnly(-1);
--- 647,650 ----
***************
*** 665,669 ****
this->time_unused = 0;
this->timeused_last=getNormalizedTime();
- this->spawnregion_ = QString::null;
this->accuracy_ = 100;
}
--- 657,660 ----
***************
*** 2080,2086 ****
restock_ = atoi( result[offset++] );
disabled_ = atoi( result[offset++] );
- spawnregion_ = result[offset++];
good_ = atoi( result[offset++] );
- desc_ = result[offset++];
accuracy_ = atoi( result[offset++] );
--- 2071,2075 ----
***************
*** 2094,2098 ****
{
cUObject::buildSqlString( fields, tables, conditions );
! fields.push_back( "items.id,items.name,items.name2,items.creator,items.sk_name,items.color,items.cont,items.layer,items.type,items.type2,items.offspell,items.more1,items.more2,items.more3,items.more4,items.morex,items.morey,items.morez,items.amount,items.doordir,items.dye,items.decaytime,items.att,items.def,items.hidamage,items.lodamage,items.st,items.time_unused,items.weight,items.hp,items.maxhp,items.rank,items.st2,items.dx,items.dx2,items.intelligence,items.intelligence2,items.speed,items.poisoned,items.magic,items.owner,items.visible,items.spawn,items.priv,items.sellprice,items.buyprice,items.restock,items.disabled,items.spawnregion,items.good,items.description,items.accuracy" ); // for now! later on we should specify each field
tables.push_back( "items" );
conditions.push_back( "uobjectmap.serial = items.serial" );
--- 2083,2087 ----
{
cUObject::buildSqlString( fields, tables, conditions );
! fields.push_back( "items.id,items.name,items.name2,items.creator,items.sk_name,items.color,items.cont,items.layer,items.type,items.type2,items.offspell,items.more1,items.more2,items.more3,items.more4,items.morex,items.morey,items.morez,items.amount,items.doordir,items.dye,items.decaytime,items.att,items.def,items.hidamage,items.lodamage,items.st,items.time_unused,items.weight,items.hp,items.maxhp,items.rank,items.st2,items.dx,items.dx2,items.intelligence,items.intelligence2,items.speed,items.poisoned,items.magic,items.owner,items.visible,items.spawn,items.priv,items.sellprice,items.buyprice,items.restock,items.disabled,items.good,items.accuracy" ); // for now! later on we should specify each field
tables.push_back( "items" );
conditions.push_back( "uobjectmap.serial = items.serial" );
***************
*** 2307,2311 ****
else SET_INT_PROPERTY( "health", hp_ )
else SET_INT_PROPERTY( "maxhealth", maxhp_ )
- else SET_STR_PROPERTY( "spawnregion", spawnregion_ )
else SET_INT_PROPERTY( "owner", ownserial_ )
--- 2296,2299 ----
***************
*** 2404,2409 ****
return 0;
}
- else SET_INT_PROPERTY( "gatetime", gatetime_ )
- else SET_INT_PROPERTY( "gatenumber", gatenumber_ )
else SET_INT_PROPERTY( "decaytime", decaytime_ )
--- 2392,2395 ----
***************
*** 2439,2443 ****
else SET_INT_PROPERTY( "rndvaluerate", rndvaluerate_ )
else SET_INT_PROPERTY( "madewith", madewith_ )
- else SET_STR_PROPERTY( "description", desc_ )
else SET_INT_PROPERTY( "incognito", incognito )
else SET_INT_PROPERTY( "timeunused", time_unused )
--- 2425,2428 ----
***************
*** 2526,2530 ****
else GET_PROPERTY( "health", hp_ )
else GET_PROPERTY( "maxhealth", maxhp_ )
- else GET_PROPERTY( "spawnregion", spawnregion_ )
else GET_PROPERTY( "owner", owner() )
else GET_PROPERTY( "totalweight", totalweight_ )
--- 2511,2514 ----
***************
*** 2563,2568 ****
else GET_PROPERTY( "intelligence", in_ )
else GET_PROPERTY( "intelligence2", in2_ )
- else GET_PROPERTY( "gatetime", (int)gatetime_ )
- else GET_PROPERTY( "gatenumber", gatenumber_ )
else GET_PROPERTY( "decaytime", (int)decaytime_ )
--- 2547,2550 ----
***************
*** 2582,2586 ****
else GET_PROPERTY( "rndvaluerate", rndvaluerate_ )
else GET_PROPERTY( "madewith", madewith_ )
- else GET_PROPERTY( "description", desc_ )
else GET_PROPERTY( "incognito", incognito ? 1 : 0 )
else GET_PROPERTY( "timeunused", (int)time_unused )
--- 2564,2567 ----
Index: items.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/items.h,v
retrieving revision 1.167
retrieving revision 1.168
diff -C2 -d -r1.167 -r1.168
*** items.h 21 Aug 2003 05:04:35 -0000 1.167
--- items.h 23 Aug 2003 01:03:31 -0000 1.168
***************
*** 54,58 ****
Q_PROPERTY ( ushort restock READ restock WRITE setRestock )
Q_PROPERTY ( uchar layer READ layer WRITE setLayer )
- Q_PROPERTY ( QString spawnregion READ spawnregion WRITE setSpawnRegion )
Q_PROPERTY ( int totalweight READ totalweight WRITE setTotalweight )
Q_PROPERTY ( ushort accuracy READ accuracy WRITE setAccuracy )
--- 54,57 ----
***************
*** 78,88 ****
Q_PROPERTY ( short intelligenceReq READ intelligenceReq WRITE setIntelligenceReq )
Q_PROPERTY ( uchar magic READ magic WRITE setMagic )
- Q_PROPERTY ( uint gatetime READ gatetime WRITE setGateTime )
- Q_PROPERTY ( int gatenumber READ gatenumber WRITE setGateNumber )
Q_PROPERTY ( uint decaytime READ decaytime WRITE setDecayTime )
Q_PROPERTY ( uint disabled READ disabled WRITE setDisabled )
Q_PROPERTY ( uint poisoned READ poisoned WRITE setPoisoned )
Q_PROPERTY ( int rank READ rank WRITE setRank )
- Q_PROPERTY ( QString description READ description WRITE setDescription )
Q_PROPERTY ( QString creator READ creator WRITE setCreator )
Q_PROPERTY ( int ownserial READ ownSerial WRITE SetOwnSerial )
--- 77,84 ----
***************
*** 136,140 ****
SI16 hp() const { return hp_; } // Number of hitpoints an item has
SI16 maxhp() const { return maxhp_; } // Maximum number of hitpoints an item has
- QString spawnregion() const { return spawnregion_; }
bool corpse() const { return priv_&0x40; } // Is the item a corpse
bool newbie() const { return priv_&0x02; } // Is the Item Newbie
--- 132,135 ----
***************
*** 167,177 ****
short intelligenceMod() const { return in2_; }
uchar magic() const { return magic_; }
- uint gatetime() const { return gatetime_; }
- int gatenumber() const { return gatenumber_; }
uint decaytime() const { return decaytime_; }
uint disabled() const { return disabled_; }
uint poisoned() const { return poisoned_; }
int rank() const { return rank_; }
- QString description() const { return desc_; }
QString creator() const { return creator_;}
uchar visible() const { return visible_;}
--- 162,169 ----
***************
*** 225,229 ****
void setHp( SI16 nValue ) { hp_ = nValue; flagChanged(); changed( TOOLTIP );};
void setMaxhp( SI16 nValue ) { maxhp_ = nValue; flagChanged(); changed( TOOLTIP );};
- void setSpawnRegion( const QString& nValue ) { spawnregion_ = nValue; flagChanged();};
void setCorpse( bool nValue ) { ( nValue ) ? priv_ |= 0x40 : priv_ &= 0xBF; flagChanged(); changed( TOOLTIP );}
void setNewbie( bool nValue ) { ( nValue ) ? priv_ |= 0x02 : priv_ &= 0xFD; flagChanged(); changed( TOOLTIP );}
--- 217,220 ----
***************
*** 232,236 ****
void setAntispamtimer ( uint data ) { antispamtimer_ = data; flagChanged();}
void setAccuracy( ushort data ) { accuracy_ = data; flagChanged();}
- void setDescription( const QString& d ) { desc_ = d; flagChanged(); changed( TOOLTIP );}
void setCreator( const QString& d ) { creator_ = d; flagChanged(); changed( TOOLTIP );}
--- 223,226 ----
***************
*** 263,268 ****
void setIntelligenceMod( short data ) { in2_ = data; flagChanged(); changed( TOOLTIP );}
void setMagic( uchar data ) { magic_ = data; flagChanged(); changed( TOOLTIP );}
- void setGateTime( uint data ) { gatetime_ = data; flagChanged();}
- void setGateNumber( int data ) { gatenumber_ = data; flagChanged();}
void setDecayTime( uint data ) { decaytime_ = data; }
void setBuyprice( int data ) { buyprice_ = data; flagChanged(); changed( TOOLTIP );}
--- 253,256 ----
***************
*** 396,400 ****
SI16 hp_;
SI16 maxhp_;
- QString spawnregion_;
int totalweight_;
uint antispamtimer_;
--- 384,387 ----
***************
*** 425,430 ****
short in2_; // The intelligence the item gives
uchar magic_; // 0=Default as stored in client, 1=Always movable, 2=Never movable, 3=Owner movable, 4=Locked Down
- uint gatetime_;
- int gatenumber_;
uint decaytime_;
uint disabled_; //Item is disabled, cant trigger.
--- 412,415 ----
***************
*** 436,440 ****
// RANK 10 --> 10*10=100% this item has no malus! RANK 10 is automatically setted if you select RANKSYSTEM 0.
// Vars: LODAMAGE,HIDAMAGE,ATT,DEF,HP,MAXHP
- QString desc_;
QString creator_; // Store the name of the player made this item
SERIAL ownserial_;
--- 421,424 ----
Index: spawnregions.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/spawnregions.cpp,v
retrieving revision 1.43
retrieving revision 1.44
diff -C2 -d -r1.43 -r1.44
*** spawnregions.cpp 20 Aug 2003 17:10:48 -0000 1.43
--- spawnregions.cpp 23 Aug 2003 01:03:31 -0000 1.44
***************
*** 270,274 ****
pi->moveTo( pos );
this->itemSerials_.push_back( pi->serial() );
! pi->setSpawnRegion( this->name_ );
}
}
--- 270,274 ----
pi->moveTo( pos );
this->itemSerials_.push_back( pi->serial() );
! // pi->setSpawnRegion( this->name_ );
}
}
***************
*** 313,317 ****
pi->setPos( pos );
this->itemSerials_.push_back( pi->serial() );
! pi->setSpawnRegion( this->name_ );
}
}
--- 313,317 ----
pi->setPos( pos );
this->itemSerials_.push_back( pi->serial() );
! // pi->setSpawnRegion( this->name_ );
}
}
Index: speech.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/speech.cpp,v
retrieving revision 1.152
retrieving revision 1.153
diff -C2 -d -r1.152 -r1.153
*** speech.cpp 20 Aug 2003 17:10:48 -0000 1.152
--- speech.cpp 23 Aug 2003 01:03:31 -0000 1.153
***************
*** 97,101 ****
// Describing an item
case cPlayer::enDescription:
! pItem->setDescription( speech );
socket->sysMessage( tr( "This item is now described as %1." ).arg( speech ) );
pChar->setInputMode(cPlayer::enNone);
--- 97,101 ----
// Describing an item
case cPlayer::enDescription:
! socket->sysMessage( "Description is not used anywhere :( not implemented right now" );
socket->sysMessage( tr( "This item is now described as %1." ).arg( speech ) );
pChar->setInputMode(cPlayer::enNone);
Index: uobject.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/uobject.cpp,v
retrieving revision 1.107
retrieving revision 1.108
diff -C2 -d -r1.107 -r1.108
*** uobject.cpp 21 Aug 2003 05:04:35 -0000 1.107
--- uobject.cpp 23 Aug 2003 01:03:31 -0000 1.108
***************
*** 78,81 ****
--- 78,82 ----
this->multis_ = src.multis_;
this->name_ = src.name_;
+ this->pos_ = src.pos_;
this->free = src.free;
this->changed( TOOLTIP );
Index: wolf.dsp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/wolf.dsp,v
retrieving revision 1.203
retrieving revision 1.204
diff -C2 -d -r1.203 -r1.204
*** wolf.dsp 20 Aug 2003 17:12:53 -0000 1.203
--- wolf.dsp 23 Aug 2003 01:03:31 -0000 1.204
***************
*** 1,23 ****
# Microsoft Developer Studio Project File - Name="wolf" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
! # ** NICHT BEARBEITEN **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=wolf - Win32 Debug
! !MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
! !MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
!MESSAGE
!MESSAGE NMAKE /f "wolf.mak".
!MESSAGE
! !MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
! !MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
!MESSAGE
!MESSAGE NMAKE /f "wolf.mak" CFG="wolf - Win32 Debug"
!MESSAGE
! !MESSAGE Für die Konfiguration stehen zur Auswahl:
!MESSAGE
! !MESSAGE "wolf - Win32 Release" (basierend auf "Win32 (x86) Console Application")
! !MESSAGE "wolf - Win32 Debug" (basierend auf "Win32 (x86) Console Application")
!MESSAGE
--- 1,23 ----
# Microsoft Developer Studio Project File - Name="wolf" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
! # ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=wolf - Win32 Debug
! !MESSAGE This is not a valid makefile. To build this project using NMAKE,
! !MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "wolf.mak".
!MESSAGE
! !MESSAGE You can specify a configuration when running NMAKE
! !MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "wolf.mak" CFG="wolf - Win32 Debug"
!MESSAGE
! !MESSAGE Possible choices for configuration are:
!MESSAGE
! !MESSAGE "wolf - Win32 Release" (based on "Win32 (x86) Console Application")
! !MESSAGE "wolf - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
***************
*** 26,30 ****
# PROP Scc_ProjName "wolf"
# PROP Scc_LocalPath "."
! CPP=cl.exe
RSC=rc.exe
--- 26,30 ----
# PROP Scc_ProjName "wolf"
# PROP Scc_LocalPath "."
! CPP=xicl6.exe
RSC=rc.exe
***************
*** 50,54 ****
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
! LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt312.lib libmysql.lib flatstore.lib /nologo /subsystem:console /map /machine:I386 /nodefaultlib:"libcmt MSVCRTD" /out:"D:\wolfpack\wolfpack.exe" /libpath:"lib\ZThread\lib" /libpath:"lib\Python\lib" /libpath:"lib\bugreport\lib" /libpath:"flatstore\Release" /opt:ref /opt:nowin98
--- 50,54 ----
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
! LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt312.lib libmysql.lib flatstore.lib /nologo /subsystem:console /map /machine:I386 /nodefaultlib:"libcmt MSVCRTD" /out:"D:\wolfpack\wolfpack.exe" /libpath:"lib\ZThread\lib" /libpath:"lib\Python\lib" /libpath:"lib\bugreport\lib" /libpath:"flatstore\Release" /opt:ref /opt:nowin98
***************
*** 75,81 ****
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
! LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt312.lib libmysql.lib flatstore.lib /nologo /version:12.9 /subsystem:console /map /debug /machine:I386 /out:"..\Wolfpack.exe" /pdbtype:sept /libpath:"lib\bugreport\lib" /libpath:"flatstore\Debug"
# SUBTRACT LINK32 /pdb:none
--- 75,81 ----
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
! LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(QTDIR)\lib\qt-mt320.lib libmysql.lib flatstore.lib /nologo /version:12.9 /subsystem:console /map /debug /machine:I386 /out:"..\Wolfpack.exe" /pdbtype:sept /libpath:"lib\bugreport\lib" /libpath:"flatstore\Debug"
# SUBTRACT LINK32 /pdb:none
Index: wolf.dsw
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/wolf.dsw,v
retrieving revision 1.39
retrieving revision 1.40
diff -C2 -d -r1.39 -r1.40
*** wolf.dsw 12 Jun 2003 02:19:38 -0000 1.39
--- wolf.dsw 23 Aug 2003 01:03:31 -0000 1.40
***************
*** 24,30 ****
Package=<4>
{{{
- Begin Project Dependency
- Project_Dep_Name pythoncore
- End Project Dependency
}}}
--- 24,27 ----
|