Alexander Gavrilov
0b32d374db
Implement SOIL/STONE substitution logic, and add compat in mapexport.
2012-04-19 23:02:30 +04:00
Alexander Gavrilov
4b87f1bcac
Refactor MapCache: make it parse everything that is known re tiles & mats.
2012-04-19 19:17:07 +04:00
Alexander Gavrilov
f655a0986d
Sync to changes in the data structure definitions.
2012-04-19 11:03:29 +04:00
Alexander Gavrilov
3beb2ebf25
Export the onStateChange event to core lua context & add some docs.
2012-04-17 11:45:09 +04:00
Petr Mrázek
7946cafc86
Merge https://github.com/jaxad0127/dfhack
2012-04-16 22:37:07 +02:00
Alexander Gavrilov
9c25351281
Add a template to make using lua_pcallk a bit more convenient.
2012-04-16 18:01:21 +04:00
Alexander Gavrilov
3e4863bc80
Integrate coroutines with table-based error handling.
...
Properly attach stack traces to errors passing the resume boundary.
Replaces coroutine.resume and coroutine.wrap with appropriately
modified versions, and adds a Lua::SafeResume function for C++.
2012-04-16 14:45:04 +04:00
Alexander Gavrilov
48e4717dd2
Try working around some msvc problems.
2012-04-16 10:59:55 +04:00
Alexander Gavrilov
a1756a864c
Implement a way to do prompts from core context.
...
The trick obviously is doing it without forcing DF to wait suspended.
Fortunately, lua has built-in coroutine support, so the interactive
prompt can simply yield and rely on the external loop to do the job.
To use this however the REPL had to be replaced with lua code.
2012-04-15 21:50:22 +04:00
Alexander Gavrilov
14709e5d45
Add an official core lua context, and allow plugins to send events to it.
...
- This context requires core suspend lock and asserts it in a few places.
- Special 'event' objects are introduced. They can be invoked as
functions, in which case they iterate all their fields and call
them as functions. Errors are printed and consumed.
- When a plugin is opened by the core context, events registered in
a special array are linked to it. The system is organized so as to
avoid even trying to pass the event to lua if the module isn't loaded.
2012-04-15 19:09:25 +04:00
Jared Adams
f3c7a685f5
Make tiletypes more useful
...
* Paint, filter, and brush state is now saved between calls.
* Added 'all' paint option to set material, shape, special, and variant at
the same time.
* Added tiletypes-here (like liquids here, except is uses the saved brush
settings)
* Added tiletypes-here-point (like liquids here, always only the tile under
the cursor)
* Added tiletypes-command: runs tiletypes commands seperated by ';' tokens
(affects saved state)
* Make the internal workings match liquids a bit more
* Give brush objects a descriptor string
* Make Core::cheap_tokenise available
2012-04-15 08:40:19 -06:00
Alexander Gavrilov
cb27a1d839
Fix typo in the 1MB constant.
2012-04-15 11:31:05 +04:00
Petr Mrázek
fc38371b29
Clean up some chaos in old code.
2012-04-15 01:15:15 +02:00
Alexander Gavrilov
cb49c92b99
Allow plugins to export functions to lua with safe reload support.
...
- To ensure reload safety functions have to be wrapped. Every call
checks the loaded state and locks a mutex in Plugin. If the plugin
is unloaded, calling its functions throws a lua error. Therefore,
plugins may not create closures or export yieldable functions.
- The set of function argument and return types supported by
LuaWrapper is severely limited when compared to being compiled
inside the main library.
Currently supported types: numbers, bool, std::string, df::foo,
df::foo*, std::vector<bool>, std::vector<df::foo*>.
- To facilitate postponing initialization until after all plugins
have been loaded, the core sends a SC_CORE_INITIALIZED event.
- As an example, the burrows plugin now exports its functions.
2012-04-14 19:44:07 +04:00
Alexander Gavrilov
7a34a89f53
Add burrow subcommands to modify burrow unit and tile sets.
2012-04-14 14:12:59 +04:00
Alexander Gavrilov
2f54a48e63
Add a plugin that makes selected burrows auto-grow on digging.
2012-04-13 21:41:42 +04:00
Alexander Gavrilov
37cfb1fdcd
Add unit position and container api.
2012-04-13 16:10:19 +04:00
Alexander Gavrilov
2d8611a480
Add core api for moving items between ground and containers.
2012-04-12 18:37:27 +04:00
Alexander Gavrilov
38a8c43a25
Reverse-rebase the vtable pointers printed to stderr.log.
2012-04-12 11:21:25 +04:00
Alexander Gavrilov
583ccdcc0c
Support pre-initializing vtable pointers from symbols.xml
2012-04-12 10:54:53 +04:00
Alexander Gavrilov
5d5502ae34
Update the item owner modification api and export it to lua.
2012-04-11 20:10:31 +04:00
Alexander Gavrilov
0c2b78b96b
Add api for manipulating burrows to the core.
2012-04-11 19:42:05 +04:00
Alexander Gavrilov
c7b922250b
More maps api refactoring and renaming.
...
getBlockAbs is a very confusing name; getTileBlock is better.
2012-04-11 12:01:27 +04:00
Alexander Gavrilov
59ddbfacb7
Implement item occupancy tracking in MapCache.
2012-04-10 20:19:41 +04:00
Alexander Gavrilov
b15d2da819
Get rid of some obsolete api functions, and restructure MapCache.
2012-04-10 18:21:19 +04:00
Alexander Gavrilov
93c795cfc3
Job module api tweaks: add a namespace to match others and some funcs.
2012-04-10 11:43:36 +04:00
Alexander Gavrilov
45ae2ed67f
Pull a few utility functions into the core and publish to lua.
2012-04-07 19:08:30 +04:00
Alexander Gavrilov
0daafef690
Wrap MaterialInfo for lua.
2012-04-06 19:56:19 +04:00
Alexander Gavrilov
903e9ee716
Export a few more functions to lua.
2012-04-06 11:21:28 +04:00
Alexander Gavrilov
9eed9f0d24
Wrap a few utility functions defined on the c++ side for lua.
2012-04-05 19:55:59 +04:00
Alexander Gavrilov
28a741082f
Encode & decode names in utf-8 for transfer in remote messages.
...
That's the encoding required by the protobuf spec.
2012-04-05 18:10:16 +04:00
Alexander Gavrilov
3afed43cdb
Experimental: try wrapping a dfhack api function.
2012-04-05 11:59:39 +04:00
Alexander Gavrilov
d1b27418a6
Add a World::GetPersistentData version that auto-adds if not found.
2012-04-05 11:32:23 +04:00
Alexander Gavrilov
2d4af4ac3e
A few more utility functions for lua.
2012-04-03 20:02:01 +04:00
Alexander Gavrilov
a8fe0eccb4
Add functions for checking validity of lua wrapper objects.
2012-04-02 22:02:04 +04:00
Petr Mrázek
2a998a5b8a
Merge https://github.com/quietust/dfhack
2012-04-02 13:42:18 +02:00
Quietust
06da0f9720
Fix coord/coord2d division/modulo operators to properly handle negative numbers (fixes some glitches with revflood and possibly other utils)
2012-04-01 19:44:35 -05:00
Alexander Gavrilov
e3d50b9b04
Optimize wrapper: use pointers instead of strings as most frequent keys.
2012-04-01 18:34:04 +04:00
Alexander Gavrilov
a3e526abdb
Add df.is_instance(a,b) to check if typeof(b) is subtype of typeof(a).
...
Allows both objects and types as arguments. Also accepts nil and
primitives as b, returning nil.
2012-04-01 17:32:57 +04:00
Alexander Gavrilov
afe4eba957
Improve performance of the persistent data api, and wrap it for lua.
...
Use an stl table for string keys to avoid linear cost of lookup.
This uncovered a bug in the new luaL_getsubtable function.
2012-04-01 16:43:40 +04:00
Petr Mrázek
7ff728b6fc
Track world and map changes separately for plugin_onstatechange
2012-04-01 02:56:54 +02:00
Petr Mrázek
4bac6edd79
Merge https://github.com/rh73/dfhack
2012-04-01 00:29:00 +02:00
Robert Heinrich
39787e9cd5
Renamed digging commands to uniformly start with 'dig*'(vdig -> digv etc). Added command digl, diglx (dig layerstone instead of veins). Updated readme.rst.
2012-03-31 15:41:55 +02:00
Alexander Gavrilov
0f41608ed4
Pull console output support and REPL out of dfusion into core lib.
2012-03-31 15:40:54 +04:00
Quietust
07bb51946f
Fix bug in MapCache - squash veins with the correct priority
2012-03-29 18:59:07 -05:00
Alexander Gavrilov
ec48405f0a
Fix mistake: static initialization code cannot access other static objects.
...
Specifically, the eid->type() call depends on the order of linking.
2012-03-29 22:56:06 +04:00
Alexander Gavrilov
85c91c92d8
Implement __pairs and __ipairs for DF objects.
...
Structs enumerate fields in memory order in pairs().
Containers & biftields enumerate int indexes in ipairs, and
string keys in pairs (i.e. using index-enum for arrays).
2012-03-29 14:39:13 +04:00
Alexander Gavrilov
bc74c5984e
Implement recursive transfer of values from lua to c++ structures.
...
E.g. df.global.cursor = { x = 1, y = 2, z = 3 }. The lua data
must be represented by raw lua tables.
For structs, the entries in the table are assigned to matching fields.
For containers, if a 'resize' field is missing or nil, the table is
treated like 1-based lua array, and the container is resized to match
its # length. Otherwise, the field must be either an explicit number,
true or false. If it is true, the size is selected by the highest index
in the table. After that, entries are copied using 0-based indices.
For pointers, the table must match the target object. If the pointer
is null, the object is auto-allocated; this can be controlled using
the 'new' field, the value of which will be passed to df.new().
2012-03-27 21:47:52 +04:00
Alexander Gavrilov
157f23be5c
Fix warnings.
2012-03-26 12:42:05 +04:00
Alexander Gavrilov
00a5bfcf3e
Work around a msvc issue with spurious specialization ambiguity errors.
2012-03-26 10:46:51 +04:00
Alexander Gavrilov
d0090e9551
Fix lua wrapper: create one function identity instance per method.
...
Otherwise all methods of the same prototype are lumped into one.
2012-03-25 21:12:20 +04:00
Alexander Gavrilov
1d81cb56ba
Make enum attributes accessible through the lua wrapper.
...
TODO: make them completely read-only.
2012-03-25 19:12:59 +04:00
Alexander Gavrilov
0412aaebe4
Add a delete() method to the objects in the lua wrapper.
2012-03-25 15:48:18 +04:00
Alexander Gavrilov
7209e4d3f2
Attach static methods to the type objects in the lua wrapper.
2012-03-25 15:20:58 +04:00
Alexander Gavrilov
8d345be6e7
Expose virtual methods in the lua wrapper.
2012-03-25 14:06:05 +04:00
Quietust
947adeac83
Silence warning 4482
2012-03-24 18:18:29 -05:00
Alexander Gavrilov
517b2ffadb
Merge remote-tracking branch 'peterix/master'
2012-03-24 16:30:07 +04:00
Alexander Gavrilov
0c7fc233bd
Support resize/erase/insert for containers, and allow any index in BitArray.
2012-03-24 16:28:53 +04:00
Petr Mrázek
8a847dbaba
Tweaks and cleanups
...
Removed t_virtual.
Made lua use C++ compiler
Removed many silly exception types from Error.h and renamed the rest.
Removed Brush classes from tiletypes plugin.
2012-03-24 12:13:51 +01:00
Alexander Gavrilov
d865d54a90
Split LuaWrapper.cpp into two files.
2012-03-24 13:25:10 +04:00
Alexander Gavrilov
053bfe345c
Implement allocation and copy for c++ objects in the lua wrapper.
2012-03-24 12:43:53 +04:00
Alexander Gavrilov
2b1f8aa2bb
Add a _field method that returns refs to struct and container items.
...
Hack: allocate ad-hoc pointer identities as full lua userdata.
2012-03-23 12:55:29 +04:00
Alexander Gavrilov
ccc8fac166
Get rid of the write mode field table in metamethods.
...
Two separate tables can be confusing, e.g. if a builtin field
overrides a writable custom one only in the read table.
2012-03-23 10:56:29 +04:00
Alexander Gavrilov
ead28db451
Remove the return type from lua_read, because it always returns 1.
2012-03-23 09:38:49 +04:00
Alexander Gavrilov
27824642d9
Minor refactoring of container indexing and object allocation.
2012-03-22 10:56:32 +04:00
Alexander Gavrilov
ad10303cec
Implement bitfields and add a _kind metadata field to types and objects.
2012-03-21 20:04:37 +04:00
Alexander Gavrilov
9b78fffe92
Support containers in the lua wrapper.
2012-03-21 13:26:53 +04:00
Alexander Gavrilov
73e138c9fd
Support ordinary struct and class fields.
2012-03-20 21:34:27 +04:00
Alexander Gavrilov
6c661bcaa9
Add support for primitive type fields in lua wrapper.
2012-03-20 13:56:29 +04:00
Alexander Gavrilov
dbbd9acfad
Export the type tree with enum keys to lua.
2012-03-19 20:12:27 +04:00
Alexander Gavrilov
296d3a0af3
Skeleton type metadata for future use in lua bindings.
2012-03-19 16:59:11 +04:00
Alexander Gavrilov
d4626f9751
Add unit professions and filtering on status.
2012-03-18 15:35:38 +04:00
Alexander Gavrilov
e33414fa69
Export unit curse, squad, death and burrow info.
2012-03-18 13:52:39 +04:00
Alexander Gavrilov
b9ecd03fe2
Make the server suspend the core around calls unless disabled.
...
I expect the majority of methods will have to suspend the core
first thing anyway, so this will reduce typing and bugs.
Also get rid of the "me->" ugliness by splitting threadFn.
2012-03-18 11:04:15 +04:00
Alexander Gavrilov
aa63493bb8
Add a ListSquads request.
2012-03-17 20:04:15 +04:00
Alexander Gavrilov
368b92f81f
Add a RPC call to retrieve unit info.
...
For performance reasons, material flag arrays are changed to use ints,
with enum item name mappings retrievable via a different RPC call.
2012-03-17 17:41:56 +04:00
Alexander Gavrilov
15ccfbb086
Add a ListMaterials remote call for bulk download of basic material info.
2012-03-17 15:36:42 +04:00
Alexander Gavrilov
58eb199036
Add many new template functions for enums & bitfields.
...
An incompatible change: ENUM_KEY_STR returns std::string now.
The old behavior is available via enum_item_key_str function.
2012-03-17 12:52:22 +04:00
Alexander Gavrilov
14d6a62e1d
Move CoreService to a separate file.
2012-03-17 12:09:30 +04:00
Petr Mrázek
3168a2ef62
Add a tiletype function to get basic shapes from shapes. Track modules.
2012-03-16 20:41:07 +01:00
Alexander Gavrilov
976fa18d72
A number of interface tweaks in RemoteClient.
...
- Associate a default output stream with the whole connection.
If not explicitly specified in the constructor, uses stdout.
- Add methods that use this default stream to RemoteFunction.
- Add easily usable wrappers for CoreSuspend and CoreResume.
2012-03-16 14:11:46 +04:00
Quietust
5464564ef6
Merge branch 'master' of git://github.com/angavrilov/dfhack
...
Conflicts:
library/xml
2012-03-15 20:12:01 -05:00
Quietust
4d66218783
Update bprobe to print civzone subtypes
2012-03-15 20:09:56 -05:00
Petr Mrázek
c72fb76316
MSVC fixage for the new socket API
2012-03-15 22:05:33 +01:00
Quietust
57a41a0deb
Fix indentation
2012-03-15 11:50:38 -05:00
Alexander Gavrilov
f84b1539a8
Change to the traits representation of enum and bitfield properties.
2012-03-15 20:46:08 +04:00
Alexander Gavrilov
4eb4811777
Make the DF suspend lock recursive, and add RPC calls for batch suspend.
...
The idea is that if you have to execute many RPC calls, it is
faster to suspend once. The service class takes care to auto-resume
in the destructor in case the client just disappears.
2012-03-15 15:33:19 +04:00
Alexander Gavrilov
605ee9669a
Plugin-exported functions now actually work.
2012-03-15 14:06:50 +04:00
Alexander Gavrilov
87f925e72e
Add support for exporting functions from plugins, with example in rename.
...
TODO: test by actually calling them remotely.
2012-03-15 13:01:23 +04:00
Alexander Gavrilov
e7851f5abd
Improve support for void RPC functions, dfhack-run, etc.
2012-03-15 11:07:43 +04:00
Alexander Gavrilov
560e977f05
Implement trivial RPC interface for dfhack via TCP & protobufs.
...
Use it to make an executable capable of calling commands remotely.
2012-03-14 19:57:29 +04:00
Alexander Gavrilov
c42e2ff053
Support crafts and add a couple of options in workflow.
2012-03-14 12:09:02 +04:00
Quietust
a4ce1fff13
Update MapCache to allow decoding tiles underneath ice and constructions, and allow revflood to take those into account
2012-03-13 15:40:38 -05:00
Petr Mrázek
75113b715a
Misc fixes for warnings...
2012-03-10 16:03:11 +01:00
Alexander Gavrilov
8cc82d5876
Make plugins accept explicit output stream references.
...
This is an incompatible change to the plugin ABI.
The Console is not thread-safe unless used indirectly
via color_ostream_proxy, so everything should use their
per-thread stream.
2012-03-10 15:55:42 +04:00
Alexander Gavrilov
b2737e2bed
Pull out a colored text output interface out of the Console class.
2012-03-10 13:29:33 +04:00
Clayton Hughes
47bbe1a3ff
Fixed up formatting, debug messages in new Windows Hotkey stuff.
2012-03-09 01:07:47 -08:00
Clayton Hughes
3d1ce32785
Windows now detects hotkeys using the correct keyboard layout.
2012-03-09 00:56:09 -08:00
Alexander Gavrilov
9b071097de
Fix advtools metal-detector
...
Trader items are now inside tables, and thus not in the block
item lists. Thus it is necessary to scan the global item vector
and look up blocks by coords.
2012-03-07 18:10:53 +04:00
Petr Mrázek
f83db86258
Use tile buffers!
2012-03-05 02:24:02 +01:00
Petr Mrázek
a45fc82743
First pass at windowing, track df2mc, stonesense
2012-03-05 01:34:04 +01:00
Petr Mrázek
d33e9a9770
Sort layer materials in prospector by depth.
2012-03-03 23:18:12 +01:00
Petr Mrázek
7fe8762852
Get rid of Simple namespace, Gui module is now a namespace.
2012-03-03 14:38:24 +01:00
Petr Mrázek
2682c54fce
Fix horrible errors and make MSVC shut upt about non-issues.
2012-03-01 01:29:55 +01:00
Petr Mrázek
95ac3db542
Fix normal hooks.
2012-02-28 12:59:02 +01:00
Petr Mrázek
731472a478
Add eggy hooks (linux only for now)
2012-02-28 03:37:56 +01:00
Petr Mrázek
58e3813d56
Fix more MSVC fail, make console recognize 'man' command.
2012-02-22 19:54:07 +01:00
Petr Mrázek
a9c9ac98fe
Silence some MSVC warnings.
2012-02-22 19:28:40 +01:00
Petr Mrázek
15cc08debc
Fix the fail.
2012-02-22 19:02:06 +01:00
Petr Mrázek
0807baf0c0
Merge https://github.com/mikestewart/dfhack
2012-02-22 15:22:19 +01:00
Petr Mrázek
8ee27e182a
Hidden weather command raw value override
2012-02-22 15:21:29 +01:00
Mike Stewart
baea253578
Merge remote-tracking branch 'upstream/master'
2012-02-21 23:31:53 -08:00
Mike Stewart
14b471a459
Add ability menu/area map width reading and writing to the Gui module, and use the new information in follow to properly center the screen regardless of menu configuration. Also general fixing and cleanup in follow.
2012-02-21 23:30:44 -08:00
Petr Mrázek
2cd2ee9b0c
New plugin interface
2012-02-21 18:19:17 +01:00
Quietust
d394dc406b
Update t_building, change subtype into a union of all possible subtypes (depending on type)
2012-02-18 11:34:52 -06:00
Petr Mrázek
448e270421
Merge https://github.com/quietust/dfhack
...
Conflicts:
plugins/mapexport/mapexport.cpp
2012-02-14 09:59:33 +01:00
Petr Mrázek
bdbfbf5988
Fix catsplosion.
2012-02-14 09:37:30 +01:00
Quietust
2fd2e3dce2
Get rid of t_effect_40d and EFFECT_TYPE - they're in the XML now, and they're actually correct too
2012-02-13 21:56:47 -06:00
Quietust
2ddd3df3a8
When searching for tile types, only require candidate tile to match variant or special if it actually has them
2012-02-13 20:32:41 -06:00
Quietust
d15d38d536
Finish conversion, fix compile errors
2012-02-13 19:17:38 -06:00
Quietust
d0a8c2edd8
Move TileTypes to XML, part 1 - a bunch of stuff is now broken
2012-02-13 16:56:33 -06:00
Petr Mrázek
f600928ec1
Move catsplosion, tweak for build targets under MSVC.
2012-02-13 17:43:41 +01:00
Quietust
9f43d61c2c
Fix MapCache crash when in Arena mode
2012-02-13 09:56:35 -06:00
Alexander Gavrilov
e39852ff2e
Make BitArray(unsigned) treat the argument as the number of bytes.
2012-02-12 18:06:00 +04:00
Alexander Gavrilov
1047c2517d
Add size-defining constructors for BitArray.
2012-02-12 17:44:19 +04:00
Alexander Gavrilov
c04a140713
Add a new DfArray class to match generated headers.
...
Also, add working assignment and copy constructor to BitArray, and
change the unsafe conversion to int from an operator to a method.
2012-02-12 16:44:35 +04:00
Petr Mrázek
ed53ee7031
Update to use the new symbols file.
2012-02-11 19:24:44 +01:00
Petr Mrázek
8527547cbe
Merge branch 'master' into purge
...
Conflicts:
library/DataDefs.cpp
2012-02-11 18:48:17 +01:00
Alexander Gavrilov
f469fab1e6
Use globals defined by the latest codegen.
2012-02-11 16:27:12 +04:00
Petr Mrázek
aee5efe7c0
Make it run on Windows, re-added more missing globals to memory.xml
2012-02-10 02:35:51 +01:00
Quietust
952f621ee2
Synchronize with df-structures
2012-02-08 22:35:22 -06:00
Petr Mrázek
8f680dcf94
Make it build and run on linux (no stonesense, df2mc, dfusion)
2012-02-09 03:07:26 +01:00
Petr Mrázek
f7d8635be1
Remove fat from memory.xml, simplify memory.xml loading, break
...
everything.
2012-02-08 13:22:42 +01:00
Quietust
0d11d1b79c
Synch with structures changes
2012-02-07 15:37:21 -06:00
Alexander Gavrilov
878bc3d3a1
Implement pre-embark estimate in prospector.
...
Requires careful tuning of the vein density computation.
2012-02-02 22:14:49 +04:00
Quietust
a82f4c9138
Cleanup code to get rid of MSVC warning C4482
2012-01-31 10:17:27 -06:00
Quietust
8a4740c479
Make all "origin" fields strongly typed, and fix building.origin to actually be meaningful
2012-01-28 14:12:41 -06:00
Quietust
9e40228767
Adjust Maps typedefs a bit
2012-01-28 13:54:59 -06:00
Quietust
ccad6efeb8
Remove UTF-8 BOMs
2012-01-27 09:47:14 -06:00
Petr Mrázek
1d7ed14442
Merge https://github.com/quietust/dfhack
...
Re-add some get* forms of module calls.
Conflicts:
plugins/mapexport/mapexport.cpp
2012-01-27 06:27:57 +01:00
Petr Mrázek
d5d4875532
Make things work properly.
2012-01-27 05:54:26 +01:00
Quietust
fe34e07d2b
Re-add the ability to request simplified copies of Constructions, Engravings, and Plants; also fix the "isValid" checks for those modules to actually be meaningful
2012-01-26 20:29:59 -06:00
Quietust
cfca04f2d2
Cleanup TileTypes
...
* Group tiletypes by 0x10 instead of by 10
* Change tile type parameters to use int16_t consistently
* Various description fixes
2012-01-26 10:38:18 -06:00
Quietust
902e0c4d90
Strip out old offsets from Gui module and use df::global vars where available
2012-01-24 22:18:21 -06:00
Quietust
26730dc6c2
Kill the Constructions module
2012-01-24 16:11:48 -06:00
Quietust
8861e93848
Kill the Vegetation module, replacing it with the same 3 simple methods used in Engravings
2012-01-24 12:02:12 -06:00
Quietust
6d1af090c5
Tweak Engravings.h
2012-01-24 11:57:47 -06:00
Quietust
f8ce959402
Kill the Engravings module
2012-01-24 11:53:49 -06:00
Quietust
cc7c7795a1
Kill the Units module, and add another pair of methods to the Items module to simplify some things
2012-01-24 11:32:34 -06:00
Quietust
02d75e2c94
Building module is gone, so this function doesn't exist anymore
2012-01-24 10:59:26 -06:00