Commit Graph

210 Commits

Author SHA1 Message Date
YotaXP d1827c6466 Removes the empty Status tab that is active by default at login.
Has no effect for admins.
2013-11-10 01:53:59 -05:00
Giacomand 476b64bd76 Fixes #1691 by limiting the show_message proc. 2013-11-01 23:51:00 +00:00
Aranclanos a2981e5f9c Merge pull request #1589 from SuperSayu/clickstuff3
Mecha, hud, and click fixes
2013-10-25 09:16:54 -07:00
Aranclanos bbd1cfd389 -the number of active turfs on the status tab will be refreshed and the end of each tick and when the air controller setup finishes.
-mining rooms will be generated before the air controller is created
-changed the total of moles of the NO2 turfs from 2000 to 6000 to compensate the replacement of the canister that spawns like 36000 moles on top of it for a normal canister. I'm talking about the NO2 canister inside of the chamber in atmos. (I will replace the canister in another pull request)
2013-10-21 20:09:57 -03:00
supersayu a7398c2205 Mecha fixes
Prevents mech actions from acting on the user's inventory.  Fixes #1487.
(Almost) fully prevents inventory use from within a mech, to be more consistent.  The internals GUI button still works on the theory that it's emergency equipment.
2013-10-16 01:30:00 -04:00
Giacomand 1bf07a3065 * The AI can now use alt click to get a list of objects and the turf for easy access.
* The AI can interact with all the items in the list.
* The AI can use this for several things:
 * Since the list will not dissappear for the AI, until there's no camera coverage, they can use it to bookmark a single tile to interact while not having to look at it.
 * They can also use this to quickly jump to the listed turf.
 * They can interact with objects under other objects.
* Made the CTRL Click on the APC directly use the toggle_breaker() proc.
2013-10-14 17:23:53 +01:00
Pete Goodfellow 0195caad16 Ported and improved Sayu's awesome alt-click stat panel. Alt-clicking a tile will bring up a list of the objects on it in a stat panel- these can be interacted with normally, with both left and right clicks. This is particularly useful for getting specific items from lockers. 2013-09-18 23:04:08 +01:00
supersayu c172e52dce Adds telekinesis to click code. Fixes issue #1202, #1129, #247.
This adds two atom procs, attack_tk() and attack_self_tk().  attack_tk is used as per attack_hand; attack_self_tk exists on all atoms (not just items) but is similar to the item proc, but without the assumption that it is in the user's hand.

Removes the functionality where entering throw mode would create a tk grab, as it is redundant.

As a default, attack_tk does the following:
* Creates a telekinetic throw for items and un-anchored objects
* Does an attack_hand (paw, animal, etc) for anchored objects
* Does nothing to mobs

As a default, attack_self_tk does nothing.  An attack_self_tk was added to closets to open and close them since that's a common thing.

The following items have added attack_tk procs:
* Fire axe cabinet, extinguisher cabinet, and bedsheet bin will drop into their square instead of putting it in your hand
* Doors only open telekinetically if they require no access
* Chairs will rotate if nobody is buckled to them
* Filing cabinets will remove a paper at random.
* Tables and racks return to prevent telehulk smash

This is INCOMPLETE.  Adding proper TK interaction to everything is something best done in pieces.

In particular, interacting with mobs and items both open up the floodgates for bugs, so we/I need to decide how we want it to go before we commit, and then fix bugs along the way.  Stumbling forward, fixing bugs, and then changing course halfway would be a bad idea.
2013-09-17 18:19:09 -04:00
supersayu 62f7bc11c2 Timing adjustments
attack_self use should be somewhat more standard; previously the activate object verb (and pagedown) had no delay at all.

Lowers the time taken when interacting with things on your person or in your square.
2013-09-17 18:18:34 -04:00
supersayu 475042a212 Click code rework
Fixes #646, #579, #863

Completely redoes the click code.  Moves all click related code into code/_onclick for reference.  Also moves hud datum code and all the screen object code I could find into code/_onclick/hud, as it is related.  Item attack(), attackby(), afterattack(), and attack_self() have been moved into item_attack.dm for consistency.

Completely removes dummy objects and adds atom.Adjacent(user).  This proc checks for border items and anything marked with throwpass for determining whether or not you can reach a given square.  A turf helper, ClickCross(), was added to facilitate this.

