Commit Graph

468 Commits

Author SHA1 Message Date
elly1989@rocketmail.com
6e274cd395 New lighting, it's essentially just the old DAL system with a queue.
Comments for lighting:
	Like sd_DAL (what we used to use), it changes the shading overlays of areas by splitting each type of area into sub-areas
	by using the var/tag variable and moving turfs into the contents list of the correct sub-area.

	Unlike sd_DAL however it uses a queueing system. Everytime we  call a change to opacity or luminosity
	(through SetOpacity() or SetLuminosity()) we are  simply updating variables and scheduling certain lights/turfs for an
	update. Actual updates are handled periodically by the lighting_controller. This carries additional overheads, however it
	means that each thing is changed only once per lighting_controller.processing_interval ticks. Allowing for greater control
	over how much priority we'd like lighting updates to have. It also makes it possible for us to simply delay updates by
	setting lighting_controller.processing = 0 at say, the start of a large explosion, waiting for it to finish, and then
	turning it back on with lighting_controller.processing = 1.

	Unlike our old system there is a hardcoded maximum luminosity. This is to discourage coders using large luminosity values
	for dynamic lighting, as the cost of lighting grows rapidly at large luminosity levels (especially when changing opacity
	at runtime)

	Also, in order for the queueing system to work, each light remembers the effect it casts on each turf. This is going to
	have larger memory requirements than our previous system but hopefully it's worth the hassle for the greater control we
	gain. Besides, there are far far worse uses of needless lists in the game, it'd be worth pruning some of them to offset
	costs.

	Known Issues/TODO:
		admin-spawned turfs will have broken lumcounts. Not willing to fix it at this moment
		mob luminosity will be lower than expected when one of multiple light sources is dropped after exceeding the maximum luminosity
		Shuttles still do not have support for dynamic lighting (I hope to fix this at some point)
		No directional lighting support. Fairly easy to add this and the code is ready.
		When opening airlocks etc, lighting does not always update to account for the change in opacity.

Explosions now cause lighting to cease processing temporarily.

Moved controller datums to the code/controllers directory. I plan on standardising them.
"Master","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply Shuttle","Emergency Shuttle","Configuration","pAI" controller datums can be accessed via the debug controller verb (used to be the debug master controller verb)
Supply shuttle now uses a controller datum. Shuttles tend to arrive up to 30 seconds late, this is not a bug.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4537 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-25 16:06:57 +00:00
giacomand@gmail.com
676079cdba -Added more cameras to Telecomms.
-Made telecomms look symmetrical again.
-Added the telecommunication blackout event to the RNG. Admins can trigger it and they have an option to alert the crew.
-AI can now properly use their multitool. (forgot to uncomment)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4536 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-25 06:34:09 +00:00
giacomand@gmail.com
683662f3b6 -Ported/continued AI Freelook. AIs can now look around like a ghost with the exception that they cannot see what cameras cannot see. Meaning if you're in maintenance, and there's no cameras near you, the AI will not know what you are doing. This also means there's no X-Ray vision cameras anymore. I've added documentation to freelook.dm which explains how the system works, if anyone is interested in adding anything. More information here: http://nanotrasen.com/phpBB3/viewtopic.php?f=7&t=9675
-I've added some cameras to rooms that should have cameras but were previously depending on other camera's using their X-Ray vision in order to see into a room.

-AIs have a multitool in their contents that they can use to interact with the telecommunication machines.

-Added "Follow" for observers. Works the same as AI tracking without checking if they can track.

-Added a range to how far Cyborgs can interact with machines. This is to stop Cyborgs from interacting with machines through cameras, which could be used to easily disable the AI.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4531 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-25 05:34:33 +00:00
giacomand@gmail.com
42f3efc21a I wanted to wait until after the feature freeze to commit this but there have been problems with Telecomms recently and this update that I've been keeping fixes most of the issues. I've tried to remove most features from it but there were some things that I couldn't.
-TCommsat machines no longer use their Z level to check if they can receive the signal or not. Instead, they use listening_level. It defaults to 0 for machines that don't change the value. If it is 0 when the telecomms machine's New() is called it will set itself to it's Z level.

