Commit Graph

97 Commits

Author SHA1 Message Date
Rockdtben
1de30e3d22 Made the admin command Access Netscastor Network use the news_network procs. 2014-03-26 08:23:39 -05:00
MrPerson
6930283efc Merge branch 'master' of https://github.com/tgstation/-tg-station into qdel_r
Conflicts:
	code/game/gamemodes/changeling/changeling_mutations.dm
	code/game/gamemodes/changeling/changeling_powers.dm
	code/game/gamemodes/malfunction/Malf_Modules.dm
	code/game/objects/items/weapons/tanks/watertank.dm
	code/game/objects/structures/tables_racks.dm
	code/modules/research/server.dm
2014-03-21 03:05:39 -07:00
Aranclanos
6dffc8a72f The admin functions and comms console options to switch the level of access of the maint doors will now work properly and not runtime. 2014-03-14 01:57:42 -03:00
MrPerson
917a2dd2a4 Rename equip_to_slot_or_qdel() -> del()
Still qdel()'s them, just naming the proc back.
Should hopefully reduce the number of lines different in the pr.
2014-03-02 21:08:25 -08: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
Miauw
9b8656247c u_equip is now called unEquip PANIC 2014-02-13 20:58:33 +01:00
fleure
a854a41994 Merge pull request #2540 from Incoming5643/blobjob
BE_BLOB and easy adminblobing
2014-02-03 10:34:31 -08:00
Incoming
5c5cc6a72d Repurposes the outdated BE_MONKEY into BE_BLOB and seperates the alien and blob pools so people can prefer to be one or the other or both or neither. An annoucement should be made when this goes live so people are aware they have a new flag to set.
Adds a dedicated button on the player panel so admins can easily turn specific players into blobs.
2014-01-29 10:54:00 -05:00
Jordie0608
45ee53517a Outright removed toggle admin jump,spawn and revive buttons 2014-01-27 16:10:19 +11:00
Incoming
03464e1f4d Slime Mob Refactor
Death of the istype invasion from slimes, previously every single color of slime was its own kind of mob, and every single one of those slimes also had an adult form which was a different mob.

There is now only one kind of slime, reliant on new var is_adult and old var colour to determine how it looks. All baby slimes functioned identically outside of icon and core, and all adult slimes functioned identically to each other and to the babys save for a bit higher Health and more capacity to break shit.

A nice side effect is that this solves any inheritence issues of baby slimes growing up since it's still the same mob, though it doesn't solve the same issues for adult slimes splitting.

Also fixed a few annoying but rare bugs (like getting ghosted because you got DC'd and your slime self split and you weren't around to get mind transfered)
2014-01-13 19:38:37 -05:00
YotaXP
f98a57b750 Optimized and refactored list2text, text2list, and replacetext.
Also fixed some grammar in the station blueprint code.
2014-01-07 22:15:25 -05:00
Incoming
1e4ef796fd Feature: Adds summon guns and summon magic as fun secrets for badmins
Bugfix: Prevents people from becoming the survivor multiple times
2013-12-16 23:29:58 -05:00
Giacomand
ceec829294 Tons of typo fixes and renames Centcomm to Centcom. Manual merge of #1950. 2013-12-13 21:14:23 +00:00
Limeliz
7629c5d4a3 I found #1870 in more places.
Replaced [key_name_admin(usr)] with [key_name(usr)] in all logging, to remove href-tags from logfiles.
2013-12-01 23:18:59 +01:00
errorage
3537b5ea9a - Added an option to the secrets tab which displays the current list of admins and their ranks. 2013-11-10 02:52:41 +01:00
AlexanderUlanH
16d17921f9 Cha-cha-cha-changes
Changed the shuttle controller to a datum, changed the appearance of the
labor shuttle, and fixed stackers giving one free stack of each ore.
2013-11-02 17:01:54 -04:00
AlexanderUlanH
87b72833bd Added the labor shuttle 2013-11-02 15:16:39 -04:00
Cheridan
882b376eb2 Code Cleanup! Moves Area-finding into a helper, uses a parent anomaly-event datum to cut down on repeated code! 2013-09-19 23:39:32 -05:00
Cheridan
d19e7f6493 Converts bluespace events into the anomaly system. Adds some sprites and polishes up some effects
Next up: Moving all of the anomalies into an event subtype to cut down on copied code!
2013-09-19 22:08:04 -05:00
Cheridan
2ee9e23ea9 Initial Event Rework
Adds anomalies, special effects which tie into the event system.

