* Improvised Weapons Part 1: Shotgun & Rifle Adds new sprites for ammo, the improvised rifle, the improvised shotgun. Adds a hand saw. Adds things to the crafting menu. Adds things to the autolathe menu. * PR not yet ready - just cleaning issues. Just trying to remark some of the issues resolved so I can see where I'm at a bit easier. * Reverting changes to shotgun ammo names in the autolathe. No point calling it 12G when there's no 20G anymore. * Weapon weight + sprite improvements. Makes sprites for gun parts bulkier with a low alpha pixel outline to make them easier to click on. They also look a bit closer to what their final product will be. * oops forgot the " * Revert "Merge branch 'master' into Improvised-Part-1" This reverts commit 1e43d228d1bc35b0582244ed0bd91934573b3cdd, reversing changes made to 207e9fccd4e8cffbe9ed26401a6f516fc44245dd. * Revert "Revert "Merge branch 'master' into Improvised-Part-1"" This reverts commit 22d421d010c4a4c5c5e26f49fe6bffcf6198df42. * My Github or environment isn't flipping out. no more. Derp. Also projectile damage modifier fixed. I can actually compile without hundreds of errors. * Made small weapon parts have w_class small. I was testing it out and seeing the trigger assembly take so much space in my inventory seemed really odd. * Duplicate definition refused. Hurrdurr I suck. Glad I gave this a quick look-voer. Shotgun description edited to reflect the 0.8x damage modifier. * Resolved tools.dmi merge conflict. Just took the dmi from master and put the new sprites on at the end. * DNM - Trying to see why usptream tools.dmi with my stuff added on the end is conflicting. * Please don't conflict
Datum Component System (DCS)
Concept
Loosely adapted from /vg/. This is an entity component system for adding behaviours to datums when inheritance doesn't quite cut it. By using signals and events instead of direct inheritance, you can inject behaviours without hacky overloads. It requires a different method of thinking, but is not hard to use correctly. If a behaviour can have application across more than one thing. Make it generic, make it a component. Atom/mob/obj event? Give it a signal, and forward it's arguments with a SendSignal() call. Now every component that want's to can also know about this happening.
See this thread for an introduction to the system as a whole.