Commit Graph

206 Commits

Author SHA1 Message Date
baloh.matevz
2f57200e82 - Fixes the broken population logging
- The current, file-based ban system is now a legacy system, the use of which is strongly discouraged for servers, which are constantly online.
- Added a database-based banning system, with a new baning panel, accessible through the 'banning panel' verb. Servers, which use this new banning system, will get the new panel up even if they use the old 'unban panel' or 'display job bans' verbs. These remain there for legacy support purposes. (Panel screenshot below)
- The most notable benefits of the new system are the ability to add offline bans, meaning the person does not have to be connected for a ban to be applied to their name. The second benefit is the ability to look up all previous bans that the person had.
- The major disadvantage is the complete incompatibility between the old and new system, meaning you have to either do a lot of copy-pasting or playing around in code to sync the old system with the new one. Servers upgrading to this system might want to consider a purge of all bans, if they don't want to go through this. Due to the incompatibility, there are no transition tools provided. Please contact me (errorage/rageroro) in #coderbus for help in syncing your database. The /tg/ legacy and database systems have been synced.
- The server configuration defaults to use the legacy system, as the new one requires the database to be set up. Please hash BAN_LEGACY_SYSTEM in config.txt as explained, to use the new system. If the database connection fails, the server reverts to the legacy system.

If any bugs or errors appear with either the legacy or new ban system, please let me know ASAP. The same applies if there are any syncronization problems between the legacy and new system, resulting in banned people unbanned or unbanned people banned.

