Commit Graph

71 Commits

Author SHA1 Message Date
oranges 901fd15b44 Reduce count of meteors
A single meteor spawn will bring the server to it's knees, and there is
zero, I repeat ZERO chance that people are going to fix the causes of
lag when explosions trigger (see powernet/pipenet rebuilds) and atmos
triggering
2015-12-23 00:41:32 +13:00
Xhuis 5f99b313cc Radiation changes 2015-09-26 13:33:27 -04:00
duncathan 51c09f16bf makes all Destroy()'s return properly 2015-08-31 00:21:01 -06:00
phil235 9c7e328225 Fixes huge lag during meteor waves.
Adding a safety check to throw_at()'s while loop to prevent an infinite loop. It happened whenever the object was stuck in a space loop (broken space cube). Now throw_at()'s loop automatically stops after 600 iterations (the object moved 600 tiles). Lag also reduced by not throwing the meteor debris (ores, meat, etc) that the meteor spawns.
2015-08-14 23:49:25 +02:00
Firecage 4688c2c969 Fixes proc arguments 2015-07-15 23:52:35 +02:00
TheVekter 6b5676bd7f Tweaked the meteor screen shake a bit, grav anoms now throw shit, and rods don't gib anymore. 2015-06-22 01:19:12 -05:00
Incoming 69e8fc2eb1 Antags with escape alone can win jointly with other antagonists, it only matters that normies are kept off.
Non-antagonists can be brought on a shuttle without endangering an escape alone victory provided they're kept locked in the brig.

Escaping to syndicate space abord the nuke op shuttle is now a valid way to escape in terms of objectives.
2015-05-29 19:02:52 -04:00
phil235 081bae6740 Fixes broken ui action button for toggling chef apron's sleeves and owl's wings.
Fixes surviving suicide
Fixes suicide damage overlays.
Fixes ninja regen "clothes warm" spam message. (moving rad armor check outside of apply_effect)
Fixes ninja smoke bomb count.
Fixes dead shaved corgi
Fixes lipozine still being in code.
Fixes flattening boxes requiring them to have their window opened.
Fixes armor softening message from disarm attack.
Fixes player being forced to play spiders without choosing.
2015-04-14 13:54:36 +02:00
phil235 493c3e038a Splitting food.dmi into smaller files.
Repathing meat slab, meatsteaks and cutlets into meat/slab, meat/steak, meat/rawcutlet, meat/cutlet. Fixes issue with food naming when containing meat stuff, especially human meat.
Bowl filled with reagent now gets a nice half transparent overlay with the reagents colors (like beaker)
Mousedroping a snack that's on a table now opens the tablecrafting window.
Fixes not being to store items in plain bread, plain cake and cheesewheel.
2015-04-03 21:59:56 +02:00
Remie Richards 5fc7af7fbf attackby() now has an argument containing the parameters of the click that called it. Items placed on tables now center their icon where the user clicked. this is NOT true for racks, since racks look organised in their sprite.
Items reset their pixel_x and pixel_y values on pickup.
2015-02-19 13:02:43 +00:00
phil235 732a54fe63 Making all meat subtypes of snacks/meat
Adding specific cutlets and raw cutlets for a lot of types of meat.
Enabling reagent transfer from ingredients to resulting dish for foodtablecrafting
Adjusting tablecraft food recipes reagents accordingly.
Adding raw pastry base and pastry base food and including it into certain recipes.
2015-02-08 21:36:54 +01:00
carnie e7b105488d Resolves #6923 - Mistake made during merging meant that some gamemode objectives were using hardcoded area-type-lists for checking objective completion. (This is why allow/disallow lists are dumb) 2015-01-10 03:57:02 +00:00
carnie a029a49392 SubSystem rewrite
Misc:

+Fixes unreported issue with initializing lighting on a specific zlevel

+Fixes two similar issues with moveElement and moveRange. Where fromIndex or toIndex could be adjusted incorrectly in certain conditions. Potentially causing bad-sorts, or out of bound errors.

+Rewrites listclearnulls(list/L) to no longer iterate through L.len elements for every null in the list (plus 1). i.e. went from L.len*(number_of_nulls+1) list-element reads (best-case), to L.len list-element reads (worst-case)

+New proc/getElementByVar(list/L, varname, value) which finds the first datum in a list, with a variable named varname, which equals value. You can also feed it atoms instead of lists due to the way the in operator functions.

+Fixes an unreported issue with Yota's list2text rewrite. Under certain conditions, the first element would not be converted into a string. Causing type-mismatch runtimes.

+New global map_ready variable. This is not fully implemented yet, but will be used to avoid duplicate calls to initialize() for map objects.

