Commit Graph

21 Commits

Author SHA1 Message Date
carnie a3f5e7ebfd Merge branch 'master' of https://github.com/tgstation/-tg-station into SubSystems
Conflicts:
	code/game/gamemodes/setupgame.dm
	code/modules/mob/living/carbon/human/life.dm
	code/modules/reagents/Chemistry-Machinery.dm
2015-01-04 01:52:14 +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
Razharas 418e3a0613 General cleanup
Fixed the magic text failing in monkey injectors
Removed lots of comments
Didnt fix mysterious list bounds runtime in tourettes
2014-12-29 11:36:01 +03:00
Razharas 8d110ee496 Tiny clean up, still lots of work to do
Only compiletested, these changes were never tested in the game yet
2014-12-12 23:57:11 +03:00
Razharas 0921aa201f Added datum mutations
Also removed some mob vars like sdisabilities and merged the usability
with disabilities
Removed need for mutations var, they are not handled in dna
Removed blinded var, now its handled by eye_blind being bigger than zero
Ands lots, lots of other shit in files that used mutations
2014-12-12 04:48:11 +03: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 e217ef760e Randmutb will no longer select and mutate RACEBLOCK - mutagen, cloning, radiation-events etc will no longer cause this block to change.
IsBanned() now only processes the key into a ckey once...rather than several times.
2013-08-21 15:45:03 +01:00
carnie fea2fc3fef Fixes for admin-spawned dnainjectors: repeat_string has been simplified (it wasn't making NULLED_SE and NULLED_UI to the correct size).
Fix for Overpowered mutations (HULK and TELE) not manifesting. A typo was the cause.
Admin-spawnable injectors always succeed. This code already existed (I believe this is how they used to function), but it did not work as the argument was not passed correctly. This also removed snowflake code for the darkbundle telemut injector.

Thanks to Giacom, wouldn't have found these without him.
2013-04-27 06:40:17 +01:00
carnie 043028db83 Resolves #283
DNA modification uses normally distributed random numbers. Radiation strength dictates the standard deviation of the change in the hex character which is hit (higher output means greater chance for a large change) . Similarly, radiation duration dictates how likely we are to hit the hex-character we clicked on (longer duration means more likely to hit). Irradiation is strength*duration. All balancing is done via multiplier defines so you can rebalance it easily.

DNA blocks and structuring all use defines. Making modification/expansion easier. I'll likely expand this into a datum-based system to allow more interesting features, reduce code further and allow admins to interact with the way dna strings behave.

DNA strings can be spliced together using merge_text().
 e.g. string 1: "Hello World"
 string 2: "Seeya______"
 result: "Seeya World"
 This isn't used except for admin-spawnable SE injectors at the moment.

r_hair, g_hair, b_hair, r_facial, g_facial, b_facial, r_eyes, g_eyes, b_eyes were removed and made into 3 short hex-colors.

Skin tones now support colours other than shades of brown. I've had to restrict it heavily until other stuff is done. Skin tones include Albino Caucasian, Oriental, Mediterranean, etc.

Data disks and DNA injectors were reworked to use associative lists so transferring data is just a matter of doing list.Copy()

var/dna is now defined at /mob/living/carbon level. Only monkeys and humans may have dna currently. Support is there for all carbon-based lifeforms to have dna.

DNA modifier console has almost all controls on one screen.

UIs and UEs can be injected separately (appearance and name, respectively)

dna helper procs like ready_dna() and such were changed to make them more versatile. There is now a hardset_dna() proc as an alternative to ready_dna which can initialize dna with properties passed into it or update an existing dna string (useful for cloning and antag spawning)

Every block of SEs are in randomised positions.

Disabled automatic logging of world.log, as it produced undesirable behaviour.

Mr Muggles and God Emperor of Mankind disks removed.

Floor() removed. (it was completely uneccesary, that is what round() is).

Fixed spelling mistakes in modularchangling.dm (thanks tenebrosity)

Tanning removed from beaches (again)

Experimental: monkeys and humans do not have dna until first attempt to read dna (using check_dna_integrity(mob))
This is mainly due to the way everything is hardcoded into New().

Changelog.html updated
Signed-off-by: carnie <elly1989@rocketmail.com>
2013-04-24 09:37:30 +01:00
giacomand@gmail.com 384b2717b0 -Added a "landmarks_list"; the game will now check for landmarks in the list instead of the world.
-Did some optimizing to AI freelook.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4670 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-09 22:27:06 +00:00
baloh.matevz 5a199fc564 I started with the desire to fix issue 634. It sounded like a simple issue, right? Well one complete rewrite of how equipping and stripping works later, this commit fixes issue 645
Code-wide changes: /mob -level procs:
equip_if_possible() is now known as equip_to_slot_or_del() to prevent confusion with equip_to_slot_if_possible() and to better describe what it does.

equip_to_slot_if_possible(item, slot, del_on_fail, disable_warning, redraw_mob)

equip_to_appropriate_slot() is now a /mob - level proc.

equip_to_slot() is an unsafe proc, which just handles the final step of actually getting an item onto the mob. It has no checks of whether it can or can't do that. Use equip_to_slot_if_possible() for that purpose.

New /obj/item -level proc:
/obj/item/proc/mob_can_equip(M as mob, slot, disable_warning = 0)

This proc can be used to determine whehter a mob can pick up an item from the item's side.

Carn, I'll need you to review code/modules/mob/living/carbon/human/inventory.dm to ensure that I'm not redrawing the mob too many times.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4423 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-15 23:15:55 +00:00
vageyenaman@gmail.com 49647d329a There's a metric assload of stuff here, mostly in preparation to my massive traitor expansion, so I'll try to be brief:
- I added in the foundations for traitor factions. See factions.dm for all the different faction datums. They don't do anything yet.

- I completely ported mob/var/mutations from a bitfield to a generic list. Mutation enumerated-identifiers are added into this list. For instance, TK = 1, COLD_RESISTANCE = 2, XRAY = 3, etc... The purpose of this was because bitwise operations could not actually be used after a certain size (because BYOND is stuck in the 16bit era).

- I've added in completely-functional nano-augmentations. Check under implantnanoaug.dm for a list of implants and implaners. As mentioned previously, they are completely functional but may be slightly OP. Among these nanoaugs are Super Strength, Psionic Radar, Electric Hands, Energy Blade/Sword Synthesizer, Rebreather, Dermal Armor, Combat Reflexes, and Regenerative Nanorobots. I won't go into detail as to what they do, but hopefully they should be self-explanitory. If not, check out their descriptions in the file previously mentioned.

- Added in a future traitor item, the Mind Batterer. Along with it a new .ogg file.

- New telecomms bus mainframe sprite, thanks to WJohnston.

- New holdable shield, sprites courtesy of Muncher (i had to mangle the side sprites because of a technical little issue. I'll change it back to the original soon). It can be retracted and expanded. Probably only going to be given to traitors.

- A couple of minor bugfixes here and there, along with some code tidying.


Hope this isn't too large a commit. I intended it to be MUCH larger, but I've decided to split up my Traitor Factions expansion into smaller commits.



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3692 316c924e-a436-60f5-8080-3fe189b3f50e
2012-05-29 03:16:47 +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
vageyenaman@gmail.com 80d4e405b9 New DNA mutation system: see http://tgstation13.pretentiousfool.com/phpBB3/viewtopic.php?f=7&t=5584 (the code that makes this actually work has been commented out, it will be implemented maybe sometime soon)
Fixed some spelling and grammar errors.

Tweaked the cost of Large Energy Crossbow designs.

Fixed a bug where people would generate two manifest entries when they late-joined. Annoying as fuck.



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1966 316c924e-a436-60f5-8080-3fe189b3f50e
2011-08-02 01:35:44 +00:00
rastaf.zero@gmail.com d6e0f1cf22 Freaking big GAMEMODES UPDATE.
I have done lots of work to make selecting players for special roles be fair.
- New options preferences: "be traitor", "be changeling" and so on for all special roles.
- Now you can have job of AI/cyborg in preferences and do not lower your chances to become wizard/changeling/etc. And vice-versa: you do not have to select AI in your preferences to have non zero chance to play malf.
- Jobban from syndicate bans player from any special role (including malf AI, cult, etc).
- Fixed bug with changeling round not ending sometimes.
- All special roles were tuned to work better as admin-driven event.
-- All adminmade special characters will be listed at the end of round of any type.
-- All adminmade special characters are fully functional with following exceptions:
--- The ending conditions are determined at round start, i.e. you cannot end revolution by killing wizards and malf AIs (however, with nuke you can end anything).
--- The cultists cannot get their special objectives.
--- The malf AI can hack the APCs but without any profit.
--- The syndicate operatives must obtain the nuke/working code from admins.
--- As before, nuclear explosion ends round. Even if nuke was used in wrong place.
- Fixed thingy like "Not enough players for revolution game mode. Restarting world in 5 seconds."
- Changeling wont get objective "absorb X genomes" when there are less that X players in game.
- proc/equip_if_possible now has return value, procs like equip_revolutionary (giving a flash) should be more reliable.
- There are no fake wizards anymore. The research staff have to kill ALL wizards on order to win, even adminspawned ones. ("give spell" verb works as before, not making a spellcaster to actually be wizard).
- The semi-new game mode: traitor+changeling. Just like regular traitor mode plus one changeling. Round ends when the shuttle reaches centcom. Option for config.txt: "PROBABILITY TRAITORCHAN".
- Successful malf AI now have 60 seconds to choose to explode the station or not (some players still have to rejoin game to have their new verbs shown in Malfunction tab).
- Monkeys mode fixed, monkeys wouldn't randomly cure anymore.

For admins:
- New powerful mind editor oriented to mixed rounds.
-- Setting someone as special character (like wizard) does not equip him/her automatically. You have to do it it next step. Note, that in case of wizards and nuke operatives their old dress will be deleted! If you do not want it you shall use "undress" link.
-- Only operatives, head revs and cultists have their objectives set immediately.
-- You can unemad borgs!
-- You cannot unemag borgs because calling mind editor for nonhumans is blocked atm.
-- many other useful features.
-- you can fix burned out flashes from mind editor.
-- first assign the new malf AI/wizard then demalf/dewizard old one or round will immediately end.
- if delete the nuke bomb during its downcounting round will stuck. Using "edit ticker variables" set ticker.mode.explosion_in_progress = 0.

For coders:
- /datum/game_mode/malfunction/AI_Module renamed to /datum/AI_Module. Reason: What. The. Fuck.

Unrelated fixes:
- Blueprints can create areas up to 300 tiles (was 100).
- Cyborgs wont leave backpacks at spawn point anymore.
- Fixed bug in preferences causing preferences files to be huge.
- Diseases can infect again.
- The option "SQL_ENABLED 0" now works in config.txt.
- fixed critical bug on assassinate objective.

Bugs:
- We have a bug with job distribution for people who haven't any available jobs in their preferences. Players tends to group by jobs.
- For example, if we have 3 players they with hight chances will got same jobs. And probability of having one engineer and one medic _exactly_ equals _zero_.
- I am not sure if my changes made that bug worse. Anyway I MUST do this commit. Bug will be fixed eventually. Maybe.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1703 316c924e-a436-60f5-8080-3fe189b3f50e
2011-06-21 21:22:23 +00:00
noisomehollow@lycos.com 54bddf8c76 Reverted 1624. The proc in question is for regular players only. This may change in the future but not right now.
New sound effect for ninja phasing.
Added a female-only ninja suit sprite. Will conform to the character once initialized.
Stealth is now a an equipment verb and functions a little different from before. I may tweak it a bit in the near future.
BYOND fixed a verb bug in r484. Certain ninja verbs will now function as intended once the release version comes out. I've went ahead and made the necessary code adjustments for it.
More ninja code cleanup in preparation for a few things.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1627 316c924e-a436-60f5-8080-3fe189b3f50e
2011-05-28 23:12:31 +00:00
noisomehollow@lycos.com ab87c76da1 #Beta: added code phrases for traitors which consist of the code phrase and the code response (which consist of a sequence of words). They are meant to flow into a regular conversation in the sequence provided. There is also a small chance that a traitor may not know either phrase or response, or both.
For an example, let's say the phrase is: culture, wine, admit. The response is: massive, tired, doctor's delight. A traitor may begin a conversation with something like: "A man of culture always drinks wine, I must admit. What do you think?" The response to that: "When I am massively tired, I drink doctor's delight. Otherwise, I abstain." The example is best referenced in the Bar, or any place where drinks are available. With enough creativity and linguistical acumen, it may be used elsewhere.
The point here is to make conversation seem as natural as possible while providing traitors a means to recognize each other. The words do no have to be exact, either. Quarter Master may be QM and the Captain may be Cap'n. Traitors should still recognize what is being communicated--or not.
#Deactivated AI cores are no longer mobs. This is mostly cosmetic. You cannot gib a deactivated AI since it will be an object, not a mob. It will also not announce arrivals since it's an object, not a mob (this is an improvement, in my opinion).
#Some code tweaks to AIs. They will now auto-start with a random name instead of their default-chosen name (which is still changeable).
#Intelicards should no longer constantly refresh the window when they are being wiped.

#Added new mech sprite.

#Resin walls should no longer delete the person inside when killed in certain ways. Hulks will easily break free from resin if placed inside.
#Ninjas can now download the AI onto spiderOS, provided Drain is on. SpiderOS works with AI cores, AI cards, and restoration terminals. Make sure Drain is on when you click on either the object (core/terminal) or the suit (aicard). AIs with law zero may get to have some fun, depending on circumstances.
#Toggle Drain renamed to Toggle Interaction. It now serves as general trigger for special ninja interactions.
#Added energy net power to ninjas. Prototype for HerpA and whatever he may want to do with it but it's pretty much finished. The energy net can be destroyed by the person trapped (or others) and will teleport them to the prison after 30 seconds.
#Ninjas can now slice cameras apart per request.

#Added a few more type checking procs (isliving, islarva, isobserver, ishivemainframe).
#Mobs that are anchored will no longer be able to move (AIs will still move as normal). You will also not be able to grab them.
#Incorporeal Move now works properly for regular mobs once more.
#Marauders from CentCom can now launch directly from their bay. Start the shuttle and wait on a mass driver. On that note, mechs can now go through portals and launch through mass drivers.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1558 316c924e-a436-60f5-8080-3fe189b3f50e
2011-05-09 09:45:56 +00:00
baloh.matevz 67e0554d34 CHANGELOG UPDATED
- Opaque windows (tinted and frosted) now look darker
- Added a trashcart object (trash bin, behaves like a crate)
- Added several recolored spacecash items. Some spawn in the vault.
- Added a new type of cigar.
- Applied the owl costume fixes by DabirA. They look strange when used with a backpack tho.
- Overalls now work for all directions
- Added thermal monocle object (thermoncle)
- Removed the swat_suit (which was broken) and all it's references (from human.dm)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1261 316c924e-a436-60f5-8080-3fe189b3f50e
2011-03-24 06:23:59 +00:00
uhangi@gmail.com be00348fef Adding zlevel 8, for a game/rp element/admindickery thing.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@243 316c924e-a436-60f5-8080-3fe189b3f50e
2010-10-04 04:07:38 +00:00
only.lurking 662c08272a git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2 316c924e-a436-60f5-8080-3fe189b3f50e 2010-08-23 14:29:20 +00:00