Ports bholes into an anomaly, cleans up their code.
Adds new gravitational anomalies. Imagine a trampoline.
Flux event is now an anomaly.
Adds a new pyro anomaly.
2013-09-17 15:46:00 -05:00
Cheridan
a4b17f7ef3 Merge pull request #1246 from Intigracy/adminchangingstuff
Standardizing permissions for admins
2013-08-29 21:38:49 -07:00
Intigracy
0962cd2679 Start of standardizing required permissions for admins.
Using the dropdown menu / changing health / names of people in view variables now actually requires +VAREDIT.

Shuttle moving moved from +FUN to +ADMIN for convenience sake.

+ADMIN now required to view antagonists / law changes, before it was only required to check antags via verbs, which you could get around through the secrets menu.

+ADMIN Also now required to view all of the special information given about players in who menu (like antagonist status), but all admins can still see stealth keyed admins.
2013-08-28 15:51:45 -07:00
Cheridan
1ee6c4f5c7 Merge pull request #1166 from Carn/admin_ranks
Fixes #1147 (type-mismatch) +features
2013-08-28 11:57:21 -07:00
Cheridan
dfa2750f41 The auto-notes which are added when a ban is applied won't cause logs. 2013-08-21 00:14:57 -05:00
carnie
bbe7354265 Fixes #1147 - type-mismatch
Added helper: /proc/findchar(haystack, needles, start=1, end=0)
works like findtext except it finds the first occurrence of one of the characters from the needles string, within haystack.

Permissions can now be removed as well as added, by replacing the + with a -. e.g. +BAN adds bans permissions, -BAN removes them. This applies to admin_ranks.txt and the permissions panel.

Verb overrides are now possible for admins_ranks. Specific verbs can be forced-on, or forced-off via keywords like +/client/proc/mimespeak or -/client/verb/ooc. This applies both to admin_ranks.txt and the permissions panel. SQL system is not compatible.

admin_ranks are now datums. This means admin_ranks actually behave more like permission groups as intended.
When you temporarily modify an admin's permissions via the permissions panel, their rank_name is appended with "([ckey])". This prevents modifications to their rights affecting everyone.

admin rank names now support - _ and @ characters (since ckeyEx() does not strip these).

SQL permissions system was modified. SQL databases will have to be updated or they will no longer work.

WARNING: admin_ranks.txt and admins.txt format has changed slightly! You will need to redo those txt files!
2013-08-14 18:10:26 +01:00
carnie
ffa9bb51cd Helper proc /proc/find_record(field, value, list/L)
It will search list/L for a /datum/data/record with fields[field] == value, and return it.