+All turfs now maintain references to all lights currently illuminating them. This will mean higher memory use unfortunately, due to the huge number of turfs. However, it will speed up updateAffectingLights significantly. I've used list husbandry to reduce baseline memory usage, so it shouldn't be any worse than some past atmos modifications memory-wise.

-Removed 'quadratic lighting', can add this back at some point. Sorry.

+modified the way lum() works slightly, to allow turfs to have overridden delta-lumen. i.e. space cannot be illuminated more than its default ambiance. This allowed removal of some iffy special-snowflake lighting areas implemented by somebody else.

+Lighting images in the dmi can now use arbitrary naming schemes. It is reliant on order now. This allows the dmi to be replaced by simply dropping in a new dmi.

-Removed all subtypes of /area/shuttle. Shuttles now create duplicate 'rooms' of /area/shuttle. (More on this later). This will conflict with most maps. Guide on how to fix to follow.

+All verbs/tools relating to world.tick_lag were refactored to use world.fps. However old config text for setting tick_lag will still work (it converts the value to fps for you)

+MC stats improved using smoothing. They now have their own tab so they dont get in the way when you're playing as an admin.

-removed the push_mob_back stuff due to conflicting changes. Sorry Giacom.

_OK, NOW THE ACTUAL INTERESTING STUFF_

Following systems moved over to subsystem datums:
air_master
garbage_manager
lighting_controller
process_mobs (aka Life())
nanomanager
power
sun
pipenets
AFK kick loops
shuttle_controller (aka emergency shuttle/pods), supply_shuttle and other shuttles
voting
bots
radio
diseases
events
jobs
objects
ticker

Subsystems hooks and variables should be commented fairly in-depth. If anything isn't particularly clear, please make an issue.

Many system-specific global variables have been refactored into

All tickers which previously used world.timeofday now use world.time

