Commit Graph

18 Commits

Author SHA1 Message Date
elly1989@rocketmail.com
6e274cd395 New lighting, it's essentially just the old DAL system with a queue.
Comments for lighting:
	Like sd_DAL (what we used to use), it changes the shading overlays of areas by splitting each type of area into sub-areas
	by using the var/tag variable and moving turfs into the contents list of the correct sub-area.

	Unlike sd_DAL however it uses a queueing system. Everytime we  call a change to opacity or luminosity
	(through SetOpacity() or SetLuminosity()) we are  simply updating variables and scheduling certain lights/turfs for an
	update. Actual updates are handled periodically by the lighting_controller. This carries additional overheads, however it
	means that each thing is changed only once per lighting_controller.processing_interval ticks. Allowing for greater control
	over how much priority we'd like lighting updates to have. It also makes it possible for us to simply delay updates by
	setting lighting_controller.processing = 0 at say, the start of a large explosion, waiting for it to finish, and then
	turning it back on with lighting_controller.processing = 1.

	Unlike our old system there is a hardcoded maximum luminosity. This is to discourage coders using large luminosity values
	for dynamic lighting, as the cost of lighting grows rapidly at large luminosity levels (especially when changing opacity
	at runtime)

	Also, in order for the queueing system to work, each light remembers the effect it casts on each turf. This is going to
	have larger memory requirements than our previous system but hopefully it's worth the hassle for the greater control we
	gain. Besides, there are far far worse uses of needless lists in the game, it'd be worth pruning some of them to offset
	costs.

	Known Issues/TODO:
		admin-spawned turfs will have broken lumcounts. Not willing to fix it at this moment
		mob luminosity will be lower than expected when one of multiple light sources is dropped after exceeding the maximum luminosity
		Shuttles still do not have support for dynamic lighting (I hope to fix this at some point)
		No directional lighting support. Fairly easy to add this and the code is ready.
		When opening airlocks etc, lighting does not always update to account for the change in opacity.

Explosions now cause lighting to cease processing temporarily.

Moved controller datums to the code/controllers directory. I plan on standardising them.
"Master","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply Shuttle","Emergency Shuttle","Configuration","pAI" controller datums can be accessed via the debug controller verb (used to be the debug master controller verb)
Supply shuttle now uses a controller datum. Shuttles tend to arrive up to 30 seconds late, this is not a bug.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4537 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-25 16:06:57 +00:00
elly1989@rocketmail.com
4073ac9b00 Replaced all 'file.extension' references with 'relativepath/file.extension' using a script by thvortex of ss13-daedalus.
All credits to the author for this handy little script.
I Committed the modified python script to tool directory. Although it needs to be in the root folder of your repo to work.

To notice the improved compile times, in dreammaker go to Build > Preferences > and untick "automatically set file_dir for subfolders"

If this commit inteferes with any large projects just revert it, do your thing, then rerun the script. Easy-peasy.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4488 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-18 16:33:40 +00:00
baloh.matevz
cac628a640 - In preparation of fixing issue 585, which extends far further than just the things listed there, as well as to standardize the many incarnations of satchel-type code (pill boxes, mining satchels, hydroponics satchels, etc.) I have added some functions to storage type items:
New variables:
var/use_to_pickup = if 1, the storage item also works like satchels, which means you can use it on something else to pick it up.
var/display_contents_with_number = if 1, the items in the storage item are grouped by type with the number of items being displayed. See the screenshot.
var/allow_quick_empty = if 1 on creation, it adds a verb that allows you to empty the item with one click
var/allow_quick_gather = if 1 on creation, it adds a verb which allows you to switch between pick-up methods. one-per-click or all-on-tile. Same as satchels worked. use_to_pickup must be 1 for any of that to matter.
var/collection_mode = 1;  //0 = pick one at a time, 1 = pick all on tile

New procs:
/obj/item/weapon/storage/proc/can_be_inserted(obj/item/W as obj, stop_messages = 0)
- Returns 0 or 1, depending on whether the item W can be inserted
/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W as obj)
- Inserts the item into the storage item and calls all the procs it needs to. Doesn't check whether the item can fit tho, tha'ts what can_be_inserted() is for.
/obj/item/weapon/storage/proc/remove_from_storage(obj/item/W as obj, atom/new_location)
- Removes item W from the storage object and sets it's loc to new_location or get_turf(src) if one is not provided.
/obj/item/proc/on_exit_storage(obj/item/weapon/storage/S as obj)
- Called after the object has been removed from the storage item S. The object's loc is already set to the new one.
/obj/item/proc/on_enter_storage(obj/item/weapon/storage/S as obj)
- Called after the object has been inserted into the storage item S. The object's loc is already set to S.

I made satchels work on this new code. The rest will be added to it soon. See the screenshot.

Screenshot:
http://www.kamletos.si/new%20satchels.png

This is yet another big change and it is very possible that bugs will come from it. Please report them to me or on the tracker.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4451 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-16 23:35:53 +00:00
sieve32@gmail.com
7bf6788082 -OPTIMIZATION TIME
-Almost every instance of 'for(mob in world)' has been killed. Because GODDAMN was it being run a bunch. Instead, a series of global lists have been made, and they are all handled auto-magically through New()'s, Del()'s, Login()'s, death()'s, etc...