This removes a vast amount of copypasta (there's still so much left in there though). It also removes all the locate(\ref[record]) I could find, which were normal used with topic(), meaning it was susceptible to abuse.

Secbots, ed209s and turrets are now smarter with their record-checks. They now prefer to use our face-name rather than id-name. ICly, this is the bot using facial recognition. This fixes an issue where it'd try to use the name variable which could be in the format "Unknown (as their id name)" when they were disfigured, etc. causing record-lookup to fail.

Additionally, these bots will treat those without a valid record in the security database, to be treated like criminals.
2013-08-11 12:49:55 +01: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
carnie
ada01c7e5f Reverting some accidental changes.
Medical consoles emp_act uses random_blood_type() random_name() etc, rather than hardcoded pick/rand.
2013-08-07 16:44:17 +01: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
carnie
02be173c60 Renamed variables:
b_type to blood_type
h_color to hair_color
f_color to facial_hair_color
f_style to facial_hair_style
h_style to hair_style
2013-08-01 13:48:41 +01:00
Intigracy
293fc7ce6c Removed the check in jobbans that prevented admins from banning each other. Everything is already logged up the yinyang, admins are able to regular ban themselves, even perma, and sometimes an admin NEEDS to be jobbanned for something. 2013-07-27 03:30:33 -07:00
errorage
86a68cb55b - Expands the maximum number of admin permission flags you can have from 16 to 31.
To test: add these debug lines somewhere:

//START COPY PASTE

mob/verb/give_allrights()
	src.client.holder.rights = 393087

mob/verb/hasright()
	var/hi = input(src,"Choose a file to access:","Download",null) as null|num
	var/r = check_rights(hi, 1);
	world << "[r]"

mob/verb/checkrights()
	for(var/i = 0; i < 32; i++)
		var/n = 1 << i
		var/r = check_rights(n , 1);
		world << "has right 2^[i] = [n]? [r]"

//END COPY PASTE

Start the game, run 'give allrights', which doesn't give all rights, but some of the rights. 128 and 131072 are missing. Then you can either run 'hasright' to check whether you have the permissions that correspond to a user defined number, or you can run 'checkrights' to check for all 31 theoretical permissions.
2013-07-22 19:22:47 +02:00
errorage
5925d3a876 Added the ability to define the ip and computer id for a manual ban (in the banning panel). This is so mirroring bans or banning people who were not online during the round in progress does not require admins to spawn a mob, set their variables and then ban the mob.
If however an admin attempts to add a manual ban for a player who was present during the current round, a player who still has a mob somewhere in the game world, the proc will prioritize the mob's ip and computer id variables, not the things entered in the banning panel form.
2013-07-16 07:26:51 +02:00
KazeEspada
b2b2705c58 Merge pull request #925 from Giacomand/blob_vamp
Blob Gamemode Revamp
Blob gamemode is back and better than ever.
The blob is selected from be_alien candidates and is controled like a real time strategy game.
2013-07-09 21:33:29 -07:00
Giacomand
33e8976274 Removed the nuke code. You cannot nuke the station anymore.
Added a Jump to Node power.
Cleaned up the code.
Changed some more values.
Added a blob_act() to camera.
Removed most "if(gamemode == "blob") checks to stop people from using it to metagame.
Removed cells exploding when being blob_act()'d
2013-07-10 01:49:06 +01:00
Giacomand
6b39c6b1f9 Blob revamp!
Re-introduced the concept of a player controlling the blob in an RTS fashion, expanding the blob and building structures such as nodes and factories.

All blobs will try to find ghosts, with the BE_ALIEN flag, to be the blob overmind. Even random event blobs will try to get players to play as the overmind.

Added a /mob/camera that is now being used by the AI eye and the blob overmind. It is a mob that isn't dead but acts as a camera for the player, to be controlled by something like the AI or the blob.

There are now a resource currency for the blob to spend it's points on blob expansion and upgrades.

Added a small blob_act to mechs.

Made all camera mobs max invisibility. Because of this I removed the AI best friend button as it would be not working.

Blob mode will send a normal intercept report.
2013-07-06 21:19:33 +01:00
Intigracy
2b0c4dd187 Cheridan broke my git the first time, here's try #2!
Makes the "coder secrets" in secrets panel become general secrets for all admins. Adding myself to admins.txt for test server purposes, in case I ever forget to change it again.

Reasons:
It's very helpful to use the admin log for a quick glance to see who spawned the mateba for the clown, rather than open the serverlog to check.

Plus I see no reason why it should be restricted to coders, considering it's not really at all able to affect the game by admins seeing it.

Testing force overwrite

Cheridan broke my git the first time, here's try #2!

Makes the "coder secrets" in secrets panel become general secrets for all admins. Adding myself to admins.txt for test server purposes, in case I ever forget to change it again.

Reasons:
It's very helpful to use the admin log for a quick glance to see who spawned the mateba for the clown, rather than open the serverlog to check.

Plus I see no reason why it should be restricted to coders, considering it's not really at all able to affect the game by admins seeing it.
2013-07-03 22:20:15 -07:00
Giacomand
06e7f401cd Merge branch 'master' of https://github.com/Giacomand/-tg-station into tator_typos
Conflicts:
	code/modules/admin/topic.dm
2013-06-20 21:37:30 +01:00
Giacomand
58b63f33f2 * Fixed spelling typos. Tratior -> Traitor 2013-06-20 21:29:14 +01:00
Cheridan
5a83f85c83 Merge pull request #804 from Ikarrus/tplog
Traitor Panel Improvements
2013-06-19 21:08:14 -07:00
Ikarrus
9b395d65ca Admins get notified when someone replies to a syndicate transmission. 2013-06-17 22:46:16 -06:00
Ikarrus
26becb3937 Traitor Panel Improvements
-Added logging for admins editing objectives
-Added logging for admins adding new antagonists
-Changed the antag role assignment buttons to something more appropriate for the game modes. Will now tell you if someone is loyal (implanted).
-Added a isloyal() proc to check if a mob is loyalty implanted.
-Made the headrev message more noticeable
2013-06-17 22:39:32 -06:00
Cael Aislinn
cc66ec46db Merge pull request #552 from dumpdavidson/monkeyize
Monkey - Human transformation
2013-06-10 02:27:52 -07:00
AndroidSFV
af667da901 Makes the admin "Show Crew Manifest" verb inside the secrets window actually show the Crew Manifest, instead of the old dumb way of just looking at whatever ID human players are holding. 2013-06-02 19:22:47 -05:00
dumpdavidson
53529ea8f9 Changes behind the scene stuff regarding transformation from monkey to human.
-Adds a humanize() proc
-Changes monkeyize() proc to a child of mob/living/carbon (not implemented or tested with anything beside humans, though)
-Adds various options for monkeyize and humanize as binary flags
-Removed all instances of monkey transformation code being copy pasted (dna, changeling, adminverbs) and replaced them with monkeyize(). This fixed various issues with admin-verbs where mobs would ghost after transformation due to invalid use of transfer_to (mind transfer proc).

-Humans will now retain their old name if turned into a monkey and back provided their UE are unchanged
-Transformation from monkey into human will now deal the same amount of damage as human to monkey.

Signed-off-by: dumpdavidson <gtb.schmidt@gmail.com>
2013-05-10 17:23:20 +02:00
AndroidSFV
9063eaf9f4 -Makes the Energetic Flux event admin trigger-able via the secrets panel. 2013-04-23 12:15:26 -05:00
Pete Goodfellow
976e1f0136 Fixed 'break all lights' not breaking all (or any) lights 2013-04-18 19:58:44 +01:00
Cael Aislinn
de4a906c25 Merge pull request #329 from Carn/Issue304
Resolves Issue #304
2013-04-08 00:28:50 -07:00
carnie
6a98fc89d0 >datum/event and datum/event_control were renamed to datum/round_event and datum/round_event_control. This is because datum/event was already used by a different/more-general event queue system (used primarily on mechas)
Removed overriding of event values via feeding in an associative list into datum/round_event/New(). Instead you can do basic initializations (i.e. feed it constants) by doing new /datum/round_event{variablename=5;}(). This method is handled well by the compiler (it's the same method the maps use), so it will detect unrecognized variablenames etc.
More complex initializations for post setup() stuff can be done by accessing variables directly Event.variablename = whatever;
round_events now have a processing variable, which effectively pauses them.
2013-04-08 07:42:46 +01:00