Removes the monolithic Atom.Click() proc in favor of an overridable click handler attached to mobs.  Click code no longer uses the : path operator as a consequence, and mob/lastDblClick has been moved to Client/next_click.  A few end arounds were necessary (screen objects, buildmode, and spells), but this has been handled by repurposing Atom.Click(); if you have special click code, insert it in the object's Click() function and return 1 to prevent normal processing.

This update adds support for attack_ghost(); the previous "new" click handler had support for it but was never finished.  I have taken the liberty of letting ghosts click portals, the gateway, and the teleporter to jump to the intended target square, and kept the previous default action of examine()ing every damn thing you click.  It is to be suggested that you could do more with this proc when ghost interactions are enabled.

This update also adds support for double clicking.  It is currently only used for ghosts and AIs, because the original (first) click still registers normally.  For both of these, double clicking a square will jump you to it, and double clicking a mob will follow it.  In the case of ghosts, double clicking bots and the singularity will also set you following it; if you double click your own corpse, you will re-enter it; this also works if your body is in a closet, sleeper, DNA scanner, etc.  Default mobs ignore double clicks as normal.

-- NOTE --

There are two flags which were previously unused or misused by click code: USEDELAY and NODELAY.  Ostensibly, USEDELAY would double the normal 1sec delay, and NODELAY would remove it.

Using either of these flags as intended would significantly affect the timing of the game.  In particular, USEDELAY is currently applied to guns and about everything else that acts at range.  I am adding USEDELAY as a half-second increase for now, but I have not put a significant amount of thought into it.  I considered lowering the normal 1sec delay to .8sec to balance it, but the consequences of that on combat involve more calculations than I care to make.

NODELAY seems to never have been used, and I did not implement it, but I could do so trivially.
2013-09-17 18:15:54 -04:00
Mark Aherne (Faerdan) de6e75c533 Merge branch 'master' of https://github.com/tgstation/-tg-station
Removed admins.txt conflict.
2013-09-01 13:42:06 +01:00
Cheridan 1ee6c4f5c7 Merge pull request #1166 from Carn/admin_ranks
Fixes #1147 (type-mismatch) +features
2013-08-28 11:57:21 -07:00
Mark Aherne (Faerdan) 57fa79a89d Nano UI Framework
------------------------------------------------------------
nanoui - For creating and updating browser UIs
manomanager - For managing nanouis
Includes the "D:\Development\SS13-TG\code\game\machinery\cryo.dm" rebuilt using Nano.
Templates are stored in /nano/templates

This code is in development, it's also not commented yet.
2013-08-19 21:23:53 +01: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
Aranclanos 0ce01d1583 Adding Linda. 2013-08-10 06:15:14 -03:00
Giacomand 537ede1e02 * Cleaned up the interface a bit.
* Made the window name be the pointer of the mob, instead of the name, to prevent multiple windows opening when the mob changes name while being stripped.
2013-06-24 20:50:22 +01:00
Giacomand 27b4a6c443 * CTRL+Clicking won't cancel a pull if you try to pull the same object. 2013-06-15 15:43:28 +01:00
carnie 043028db83 Resolves #283
DNA modification uses normally distributed random numbers. Radiation strength dictates the standard deviation of the change in the hex character which is hit (higher output means greater chance for a large change) . Similarly, radiation duration dictates how likely we are to hit the hex-character we clicked on (longer duration means more likely to hit). Irradiation is strength*duration. All balancing is done via multiplier defines so you can rebalance it easily.

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

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

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

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

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

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

DNA modifier console has almost all controls on one screen.

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

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

Every block of SEs are in randomised positions.

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

Mr Muggles and God Emperor of Mankind disks removed.

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

Fixed spelling mistakes in modularchangling.dm (thanks tenebrosity)

Tanning removed from beaches (again)

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

Changelog.html updated
Signed-off-by: carnie <elly1989@rocketmail.com>
2013-04-24 09:37:30 +01:00
Pete Goodfellow 62b848c6ce Removes equip_e - Fixes #423
This updates everything that used equip_e, particularly the strip panel, but also DNA injectors and CPR.

Removed unused mob vars:
 var/obj/effect/organstructure/organStructure
 var/other
 var/proc_holder_list[]

Removed unused alien suit and head slots.
 Removed var/obj/item/weapon/card/id/wear_id from monkeys, and updated ed209s to not use :

Renamed HUMAN_STRIP_DELAY to STRIP_DELAY.

Muddled Topics() around so that mobs are now a bit more OO. Also updated quite a few misc inventory procs to various degrees.

Updated monkey and aliens huds a little bit.

Random movement when confused now happens half the time.

Fixed monkey breathmask onmobs.