-This allows you to manually change the value to other Z levels. I call this an off-site relay. I've added an off-site relay on the satelitte for the station and removed the one in the communications room.

-Players can create an offsite relay with two receivers, two broadcasters and, if necessary, a relay. Why two receivers and broadcasters? Otherwise any player can go to the Ruskie/Mining relays and turn them into off-site relays for the station! It would harm the TCommsat's usefulness. Instead, you will have to setup another broadcaster and receiver if you want to do that. Though it may be pointless, if someone sabotages the Commsat they would have destroyed/depowered the other machines there too.

-About the option to have an offsite relay, there is only a single Z level that you can lock onto at the moment and that's the station. Gameplay wise, the TCommsat is orbiting the station and if we do get the away missions then it would not make sense for the TCommsat's broadcaster/receiver signal to be able to pickup there. More sense if the Receivers and Broadcasters from there
are sent here... maybe. I don't know, seems more fun this way.

-Fixed an issue that doesn't let the Engineer Borg (or Borgs with multitools) be able to link machines with their multitool module.

-All-In-Ones do not have a Z level restriction. They can pick up ALL signals and send ALL signals (to Z levels 1-10)

-Fixed an issue with the player being unable to remove frequencies from the filter.

-Added support for additional interaction options for certain machines. To use it, create a new Options_Menu() and Options_Topic(href, href_list) for your machine.

-Added EMP_ACT to Telecommunication Machines. I've also added an event called "telecommunications_blackout()", it will loop through all telecomm machines, in telecomms_list, and EMP_ACT them. The EMP will last 2 minutes. Currently only admins can use it.

-Fixed issue 831

-Changed the map. The station no longer has the station relay, it is now on the Satellite. There's an empty room now, it should be used for something after the feature freeze.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4522 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-23 16:27:21 +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
baloh.matevz
bdee209b43 - Fixed issue 776. Answering a messages sent to Centcom via the command console by using the RPLY link will echo the message to admins.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4443 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-16 18:32:51 +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
elly1989@rocketmail.com
83c2d91047 Fix for the "Everyone is the traitor" secret event. Cause: it passing mobs to the proc rather than minds.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4421 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-15 22:29:02 +00:00
baloh.matevz
5a3b9d7a24 - A change to 'who' for admins, which now displays more information. Amongst these is the ckey of the person, the name of the character they're playing, their status as alive, unconscious, dead or observing (joined as observer) and whether they are an antagonist or not. Along with this you get an adminhelp-style (?) link which displays further information about the person. While this might not be considered a 'bugfix' it is necessary due to the removal of the tensioner panel as it gives a quick overview of how many people are alive and how many are dead.
- Removed the obnoxious message blue and red colors which was shown when hydroponics trays were overran by weeds. The message is now blue and has a dot at the end, instead of an exclamation point.
- Made '/obj/effect/debugging/marker' immovable. It was silly that it reacted to air movement.
- Standardized mapping.dm
- Removed the round-end condition of "Everyone is dead! Resetting in 30 seconds!"

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4415 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-15 00:24:24 +00:00
elly1989@rocketmail.com
4c87332cc1 Resolves Issue 734
> A clown's medical, crew, and security records are updated with his newname. (read below for details)

> reject_bad_name() now checks for dumb names like "space","floor","wall","r-wall","monkey","unknown","inactive ai" (if you know any other important ones let me know)

> clname() [clown-name] and ainame() [AI name], procs which allow those players to rename themselves, were merged into /mob/proc/rename_self(var/role, var/allow_numbers=0)
This proc gives the mob 3 chances to name itself. It checks names using reject_bad_name() (the same thing that checks the round-start names). If it fails 3 times it will not change the name. If it succeeds it will call the proc in the next bullet point.

