Commit Graph

51 Commits

Author SHA1 Message Date
Watermelon914
375a20e49b Refactors most spans into span procs (#59645)
Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs.
Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines.

Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing.
Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc.

(Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
2021-06-14 13:03:53 -07:00
Jared-Fogle
45c14f6330 Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking (#52761)
Adds SIGNAL_HANDLER, a macro that sets SHOULD_NOT_SLEEP(TRUE). This should ideally be required on all new signal callbacks.

Adds BLOCKING_SIGNAL_HANDLER, a macro that does nothing except symbolize "this is an older signal that didn't necessitate a code rewrite". It should not be allowed for new work.

This comes from discussion around #52735, which yields by calling input, and (though it sets the return type beforehand) will not properly return the flag to prevent attack from slapping.

To fix 60% of the yielding cases, WrapAdminProcCall no longer waits for another admin's proc call to finish. I'm not an admin, so I don't know how many behinds this has saved, but if this is problematic for admins I can just make it so that it lets you do it anyway. I'm not sure what the point of this babysitting was anyway.

Requested by @optimumtact.
Changelog

cl
admin: Calling a proc while another admin is calling one will no longer wait for the first to finish. You will simply just have to call it again.
/cl
2020-08-20 09:11:28 +12:00
ShizCalev
4b6500fb67 Makes all anchored changes use setAnchored(), COMSIG_MOVABLE_SETANCHORED now only sent if an AM's anchored var has changed for more reliable usage. (#52254)
* Converts everything to use setAnchored() + other fixes

* Fixed singulo debug

* singulo again

* forgot to move the vv_edit proc

* caught that this time :)

* changes

* Update code/game/atoms_movable.dm

Co-authored-by: Rohesie <rohesie@gmail.com>

Co-authored-by: Rohesie <rohesie@gmail.com>
2020-07-21 02:20:26 -03:00
jdawg1290
62676e72a8 Force LF line endings with gitattributes and convert repo (#52266)
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-07-16 03:02:40 +03:00
Rohesie
7bef84f009 Mass-replacement of stat to machine_stat (#48758)
Living and machine stat vars are pretty different, one uses flags and other number-defines.
This should make some other mass-replacements and searches a bit easier.
2020-01-24 12:37:17 +13:00
MrPerson
e8ba7a1f68 Solar improvements (#48110)
Improves the code for the solar panels a lot. It's still pretty bad but to make it better I'd have to dive into powernets.

Solar panels visually rotate a full 360 degrees instead of being locked to ordinal directions only. In 513 this uses vis_contents, in 512 it uses a regular overlay that needs to be reset constantly.
Adds a signal from the sun SS when the sun moves.
Timed tracking is now measured in degrees per minute instead of degrees per hour.
2019-12-09 13:47:57 -05:00
Qustinnus
a394ccdc2b Material datum chairs & tables and applies materials to all items (Now with less pain for mining & RnD) (#46525)
removes materials list from items, uses custom_materials instead. This might introduce some bugs so we should testmerge this for a while (and Ill test stuff locally as much as I can)

this also adds material crafting to sheets. Test case being chairs. In the future we can add stuff like tables, walls, doors etc.

also applies materials to everything, with fixes, which can close #46299
2019-10-08 11:06:02 -04:00
spookydonut
860985f193 Changes obj_break on machines to use parent calls (#46485)
The way stat |= BROKEN was done was a mess, this makes everywhere use obj_break with proper parent calls and adds a signal for when a machine enters the broken state.
Why It's Good For The Game

Better code quality, more signals.
2019-09-16 16:45:24 +12:00
Rob Bailey
2029163d33 playsound vary boolean define conversion (#46254)
About The Pull Request

Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage.
Also changes a couple of places where a list was picked from instead of using get_sfx internal calls

This was done via regex:
(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1
(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0
full sed commands:
/(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE
/(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE

I'm not very good with regex and these could probably be optimized, but they worked.
Why It's Good For The Game

Code usability
2019-08-30 18:45:20 +12:00
kingofkosmos
df1fecc58c Adds notice-span to visible_messages with no spans (#46044)
About The Pull Request

Adds 'notice' span class to all visible_messages which had no span class, making all those black messages blue.
Why It's Good For The Game

This should help differentiate action-messages from talking-messages in the chat. More actions will be blue, thus black talking-messages should pop out more.
2019-08-26 20:50:00 +12:00
Tad Hardesty
2f212e16a3 Remove redundant anchored=TRUE from machines 2018-05-27 19:23:37 -07:00
ACCount
100c4b6114 Adds new helper: use_tool, shakes things up in tool code (#35095)
* small changes

* Adds a use_tool helper and changes some tools to use it

* Ports most tool operations to use_tool

* Converts more tool operations to use_tool and tool_act

* Changes some things to default_unfasten_wrench

* Improves tool_behavior support in mech construction

* Code review memes

* Fixes all instant use_tool calls failing

* Code improvements

* merge fixes
2018-02-06 11:02:53 +01:00
uraniummeltdown
24204d4e28 replaced solar panel sprites with better ones 2018-01-29 11:02:29 -06:00
vuonojenmustaturska
5233ec1f6a Finishes the forceMove port (#33519)
* a thing

* thingy 2: electric boogaloo

* Obligatory webeditor commit
2017-12-15 10:39:34 +13:00
Ian Turk
7460f2c5b8 Replaced flags with flags_1 2017-08-16 13:01:15 -06:00
Jordan Brown
af4d9a85c9 Repaths /obj/item/weapon to /obj/item (#29929) 2017-08-16 10:38:51 -03:00
Lzimann
58d0f12c5c Removes a great amount of machinery copypasta with circuitboards.
Also changes New -> Initialize in most of them.
renamed: `code/game/machinery/computer/computer.dm` -> `code/game/machinery/computer/_computer.dm`
renamed: `code/game/machinery/machinery.dm` -> `code/game/machinery/_machinery.dm`
Moved all circuitboards to a new folder at `code/game/objects/items/weapons/circuitboards`
2017-08-09 11:10:48 -03:00
ShizCalev
59ef81245b Changes some 1s and 0s to TRUE and FALSE (#29144) 2017-07-10 10:31:34 -04:00
Joan Lung
1feb0021a1 Removes now-unnecessary obj_integrity definitions 2017-07-08 14:02:50 -04:00
oranges
ae3740d84b use_power var now uses a define to reflect it not being a bool
NO_POWER_USE
IDLE_POWER_USE
ACTIVE_POWER_USE

holopads now correctly set use_power and the active_power_usage
2017-06-29 23:50:16 +00:00
Lzimann
3e34eb9e3f Changes all sounds to be lower case, plus standardizes their references 2017-06-11 00:38:45 -03:00
Joan Lung
a3be7a9226 Refactors toolspeed to be a multiplier instead of a divisor 2016-12-09 16:55:51 -05:00
phil235
5f835bfc26 Obj damaging system, acid damage, and fire damage refactor (WIP) (#20793)
Please refer to #20867 and #20870 for a easier view of the changes. Those two PRs show all meaningful changes (hopefully) and doesn't show the files changed with just 3 lines changed.

This PR does three things:

    It makes all children of /obj/ use the same damage system.
    Previously to make your new machine/structure be destroyable you needed to give it a var/health, and its own version of many damage related proc such as bullet_act(), take_damage(), attacked_by(), attack_animal(), attack_hulk(), ex_act(), etc... But now, all /obj/ use the same version of those procs at the /obj/ level in code/game/obj_defense.dm. All these obj share the same necessary vars: obj_integrity (health), max_integrity, integrity_failure (optional, below that health level failure happens), and the armor list var which was previously only for items, as well as the resistance_flags bitfield. When you want your new object to be destroyable, you only have to give it a value for those vars and maybe override one proc if you want a special behavior but that's it. This reorganization removes a lot of copypasta (most bullet_act() version for each obj were nearly identical). Two new elements are added to the armor list var: fire and acid armor values.
    How much damage an obj take depends on the armor value for each damage category. But some objects are INDESTRUCTIBLE and simply never take any damage no matter the type.
    The armor categories are:
    -melee(punches, item attacks, xeno/animal/hulk attacks, blob attacks, thrown weapons)
    -bullet
    -laser
    -energy (used by projectiles like ionrifle, taser, and also by EMPs)
    -bio (unused for this, only here because clothes use them when worn)
    -rad (same)
    -bomb (self-explanatory)
    -fire (for fire damage, not for heat damage though)
    -acid
    For machines and structures, when their health reaches zero the object is not just deleted but gets somewhat forcedeconstructed (the proc used is shared with the actual deconstruction system) which can drops things. To not frustrates players most of these objects drop most of the elements necessary to rebuild them (think window dropping shards). Machines drop a machine frame and all components for example (but the frame can then be itself smashed to pieces).
    For clothes, when they are damaged, they get a "damaged" overlay, which can also be seen when worn, similar to the "bloody" overlay.

    It refactors acid. See #20537.
    Some objects are ACID_PROOF and take no damage from acid, while others take varying amounts
    of damage depending on their acid armor value. Some objects are even UNACIDABLE, no acid effect can even land on them. Acid on objects can be washed off using water.

    It changes some aspect of damage from fires.
    All /obj/ can now take fire damage and be flammable, instead of just items. And instead of having just FLAMMABLE objs that become ON_FIRE as soon as some fire touch them (paper), we now have objects that are non flammable but do take damage from fire and become ashes if their health reaches zero (only for items). The damage taken varies depending on the obj's fire armor value and total health. There's also still obj and items that are FIRE_PROOF (although some might still be melted by lava if they're not LAVA_PROOF).
    When a mob is on fire, its clothes now take fire damage and can turn to ashes. Similarly, when a mob takes melee damages, its clothes gets damaged a bit and can turn to shreds. You can repair clothes with cloth that is produceable by botany's biogenerator.

    It also does many minor things:
        Clicking a structure/machine with an item on help intent never results in an attack (so you don't destroy a structure while trying to figure out which tool to use).
        I moved a lot of objects away from /obj/effect, it should only be used for visual effects, decals and stuff, not for things you can hit and destroy.
        I tweaked a bit how clothes shredding from bombs work.
        I made a machine or structure un/anchorable with the wrench, I don't remember which object...
        Since I changed the meaning of the FIRE_PROOF bitflag to actually mean fire immune, I'm buffing the slime extract that you apply on items to make them fire proof. well now they're really 100% fire proof!
        animals with environment_smash = 1 no longer one-hit destroy tables and stuff, we give them a decent obj_damage value so they can destroy most obj relatively fast depending on the animal.
        Probably a million things I forgot.

If you want to know how the damage system works all you need is the three obj vars "obj_integrity", "max_integrity", "integrity_failure", as well as the armor list var and the resistance_flags bitfield, and read the file obj_defense.dm
2016-10-10 11:14:59 +13:00
Remie Richards
fda2c699fc Automatic conversion via Regex 2016-06-11 18:37:48 +01:00
phil235
0caa59b21a First commit of this big PR
These are the files with just tiny tweaks. Mostly modify an object's attackby so it does "return ..()" instead of "..()".
If there are other things in this commit, the PR's description will explain them.
2016-04-24 20:26:24 +02:00
Bjorn Neergaard
1599742f7e Re-structure tgui's ui_act 2016-01-22 19:25:36 -06:00
Menshin
5142a97d0e Fixes broken solar devices giving intact sheets back on deconstruction. 2015-12-12 23:40:49 +01:00
Firecage
c933363062 Adds the toolspeed var and adds it to most usages of tools which has a timer 2015-11-21 19:24:14 +02:00
duncathan
51c09f16bf makes all Destroy()'s return properly 2015-08-31 00:21:01 -06:00
c0
97b792bbc3 Changed some circuits paths to reduce copypasta 2015-08-30 16:58:13 +03:00
Firecage
4688c2c969 Fixes proc arguments 2015-07-15 23:52:35 +02:00
Iamgoofball
c2256d41fc BAR NOW SHOWS UP ON THE OBJECT YOU'RE INTERACTING WITH 2015-06-13 13:58:08 -07:00
kingofkosmos
72749392d8 span classes removed from visible.messages 2015-04-24 20:50:51 +03: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
Menshin
672b476f23 Tidying a little 2014-12-16 13:16:19 +01:00
Menshin
51e10e6a19 Fixes controless tracker runtime 2014-12-16 01:23:29 +01:00
Menshin
92c70b8742 Delegated the panels and trackers control to Solar Control Computers instead of the Sun controller. 2014-07-04 21:42:36 +02:00
Menshin
d42c7114c1 * cleaned, organized and commented a large part of the power code,
* new procs handling : powernets creation/destruction, cable adding/removing, machines adding/removing,
* new cable laying possibility : if you click in the turf you're standing on, you'll try to lay a node cable in the direction you're facing,
* cleaned oversights that could (and would) leaved an empty powernet in the powernets global list
* rewrote the cut_cable and propagate_network procs to correctly updates every connected cables and machines (fix, at last, #1455)
* others fixes and polish...
2014-05-04 00:19:55 +02:00
Menshin
0fda25c757 * sun and solars now uses world.time instead of timeofday,
* the solar panels are now rotated instantly instead of slowly do it every tick,
* code cleaning
2014-04-19 18:31:22 +02:00
Menshin
7347b1bebd * tweaked the solar update method to be more accurate
* added a check for the midnight rollover of timeofday
* the manual tracking orientation is now synchronized with the sun position update
* now checking if the solar panel/tracker/computer is not already in the solars_list before adding it
* added a message noticing the beginning of a solar panel/tracker deconstruction
* tweaked the manual tracking for better accuracy : the orientation is increased/decrease internally and updated altogether the sun.
2014-04-19 13:06:27 +02:00
Giacomand
da71bad8e2 Modernised the solar control computer's UI.
Cleaned up the solar code a bit.
Removed trackers requiring power, should stop them from being processed.
2014-03-26 16:28:33 +00: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
carnie
b84d12d949 *Small tidy-up of various helper procs*
-Turns out there was already a Gaussian PRNG proc already, used by mechs and turrets. I've replaced it with my one as mine has almost half the cost. (currently broken! still waiting for fixes to be pulled!)
-replaced between(min, val, max) with Clamp(val, min, max)
-get_turf(thing) now uses var/list/locs to locate its turf, rather than iterating up through loc of its loc of its loc...etc
-sign(num) moved to maths.dm
-InRange(val, min, max) replaced with IsInRange(val, min, max) (they were identical)
-Removed ismultitool() iswrench() iscoil() iswire() iswelder() iscrowbar() etc
-removed modulus(num) as abs() performs the same task! *roll-eyes*
-removed get_mob_with_client_list() as it is no longer needed (we have var/list/player_list now)
-removed get_turf_or_move() as it simply called get_turf
-removed get_turf_loc() as it was identical to get_turf()

*Additions:*
-The "Declare Ready" link in the lobby will automatically become "Join Game" if the round starts before you declare ready, so you don't have to click it twice
2013-05-27 12:21:43 +01:00
giacomand@gmail.com
7af60a7fb5 -Changed the powernet nodes list to be a dictionary list (associative list, hashtable, etc..)
-Added a solars_list. The sun will use this list instead of the machines list. I made a proc which decided on whether to use this list or the powernet nodes list depending on what is smallest. I replaced some loops to use this proc.
-The sun will reference this list for debugging purposes. The sun will also remove solar equipment in the list which are not connected to a powernet.
-Cut down on some duplicated code.
-Fixed an issue with solar panels not updating their direction correctly.
-Changed the proc updateicon()'s name to update_icon()

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5418 316c924e-a436-60f5-8080-3fe189b3f50e
2012-12-29 07:24:42 +00:00
giacomand@gmail.com
eca72b69aa -Added constructable solar arrays.
-Added a solar pack crate to order.
-Machines that have a use_power of 0 will no longer be turned off due to lack of power in the area.
-Fixed a bug with the solar computer not reconnecting to the powernet when dismantled and remantled.
-Increased the cap of crates to 30.
-Some performance tweaks.
-Some standardization.
-All objects of type /obj/machinery/power will try to disconnect from the powernet before deleting, this will help reduce the node list size.
-Added a heat_proof variable for doors. It will effect glass airlocks and it'll determine whether they can block heat or not. Research glass airlocks will always have it enabled.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5344 316c924e-a436-60f5-8080-3fe189b3f50e
2012-12-16 19:51:23 +00:00
baloh.matevz
a3d9123edd - Added a sprite "7" to the sd lighting file as it was used, even if it didn't exist.
- Piped 3.0.0 a bit.
- Standardized code/modules/power. 

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4242 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-31 05:24:37 +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
baloh.matevz
a7290faeae Completely reverted r1897 due to loss of interest in updating solars. Better to have the old set back than a half-finished set after all. (Only kept the space suit select equipment thing.)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1901 316c924e-a436-60f5-8080-3fe189b3f50e
2011-07-21 17:10:01 +00:00
baloh.matevz
809ba1710d Solars fix. Needs the powernet fix to actually work properly.
- Solars now bring out a fixed value. 700W each, meaning 60 of them (one array) generates 42000W. Not enough to power the station? That's the point. Although 4 x 42000W = 168000. This might be nerfed soon.
- Sun removed. Seriously, that thing ate up processor time and was completely useless.
- Solar tracker remains on the map but is completely useless. Will remove.
- Also reverted the cable updates from r1729. The code from prior to that revision might be as laggy as it was, but it works properly. After the revision powernets didn't calculate available power properly and did not update properly when new pieces were made (They stopped updating at the first wire piece which ended in a knot (non-smooth cable piece))

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1897 316c924e-a436-60f5-8080-3fe189b3f50e
2011-07-21 02:58:03 +00:00
mport2004@gmail.com
54b1d50b25 The crew monitoring computer should work better now
North solars expanded slightly
Cargo can now order engine parts
Power computer wont update every second so you can actually use the thing now
Rotate verb for the emitters and Particle Accelerator
Solar tracker does not use "in world" anymore

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1013 316c924e-a436-60f5-8080-3fe189b3f50e
2011-02-10 11:20:52 +00:00