some subsystems can iterate before round start. this resolves the issue with votes not working pregame
2014-12-31 13:25:41 +00:00
AndroidSFV 453f04c7ee Fixes #6097 by adding a necessary argument 2014-11-27 21:41:00 -06:00
Menshin c724b54892 * Fixes meteors infinigibs and infinisplosions (#5226)
* Made meteors more threatening
* Added an ultra rare station buster Tunguska meteor
* Made admin-spawned meteor not instantly delete
* Added several types of meteor waves : normal, threatening, catastrophic which are randomly choose at wave start
* Meaty ores now spawn blood on tiles instead of busting them
* Differentiates regulars and reinforced girders ex_act
* Changelog included
2014-11-08 14:43:48 +01:00
Menshin 5037e880d8 Fix the lag produces by oversized Pumpkings bounds interacting with space transitions.
Reduced the number of meteors to 10 waves of 3 over 40 seconds.
2014-10-31 19:48:55 +01:00
Menshin a26a05450f Fixed meteors not properly qdel'ing (fixing infinigibs or infinisplotions) and variables initialization.
Admin-spawned meteors should not instaqdel anymore (fixes #5226)
2014-10-31 13:55:40 +01:00
Remie Richards 4fd3b7c80b Pumpkin meteors 2014-10-05 13:10:31 +01:00
Aranclanos 8b26ade33a Hotfix for meteors lagging to shit 2014-09-19 03:57:33 -03:00
Aranclanos d15b9efe71 Removes some commented out code and some debug messages leftlovers from my previous commit. 2014-09-15 10:03:14 -03:00
Aranclanos 53f48fa599 Cleaned up the turf Entered() procs:
-Removed check for infrared beams. (it checked each time that anything moved)
-Removed 'movement_disabled' check, the verb is also completely removed.

For space Entered() turfs:
-Removed check for meteor
Now meteors and immovable rods will use the same proc to determinate their start and finish, while moving they'll check in which z level they are, deleting themselves if they leave it.
-Removed spawn() to move objects being pulled between z levels
Replaced the step() from mob pulling movement code and replaced them with Move()

For asteroid Entered turfs:
-Removed check for mining cyborgs, now it will be next to the janitor borg check to clean the floor.

Mecha code got a small clean, removing the Entered() calls from there.
2014-09-15 03:26:58 -03:00
Aranclanos bfd9ce393e Removes two unused vars of the gamemode datums, uplink_welcome and uplink_uses.
uplink_welcome was actually used as a greeting text from uplinks, now they'll always show "Syndicate Uplink Console:". The removed strings weren't nothing important, actually, with the addition of the uplinks in cargo, you were able to metagame the ongoing gamemode.
2014-09-11 06:06:59 -03:00
Firecage 6c7af5eb32 SPANCLASSES!!!!! 2014-08-26 09:52:13 +02:00
AndroidSFV 629d3a3edc Moved intercept to the parent post_setup 2014-07-29 14:56:48 -05:00
Cheridan 2d547d4d82 Refactors space dust
Meteors spin

renames meateors
2014-04-23 15:01:19 -05:00
Cheridan f83f1932b2 Meteor code uses OOP principles a little better now
Adds new types of meteors with different effects.
Meteors drop some ore when they hit.
2014-04-23 01:37:44 -05:00
Cheridan 4d8160ab14 meteorhit() is kill 2014-04-22 12:16:02 -05:00
MrPerson 9eee3e5067 First pass at a qdel() garbage collection system for tgstation
Works pretty well. If it can't GC something, it'll just del() it and be done.
Speed is amazing, holy shit.

New procs you should be aware of:
qdel(atom/movable) - sets up an object for garbage collection. Call this rather than del(atom/movable).
atom/movable/Destroy() - called right before the object is GC'd, so it still has a loc. Also called if the object is del()'d.
new controller - garbage.dm has all the details on this. Basically it nulls all references on GC'd objects and force del() them if necessary.
Generally speaking, objects should use Destroy() for behavior prior to deletion rather than Del(). You should also always call the parent so the object gets the right gc_destroyed var set.

ISSUES:
Tries to GC mobs atm. This actually works for new players, not so much for humans/monkies/simple_animals/anything. I'm guessing it needs to clear out their mind and HUD and maybe other things.
Gibbing is really bugged. It works, but the overlays just sit there for awhile and ugh. I'm very tempted just to del() mob/living and mob/camera and call it a day.
qdel() equipment doesn't unequip the item.
Pipes don't generally GC correctly. Debugging suggests they get referenced in many pipenets and that isn't cleared properly. However some do work fine. Need assistance here.
Bots don't GC, probably in the radio controller.
Lots of other shit doesn't GC but it's hard to find them because of the pipe spam.
I think I'm calling Destroy() twice by accident.
2014-02-23 14:55:12 -08:00
Giacomand 80f2076bcc * Fixed the party alarm from only working in areas with a certain light level.
* Reduced a lot of duplicated code in the party alarm.

* Added a shield range variable for the anti-breach shield generators.
* Changed the shield range to 4, making them more useful.
* Fixed a bug with the deployed_shields list not being cleared after the shields are down.

* Fixed a runtime with shake_camera()
2013-12-19 22:07:52 +00:00
Giacomand 9d49d997fb Removed spawn() 2013-12-02 21:12:24 +00:00
Giacomand f968f80300 Tweaked meteors to stop playing unnecessary sounds.
Made meteors shake the screen more if you're closer and shake the screen of everybody on the station a little (big meteors only).
2013-11-29 20:33:24 +00:00
AlexanderUlanH 87b72833bd Added the labor shuttle 2013-11-02 15:16:39 -04:00
Giacomand 84248eb6ab Made containment fields shock you when you walk into them, not when you walk near them.
Field generators, that are active, will now shock you; they did before but it was because of the containment field near it.
Changed the type path of the field generator and containment field:

/obj/machinery/field_generator -> /obj/machinery/field/generator
/obj/machinery/containment_field -> /obj/machinery/field/containment

Changed the map to have the new type paths.
The containment field will now shock you when it is created.
The containment field layer is a little above objects, so objects going through are under the field icon.
Cleaned up a bit of the code.
2013-10-25 15:01:04 +01:00
giacomand@gmail.com a04eb3f275 -Changed emitters.
Emitters will now need to be wired.
Emitter type has changed to /obj/machinery/power/emitter
Fixed cables not correctly disconnecting power machinery from the powernet after being removed.

-Fixed a typo with smashing tables/racks.
-Fixed maps having incorrect types.
-Fixed singularity EMPing when at stage 1.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5423 316c924e-a436-60f5-8080-3fe189b3f50e
2012-12-30 10:47:25 +00:00
johnsonmt88@gmail.com 240d910679 Meteor guns!
It's a gun that fires meteors! Admin spawn only.

They do not shoot 'real' meteors, they shoot a projectile that acts like meteors.

Note: The meteor projectile calls 'meteorhit()' which some objects and turfs do not have, so some things won't really be affected by them.

The gun itself has a potato battery, meaning it starts with a charge of 100 and has a maximum charge of 300. It costs 100 to fire and recharges 100 every 5 ticks.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4538 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-25 16:39:18 +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
johnsonmt88@gmail.com aa498bd0c1 I'm a fucking moron.
Apparently that meteor gun I forgot to comment out had the wrong path in its attack_self(). Instead of the meteor gun shooting meteors, every /obj/item/weapon could shoot them when clicked on.

Here's a pile of runtime fixes to go along with this.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4409 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-14 22:40:30 +00:00
johnsonmt88@gmail.com 26ce5db5b0 Meteors and Space dust (now that they work again) will no longer have an effect on singularity containment. Field generators and Emitters are protected.
I added a check to meteor and space dust Bump() directly because changing ex_act() on the machines themselves would make the machines immune to bombs and C4.
Hopefully fixes issue 716.

light/process() was added back in causing lights to use power as they were meant to. Recently lights have been made brighter causing more power to be drained. As a result the engineering APC would not last very long. The station using a lot of power is a good thing since the singularity produces an incredible amount of power, so to keep this higher power demand but still give engineers a fighting chance to set up the singularity, I've bumped up the engineering APC's starting battery power.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4401 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-14 16:39:01 +00:00
johnsonmt88@gmail.com cc544acea0 Removed the tensioner. It was buggy and really only served to ruin rounds. The original purpose of the tensioner before Poly reworked it was to act as a stat tracker, which is now meaningless since erro has a fully operational stat tracker in place.
As a result, cyborg death squads were also removed.

This also fixes meteors and space dust so that they properly take into account the borders of the map. Please do not hardcode numbers when we have defines in place.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4374 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-11 20:02:31 +00:00
elly1989@rocketmail.com 40c2238c24 Minds part 3
Removed mob/var/original_name. Totally replaced by datum/mind/var/name now.

Fixed round-end reports. They're now sort of follow the same format as each-other. Not sure how the ew format will work out on high-pop servers. if it's too spammy I'll tone it down a bit.

Fixed pais. Their life.dm got unticked. Resolves issue 759

Known issues: 
Borgs keep their human objectives when borged. I'll try playing with the way minds work for silicon mobs whe the freeze is over.
No way to edit minds when they are not attached to a mob. Need some sort of debugging tool.
datum/mind/var/mob/living/original isn't realy used for much. I could probably replace it with something more useful.
Changeling stuff is messy. The changeling object should be referenced by the mind not the mob (or something)

Part 4 on hold will try to address some of these known issues. Taking a break from minds to fix some issues on the tracker now (like lighting)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4355 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-09 23:41:01 +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
ericgfwong@hotmail.com 4f108d520d -Small fix for meteor spawns
-Color-coded escape shuttle doors appropriately

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4112 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-19 15:40:12 +00:00
ericgfwong@hotmail.com 531bd3c908 Fixed Issue 664
-Meteors were getting deleted as soon as they spawned as they were spawning out of bounds

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4111 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-19 08:14:49 +00:00
musketstgstation@gmail.com ddc7f45a13 Integrated BS12's improved uplink code, courtesy of SkyMarshal.
This means items now spawn in your hand if possible, items are sorted into categories, and only items you have enough telecrystals to purchase will be displayed.  Also, the same basic code is now used for PDA, headset and nuke-round uplinks, and it should be easier to add new items.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3216 316c924e-a436-60f5-8080-3fe189b3f50e
2012-02-29 22:50:14 +00:00
baloh.matevz a3e938a3af Because I am unable to do anything properly today... finished the revert while retaining a bugfix.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2696 316c924e-a436-60f5-8080-3fe189b3f50e
2011-12-16 03:59:32 +00:00
baloh.matevz a0e33d9105 reverted meteor change.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2695 316c924e-a436-60f5-8080-3fe189b3f50e
2011-12-16 03:54:16 +00:00
baloh.matevz 88236b7461 Fixed the meteors not exploding on impact error.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2685 316c924e-a436-60f5-8080-3fe189b3f50e
2011-12-14 19:58:24 +00:00
baloh.matevz b04400e11c Hopefully made meteor mode more deadly.
Fixed meteor spawning so all the meteors that are set to spawn actually hit, but noticed that 50 meteors every 5 seconds proved itself to be way too laggy when all of them actually spawned properly and aren't deleted at soon as they're created due to being on the map's edge. Instead I lowered it to 6 per second.

Wrote this in the changelog.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2679 316c924e-a436-60f5-8080-3fe189b3f50e
2011-12-14 02:32:33 +00:00
baloh.matevz e7bea1cfb0 Escape pods added to test out the concept.
Before you read on this revision is more of a thing being tested than a feature that is guaranteed to stay.

4 escape pods have been added to the station, 2 at arrivals, 1 in engineering and one in security. Each pod is 4x3 tiles in size with a window tile, 2 chairs and a door. So it has 3 floor tiles to stand on.

Pods don't have any sort of emagging capabilities, hijacking a pod does not count as completing the escape alone objective, surviving in a pod however counts towards the escape alive objective. Cult members in pods do not count towards the acolyte victory.

Changelog updated with listed changes.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2663 316c924e-a436-60f5-8080-3fe189b3f50e
2011-12-11 19:51:04 +00:00