> /mob/proc/fully_replace_character_name(var/oldname,var/newname) will replace most references to a mob's oldname and replace it with newname. It updates name, real_name, mind.name, updates their id, updates their pda and updates all their data_core records (manifest records like medical, security, general, locked)

> data_core procs merged because they were massive and all identical.

> accidentally fixed an AI sound which accidentally played upon login. It conflicted with the "Welcome to the station crew" announcement. So I commented that out to try the 'new' fixed one. If people hate it I'll comment it back to how it was.

> naming a mob with the big name  at the top of viewvars will use fully_replace_character_name()

> Removed an uneccessary regenerate_icons() proc from every player which spawns. Should speed up spawns a smidge



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4396 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-14 10:44:41 +00:00
sieve32@gmail.com
4b72ada290 -Cleaned up the code to sacrifice borgs, AIs, and brains. (Also made it possible to sacrifice AIs on intelliCards)
-Gave brains a proper gib() so they are actually gone
-Added a proc to the 'Secrets' panel, a variation of power the station that instead is MUCH faster and just powers all SMES, turns on output, and sets it to max (helpful for testing and it doesn't leave the server frozen for 60 seconds to process)
-Added maxHealth to mice, killer tomatos, and walking mushrooms (They started with 5 health but could be 'healed' up to 20)
-Made the updatehealth() actually usable outside of humans by making it use maxHealth instead of just '100'
-Fix for shield generator sprites not updating properly, caused by not all generators actually updating on powerloss, and adding an update_icon() where needed
Fixes Issue 751

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4393 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-13 15:30:36 +00:00
johnsonmt88@gmail.com
e9671308bf Reorganized clothing as a whole.
Everything related to clothing should now be defined in modules/clothing. I'm almost certain there's clothing code hidden elsewhere but this should be the vast majority of it finished.

Everything is set up related to the object types themselves (meaning paths.)
So all hats will be in modules/clothing/head, all gloves will be in modules/clothing/gloves, ect...

I've removed 'modules/clothing/random.dm' and 'objects/items/clothing.dm' which both seemed to just be a place where people would put stuff they were too lazy to find a proper home for.

I've also moved files that had no, or very few blocks of code into more catagorized areas.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4388 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-13 02:17:14 +00:00
elly1989@rocketmail.com
a79f049ebd Moves mob/var/datum/changeling/changeling to datum/mind/var/datum/changeling (changeling datums are now held by minds rather than mobs)
As such, changelings can now be reported at round-end, even after gibbing. Resolves Issue 251

Changeling power proc_holders are now datums rather than objects.
Condensed all those changeling stings down a bit. This will make fixing issue 351 easier to fix

Replaced changeling fakedeath and a number of checks for the zombiepowder reagent with a bitflag: mob/var/status_flags & FAKEDEATH
setting the FAKEDEATH flag will make the mob appear dead in exactly the same way changeling parasting and parapens worked. I've updated changelings and zombiepowder to work with this flag.

Bug fixes for the staff of change. There was a type mismatch and I typo'd "alien" as "xeno" so xenos were not being randomly picked.

TODO:
changeling purchased verbs could probably be moved to mind/special_verbs. Likewise, other modular antag proc-holders can be merged with the changeling system using the same type of datum. (namely wizards)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4377 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-12 05:43:39 +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
107b71f128 Resolves Issue 763
Editing bans will now report the duration correctly.

Known issues:
The ban system looks like something my cat threw up.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4358 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-10 17:32:19 +00:00
elly1989@rocketmail.com
df75514318 Preparations for minds - Part3.
Replaced mob/var/original_name with datum/mind/var/name.

Halved the speak-chances of every simple-animal because that constant squeaking was insufferable.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4346 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-09 12:40:17 +00:00
elly1989@rocketmail.com
6b56ef27ac Fix for admin-ghosting. Admins couldn't re-enter body after using set-observe.
Cause: I forgot to set the ghost's can_reenter_corpse to 1 after I changed something.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4344 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-09 01:36:19 +00:00
elly1989@rocketmail.com
81bff7c5f5 Important!
Minds part2 - Carn loses her mind.

The way datum/mind stuff works has been changed a lot. I really can't explain everything. If you have any questions it'd just be easier if you leave a comment or ask me in coderbus.
Generally, minds now represent IC characters rather than following a client around constantly. Minds can change owners, mobs, (names WIP).

Technical babble:
The var/current and var/original variables of the mind datum must always be of type mob/living (or null). Please do not mind.transfer_to(ghost_mob). If you want to ghost somebody use ghostize()! It will do all the technical stuff for you.

mob/dead/observer/var/corpse was removed. mob/dead/observer/var/mind is now used as a reference to the last mind the player had (so respawning code has something to reference), but also because mind.current is a far more useful way of tracking a corpse. If somebody triggers a mind.transfer_to() call on your corpse, your mind will be tranfered to another mob/living or something...that will then be considered your corpse. This could allow for more interesting mind_transfers. For instance, the "raise corpse" rune ghostizes any player in the corpse to be raised and selectes a random dead player to take possesion of their character! The person possesing them will have all of their memories, objectives, etc. The poor guy who was originally the owner cannot re-enter body if there is another player in his body...but if that player is ghosted he can once again return. Exorcisms anybody?

Changes to cloning and hydroponics. I will likely have to rework these later as they're hacky as hell right now.

A lot of stuff is now handled by Login/Logout rather than in hundreds of different places. One such example, mind datums get their variables updated at Login and Logout.

Fixed a few minor bugs. I'll update the issues manually in a bit because I literally cannot think atm.

TL;DR guide:
-If you want to make somebody a ghost use ghostize(). Or you will need to find a doctor to stitch your bits back on. :)
-You don't have to worry about making minds. Simply doing key="carnwennan" or whatever will either: A) make a new mind and initialise it if there isn't one or B) take possession of the mind currently attached to the mob.
-It's safe to transfer a mind even if a key isn't in-body (e.g. they are ghosted/admin-observing etc!) Minds have an active variable which tracks whether they are currently synced with a key. This is to avoid dragging ghosts back into their bodies when say, a wizard mind_transfers them.
-Transferring a mind whilst var/active=1 will cause the following: mob.key = mind.key. So no need to do that separately (in fact you'll lag things if you do, so don't)
-If you do want to initialize a mind manually, say if you don't have a client to login to the mob yet, simply do new_mob.mind_initialize(). Simple! When someody is logged into that mob they will take ownership of the mind and it will sync up.