Added a .unconscious text style, for that nice bold blue text you get when you're unconscious. Only CPR uses it at the moment.

This has been tested fairly extensively, and everything seems to work fine.

-Merged commits ~carnie
Signed-off-by: carnie <elly1989@rocketmail.com>
2013-04-24 04:07:39 +01:00
carnie 66e6a2dbf0 Mobs each now have a unique tag which are not after they are deleted (unlike byond's \ref[] macro)
Since tag replaces the output of the \ref[] macro, this means that menus which use hrefs with \ref[mob] will no longer be able to accidentally link to the wrong mob.
The tags are of the form "mob_475" etc

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

key_name() now accepts text input (key or ckey) - it is slightly more efficient to feed it a client or mob however!
This functionality is provided to allow certain admintools to become more robust when we want to talk about e.g. a griefer whom has just DCed whom no-longer has a corpse (no client/mob...just a ckey reference).
key_name() now reports DCed players properly.
2013-03-31 11:26:22 +01:00
petethegoat@gmail.com bdf8abff40 Overhauled grabs. They should pretty much do the same thing as before, although they should be a fair bit more effective.
Updated some text styles and such along the way.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5818 316c924e-a436-60f5-8080-3fe189b3f50e
2013-03-07 01:30:29 +00:00
aranclanos@hotmail.com 3a2673a284 Changes for all the different update icons procs of humans and monkeys, they now update their own sprite and hud icon (if it's a proc of a slot item) without having to call for update_icons().
A lot of different calls for update_inv_[slot] now won't call for update_icons.dm(). Such as dropping, throwing, picking up objects, moving objects around your gear, using your active hand, firing guns, stripping, etc.
All the different calls for UpdateDamageIcon() now they won't call for update_icons()
The different sprites of humans/monkeys will now have their own layer, humans starting with MUTANTRACE_LAYER in layer -1 to R_HAND_LAYER in layer -20, so the sprites don't get messy overlapping eachother if update_icons() is not called. To help this change, all layers numbers were changed, R_HAND_LAYER used to be 1, now it's 20. (This can be changed back if it ends up being confusing or ugly to read)

TL;RL I removed 90% of the calls for update_icons() modifying the different update procs of update_icons.dm of monkeys/humans. The goal is to reduce lag.

JUST IN CASE, lying down will call for update_icons(), so players have an easy way to update their icons if something goes horribly wrong. Which won't. I hope.


Fixes issue 842. Handcuffs sprites appearing on the player's UI if this one was handcuffed. Because I liked this we'll call it feature and add some awesome sprites made by Cheridan, you'll now have a new sprite on your UI telling you "you're handcuffed buddy!". (Also he named the sprites so don't blame me)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5809 316c924e-a436-60f5-8080-3fe189b3f50e
2013-03-04 05:01:07 +00:00
d_h2005@yahoo.com dc6d26e067 -Fixes issue 1349 : Space bears not switching to dead sprites when dead. As an added bonus, also fixes space bears being unable to move in space. Durr.
-Moves the Add Note/Notes verbs from OOC tab to IC tab, since Notes holds your IC information such as traitor objectives.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5789 316c924e-a436-60f5-8080-3fe189b3f50e
2013-02-26 16:09:45 +00:00
petethegoat@gmail.com 58c7f79398 Moved
var/obj/item/weapon/back
var/obj/item/clothing/mask/wear_mask
var/obj/item/weapon/tank/internal

from /mob to /mob/living/carbon.

/mob/proc/abiotic() no longer does any extra checks even if full_body == 1.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5722 316c924e-a436-60f5-8080-3fe189b3f50e
2013-02-17 18:53:09 +00:00
giacomand@gmail.com a3501875a7 - Re added clicking on inventory HUD slots making you use the item, without having to click the item itself. I made storage slots in backpacks, when hit by an item, will put the item into that storage item.
- Added some garbage collecting procs for NTSL.
 - APCs now have its missing status text, for the wire interface.
 - Clicking on a hand HUD slot, while the hand is actively selected, will make the item being held call attack_self().

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5715 316c924e-a436-60f5-8080-3fe189b3f50e
2013-02-16 10:54:56 +00:00
giacomand@gmail.com 9d0ee3559d -Moved all copy+pasted use of mob Move() has been moved into /mob/living/Move().
-Because of this, simple animals can now pull.
-You can stop pulling something by using the pull verb (or CTRL+click) on it again.
-Added a commented out debug verb for freelook.
-Converted the "stop pulling" proc to a verb for normal usage too.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5435 316c924e-a436-60f5-8080-3fe189b3f50e
2012-12-31 08:49:46 +00:00
johnsonmt88@gmail.com ff56e9cffc Runtime fixes for:
/mob/attackby()
Bodybag (obj/structure/crate) were getting typecasted into /obj/item/weapon.

/mob/dead/observer/proc/dead_tele()
Added a check for a null or empty list of area's for the mob to be moved to.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5273 316c924e-a436-60f5-8080-3fe189b3f50e
2012-12-07 00:39:50 +00:00
johnsonmt88@gmail.com 4ddf9100f5 Sending a message should no longer work if you are incapacitated. Fixes issue 1120.
Moved some mob vars to carbon:
mob/var/handcuffed -> mob/living/carbon/var/handcuffed
mob/var/legcuffed -> mob/living/carbon/var/legcuffed

As a result, I've turned some procs into pure virtual procs and moved their code into carbon.dm.

mob/proc/restrained() -> mob/living/carbon/restrained()
mob/proc/can_use_hands() -> mob/living/carbon/can_use_hands()

The hand and legcuff portion of mob/proc/u_equip() was moved into mob/living/carbon/u_equip().

The handcuffed portion of mob/proc/show_inv() was moved into mob/living/carbon/show_inv().

Fixes issue 1114.

Made parrots immune to bear traps since parrots should be flying over them anyway.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5184 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-25 00:28:47 +00:00
elly1989@rocketmail.com 1aaf44e076 Moved a lot of preference related toggles to the Preferences verb tab.
You can now modify specialrole candidacy mid-round and it will save changes to your savefile.
Added a BE_NINJA flag. Doesn't do anything yet. If somebody wants to implement it, go for it.
Moved prefrences stuff from new_player to the folder /code/modules/client/
Renamed toggles so they appear in a nice order.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5146 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-21 08:06:44 +00:00
elly1989@rocketmail.com 2e68af07c1 Merged listen_ooc, seeprayers, STFU_ghosts, STFU_radio, deadchat, sound_adminhelp, ghostears, ghostsight, canplaysound, midis, no_ambi and lobby_music into client.prefs.toggles as bitflags.
Toggling these preferences in-game will update your savefile. Meaning that your preferences will persist between rounds.

Added some savefile_version updating stuff. It's pretty crude. If you're changing any of the savefile stuff just ask and I can change it/help.

Removed some unused client vars

Ghosts no longer hear ambience. Simplified ambience code.

Simplified lobby music code. It will no longer cause a massive queue of events (which would eventually balloon in memory use)

Moved ooccolor and sound_adminhelp back to prefs. It's easier and allowed me to remove the setupclient() stuff completely.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5143 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-21 05:58:04 +00:00
elly1989@rocketmail.com 30357d18ce SANITY: Created a series of generalised sanity procs. They can be found in code/__HELPERS/sanitize_values.dm
They include such procs as sanitize_integer(num, min, max, default) which will check num is a number, round num to make it an integer, then check if it is between min and max (inclusive). If it fails the bound-checks it will return default. There are others, have a look.

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

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

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

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

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

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

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

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

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



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5121 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-19 15:13:57 +00:00
elly1989@rocketmail.com 25b61bae72 Removed the infra_sensor define for noddie.
Integrated the sql and standard admin_rank stuff a little. Still needs some work.
Permissions Panel has a sexy floating search bar. The scripts and stylesheets are external files which will be sent to every client at connect, so they can be used in any panel you wish with no additional overheads.

If there are any bugs with the permissions panel (particularly the search bar) please let me know. thanks.

rights2text now has a seperator argument. It defaults to "", but can be any string, for instance "<br>"

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5080 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-15 20:35:37 +00:00
elly1989@rocketmail.com 50fe648a91 Admin ranks now use bitfields for permissions. Rather than checking the name of the rank, adminverbs will now check holder.rights to see if it has certain bits turned on.
SERVER HOSTS:
This commit replaces the existing admin-rank system. It is now more customizable.
Admin.txt essentially works the same as it always has. Each line should look like:
ckey - admin rank

There is now however, an admin_ranks.txt. This textfile allows you to define ranks like so:
admin rank +ADMIN +FUN +BUILD
the +KEYWORD are flags adding permissions to that rank. There are brief descriptions in the text-file explaining what they do.

You can now name the ranks anything you like, and give them the permissions you want them to have. This allows, for instance, ranks like:
Game Admin on disciplinary +ADMIN +BAN
This would give that game admin only the tools they need to admin. They would not have access to 'fun' verbs which control events and antags.
There's lots of things you can do. For instance, a coder rank whom can debug stuff but cannot do admin tasks:
Codermin +DEBUG +VAREDIT +SERVER

There's lots you can do. As it evolves it will hopefully become more flexible.

admin_ranks.txt defaults to use the old admin rank names.

Apologies in advance as there will be a lot of anomalies, such as ranks losing verbs they once had. Please let me know about any problems. I can fix them quite easily simply by moving verbs between the lists or splitting the lists up into new flags.

CODERS:
There is now a check_rights(flags) proc. 
It check is usr is and admin and has -at least one of- the rights specified.
It checks > usr < not src, so keep that in mind!
If you need to check if something other than usr has specific tights, you can do if(holder.rights & R_ADMIN) etc.

KNOWN ISSUES:
+FUN probably needs to be split up into +MOBS and +EVENTS
In-game promotion/demotion is currently disabled. It will be readded after everything else works ok.
Erro's sql rights changes stuff is currently commented out. It will be re-added.
There are still many many verbs which need updating.

Apologies in advance for any inconvenience.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4991 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-02 10:23:04 +00:00
giacomand@gmail.com 6a2d78bc94 -Killed the updateDialog lag. I added a check to see if there were any mobs to update, if not it will stop checking until a user uses the machine again. I had to replace all the machine = src and machine = null with procs to help make it manageable. I believe this is one of the culprits causing the server to lag as the round goes on, as more players will interact with machines.
-Atmos delay is now based on active players, to help fight lag for massive player rounds.

-Changed some for(blah in world) loops to use the correct lists.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4958 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-25 19:15:51 +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
elly1989@rocketmail.com 15c63e6bbf Added an instance counter to the status panel for admins. It just shows world.contents.len
It might be helpful in identifying stuff which isn't getting garbage collected properly.
u 
TODO: move those server stats onto another tab because they are kinda annoying if you actually want to play as an alium or something.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4940 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-23 04:58:24 +00:00
elly1989@rocketmail.com 6909f8dd91 removed src arguments from new /obj/screen(src) as src was a datum anyway. This is to remove confusion.
When hud_used is deleted, references to those objects are removed, hence they are garbage collected.
Removed some code from metroids which could possible delete global_hud objects which would cause problems.

Added a verb to code/WorkInProgress/carn/debug_locnull.dm which prints all atoms with loc==null to world.log

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4774 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-29 11:35:24 +00:00
elly1989@rocketmail.com 9265255ab5 Fixes an issue where areas were set with luminosity = 1. Not sure why the hell I done that and why the hell I never noticed it. Thanks Kor.
Once again, Only crates may be sold on the supply shuttle.
Changed adminverb updates to be called by Login if holder.state changes. This is so we don't have to mess around with it elsewhere and we don't have to call it as often.
Added some missing verbs to the clearadminverbs proc
Fixed a icon reference not using the fullpath (Goddamn stop doing that)
Going catatonic makes you fall down
All mobs with the resting variable can now unrest (god damn what were you doing).
"Lay down / Get up" was renamed to "Rest".
Rest now uses src rather than usr (again, wtf)
Added some ugly fatty fat hacky code to make admin-ghosted mobs appear braindead rather than catatonic
Admin-ghosting (set-observe and set-play) merged into one verb named "Aghost" (short for admin ghost, same convention as asay)



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4708 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-17 02:27:12 +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 0f1940b015 -Made the admin "floor is lava" secret to only hurt carbons. Otherwise activating it would kill the AI everytime, since it cannot move.
-Fixed following not working right. Optimized "observe".

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4685 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-13 09:29:30 +00:00
johnsonmt88@gmail.com 727c367de0 More work on parrots.
They now mimic speech! I've also fixed a few bugs (like a missing if(stat) check in life) I think all that's left is to tweak their speed a bit and if possible, see if I can make it so that parrots peck out human's eyes when they attack.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4657 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-08 19:48:05 +00:00
elly1989@rocketmail.com 73e5c38a56 Preparations for reducing the number of processing machines at round-start. There are currently 8000 or so at round start, this was already pruned to 2800ish by doohl's stuff.
machine.process() now uses a return value to remove itself from the processing machines list. This is more efficient and will help reduce costs especially at round start where some 5000+ machines were removed from the list using first-find. Now there is no searching involved. Instead of machines.Remove(src) just do .=PROCESS_KILL that will return the flag to the proc which called it (the MC) and trigger its removal from the list. If you're deleting something don't even bother removing it from the machines list, there is no need to.

Simplified the last_processed stuff for the MC. It's now a single variable rather than 3. It is simply a typepath rather than a reference to an object (this is so it works even if said object is deleted)

MC stats in admin status_panels now show the length of the processing lists (indicated by #). I've just realised I forgot to mention what the abbreviations are:
The less obvious ones are: Dis=diseases; Net=pipes; Pnet=powernets; Mch=Machines; Tick=the game-mode ticker.

Beach-water now uses an overlay image rather than a separate object.

Fixed a typo in the shuttle console.

Hydroponics trays no longer use first-find within their process() for checking the plant is in the tray (why is that even there anyway? talk about lazy)

Removed some junk/placeholder procs like organ/proc/process() return

Removed newscasters from the processing machines lists.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4603 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-02 20:32:01 +00:00
elly1989@rocketmail.com 618b4fbf50 Resolves Issue 881 - Cause: r4593
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4598 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-01 14:41:52 +00:00
johnsonmt88@gmail.com 2acd88e3e7 Fixed a bug where throwing an emp grenade at the AI would cause the thrower to call the shuttle.
- 'usr' was used in place of 'src' which caused problems since the AI's emp_act() can call ai_call_shuttle().

Added comments to mob/attackby and changed a magic number into the #define we have set for it.

Simple animals must now be manually added to a proc before admins can animalize players into them. Hopefully this will encourage coders who make new simple animals to test them being player-controlled before they allow them to become admin-spawnable.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4594 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-31 05:42:43 +00:00
elly1989@rocketmail.com e97813d2b6 Replaced the master_controller with the WIP sequential version.
Fixed a problem where TG was using this sequential master_controller but I had removed a spawn where master_controller.process() was called because I was working with the default master_controller. This problem was causing the master_controller to prevent the lighting_controller.process() ever running properly because it was hogging the current thread (thread isn't the right word there, not sure what you call it....stack?)

Added debugging to both the lighting_controller and master_controller. http://filesmelt.com/dl/debugging.png

Both lighting_controller and master_controller may be deleted to terminate their processes (this is done via the restart controller verb. This allows for clean restarts without 'doubling up' (where, for instance, the master_controller would be running more than one instance).

lighting_controller has a prototype recovery proc which is called by the "restart controller - lighting" verb. It's basically an overly paranoid version of process() which will only transfer light_sources to the replacement controller if they don't runtime. It's not needed at the moment as the process() has yet to runtime.

master_controller has the beginnings of self pruning lists. This method using list.Cut(index,index+1) is faster than doing list.Remove(thing) all over the place (the latter iterates through the list to find the thing).

Added more detailed time-measurements for the master_controller. It now displays the processing costs (in real-world seconds) of each part of the master_controller's cycle.

The stat panel only updates for mobs actually -looking- at the stat panel.

Explosion debugging is now hidden behind a if(Debug2). To have it print that data to world.log just click the DebugGame verb

debug controller and restart controller verbs are now both GameAdmin rank. Not sure how they got split up.

Fixed another cause of dark splotchy space turfs. (turf/wall/ex_act was replacing the turf with space and then deleting that new space turf)


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4593 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-31 04:14:26 +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
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
giacomand@gmail.com be76c3afcc Fixed issue 645.
I changed how uplinks worked. Instead of there being a duplicate item which would switch out when it activates, there's an item called "obj/item/device/uplink/hidden". It is a hidden uplink which you can place in any obj/item. In "hidden" is where it will generate menus, check for triggers to show the menu and etc.. No need to switch out with duplicate items or add the menu onto the PDA's notes.

How to create a new uplink item in 3 easy steps!

1. All obj/item 's have a hidden_uplink var. By default it's null. Give the item one with "new(src)", it must be in it's contents. Feel free to add/remove "uses".

2. Code in the triggers. Use check_trigger for this, I recommend closing the item's menu with "usr << browse(null, "window=windowname") if it returns true. The var/value is the value that will be compared with the var/target. If they are equal it will activate the menu.

3. If you want the menu to stay until the users locks his uplink, add an active_uplink_check(mob/user as mob) in your interact/attack_hand proc. Then check if it's true, if true return. This will stop the normal menu appearing and will instead show the uplink menu.

I've given the recharge station's verbs a category so they don't create their own tab.
I've added a mob/proc called put_in_any_hand_if_possible. Name speaks for itself. Returns true if successful, false otherwise.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4450 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-16 21:57:27 +00:00