Panel screenshot:
http://www.kamletos.si/new%20ban%20panel2.PNG

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5034 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-11 05:39:09 +00:00
baloh.matevz
c870d5e158 - Prayer visibility now starts on, as it should.
- Fixed pulse rifle, energy sword, blackhole and mob spawning
- Fixed 'reload admins' not properly updating the 'admins' list, which made adminwho fail, along with some other things.
- Fixed a bug, which prevented admin from even being loaded properly in some circumstances, in the database admin system.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5027 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-07 23:49:54 +00:00
baloh.matevz
abad9978b2 - Fixed the revision number not showing properly. Hopefully it's fixed for good this time, as it works off of logic, instead of line numbers.
- Standardized the database library code
- Deleted a few unused database related files (karma and forum activation), so they won't get in my way later. They work off of no longer existent database tables.
- Made it so the server maintains a constant connection with the database, which is established on world/New() and never broken, until the server ends. If 5 consecutive database connection attempts result in no connection getting established, the server will not attempt any more connections. Made all existing database connections use the global continuous connections. Currently we need two, as we have two databases, but the old database is going to get moved into the new one.
- Fixed the spaghetti-like report in the permissions panel, which happened when someone had many permissions enabled.
- Added database connection reports to display to dream daemon on server startup.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5015 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-06 17:21:13 +00:00
elly1989@rocketmail.com
b1fdee2e32 Changed some global_list stuff:
>tried to make the comments less confusing.
>Removed the procs for rebuilding the lists (they weren't meant to be used and half were broken anyway).
>added a directory. It maps ckey to client like so directory[ckey] = client. It could be used for PMs, banning, and various other admin tools rather than using \ref[]
>var/list/admins is now a list of clients whom are admins.
>var/list/admin_datums is what var/list/admins used to be. A map from ckey -> admin datum
Most of this is so I can add modular admin ranks in a non-horrendous way and fix some existing issues.
>var/list/client_list is now var/list/clients (laziness sorry)
>removed some needless loops and stuff.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4951 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-24 20:11:39 +00:00
elly1989@rocketmail.com
7b720a20b6 >Moved most of the helper procs into code/__HELPERS. If you see ANYTHING generic enough to be a helper proc just throw it in there and help purge the copypasta 5ever
>Replaced dd_text2list, dd_text2listcase, tg_text2listcase and tg_text2list with text2list and text2listEx. text2list will return a list of each and every character in the string if you set separator=""
>added return_file_text(filepath) which returns text from a file after doing some checks: does the file exist? is the file empty? It prints helpful error messages to the world.log if it runs into problems
>Replaced dd_file2list(filepath, seperator) with file2list(filepath, seperator). It just calls text2list(return_file_text(filepath), seperator). rather than copypasta
>Replaced time_stamp() so it's not as retarded
>Lots of the world setup stuff uses file2list now, rather than file2text -> sanity -> text2list
>Added error() warning() testing() procs. These print messages to world.log with a prefix. e.g. ## ERROR: msg.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4948 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-24 14:39:36 +00:00
giacomand@gmail.com
66a250ec58 -Fixed Issue 1021 - Rather simple solution but it's a shame I have to do it this way.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4918 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-20 03:46:11 +00:00
baloh.matevz
266f163879 - To support the SQL based admin rank system, I added a permission assignment panel, which is accessible to the people who have the PERMISSIONS permission. This panel can be used to add new admins, remove or edit the rank of existing admins.
Screenshot:
http://www.kamletos.si/permissions%20panel.PNG

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4878 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-14 19:45:21 +00:00
giacomand@gmail.com
ddd8e94784 -Walls, firelocks and glass-less airlocks now stop heat.
-Fire made more deadly, as the flames will add more damage and a fire can spread more quickly.
-Fire can break windows now, meaning they can potentially extinguish themselves by opening a window to space.
-Increased the delay for atmos to process a cell and airgroup, will help with the lag for 50 player servers.
-Minor tweaks were made.
--Plasma needing a bit more before displaying its overlay.
--Pressure can now damage you at 550 kPA. This was because it wasn't viable to set the pumps to over-pressurize a room and potentially kill people.
--High pressure warning shows at 325.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4869 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-14 02:02:18 +00:00
giacomand@gmail.com
eb68c1e510 -You can now only hear from headsets when it is on your ear slot. People around you won't be able to hear your headset anymore.
-The firedoor wasn't updating the freelook camera. When I looked at it I couldn't figure out why it was using it's own "rebuild" code, supposedly it only updates the air that it set in the dir variable but the current map doesn't utilize it at all (firelocks with a dir of 8 which are lined horizontalally), and you would have to have two thick wide firelocks to make it effective. I've commented it out and I'll put it back in if we have problems.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4832 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-08 03:52:25 +00:00
quartz235@gmail.com
a6e7c085ef Revert's cib's BS12 merge by XSI's orders
- Tested with various damtypes/locations/mobs but if i'm a dumbass and overlooked a problem feel free to punch me and revert this

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4762 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-27 02:14:21 +00:00
elly1989@rocketmail.com
9813d2bbec var/fakekey; var/ooccolor; var/sound_adminhelp moved from /client to /datum/admins. These settings will now persist through a round even through logouts.
var/stealth merged into var/fakekey as it was superfluous.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4753 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-25 13:09:43 +00:00
CIB123
a7cba9170d Fixed a problem with organ name display.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4728 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-19 18:04:35 +00:00
giacomand@gmail.com
0fbfa48217 -Added more info for admin messages in these areas:
Chem smoke will say what reagents are in the chem_smoke.
Added a more_info ? to the last fingerprint that touched the grenade.
Added a more_info ? to bomb's last fingerprint and the attacher.
Admins get a warning message when someone summons guns.
Added a jump link to bomb's activation location.
Added a jump link to chem smoke's activation location, it will also show you the area's name.

-NarSie won't follow mobs in another Z level.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4719 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-18 09:49:51 +00:00
giacomand@gmail.com
33c738de3e -Fixed an issue where you would compare your name with yourself to see if it was available.
-Fixed an issue with the Upgrade Camera malf module.
-Fixed an issue with HTML codes in whisper.
-Ghost ears and eyes default to 0.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4700 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-16 05:43:27 +00:00
giacomand@gmail.com
9b78786611 -The AI can now select a name after being AIed by someone placing their brain into the core. Fixed Issue 857
-You can't show messages to dead/clientless AIs by putting a page of paper up to the camera.

-Ghost following will get a list of mobs from getmobs, it'll sort it by mob type and by name.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4679 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-12 02:53:50 +00: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
johnsonmt88@gmail.com
c7947ef236 File restructuring: ohgodihopenothingbroke edition.
All /world/ stuff that I've found is now in code/world.dm instead of being scattered throughout the code in 6-7 files.

*****IMPORTANT*****
This means that hub.dm is now part of world.dm. Server hosts using the hub will likely have to redo the hub/password variables!

Again, that stuff is now located in code/world.dm
*******************

The tester list has been removed as it is not in use.

/code/defines
- Moved atom.dm code into /code/game/atom.dm and atom_movable.dm
- Moved hub.dm code into /code/world.dm
- Moved the /defines/tanning into objects/item/sheets/leather.dm
- Moved /defines/area/ into game/area/
- Moved turf.dm code into the code/game/turfs folder and divided it up into meaningful places

A lot of the files in /code/game were placed in new areas since they really didn't have a reason to be there.
- algorithm.dm: 
- - The world stuff is in world.dm. 
- - countJob() and AutoUpdateTK() were removed entirely (unused).
- - AutoUpdateAI() is now in /mob/living/silicon/ai.dm

- atom_procs.dm was split into atom.dm and atom_movable.dm

- cellautomata.dm
- - World stuff was moved into world.dm
- - Atom stuff was moved into atom.dm and atom_movable.dm
- - Atom verbs were moved into code/game/verbs/atom_verbs.dm

- chemistry.dm
- - Beaker box code was moved into storage/misc.dm
- - The trash can and 'alechemy' paper were removed. (unused)

- Landmarks.dm was moved into /objects/effects/landmarks.dm

- prisonshuttle.dm, specops_shuttle.dm, syndicate_shuttle.dm and syndicate_specops_shuttle.dm have been moved into game/machinery/computer/

- status.dm and topic.dm code were moved into world.dm

- step_triggers.dm are now in objects/effects/step_triggers.dm

- throwing.dm was split into appropriate files (carbon mob code, atom_movable.dm, ect)

- vote.dm is now in code/datums

/code/game/asteroid was split up.
- turf.dm was moved into game/turfs/simulated/asteroid.dm
- artifacts were split up
- - Wish granter is now in game/machinery
- - The stealth box is gone (unused)
- - The list of 'space suprises' was moved into astroid.dm
- asteroid.dm, being the only file left, was moved into /code/game


and finally...
modules/mob/organs files are now in code/datums/organs

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4659 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-08 22:11:02 +00:00
elly1989@rocketmail.com
ca7cb95b7d Moved cyborg law-syncing back into New().
New Borgs now sync with the AI with the fewest associated borgs. So, say there were 3 AIs and 6 borgs, each would get two each.
Cyborg cells now default to 7500 (like the transform procs do), this is so admin-spawn borgs don't end up with 1500-charge cells with a max of 1000-charge.
Default lawset is asimov rather than an empty lawset
pulsing a borg's sync wire will cause it to randomly pick an AI.
As a borg, your laws are shown to you at login.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4641 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-07 09:24:54 +00:00
giacomand@gmail.com
565b868ebc -Added a presets file for telecommunications. Moved all presets there.
-Made the Chief Engineer's cigarette spawn unlit. It was causing runtimes and everyone else spawns with unlit cigarettes.
-Updated changing AI name so it changes the eyeobj and the PDA, removed the PDA name from ai/life.dm()
-Removed a useless comment in uplinks.dm

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4636 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-06 09:36:45 +00:00
elly1989@rocketmail.com
907793619d proc/activeais() now fetches AIs from the list of living mobs, not the list of mobs with clients. This fixes an issue where AIs could prevent being selected for law updates by logging out for a bit.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4635 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-06 06:53:52 +00:00
giacomand@gmail.com
6117b5d02f -Fixed Issue 849
-Fixed some other occurrences of this happening. If you find any, please post it here: http://nanotrasen.com/phpBB3/viewtopic.php?f=7&t=9955 
or let me know in #coderbus.

-Split up the Core() verb a bit.
-When sending messages to Centcom or the Syndicate, with the communications console, it would never reset itself since it resets the wrong variable. I've given it the correct variable and I made the cooldown 10 minutes instead of a minute.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4629 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-05 23:42:04 +00:00
giacomand@gmail.com
a1695cb5ff -Added a purchasing log for uplinks. To view it, view the variables of the item with the uplink, navigate to hidden_uplink, click on it and then look at the purchase log variable.
-Sorted the following admin commands/verbs:
Get Key, Get Mob, Jump to Area, Jump to Key, Jump to Mob, Player Panel, Player Panel New, Send Mob, Show Player Panel, Show Traitor Panel
-Because of the recent player poll, electrified grilles will now shock you when you bump into them.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4560 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-27 07:57:49 +00:00
giacomand@gmail.com
0f830d74f4 -Fixed an issue with the AI Eye being moved by shuttles.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4558 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-27 05:19:55 +00:00
johnsonmt88@gmail.com
28aabc9810 More file structure stuff!
Cleaned up the files themselves.
Everything in code/game/objects should now be in proper files or places with the exception of the files in the /weapons/ sub-folder.

There's two instances of me not following the exact file structure.
- /obj/item/brain has been moved to a file in mob/living/carbon/brain
- /obj/item/clothing/mask/facehugger has been moved into mob/living/carbon/alien/special
Both of these may not make sense according to the object structure, but they do make sense logically. If it's a problem just move them.

Next up: Finish the files in the weapon folder, then start moving defines down.


My god I hope I havent broken everything.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4547 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-26 03:32:58 +00:00
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
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
johnsonmt88@gmail.com
19135de9eb Changes to the file structure!
There are many files, folders and chunks of code in areas that make absolutely no sense and thanks to the defines being located mostly in a completely separate file, it can be damn-near impossible to find something. Before moving defines to where the rest of their code is located; I'm going to move some code around into places that actually make sense to begin with. I'll mainly be focusing on the code/game/objects folder.

This commit mainly lays the groundwork for the work I'll be doing by adding in the effects, structures, decals and turfs folders. I'll slowly be moving appropriate files and code into these folders. I may end up moving machinery into 'objects' and mech stuff into its own module folder but I'll ask for some opinions on coderbus before doing that.

I've also gotten rid of the /magic/ folder. I've moved the library stuff into its own folder in modules/library, the cult stuff is now in gamemode/cult with the rest of it and musician.dm is now in objects/structures since the piano is a structure apparently.


I think I've got the hang of how DM and SVN handles folders and files but it's quite possible that something will break simply by svn committing it oddly. Please let me know if that's the case!

Remember to clean compile.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4513 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-22 15:50:09 +00:00
johnsonmt88@gmail.com
38d09c8c19 Revolution game mode fixes:
Station-heads who are monkied now count as 'dead' for round completion.
- This previously applied to revheads but not station heads.

Changed get_all/living_heads to pull from the mob list instead of the player list.
- It was causing players to get skipped by the check-antag verb admins have if they were disconnected.

Runtime fix by Erro for:
runtime error: Cannot execute null.show inv().
proc name: done (/obj/effect/equip_e/human/done)
  source file: inventory.dm,562
  usr: Nodrak Davis (/mob/living/carbon/human)
  src: the human (/obj/effect/equip_e/human)
  call stack:
the human (/obj/effect/equip_e/human): done()
the human (/obj/effect/equip_e/human): process()

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4509 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-22 01:40:48 +00:00
johnsonmt88@gmail.com
e25d7e38bb The symbols ' - and . are no longer allowed at the beginning of player names as they cause problems with admin commands.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4504 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-20 21:51:35 +00:00
sieve32@gmail.com
f1bfcfb2cf -Worked on mech fabs a bit more, replaced the has_var() proc with just the BYOND proc, since that's all it did anyways. Tweaked another part that wasn't silently discarding junk correctly. This is probably due to the lack of type-casting now, but even when I crammed areas and null refs into the fabs, they didn't runtime, and operated as intended.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4502 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-20 05:59:46 +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
d7c1882e16 - Fixes issue 463. Changeling clowns will now be able to return to their clown names.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4461 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-17 05:00:40 +00:00
baloh.matevz
a2b7a485ab - The sqllogging variable now determines whether a connection to the database is going to be established or not. To enable or disable sqllogging, comment or uncomment the ENABLE_STAT_TRACKING entry in config/dbconfig.txt.
Fixes issue 793

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4425 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-16 00:49:59 +00:00
elly1989@rocketmail.com
e0b538ea77 Runtime fix: getFlatIcon() - Will no longer runtime should overlays contain any nulls. (Interesting note: I was intending to fix this to try speed up update_icons() even more but it turns out BYOND really dislikes overlays += null. the optimisation took twice as long o.O)
Removed unused caching code from getFlatIcon(). We handle our own caching using datacore.dm

Runtime fix: datacore wasn't checking the type of object in the wear_id inventory slot. I've removed that so it now uses mind.assigned_role instead.
The following runtime has occured 1 time(s).
runtime error: undefined variable /obj/item/device/pda/warden/var/assignment
proc name: manifest (/obj/effect/datacore/proc/manifest)
  source file: datacore.dm,14
  usr: null
  src: the datacore (/obj/effect/datacore)

Runtime fix: staff-of-change projectiles were runtiminng when transforming somebody with implants. Cause: forgot a "continue" >.<
The following runtime has occured 4 time(s).
runtime error: Cannot modify null.layer.
proc name: wabbajack (/obj/item/projectile/change/proc/wabbajack)
  source file: change.dm,37
  usr: 0
  src: the bolt of change (/obj/item/projectile/change)



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4412 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-14 23:46:03 +00:00
johnsonmt88@gmail.com
aa498bd0c1 I'm a fucking moron.
Apparently that meteor gun I forgot to comment out had the wrong path in its attack_self(). Instead of the meteor gun shooting meteors, every /obj/item/weapon could shoot them when clicked on.

Here's a pile of runtime fixes to go along with this.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4409 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-14 22:40:30 +00:00
giacomand@gmail.com
7f8d0cd59b -I found the bug. Apparently view also gets the area that you are in and I wasn't accounting for it. I've made it so that the atom has to be an object or a mob before it will recursively check them.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4405 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-14 18:09:52 +00:00
giacomand@gmail.com
83cbc15746 -I forgot to test it with other players and there was a bug. This is a temporary fix until I can figure out why the mobs are being added twice.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4404 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-14 17:53:31 +00:00
giacomand@gmail.com
bba7cc299a -Fixed 726 and made some improvements to the recursive_mob_check, including a recursion limit.
-Added a helper proc called "hear", it is like view but it will ignore the luminosity limits.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4403 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-14 17:44:56 +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
c62bdf0a6e -Cleaned up sacrificing again so it didn't rely on hasvar()
-Made a variation of hasvar(), creatively named has_var(), intended for objects versus datums, and the var name is case sensitive
-Clean up mech fabricator code considerably, the terrible switches are all gone, and I was able to make it more robust at the same time. Now, if a junk item is added to the mech fab then it will remove it in 1 of 2 places, either when you call for the queue to be displayed (Will throw it out then rebuild the queue) or when it is processing the queue (Will throw it out then reprocess the building), so now you won't even see the shit that finds its way in there.
-Made the add_part_to_set() useful, now instead of dumping everything in the "Exosuit Equipment" category, it checks if the design's category matches one of the part sets, then adds it to said set if it does (All others get dumped into "Misc"). Right now there isn't much through, mostly just moving MMIs, cells, etc... to the "Misc" set, but this would be easy to use with any other system that handles designs
-Little bit of OCD here, but I noticed that the cells on the map were all 'crap' cells, even though they had 1.5x the charge of a high-capacity cell, so I changed them all to high-capacity cells with the added capacity

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4395 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-13 18:53:28 +00:00
giacomand@gmail.com
38d209e662 -Changed recursive_mob_check and get_mobs_in_view. It might also fix the cause of some people being able to hear behind walls (unconfirmed)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4389 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-13 08:43:42 +00:00
giacomand@gmail.com
ec4dd7b397 -People with Mesons will not be able to hear through walls, sorry for not catching this before.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4379 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-12 09:31:35 +00:00
giacomand@gmail.com
c33fa849af -Accidentally removed something I wasn't suppose to.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4366 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-11 07:18:18 +00:00
giacomand@gmail.com
d5b3b537bf Added recursive_mob_check() proc. It will recursively loop through an atom's contents and check for mobs, then it will loop through every atom in that atom's contents. It will keep doing this until it checks every content possible. This will fix any problems with mobs, that are inside objects, being unable to hear people due to being in a box within a bag.
I then changed the get_mobs_in_view() to use this proc for gathering mobs and radios. 

The old system would loop through lists for a total of 5000 per function call, in an empty server. This new system will loop at around 1000 in an empty server.

I made get_mobs_in_radio_ranges() use a level parameter to help make it more effecient by only bothering with the mobs that are in the Z level that are getting the radio message.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4365 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-11 07:08:58 +00:00
elly1989@rocketmail.com
6e9ee0cadb Tiny performance tweak for get_mobs_in_radio_ranges()
Known Issues:
It's getting called 3 times for every message sent through telecomms rather than just once like it used to. this is due to the relays on the station, telecomms and mining.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4363 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-11 02:06:36 +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
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
rockdtben@gmail.com
40495a6adb As Rageroro suggested I made it so the proc checks for headsets first. This will reduce lag in the cases that the player has a headset. Which is often.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4339 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-08 16:28:53 +00:00