NOTE: a lot is probably broken since this is a pretty massive change. Please let me know asap (with actual info! Shouting at me, "IT BORKED HALP", doesn't help)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4342 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-08 20:51:55 +00:00
johnsonmt88@gmail.com
0225ed33b7 Cleanup of proc/helpers.dm
Split a bunch of procs in helpers.dm into new files:
-helper_list
-helper_text
-helper_type2type

These files are sorted into groups internally. Hopefully people will make it easier for people to find useful procs.

I've added comments to a good chunk of these procs as well explaining what they do.

I've removed a few unused or unnecessary procs and fixed up a couple that were not working as intended.

I've also moved a mob proc 'get_equipped_items()' into mob/inventory.

All of the non-helper.dm files (besides mob/inventory.dm) are the result of fixing duplicate procs. It seems that there used to be text searching procs where one was case sensitive and one was not, and at some point someone removed the case-sensitivity of the case sensitive procs. I've re-added the case-sensitivity and as a result, I've had to go through extra files and ensure that they were calling the proper proc.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4341 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-08 19:32:08 +00:00
elly1989@rocketmail.com
fb600f9bce Ok, part 1 of this huge mind datum fix. I need to run over the next part again because I've made a lot inconsistencies in it. This is sort of all the misc stuff that got tidied up whilst I was trying to get my head around how everything related to eachother.
This part focuses on:
-structuring the way silicon mobs initialise upon login (there was some hideous copypasta in Login() and New() which used spawn() to change the order of the calls so it was all jumbled up. I think I've got it sorted now.
-Borgs var/real_name was not initialising as "Cyborg". Meaning the name checks were kind of borked.
-Ghosts are now deleted at logout if they no longer have a key. This will stop unneeded ghosts being left lying around. It will not delete ghosts with keys assigned (so people can't respawn or anything). Removed all the del(ghost_ref) stuff I could find. Generally movign the key from a ghost should be the last thing you do as the ghost will be deleted by Logout. However I've put it in a spawn() to hopefully avoid coders accisentally using it in a way which causes runtimes.
-Fixed clone-plants spawning dud potato-people left, right and centre. They'll now dump seeds if it fails for whatever reason.
-Cultist and Rev status are removed at mob/living/silicon/Login() rather than having to be called on a special-case basis everywhere. This may not be necessary when this stuff is finished.
-Removed a bunch of :
-Commented mob/living/Login() with the rest of the antag-indicator code from cloning.dm and hydroponics.dm for any coders whom feel brave/suicidal to fix the related issues

Next on the agenda, replacing mob/var/original_name with datum/mind/var/name to fix the ticker runtimes
Then, fixing mind/proc/transfer_to(mob) once and for all. (There are issues with duplicate minds, role updates, inconsistent initialisation etc etc *yawn*

There's probably a few obscure bugs in there somewhere. Might want to hold off on the updates for a bit. Coderbus will likely spot them all by the end of the week.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4322 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-05 15:29:15 +00:00
sieve32@gmail.com
d403ae7cb1 -Fixes an unreported bug, where the equipment on wizards/nukeops/headrevs/cultists wouldn't appear until you picked up an item (Fixed by calling the appropriate icon update)
-Fixed the issue with cookies not appearing mobs until they picked up something
-Now when you are in the process of suiciding, Life() will treat all breaths as failed and you will take more oxyloss than someone in crit that isn't suiciding (Instead of being in crit forever because you could still breathe just fine).
-Fixed a pretty dumb bug in human life, where you would be treated as dead at -100 health, but you didn't die until you hit -101. This mostly caused issues with oxyloss, because once you hit -100 you stopped breathing, but were still alive.
-You can no longer put borg items on monkies, and while I was at it I made directionals for their handcuffs
Fixes Issue 728
Fixes Issue 731
Fixes Issue 714
Fixes Issue 694

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4310 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-04 00:47:55 +00:00
elly1989@rocketmail.com
a9eabb0561 Created global lists for hair and facial_hair datums since they are referenced frequently. This means those datums are only ever created once. Also, the list is indexed by hairstyle name. This means means we only need to store one variable to find the hair datum. It also means admins can change h_style and f_style to the name of the hair and use the Regenerate Icons function in viewvars to update a human's hair icon. If an incorrect f_style or h_style is input it won't affect anything adversely (besides hair not showing for that mob).
The hub will no longer report admins who are stealthminning.

Added a server byond_version check. All it does is tell you if your byond_version is below RECOMMENDED_VERSION and encourages you to update BYOND.

Underwear and bag lists are now a single global list rather than creating the same list for every new player.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4268 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-01 13:40:43 +00:00
elly1989@rocketmail.com
066ec983fe Added byond_version checking to client/New(). If a client's installed byond_version is lower than MIN_CLIENT_VERSION then they will be autokicked.
It is not in effect yet (minimum version is v0 :P). However, <b>everyone must update to at least byond version 494 by the end of the month, or they may find themselves unable to connect</b>.

If anyone has a legitimate reason for why they need to use an older version (linux, language-support etc) please get in touch and we'll work something out.

Why is this even necessary? Encouraging the payerbase to keep up-to-date BYOND clients will allow us to implement newer BYOND features reliably. It also makes sure all clients are behaving similarly.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4263 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-01 09:53:00 +00:00
elly1989@rocketmail.com
99354f8c71 More gifts from FPstation. This fetches a list of known proxies and stops people from connecting whilst using them. Proxies are often used for nefarious reasons.
It needs to be kept as up-to-date as possible, so it autoupdates every 6+ hours or so to ensure the database is relatively up-to-date.

Like the previous commit, I'd only really recommend it if the other stuff isn't getting the job done.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4257 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-31 20:42:10 +00:00
elly1989@rocketmail.com
c4dc6fcb0b Committing this because I just merged it into Facepunch code for like the 49548083603th time ;_; - Added the ability to ban somebody by IP-address when giving permabans.
It's not quite as well done as I'd like it but it works and can be helpful.

IP bans are kinda lame so please only use them for multikeyers/extreme-douchebags and such.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4255 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-31 20:14:21 +00:00
sieve32@gmail.com
8658a64dc3 -Redid admin_list to be based off clients rather than mobs (Why I did it with mobs first, I'll never know). This fixes AdminWho and Asay and such not working pre-game.
-Added in the proper list stuff for changeling stasis
-Added a verb to the debug list (Game Admin+) to check the mob lists instead of requiring the item (Works the same way)
Fixes Issue 708


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4240 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-31 02:02:30 +00:00
elly1989@rocketmail.com
4fcbd6e169 Removes some seriously confused code regarding transferral of minds to ghosts upon death/gibbing.
The main problem is: if a mind is transferred to a ghost, objectives that have that mind as a target will treat the ghost as the target mob. Which is clearly a problem. This should fix exploits where people could force people to win/lose objectives via ghosting, gibbing, etc.

It should also eliminate any other weird bugs like the one Nodrak fixed a while ago where pais would keep their mind....meaning they were like, a cultist pai or something and could rat antags out to its owner using the HUD.

Removed some conditions from objectives (like those pertaining to the thunderdome) as they were bait for meta. >ghost >teleport to thunderdome >antag fails the objective she completed

Resolves issue 662

Fixes a few instances of original_name becomming null (there's still loads)


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4214 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-29 09:21:57 +00:00
johnsonmt88@gmail.com
cfd5cff352 The 'Check AI Laws' verb now shows which AI (if any) the cyborgs are synced to.
Fix for a runtime due to an attack_verb being a string instead of a list. (You can once again robust people with toolboxes!)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4210 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-29 04:09:40 +00:00
sieve32@gmail.com
e3acc68917 Quick fixes again, firstly, you won't hear emotes at the login screen (Didn't realize new_player was being put into the dead list), and admins that are promoted/demoted will be added/removed to the list as needed.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4206 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-29 01:34:15 +00:00
baloh.matevz
18ad19d3cf - Me and noddie were both working on the same thing at the same time. So one of the doubled procs has to go. And since I'm making the update it's gonna be his proc that goes :3
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4191 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-27 07:51:27 +00:00
baloh.matevz
f908a610b7 - If someone enters the name of an AI or the word 'AI' in an adminhelp, a (CL) link is displayed along with the others, which is a shortcut to the 'check laws' secret panel button.
- The 'check laws' secret panel button now outputs AI laws, cyborg laws and also pai laws. It used to just be AI laws.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4190 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-27 07:13:08 +00:00
johnsonmt88@gmail.com
9822174a60 Changed the dormitory area from /area/crew_quarters to /area/crew_quarters/sleep so that wizards and the like who try to teleport there wont end up in completely unrelated places like /area/crew_quarters/hor (RD's office)
Moved 'Check AI Laws' to the admin tab instead of being hidden away in the secrets window.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4188 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-27 02:10:35 +00:00
johnsonmt88@gmail.com
58910a2318 Secure closet 'Toggle Lock' verb now takes into account whether the locker is broken. Fixes Issue 683.
The admin 'Spawn Xeno' verb will not longer state that an admin spawned a xeno when they cancel out of the operation. Fixes Issue 688.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4185 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-26 15:51:33 +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
baloh.matevz
db63780bac - Added unban logging to DB_ban
- Fixed a runtime error which happened when you tried to unban someone through the 'display job bans' verb.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4148 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-23 01:24:54 +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
f572819d51 - Removed an unneeded area
- Hopefully fixed the bug which allowed players to get a million toys from one arcade game.
- Removed poly's master controller failsafe due to it doubling up the master controller for no reason whatsoever.
- You can now redeem a full collection of mech toys at the quartermaster's for an actual mech!
- Added this stuff to the changelog.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4138 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-22 05:09:22 +00:00
elly1989@rocketmail.com
a4681d5d3d Merged all those vent-crawl procs D:
As such the same rules apply to all mobs now. They all make noise as they exit the vent. They can all be blocked by welded vents. They all cannot carry items through (except implants and facehuggers). They all have a delay in arriving at their destination.

This removes any meta "Vent noise! Must be aliums cos monkeys don't have that code!". Fixes a bug that stopped ventcrawl working. And, best of all, you can vent-crawl to any connected vent..not just one per area. :3

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4137 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-22 02:57:26 +00:00
elly1989@rocketmail.com
f6ded04899 Minor optimisations for explosions (again). Only removed some unnecessary lists, nothing major. Added some logging to world.log which gives explosion location/duration etc so we actually have something to compare it to whenever that damn code gets changed again :P
Added a shortcut to player notes into the investigate verb. Just type investigate notes

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4132 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-21 02:20:16 +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
elly1989@rocketmail.com
85d28606ef Reduces the rank requirements for giveruntimelog from GM to Badmin. This is so coders can log into the TG servers and pester any present admin for log access.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4113 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-19 15:50:27 +00:00
giacomand@gmail.com
7575c9a9cf -Added a new global list. Cameras will hold every camera created and is kept up to date by the Camera's New() and Del(). Much faster than having everything loop the world. AI camera movement seems faster too.
-Fixed Issue 415

-Tweaked creating new cameras. When you create a camera from a camera assembly, it will now auto detect the direction it should be in. I also added a confirmation message which allows you to re choose the direction with up to 5 chances; to avoid infinite loops.

-Made the New Player Options window a little bit slimmer.

-Forgot to add a changelog for my last commit.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4096 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-17 16:23:47 +00:00
ericgfwong@hotmail.com
d96e6a08b0 Merged classified report button with the regular command report button.
It now asks if you want to announce it to the crew or not.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4093 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-16 20:23:01 +00:00
ericgfwong@hotmail.com
627e5e295d -Telecoms now has its own style of doors, to be more visibly unique from Space Station 13
-Added new Create Classified Report button for admins. It's a more discreet way for Centcom to communicate with the heads of staff without announcing it to the entire crew.
-Uncommented admin notices for cyborg lockdowns/releases

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4091 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-16 19:44:05 +00:00
ericgfwong@hotmail.com
c93200ed5f -Added salt and pepper to kitchen
-A few changes to admin stuff:
--Set-Play now auto-disables deadchat visibility. Set-Observe still auto-enables deadchat visiblity
--Emagging/overriding the holodeck now logs
--Removed Admin Notices for emagging and locking down cyborgs (still logs normally)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4085 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-16 09:14:52 +00:00
johnsonmt88@gmail.com
34ddd1a947 pAI emoticons by Willox and Messycake!
- This adds a list of emoticon choices for pAIs on the pAI OS
- These choices add small overlays on top of the screen
- Credit to Willox for the code and Messycake for the sprites.

Nodrak:
pAI's with null names now get a pick(ninja_names) name instead.
- If someone wants to make it pick from a different list feel free, but having null name causes problems down the line.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4075 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-15 04:35:56 +00:00
elly1989@rocketmail.com
65ff691098 Fixed evidence bags so the items inside are now visible even when the bag is inhand (the problem was that overlays += obj uses the object's layer variable rather than the default FLOAT_LAYER. So the hud was appearing over the overlays. Fixed it by using image(obj) to take a snapshot). Changed the overlays to underlays to make them look better. Fixed issue 637 where putting objects in bags which were currently in your inventory did not remove the item from your inventory.
Replaced the obj variable var/see_face. It was used to determine whether something (namely masks/hats) hid your identity. Replaced with the HIDEFACE bitflag for var/flags_inv variable. Moved the var/flags_inv variable from atom/ to obj/item/ as only /obj/item/ can be in your inventory in the first place.

Fixed get_visible_name() so it takes into account any item on the var/head when deciding if your face is obscured. (While I'm at it, just dump a comment here if there's anything that should hide your face which doesn't and I'll add the flag.)

Removed the var/alien_egg_flag variable from mob/living/carbon/ and replaced it with the XENO_HOST bitflag for var/status_flags variable. You can now suicide whilst impregnated with a xeno (since you will chestburst even after death, that restriction is no longer necessary).

Any mob/living descendent can ghost even when not dead. However, ghosting whilst not dead results in the ghost eing unable to return to it's body for the remainder of the round. (It has a warning popup)

The suicide verb can only be used by humans when they can move and are not cuffed. These verbs will be totally replaced very soon with the 'fun' IC suicides I'm working on. Suicide is largely redundant given that anybody can ghost now, just didn't want to jump the gun in removing it.

Known Issues:
We've got var/flags_inv, var/slot_flags which could possibly be merged as they both deal with obj/items, although I'm not sure if we can fit oth into the 16-bit limit. Just something to look into.
There are bitflags GLASSESCOVERSEYES, MASKCOVERSEYES, HEADCOVERSEYES, MASKCOVERSMOUTH, HEADCOVERSMOUTH in the var/flags variable which should really be merged with or moved alongside the very similar flags in var/flags_inv. Comments next to the defines suggest as much.
You can borg dead/clientless brains but can't remove the brain fromt he borg once you realise it's a dud. >.<

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4072 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-14 21:43:54 +00:00
johnsonmt88@gmail.com
ba18f631c0 Emergency Field Generators are now live!
- Now have an emp_act
- Can now be (un)locked by engineering IDs

Reverted ghosts getting mob attack logs and moving the ghost verb to clients
- This should fix the ghosting issues, but it's possible I've missed something. If there's any problems ping me(Nodrak) in #coderbus on IRC and I'll fix it.
- Attack logs moving to ghosts would be an amazing feature, it's not that admins can't get that information already but it makes it much easier. If it can be implemented without all of these bugs, it'd defiantly be an asset
- Fixes Issue 647

Removed logging from the cremator as it was causing runtimes and the cremator to lock up. Fixes Issue 649

Fixed an issue with unjobbanning players.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4044 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-11 19:55:20 +00:00
baloh.matevz
ef493f3b51 - Made the number of deciseconds someone has to be inactive to be considered AFK a define (AFK_THRESHOLD) which defaults to 3000ds = 300s = 5m, which is the same as it was before. This is still only used when an admin uses 'adminwho' to tell if admins are AFK.
- send2irc will now only send adminhelps to irc if there are no admins online or if all the admins online are AFK. If will add a "- No admins online" to the end of the message if there are no admins online or a " - All admins AFK (X)" with X being the number of admins currently online.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4038 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-11 17:39:16 +00:00
elly1989@rocketmail.com
f92bec2a22 Resolves issue 594 - You can no longer use Mech-drills/clamps/etc to interact with your hud items.
Fixed an old feature that diverted clicks on a hud inventory-slot (say, the place you put your bag) to the object in that slot (i.e. making it easier to click small items and also making it possible to remove things that have borked and turned invisible

Fixed admins being able to change their own rank via chgadlvl.

Insignificant tweaks to DblClick() just removed some useless bits near the top.

Known issues:
Can't put straight jackets on aliums anymore for some reason
Aliums can remove straight jackets from themselves.
Can still mecha-drill a few things you shouldn't be able to >_>

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4032 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-11 07:48:14 +00:00