Commit Graph

30 Commits

Author SHA1 Message Date
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
ikarrus
7c32420497 Resolved conflicts and added my yml changelog file 2014-09-19 09:30:59 -06:00
ikarrus
c22a44d676 Fixes Round-End report bugs
- Fixes #4664 New Players won't get the "you did not survive" message
- Shift duration minutes will never neve have more than 2 digits (Same thing has been done for the Round Duration timer in Check-Antags Menu)
2014-09-04 21:05:07 -06:00
ikarrus
5aa62a83bb Gang name will be randomized outside of Gang Mode. 2014-08-31 02:55:18 -06:00
ikarrus
4c801434a8 Gang Mode 2014-08-30 23:17:14 -06:00
Cheridan
3612a9a8a0 MONKEY MODE: "IT ACTUALLY WORKS" EDITION
Probability support for monkey mode.
Player config support for monkey mode.
Check Antags support for monkey mode.
2014-07-08 22:55:47 -05:00
ikarrus
14fe3bc29a [Admin] Added logging for changeling hivemind chat
Also added their Changeling names to the Antag panel so admins don't have to go digging through vars to find out who was OOC in ICing.
2014-04-17 21:23:11 -06:00
AlexanderUlanH
87b72833bd Added the labor shuttle 2013-11-02 15:16:39 -04:00
Cheridan
642194d4f3 Merge pull request #1082 from errorage/2013-08-07_clear_clients_from_lobby_at_round_end
Disconnects clients who have not joined the round before restarting
2013-08-09 13:31:13 -07:00
errorage
c32f56e750 - When clients in the lobby are kicked at round end, only afk clients actually get kicked.
- The admins now have the ability to kick all or just afk clients from the lobby
- When admins use this action, a list of kicked clients is sent to admins and into the log.
- Added a confirmation message to the admin command.
2013-08-07 18:09:38 +02:00
errorage
134ba32236 - In an effort to decrease the number of unneeded client connections, I've made it so when the round ends, all the clients who are in the lobby get kicked before the restart. This is only effective when rounds end 'organically' (not when restart commands or votes are used, for example). The intention is to prevent people from leaving their computers on and connected indefinitely, because all clients contribute to the total. The assumption is that if you are in the lobby when the round ends, you have not participated in the previous round, meaning you are probably not actually present.
- Also added a button to the player panel, which allows admins to do the same thing. The admin's name is reported to all the kicked clients.
2013-08-07 03:15:44 +02:00
Giacomand
1fb9227f77 Blob/AI cameras can now be followed by ghosts.
Added the blob to the check antagonists, displaying how many blobs are left to win and being able to show the player panel for the blob.
Gave overminds mind datums which will initialize to give the overmind a blob special role.
Re-worded the BE ALIEN candidate so that it is more abstract and could mean becoming a blob.
Added another message for when the infected crew is about to burst into a blob.
EMPs will now hurt the blob.
Fixed blob spores blocking the blob from expanding.
Nodes will also slowly recharge their health.
Gave a little bit of health to normal blobs so that lasers don't one shot them anymore, barely.
2013-07-21 15:13:43 +01: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
carnie
8c489f662b Muting now uses uses a ckey in its href rather than a mob reference.
You can now mute admins.
2013-03-31 23:06:56 +01:00
carnie
66e6a2dbf0 Mobs each now have a unique tag which are not after they are deleted (unlike byond's \ref[] macro)
Since tag replaces the output of the \ref[] macro, this means that menus which use hrefs with \ref[mob] will no longer be able to accidentally link to the wrong mob.
The tags are of the form "mob_475" etc

Admin_pms now use ckey instead of client-reference. This means that PMs will no longer accidentally get sent to the wrong people.
There is no risk of players using hrefs to send adminhelps to known admin ckeys to see if they are online (as I'd already changed the PM system to not tell non-admin users whom received their message).

key_name() now accepts text input (key or ckey) - it is slightly more efficient to feed it a client or mob however!
This functionality is provided to allow certain admintools to become more robust when we want to talk about e.g. a griefer whom has just DCed whom no-longer has a corpse (no client/mob...just a ckey reference).
key_name() now reports DCed players properly.
2013-03-31 11:26:22 +01:00
Kortgstation@gmail.com
0c4f441cb5 Added Cheridan's slime sprites to replace roros. Replaced all mentions of roro/metroid with slime. Once Cheri has the rest of the sprites/Phol gets mutant race sprites I'll start work on redoing metroid/slime code with Giacom and adding breeding.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5223 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-29 04:12:22 +00:00
elly1989@rocketmail.com
76ede03966 Moved mob/var/footsteps to /obj/item/clothing/shoes/clown_shoes/var/footsteps
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5166 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-22 17:43:25 +00:00
elly1989@rocketmail.com
30357d18ce SANITY: Created a series of generalised sanity procs. They can be found in code/__HELPERS/sanitize_values.dm
They include such procs as sanitize_integer(num, min, max, default) which will check num is a number, round num to make it an integer, then check if it is between min and max (inclusive). If it fails the bound-checks it will return default. There are others, have a look.

PERSISTENT PREFERENCES: Every ckey which connects to the game gets its own persistent /datum/preferences datum.
It is archived in var/list/preferences_datums = list("ckey" = datum)
At connect it is automatically associated with the client defines.dm (or a new one is created if it can't find an archived prefs datum). This means clients will ALWAYS have a var/datum/preferences/prefs which references this datum. So you can use it without checking if(client.prefs)
This has simplified only a few bits of code. It will however, allow us to make preferences like see_deadchat ghost_ears etc, persistent. So they will not reset when you DC.

SAVEFILES: Changed the player savefile code a lot. Hopefully I've not fucked it up too much. Every single variable loaded from saves is now sanity checked using the new sanity procs. This should help prevent savefiles becomming obsolete by sanitizing input to meet current requirements, without deleting all the ok variables and making you start from scratch >_> NOTE: I still need to sort out the savefile version stuff. I'll probably figure it out before the server updates anyway. It sees to be fine without it.

You can no longer choose your blood type. It is randomised (with each bloodtype having a realistic probability of occuring). This is to make blood analysis (detective/medical) less pointless. It is chosen as soon as you connect. It remains persistent throughout each round so you won't be able to change it by logging in/out over and over.

Replaces some copypasta code with is_afk() (still a fair bit to do)

There are new hyperlink shortcut things. _src_=vars will direct your hyperlink to viewvars. _src_=prefs to your preferences datum. (These are the only way to access those bits of code via links). This means that the overall amount of operations in almost every Topic has pretty much halved and is much prettier.

Replaced and removed adminplayervars from datum/admins/Topic. It was superfluous. They now all point directly to the viewvars code using _src_=vars

Removed the changelog popup at round start. Instead a button on your game-window will glow white if there are new updates. To peruse at your convenience. This will speed up connect times.

Removed the AFK_THRESHOLD define. It is integrated into is_afk() now.

TODO: remove the prefs stuff from mobs and clients and update code to use client.prefs to access that info.



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5121 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-19 15:13:57 +00:00
elly1989@rocketmail.com
8e52e8cbdf Game Panel is now available to all admins regardless of rights (spawning from that panel requires +SPAWN, and changing game mode requires +ADMIN)
Player panel (for an individual mob) is available to all admins regardless of rights (like above, each link on the page has its own rights requirements)
Essentially, with no rights you can see these panels, but you cannot use most of the tools they link to. Additional rights increase your access to corresponding tools.

Removed some duplicate code in /datum/admins/Topic for subtle messages, traitor panel and a few others. There's a lot more to do in this regard but it can wait for now.

We're near the end of the disruption now. I sort of have a clear idea what I'm meant to be doing so work will speed up. Full documentation describing exactly what can and can't be done with each flag will be available soon.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5035 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-11 06:40:00 +00:00
elly1989@rocketmail.com
4d9876fd65 Fixes issues with pen bbcode. Replacetext did not work correctly after I changed text2list - (It was missing 'needles' at the beginning of 'haystacks').
>dd_replacetext and dd_replacetext_case are now replacetext and replacetextEx respectively.
>replacetext and replacetextEx works using strings only; it doesn't convert it into a list and then back into a string.

Fixes some dumb-dumbs in textlist and text2listEx
> "<" where there should be a "<="
> no else case for when the separator is longer than the text (causing empty lists to be returned)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4971 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-27 21:21:17 +00:00
elly1989@rocketmail.com
f8da06db13 Re-added the default-vote config option for voting. For every client connected more than the total votes, it will add 1 to the default vote option (No restart or the current game-mode).
/obj/admins is now /datum/admins because that's what datums are for you silly people
Moved var/datum/marked_datum from /obj/ to /datum/admins
admin datums are persistent throughout the round. They are stored in the var/list/admins rather than the ranks. This is so admin preferences may be moved into the datum to have them persist even after Login/Logout/Disconnects.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4749 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-24 11:40:41 +00:00
elly1989@rocketmail.com
c94b35dc00 Added a very stripped-down version of player-notes I made a while ago for a ban system. It's very no-thrills as it was intended merely as storage for the various parts to reference.
I've pretty much stripped everything, added a switch to obj/admins/Topic and linked to a simple browser interface from the player panels.

It's just a single buffer per ckey. You can  use the [+] and [-] links to add/remove notes. Clicking the ckeys will allow you to navigate between player notes. They are listed chronologically.

Their main perk is also their main flaw, they are only a single buffer, which is fast and small. But it kinda means playing with the format won't update existing notes. If you have any complaints about the format please make them known soonish.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4129 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-20 20:47:44 +00:00
petethegoat@gmail.com
e89e7acdb3 Fixed issue 411. (Thanks Yvarov- http://nanotrasen.com/phpBB3/viewtopic.php?f=16&t=8651)
Added Invisty's new field generator sprites.

Added a button to check antagonists that stops the world from automatically restarting at round end.
It's toggleable, but once the round ends with it on, you'll need to reboot the world manually. (It's under check antagonists because that's where the shuttle stuff is, let me know if I should move it.)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3565 316c924e-a436-60f5-8080-3fe189b3f50e
2012-05-07 13:02:42 +00:00
baloh.matevz@gmail.com
d484c5adab - Check antagonists is now a verb available to anyone who has access to the secrets panel. (Admin Candidate and up)
- set ticklag moved to debug verbs, enabled by calling 'debug verbs' as a game master.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3530 316c924e-a436-60f5-8080-3fe189b3f50e
2012-04-30 00:10:11 +00:00
baloh.matevz@gmail.com
235cc0ff1d forgot to save before committing this file, sorry
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3529 316c924e-a436-60f5-8080-3fe189b3f50e
2012-04-29 23:51:51 +00:00
baloh.matevz@gmail.com
eb84712194 - Player panel new now has a link to the traitor panel for players, labeled as TP
- Player panel new will now properly display all antagonists in red
- Added a link to 'check antagonist' to the top of Player panel new.
- Removed some copied, unused files
- Added a default variable to fake insulated gloves for the siemens coefficient. Do not ever set it to default to null! It will break any place where initial(var) is used!

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3528 316c924e-a436-60f5-8080-3fe189b3f50e
2012-04-29 23:51:03 +00:00
elly1989@rocketmail.com
f89dbfd276 Fixed the new player-panel. A variable was missed out in the expand function when karma was removed.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3256 316c924e-a436-60f5-8080-3fe189b3f50e
2012-03-05 15:17:46 +00:00
kortgstation@gmail.com
c801c50cea Removed Karma. It was a shitty system used to punish security for doing their jobs even when it worked, and now it just spits runtimes.
Better defined the viewers in range of the vent crawl to hopefully stop the runtimes that was causing.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3196 316c924e-a436-60f5-8080-3fe189b3f50e
2012-02-26 03:52:40 +00:00
mport2004@gmail.com
6d91ce670e Seems the old player panel had a few issues that did not crop up in my tests.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2852 316c924e-a436-60f5-8080-3fe189b3f50e
2011-12-29 08:17:54 +00:00
mport2004@gmail.com
32e1640df3 Emitters emp_act now uses severity properly.
The PA can no longer be remotely controlled by humans and cyborgs can only control it if they are nearby.
The spawn PA can now be taken apart.
FireAx/Extinguisher closets got their own files.
Food closets are now with their defines.
Freezer closet/crates override return_air() to cooldown the contents.
The var isinfreezer has been eliminated.
The old player panel has been readded as an alt for the new one, it may be found under the Player Panel verb.
The new player panel may be accessed by the Player Panel-New verb.
Crates.dm moved from the storage folder as it is not a storage object.
Fixed Issue 227 about the PA shooting when it should not be.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2851 316c924e-a436-60f5-8080-3fe189b3f50e
2011-12-29 07:14:02 +00:00