Lists are as follows:
-mob_list : Contains all atom/mobs by ref
-player_list : Like mob_list, but only contains mobs with clients attached
-admin_list : Like player_list, but holds all mobs with clients attached and admin status
-living_mob_list : Contains all mobs that ARE alive, regardless of client status
-dead_mob_list : Contains all mobs that are dead, which comes down to corpses and ghosts
-cable_list : A list containing every obj/structure/cable in existence
Note: There is an object (/obj/item/debuglist) that you can use to check the contents of each of the lists except for cables (Since getting a message saying "a cable," x9001 isn't very helpful)

These lists have been tested as much as I could on my own, and have been mostly implemented. There are still places where they could be used, but for now it's important that the core is working. If this all checks out I would really like to implement it into the MC as well, simply so it doesn't check call Life() on every mob by checking for all the ones in world every damn tick.

Just testing locally I was able to notice improvements with certain aspects, like admin verbs being MUCH more responsive (They checked for every mob in the world every time they were clicked), many sources of needless lag were cut out (Like Adminwho and Who checking every single mob when clicked), and due to the cable_list powernet rebuilding is MUCH more efficient, because instead of checking for every cable in the world every time a powernet was broken (read: A cable was deleted), it runs though the pre-made list, and even with a singulo tearing all the way across the station, the powernet load was VERY small compared to pretty much everything else.

If you want to know how any of this works, check global_lists.dm, there I have it rigorously commented, and it should provide an understanding of what's going on.

Mob related in worlds before this commit: 1262
After: 4
I'm helping


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4179 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-26 03:04:05 +00:00
sieve32@gmail.com
459c558898 -Make holodeck eswords a child of obj/item/weapon/holo instead of regular eswords, clumsy check removed as a result, and you can no longer do things like cutting through walls or doors or what have you. (Fixes Issue 665)
-Redid icons to be more optimized at compile by setting icon = 'icons/folder/icon.dmi' instead of just icon = 'icon.dmi', meaning that Dream Maker doesn't have to search through every single file for every single .dmi. This shouldn't lead to any errors because of how I went about it, plus the fact that Dream Maker would have freaked out if I screwed something up. Also moved around 2 icons that weren't sorted well.

r4146 compile time: 1 minute, 40 seconds
r4147 compile time: 45 seconds

[VGTG]

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4147 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-23 00:48:51 +00:00
elly1989@rocketmail.com
48088b79d9 ugh...this was horrible. I'm really sorry if I fucked anything up, I was literally going braindead towards the end.
Replaced every l_hand = and r_hand = and all that if(hand) crap to use standardised procs. This means we can use procs like Dropped() reliably as they will always be called when things are dropped.

Thorough documentation to come. But generally, if you want a mob's icons to update after deleting something in the inventory...use drop_from_inventory(the_thing_you_wanna_drop) just before deleting it. If you wanna put something in a mob's hands use put_in_hands() (or one of the variants). It'll try putting it in active hand first, then inactive, then the floor. They handle layers, overlays, screenlocs calling various procs such as dropped() etc for you. Easy

mob.equipped() is now mob.get_active_hand() because there was another totally unrelated proc named equipped() and stuff was confusing.

Weakening was made instantaneous.

Minor optimisations for human/handle_regular_status_updates(). I'll port these changes over to the other mobs next. Basically it should stop it constantly incrementing every status effect even after death.

umm... bunch of overlays related fixes... I think that's everything. :/

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3900 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-23 21:24:45 +00:00
sieve32@gmail.com
834b9f98d1 TIME FOR CONTENT
-New item, the Sheet Snatcher. Picks up mineral sheets (Excluding wood and sandstone, since they aren't 'sheets' per se). Standard one holds up to 300 sheets, minerborgs get 500. Will hold any combination of sheets, and auto-stacks them when emptied, works similarly to the ore satchels
-Mech drills can mine sand, with diamond drills getting an extended volume
-Mech Diamond Drills will drill through rwalls again, but it is pretty slow, sometimes taking 5-6 tries just to get the plating off
-Mining Ripleys no longer runtime to hell when the status panel is opened
-Fixes Issue 572, now when floors are created, they assimilate air from nearby tiles, so if it's in space, there will be no air, etc...
-Bumping an asteroid wall as a human or borg with a pickaxe in your hand will make you automattically start mining the wall, feels MUCH faster due to ignoring click_delay()
-Miner borgs with the satchel in their active modules will automatically scoop up the ores
-Clicking an asteroid turf with the satchel will function just as if you clicked on an ore (if any are present)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3867 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-19 02:46:29 +00:00
johnsonmt88@gmail.com
3ae7acf8f2 Committed for Sieve:
Fixed an error in door_assembly.dm regarding glass doors not getting sprites.

Cleaned up astroid floor code.
-Bombing astroid floors (sand) will now 'dig' up sand.

TK users no longer get shocked while bashing grilles using TK.
- Range check on grille shocking. Fixes Issue 419.

Added to the lighting checks for Plantmen. They should no longer starve on the shuttle. Fixes Issue 471.

Bombs now affect people inside lockers. Fixes issue 208.
- Modified Sieve's original change so that the contents of the locker get severity+1. Meaning a weaker severity meaning the locker offers some protection.

Vending machines and mass driver buttons now leave fingerprints. Fixing issue 542.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3800 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-12 04:45:38 +00:00
johnsonmt88@gmail.com
db9f4f33a3 Added checks for the player being dead, stunned, unconcious ect... to:
- Timers
- Remote Signallers (Fixes issue 325)
- Proximity Sensors
- Infared Sensors (Man.. these really need to be fixed.. or just re-done entierly)

Cargo shuttle:
- People in the area of the cargo shuttle get gibbed when the shuttle shows up. (Fixes issue 508)
- Renamed 'Dock' to 'Away' because Station -> Dock is confusing...

Committing for Sieve:
- The toggle throw hotkey (end) now works with TK (Fixes issue 523)
- Borg diamond drills now properly dig sand (I still don't understand why they don't just have a shovel...)

Updated changelog to reflect some of these changes.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3747 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-06 05:22:17 +00:00
petethegoat@gmail.com
bf52ba01d4 Fixed issue 301.
Fixed a syringe gun runtime.
Added WJohnston's silver head ID, and his new asteroid floor sprites.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3443 316c924e-a436-60f5-8080-3fe189b3f50e
2012-04-12 20:19:21 +00:00
baloh.matevz
1c7d34ddc3 - commented out the old adamantine recipe.
- removed adamantine ore
- removed adamantine mineral walls
- added a new adamantine recipe, but it's commented out for the moment
- added a new material, mythril, with a nice urist sprite
- added a mythril coin
- added a mythril recipe, but it's commented out for the moment

So yeah, adamantine will have a new recipe and will no longer be gained from ore and added mythril to the procesisng unit, stacking unit and coin press.

NOTE TO URIST:
to enable this, you only have to uncomment the part with your name in machine_processing.dm Everything else is already in working order. Oh and you need to make the coin and sheet sprite.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3146 316c924e-a436-60f5-8080-3fe189b3f50e
2012-02-18 17:20:16 +00:00
quartz235@gmail.com
b3f7865754 moving all the git stuff over to this so people who don't want to spend 8 years figuring out the bass ackward git system can actually run our server code
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2983 316c924e-a436-60f5-8080-3fe189b3f50e
2012-01-25 05:05:55 +00:00
ryantennessee@yahoo.com
24d262f19d Drills and Ddrills now dig sand faster than shovels. Changed digging to produce 5 glass ore instead of 4.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2646 316c924e-a436-60f5-8080-3fe189b3f50e
2011-12-09 01:01:37 +00:00
baloh.matevz
7b185e6cbf Asteroid (floor) is now called... 'asteroid' and not plating
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2483 316c924e-a436-60f5-8080-3fe189b3f50e
2011-11-04 21:30:19 +00:00
mport2004@gmail.com
17ed3899c4 Fixed the map/code issues that the body bags caused.
/obj/effects is now /obj/effect.
/obj/station_objects is now /obj/structure.
Did a bit of minor blob work. 
The Bay 12 body bags were replaced with closets because having two sets of code that do almost the same thing is silly.
Changed back a few of the last jobproc edits as the remove from list before assign was a check to see if the mob was fucked up and if it was remove it so we did not check it again as it would still be fucked up.
The medbay/tox monkeys names are random once more.  More random name monkeys will help with changeling and clean up the observe/mob menus.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2324 316c924e-a436-60f5-8080-3fe189b3f50e
2011-10-03 10:28:57 +00:00
baloh.matevz
e8c6b08419 - Object tree grouped a bit more.
Two new categories were made: station_objects and effects. station_objects, which I'm sure someone will want renamed to 'structures' contains the objects which don't need process() or power code.

Effects contains objects which are either landmarks, triggers, spawners or decal.

Screenshot:
http://www.kamletos.si/new%20object%20tree.PNG

I didn't notice any bugs, but with a revision editing 276 files of byond code, you never know.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2323 316c924e-a436-60f5-8080-3fe189b3f50e
2011-10-03 06:54:28 +00:00
Superxpdude@gmail.com
20fcf5b66f NEW MINING STATION; OPINIONS AND BUGS GO HERE: http://nanotrasen.com/phpBB3/viewtopic.php?f=7&t=5733
Added some new area sprites for the mining station.
Lots of new sprites by Petethegoat.
Made sprite for the disposal delivery chute facing the other way.
Moved the mining-related sprites to their own file.
Updated the Mining Consoles, and the 3 mining production machines with new sprites.
UPDATED CHANGELOG.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2013 316c924e-a436-60f5-8080-3fe189b3f50e
2011-08-16 04:14:44 +00:00
baloh.matevz
52c900520c - Dismantled KeelingsStuff.dm into separate files, where the stuff in it fits.
- Dismantled mining.dm into 15 or so dm files and placed it out of WIP into modules.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1827 316c924e-a436-60f5-8080-3fe189b3f50e
2011-07-10 16:49:29 +00:00