mirror of
https://github.com/evilew/GS13-Citadel.git
synced 2026-07-15 18:23:46 +01:00
April sync (#360)
* Maps and things no code/icons * helpers defines globalvars * Onclick world.dm orphaned_procs * subsystems Round vote and shuttle autocall done here too * datums * Game folder * Admin - chatter modules * clothing - mining * modular computers - zambies * client * mob level 1 * mob stage 2 + simple_animal * silicons n brains * mob stage 3 + Alien/Monkey * human mobs * icons updated * some sounds * emitter y u no commit * update tgstation.dme * compile fixes * travis fixes Also removes Fast digest mode, because reasons. * tweaks for travis Mentors are broke again Also fixes Sizeray guns * oxygen loss fix for vore code. * removes unused code * some code updates * bulk fixes * further fixes * outside things * whoops. * Maint bar ported * GLOBs.
This commit is contained in:
+27
-27
@@ -1,16 +1,16 @@
|
||||
#CONTRIBUTING
|
||||
|
||||
##Reporting Issues
|
||||
## Reporting Issues
|
||||
|
||||
See [this page](http://tgstation13.org/wiki/Reporting_Issues) for a guide and format to issue reports.
|
||||
|
||||
##Introduction
|
||||
## Introduction
|
||||
|
||||
Hello and welcome to /tg/station's contributing page. You are here because you are curious or interested in contributing. Thanks for being interested. Everyone is free to contribute to this project as long as they follow the simple guidelines and specifications below, because at /tg/station, we have a goal to increase code maintainability and to do that we are going to need all pull requests to hold up to those specifications. This is in order for all of us to benefit, instead of having to fix the same bug more than once because of duplicated code.
|
||||
|
||||
But first we want to make it clear how you can contribute, if contributing is a new experience for you, and what powers the team has over your pull request so you do not get any surprises when submitting pull requests, and it is closed for a reason you did not anticipate.
|
||||
|
||||
##Getting Started
|
||||
## Getting Started
|
||||
At /tg/station we do not have a list of goals and features to add, we instead allow freedom for contributors to suggest and create their ideas for the game. That does not mean we aren't determined to squash bugs, which unfortunately pop up a lot due to the deep complexity of the game. Here are some useful getting started guides, if you want to contribute or if you want to know what challenges you can tackle with zero knowledge about the game's code structure.
|
||||
|
||||
If you want to contribute the first thing you'll need to do is [set up Git](http://tgstation13.org/wiki/Setting_up_git) so you can download the source code.
|
||||
@@ -21,7 +21,7 @@ There is an open list of approachable issues for [your inspiration here](https:/
|
||||
|
||||
You can of course, as always, ask for help at [#coderbus](irc://irc.rizon.net/coderbus) on irc.rizon.net. We are just here to have fun and help so do not expect professional support please.
|
||||
|
||||
##Meet the Team
|
||||
## Meet the Team
|
||||
|
||||
**Project Leads**
|
||||
|
||||
@@ -37,14 +37,14 @@ Maintainers are quality control. If a proposed pull request does not meet the me
|
||||
|
||||
Maintainers can revert your changes if they feel they are not worth maintaining or if they did not live up to the quality specifications.
|
||||
|
||||
##Specification
|
||||
## Specification
|
||||
|
||||
As mentioned before, you are expected to follow these specifications in order to make everyone's lives easier, it will also save you and us time, with having to make the changes and us having to tell you what to change. Thank you for reading this section.
|
||||
|
||||
###Object Oriented code
|
||||
### Object Oriented code
|
||||
As BYOND's Dream Maker is an object oriented language, code must be object oriented when possible in order to be more flexible when adding content to it. If you are unfamiliar with this concept, it is highly recommended you look it up.
|
||||
|
||||
###All Byond paths must contain the full path.
|
||||
### All Byond paths must contain the full path.
|
||||
(ie: absolute pathing)
|
||||
|
||||
Byond will allow you nest almost any type keyword into a block, such as:
|
||||
@@ -98,16 +98,16 @@ The previous code made compliant:
|
||||
code
|
||||
```
|
||||
|
||||
###No overriding type safety checks.
|
||||
### No overriding type safety checks.
|
||||
The use of the : operator to override type safety checks is not allowed. You must cast the variable to the proper type.
|
||||
|
||||
###Type paths must began with a /
|
||||
### Type paths must began with a /
|
||||
eg: `/datum/thing` not `datum/thing`
|
||||
|
||||
###Datum type paths must began with "datum"
|
||||
### Datum type paths must began with "datum"
|
||||
In byond this is optional, but omitting it makes finding definitions harder.
|
||||
|
||||
###Do not use text/string based type paths
|
||||
### Do not use text/string based type paths
|
||||
It is rarely allowed to put type paths in a text format, as there are no compile errors if the type path no longer exists. Here is an example:
|
||||
|
||||
```C++
|
||||
@@ -118,22 +118,22 @@ var/path_type = /obj/item/weapon/baseball_bat
|
||||
var/path_type = "/obj/item/weapon/baseball_bat"
|
||||
```
|
||||
|
||||
###Tabs not spaces
|
||||
### Tabs not spaces
|
||||
You must use tabs to indent your code, NOT SPACES.
|
||||
|
||||
(You may use spaces to align something, but you should tab to the block level first, then add the remaining spaces)
|
||||
|
||||
###No Hacky code
|
||||
### No Hacky code
|
||||
Hacky code, such as adding specific checks, is highly discouraged and only allowed when there is ***no*** other option. (Protip: 'I couldn't immediately think of a proper way so thus there must be no other option' is not gonna cut it here )
|
||||
|
||||
You can avoid hacky code by using object oriented methodologies, such as overriding a function (called procs in DM) or sectioning code into functions and then overriding them as required.
|
||||
|
||||
###No duplicated code.
|
||||
### No duplicated code.
|
||||
Copying code from one place to another maybe suitable for small short time projects but /tg/station focuses on the long term and thus discourages this.
|
||||
|
||||
Instead you can use object orientation, or simply placing repeated code in a function, to obey this specification easily.
|
||||
|
||||
###Startup/Runtime tradeoffs with lists and the "hidden" init proc
|
||||
### Startup/Runtime tradeoffs with lists and the "hidden" init proc
|
||||
First, read the comments in this byond thread, starting here:http://www.byond.com/forum/?post=2086980&page=2#comment19776775
|
||||
|
||||
There are two key points here:
|
||||
@@ -144,19 +144,19 @@ There are two key points here:
|
||||
|
||||
Remember, this tradeoff makes sense in many cases but not all, you should think carefully about your implementation before deciding if this is an appropriate thing to do
|
||||
|
||||
###Prefer `Initialize` over `New` for atoms
|
||||
### Prefer `Initialize` over `New` for atoms
|
||||
Our game controller is pretty good at handling long operations and lag. But, it can't control what happens when the map is loaded, which calls `New` for all atoms on the map. If you're creating a new atom, use the `Initialize` proc to do what you would normally do in `New`. This cuts down on the number of proc calls needed when the world is loaded. See here for details on `Initialize`: https://github.com/tgstation/tgstation/blob/master/code/game/atoms.dm#L49
|
||||
|
||||
###No magic numbers or strings
|
||||
### No magic numbers or strings
|
||||
Make these #defines with a name that more clearly states what it's for.
|
||||
|
||||
###Control statements:
|
||||
### Control statements:
|
||||
(if,while,for,etc)
|
||||
|
||||
* All control statements must not contain code on the same line as the statement (`if (blah) return`)
|
||||
* All control statements comparing a variable to a number should use the formula of `thing` `operator` `number`, not the reverse (eg: `if (count <= 10)` not `if (10 >= count)`)
|
||||
|
||||
###Use early return.
|
||||
### Use early return.
|
||||
Do not enclose a proc in an if block when returning on a condition is more feasible
|
||||
This is bad:
|
||||
````
|
||||
@@ -179,7 +179,7 @@ This is good:
|
||||
````
|
||||
This prevents nesting levels from getting deeper then they need to be.
|
||||
|
||||
###Develop Secure Code
|
||||
### Develop Secure Code
|
||||
|
||||
* Player input must always be escaped safely, we recommend you use stripped_input in all cases where you would use input. Essentially, just always treat input from players as inherently malicious and design with that use case in mind
|
||||
|
||||
@@ -193,14 +193,14 @@ This prevents nesting levels from getting deeper then they need to be.
|
||||
|
||||
* Where you have code that can cause large scale modification and *FUN* make sure you start it out locked behind one of the default admin roles - use common sense to determine which role fits the level of damage a function could do
|
||||
|
||||
###Files
|
||||
### Files
|
||||
* Because runtime errors do not give the full path, try to avoid having files with the same name across folders.
|
||||
|
||||
* File names should not be mixed case, or contain spaces or any character that would require escaping in a uri.
|
||||
|
||||
* Files and path accessed and referenced by code above simply being #included should be strictly lowercase to avoid issues on filesystems where case matters.
|
||||
|
||||
###Other Notes
|
||||
### Other Notes
|
||||
* Code should be modular where possible, if you are working on a new class then it is best if you put it in a new file.
|
||||
|
||||
* Bloated code may be necessary to add a certain feature, which means there has to be a judgement over whether the feature is worth having or not. You can help make this decision easier by making sure your code is modular.
|
||||
@@ -209,7 +209,7 @@ This prevents nesting levels from getting deeper then they need to be.
|
||||
|
||||
* Do not divide when you can easily convert it to a multiplication. (ie `4/2` should be done as `4*0.5`)
|
||||
|
||||
####Enforced not enforced
|
||||
#### Enforced not enforced
|
||||
The following different coding styles are not only not enforced, but it is generally frowned upon to change them over from one to the other for little reason:
|
||||
|
||||
* English/British spelling on var/proc names
|
||||
@@ -217,7 +217,7 @@ The following different coding styles are not only not enforced, but it is gener
|
||||
* Spaces after control statements
|
||||
* if() if () nobody cares.
|
||||
|
||||
####Operators and spaces:
|
||||
#### Operators and spaces:
|
||||
(this is not strictly enforced, but more a guideline for readability's sake)
|
||||
|
||||
* Operators that should be separated by spaces
|
||||
@@ -232,7 +232,7 @@ The following different coding styles are not only not enforced, but it is gener
|
||||
|
||||
Math operators like +, -, /, *, etc are up in the air, just choose which version looks more readable.
|
||||
|
||||
###Dream Maker Quirks/Tricks:
|
||||
### Dream Maker Quirks/Tricks:
|
||||
Like all languages, Dream Maker has its quirks, some of them are beneficial to us, like these
|
||||
|
||||
* In-To for loops: ```for(var/i = 1, i <= some_value, i++)``` is a fairly standard way to write an incremental for loop in most languages (especially those in the C family) however DM's ```for(var/i in 1 to some_value)``` syntax is oddly faster than its implementation of the former syntax; where possible it's advised to use DM's syntax. (Note, the ```to``` keyword is inclusive, so it automatically defaults to replacing ```<=```, if you want ```<``` then you should write it as ```1 to some_value-1```).
|
||||
@@ -276,7 +276,7 @@ H.gib()
|
||||
however DM also has a dot variable, accessed just as ```.``` on it's own, defaulting to a value of null, now what's special about the dot operator is that it is automatically returned (as in the ```return``` statment) at the end of a proc, provided the proc does not already manually return (```return count``` for example). Why is this special? well the ```return``` statement should ideally be free from overhead (functionally free, of course nothing's free) but DM fails to fulfill this, DM's return statement is actually fairly costly for what it does and for what it's used for.
|
||||
With ```.``` being everpresent in every proc can we use it as a temporary variable? Of course we can! However the ```.``` operator cannot replace a typecasted variable, it can hold data any other var in DM can, it just can't be accessed as one, however the ```.``` operator is compatible with a few operators that look weird but work perfectly fine, such as: ```.++``` for incrementing ```.'s``` value, or ```.[1]``` for accessing the first element of ```.``` (provided it's a list).
|
||||
|
||||
##Pull Request Process
|
||||
## Pull Request Process
|
||||
|
||||
There is no strict process when it comes to merging pull requests, pull requests will sometimes take a while before they are looked at by a maintainer, the bigger the change the more time it will take before they are accepted into the code. Every team member is a volunteer who is giving up their own time to help maintain and contribute, so please be nice. Here are some helpful ways to make it easier for you and for the maintainer when making a pull request.
|
||||
|
||||
@@ -297,7 +297,7 @@ Do not add any of the following in a Pull Request or risk getting the PR closed:
|
||||
* National Socialist Party of Germany content, National Socialist Party of Germany related content, or National Socialist Party of Germany references
|
||||
* Code where one line of code is split across mutiple lines (except for multiple, separate strings and comments and in those cases existing longer lines must not be split up)
|
||||
|
||||
##A word on git
|
||||
## A word on git
|
||||
Yes we know that the files have a tonne of mixed windows and linux line endings, attempts to fix this have been met with less than stellar success and as such we have decided to give up caring until such a time as it matters.
|
||||
|
||||
Therefore EOF settings of main repo are forbidden territory one must avoid wandering into
|
||||
|
||||
@@ -7,6 +7,7 @@ add: Added new things
|
||||
add: Added more things
|
||||
del: Removed old things
|
||||
tweak: tweaked a few things
|
||||
balance: rebalanced something
|
||||
fix: fixed a few things
|
||||
wip: added a few works in progress
|
||||
soundadd: added a new sound thingy
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
##Citadel Station 13 <BR>
|
||||
Based and maintained from /tg/station.<BR>
|
||||
|
||||
@@ -16,7 +17,7 @@ Based and maintained from /tg/station.<BR>
|
||||
**Code:** https://github.com/Citadel-Station-13/Citadel-Station-13 <BR>
|
||||
**Discord:** [Here](https://discord.gg/3gJ9pnM). <BR>
|
||||
|
||||
##DOWNLOADING
|
||||
## DOWNLOADING
|
||||
|
||||
There are a number of ways to download the source code. Some are described here, an alternative all-inclusive guide is also located at http://www.tgstation13.org/wiki/Downloading_the_source_code
|
||||
|
||||
@@ -34,7 +35,7 @@ code tab of https://github.com/tgstation/tgstation
|
||||
(note: this will use a lot of bandwidth if you wish to update and is a lot of
|
||||
hassle if you want to make any changes at all, so it's not recommended.)
|
||||
|
||||
##INSTALLATION
|
||||
## INSTALLATION
|
||||
|
||||
First-time installation should be fairly straightforward. First, you'll need
|
||||
BYOND installed. You can get it from http://www.byond.com/. Once you've done
|
||||
@@ -81,7 +82,7 @@ specified in the config.txt, and set the Security box to 'Safe'. Then press GO
|
||||
and the server should start up and be ready to join. It is also recommended that
|
||||
you set up the SQL backend (see below).
|
||||
|
||||
##UPDATING
|
||||
## UPDATING
|
||||
|
||||
To update an existing installation, first back up your /config and /data folders
|
||||
as these store your server configuration, player preferences and banlist.
|
||||
@@ -92,7 +93,7 @@ install, overwriting when prompted except if we've specified otherwise, and
|
||||
recompile the game. Once you start the server up again, you should be running
|
||||
the new version.
|
||||
|
||||
##MAPS
|
||||
## MAPS
|
||||
|
||||
Citadel Station maintains their own map, but frequently uses /tg/station's currently maintained maps as well.
|
||||
|
||||
@@ -111,7 +112,7 @@ If you are hosting a server, and want randomly picked maps to be played each rou
|
||||
|
||||
Anytime you want to make changes to a map it's imperative you use the [Map Merging tools](http://tgstation13.org/wiki/Map_Merger)
|
||||
|
||||
##AWAY MISSIONS
|
||||
## AWAY MISSIONS
|
||||
|
||||
/tg/station supports loading away missions however they are disabled by default.
|
||||
|
||||
@@ -119,35 +120,33 @@ Map files for away missions are located in the _maps/RandomZLevels directory. Ea
|
||||
|
||||
To enable an away mission open `config/awaymissionconfig.txt` and uncomment one of the .dmm lines by removing the #. If more than one away mission is uncommented then the away mission loader will randomly select one the enabled ones to load.
|
||||
|
||||
##SQL SETUP
|
||||
## SQL SETUP
|
||||
|
||||
The SQL backend requires a MySQL server. SQL is required for the library, stats tracking, admin notes, and job-only bans, among other features, mostly related to server administration. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/tgstation_schema.sql and /SQL/tgstation_schema_prefix.sql depending on if you want table prefixes. More detailed setup instructions are located here: http://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database
|
||||
|
||||
##IRC BOT SETUP
|
||||
## IRC BOT SETUP
|
||||
|
||||
Included in the repository is a python3 compatible IRC bot capable of relaying adminhelps to a specified
|
||||
IRC channel/server, see the /bot folder for more
|
||||
|
||||
##CONTRIBUTING
|
||||
## CONTRIBUTING
|
||||
|
||||
Please see [CONTRIBUTING.md](CONTRIBUTING.md)
|
||||
Please see [CONTRIBUTING.md](.github/CONTRIBUTING.md)
|
||||
|
||||
##LICENSE
|
||||
## LICENSE
|
||||
|
||||
All code after commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST (https://github.com/tgstation/tgstation/commit/333c566b88108de218d882840e61928a9b759d8f) is licensed under GNU AGPL v3 (http://www.gnu.org/licenses/agpl-3.0.html).
|
||||
All code after [commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST](https://github.com/tgstation/tgstation/commit/333c566b88108de218d882840e61928a9b759d8f) is licensed under [GNU AGPL v3](http://www.gnu.org/licenses/agpl-3.0.html).
|
||||
|
||||
All code before commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST (https://github.com/tgstation/tgstation/commit/333c566b88108de218d882840e61928a9b759d8f) is licensed under GNU GPL v3 (https://www.gnu.org/licenses/gpl-3.0.html).
|
||||
All code before [commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST](https://github.com/tgstation/tgstation/commit/333c566b88108de218d882840e61928a9b759d8f) is licensed under [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0.html).
|
||||
(Including tools unless their readme specifies otherwise.)
|
||||
|
||||
See LICENSE-AGPLv3.txt and LICENSE-GPLv3.txt for more details.
|
||||
|
||||
tgui clientside is licensed as a subproject under the MIT license.
|
||||
Font Awesome font files, used by tgui, are licensed under the SIL Open Font License v1.1
|
||||
tgui assets are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License
|
||||
(http://creativecommons.org/licenses/by-sa/4.0/).
|
||||
tgui assets are licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/).
|
||||
|
||||
See tgui/LICENSE.md for the MIT license.
|
||||
See tgui/assets/fonts/SIL-OFL-1.1-LICENSE.md for the SIL Open Font License.
|
||||
|
||||
All assets including icons and sound are under a Creative Commons 3.0 BY-SA
|
||||
license (http://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated.
|
||||
All assets including icons and sound are under a [Creative Commons 3.0 BY-SA license](http://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated.
|
||||
|
||||
@@ -1,593 +0,0 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/closed/mineral/volcanic/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"b" = (
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"c" = (
|
||||
/obj/item/weapon/shard,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"d" = (
|
||||
/obj/item/weapon/shard{
|
||||
icon_state = "medium"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"e" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"f" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8;
|
||||
icon_state = "propulsion"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"g" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8;
|
||||
icon_state = "propulsion"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered)
|
||||
"h" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"i" = (
|
||||
/turf/open/floor/mineral/plastitanium/brig{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"j" = (
|
||||
/obj/item/weapon/pickaxe,
|
||||
/obj/item/weapon/pickaxe,
|
||||
/obj/item/weapon/pickaxe,
|
||||
/obj/item/weapon/pickaxe,
|
||||
/obj/item/device/flashlight/lantern,
|
||||
/turf/open/floor/mineral/plastitanium/brig{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"k" = (
|
||||
/obj/effect/mob_spawn/human/prisoner_transport,
|
||||
/turf/open/floor/mineral/plastitanium/brig{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"l" = (
|
||||
/obj/item/weapon/shard,
|
||||
/turf/open/floor/mineral/plastitanium/brig{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"m" = (
|
||||
/obj/effect/mob_spawn/human/nanotrasensoldier,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/obj/item/device/flashlight/seclite,
|
||||
/obj/effect/light_emitter,
|
||||
/turf/open/floor/mineral/plastitanium/brig{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"n" = (
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol/m1911,
|
||||
/turf/open/floor/mineral/plastitanium/brig{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"o" = (
|
||||
/turf/open/floor/mineral/plastitanium/brig{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"p" = (
|
||||
/obj/machinery/door/airlock/titanium,
|
||||
/turf/open/floor/mineral/plastitanium/brig{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"q" = (
|
||||
/obj/item/weapon/shard,
|
||||
/turf/open/floor/mineral/plastitanium/brig{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"r" = (
|
||||
/obj/machinery/door/airlock/titanium,
|
||||
/turf/open/floor/plasteel/shuttle/red{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=16;n2=23"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"s" = (
|
||||
/obj/effect/mob_spawn/human/nanotrasensoldier,
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol/m1911,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/mineral/plastitanium/brig{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"t" = (
|
||||
/obj/structure/closet/crate/internals,
|
||||
/obj/item/weapon/crowbar/large,
|
||||
/turf/open/floor/mineral/plastitanium/brig{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"u" = (
|
||||
/obj/structure/lattice,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"v" = (
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"w" = (
|
||||
/obj/item/weapon/shard{
|
||||
icon_state = "small"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"x" = (
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol/m1911,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"y" = (
|
||||
/obj/effect/mob_spawn/human/nanotrasensoldier,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"z" = (
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/obj/item/device/flashlight/seclite,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
g
|
||||
h
|
||||
g
|
||||
h
|
||||
g
|
||||
b
|
||||
b
|
||||
b
|
||||
w
|
||||
b
|
||||
b
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
b
|
||||
b
|
||||
b
|
||||
x
|
||||
b
|
||||
b
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
e
|
||||
f
|
||||
h
|
||||
j
|
||||
m
|
||||
t
|
||||
h
|
||||
f
|
||||
e
|
||||
b
|
||||
b
|
||||
y
|
||||
b
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
h
|
||||
k
|
||||
n
|
||||
k
|
||||
h
|
||||
e
|
||||
b
|
||||
b
|
||||
v
|
||||
z
|
||||
b
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
h
|
||||
k
|
||||
o
|
||||
k
|
||||
h
|
||||
b
|
||||
b
|
||||
v
|
||||
v
|
||||
b
|
||||
b
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
h
|
||||
k
|
||||
o
|
||||
k
|
||||
h
|
||||
b
|
||||
b
|
||||
v
|
||||
v
|
||||
b
|
||||
b
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
h
|
||||
k
|
||||
o
|
||||
k
|
||||
h
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
h
|
||||
h
|
||||
p
|
||||
h
|
||||
h
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
i
|
||||
i
|
||||
i
|
||||
u
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
i
|
||||
i
|
||||
q
|
||||
i
|
||||
u
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
h
|
||||
h
|
||||
p
|
||||
e
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
h
|
||||
l
|
||||
s
|
||||
a
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
e
|
||||
a
|
||||
a
|
||||
a
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
e
|
||||
a
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -51,12 +51,7 @@
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
},
|
||||
/obj/structure/alien/weeds{
|
||||
desc = "A large mottled egg.";
|
||||
obj_integrity = 100;
|
||||
icon_state = "egg_hatched";
|
||||
name = "egg"
|
||||
},
|
||||
/obj/structure/alien/egg/burst,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
@@ -139,12 +134,7 @@
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/obj/structure/alien/weeds{
|
||||
desc = "A large mottled egg.";
|
||||
obj_integrity = 100;
|
||||
icon_state = "egg_hatched";
|
||||
name = "egg"
|
||||
},
|
||||
/obj/structure/alien/egg/burst,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
@@ -334,12 +324,7 @@
|
||||
})
|
||||
"x" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/weeds{
|
||||
desc = "A large mottled egg.";
|
||||
obj_integrity = 100;
|
||||
icon_state = "egg_hatched";
|
||||
name = "egg"
|
||||
},
|
||||
/obj/structure/alien/egg/burst,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
@@ -405,12 +390,7 @@
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
},
|
||||
/obj/structure/alien/weeds{
|
||||
desc = "A large mottled egg.";
|
||||
obj_integrity = 100;
|
||||
icon_state = "egg_hatched";
|
||||
name = "egg"
|
||||
},
|
||||
/obj/structure/alien/egg/burst,
|
||||
/obj/effect/decal/cleanable/blood/gibs,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
@@ -424,12 +404,7 @@
|
||||
})
|
||||
"C" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/weeds{
|
||||
desc = "A large mottled egg.";
|
||||
obj_integrity = 100;
|
||||
icon_state = "egg_hatched";
|
||||
name = "egg"
|
||||
},
|
||||
/obj/structure/alien/egg/burst,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
|
||||
@@ -778,9 +778,7 @@
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/awaymission/cabin)
|
||||
"cH" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/wood,
|
||||
/area/awaymission/cabin)
|
||||
"cI" = (
|
||||
@@ -974,12 +972,7 @@
|
||||
/turf/open/floor/plating/snowed/temperatre,
|
||||
/area/awaymission/snowforest)
|
||||
"dt" = (
|
||||
/obj/effect/landmark/mapGenerator/snowy{
|
||||
endTurfX = 159;
|
||||
endTurfY = 157;
|
||||
startTurfX = 37;
|
||||
startTurfY = 35
|
||||
},
|
||||
/obj/effect/landmark/mapGenerator/snowy,
|
||||
/turf/open/floor/plating/asteroid/snow/temperatre,
|
||||
/area/awaymission/snowforest)
|
||||
"du" = (
|
||||
|
||||
@@ -1175,9 +1175,7 @@
|
||||
},
|
||||
/area/awaymission/BMPship)
|
||||
"cz" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plating/asteroid/basalt{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
@@ -1337,9 +1335,7 @@
|
||||
name = "\improper BMP Asteroid Level 2"
|
||||
})
|
||||
"cR" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt;
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
@@ -1635,9 +1631,7 @@
|
||||
"dw" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/weapon/bedsheet,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
@@ -1718,9 +1712,7 @@
|
||||
"dH" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/weapon/bedsheet,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
@@ -1833,9 +1825,7 @@
|
||||
/obj/structure/bed,
|
||||
/obj/item/weapon/bedsheet,
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
@@ -1874,9 +1864,7 @@
|
||||
/area/awaymission/northblock)
|
||||
"ed" = (
|
||||
/obj/structure/bed,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt;
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
@@ -2082,9 +2070,7 @@
|
||||
},
|
||||
/area/awaymission/BMPship)
|
||||
"eE" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
@@ -2151,9 +2137,7 @@
|
||||
},
|
||||
/area/awaymission/listeningpost)
|
||||
"eO" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
@@ -2630,9 +2614,7 @@
|
||||
},
|
||||
/area/awaymission/BMPship)
|
||||
"fU" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/elevatorshaft{
|
||||
name = "elevator flooring";
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
@@ -2768,9 +2750,7 @@
|
||||
},
|
||||
/area/awaymission/BMPship)
|
||||
"gk" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plating/asteroid/basalt{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
|
||||
@@ -43,9 +43,7 @@
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/awaymission/challenge/start)
|
||||
"aj" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/airless{
|
||||
icon_state = "damaged3"
|
||||
},
|
||||
@@ -57,9 +55,7 @@
|
||||
},
|
||||
/area/awaymission/challenge/start)
|
||||
"al" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/awaymission/challenge/start)
|
||||
"am" = (
|
||||
|
||||
@@ -9085,9 +9085,7 @@
|
||||
name = "MO19 Arrivals"
|
||||
})
|
||||
"ms" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/awaycontent/a1{
|
||||
has_gravity = 1;
|
||||
@@ -9097,9 +9095,7 @@
|
||||
/obj/structure/chair{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/awaycontent/a1{
|
||||
has_gravity = 1;
|
||||
@@ -9269,9 +9265,7 @@
|
||||
name = "MO19 Arrivals"
|
||||
})
|
||||
"mI" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/mineral/titanium/yellow,
|
||||
/area/awaycontent/a1{
|
||||
has_gravity = 1;
|
||||
@@ -9284,9 +9278,7 @@
|
||||
icon_state = "beacon";
|
||||
name = "tracking beacon"
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/mineral/titanium/yellow,
|
||||
/area/awaycontent/a1{
|
||||
has_gravity = 1;
|
||||
|
||||
@@ -614,9 +614,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"bR" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"bS" = (
|
||||
@@ -686,9 +684,7 @@
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"bZ" = (
|
||||
/obj/machinery/gateway,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/awaymission/research/interior/gateway)
|
||||
@@ -774,9 +770,7 @@
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"cj" = (
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"ck" = (
|
||||
@@ -785,9 +779,7 @@
|
||||
icon_state = "right";
|
||||
dir = 2
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"cl" = (
|
||||
@@ -3299,9 +3291,7 @@
|
||||
icon_state = "toilet00";
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
@@ -3746,9 +3736,7 @@
|
||||
"jU" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/weapon/bedsheet/blue,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/wood,
|
||||
/area/awaymission/research/interior/dorm)
|
||||
"jV" = (
|
||||
@@ -4489,9 +4477,7 @@
|
||||
"lT" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/weapon/bedsheet/patriot,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/wood,
|
||||
/area/awaymission/research/interior/dorm)
|
||||
"lU" = (
|
||||
|
||||
@@ -579,18 +579,14 @@
|
||||
},
|
||||
/area/awaymission/snowdin/base)
|
||||
"bw" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/asteroid/snow;
|
||||
wet = 0
|
||||
},
|
||||
/area/awaymission/snowdin/base)
|
||||
"bx" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
@@ -608,9 +604,7 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/asteroid/snow;
|
||||
wet = 0
|
||||
@@ -710,9 +704,7 @@
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/asteroid/snow;
|
||||
wet = 0
|
||||
@@ -724,9 +716,7 @@
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 8;
|
||||
@@ -739,9 +729,7 @@
|
||||
/area/awaymission/snowdin/base)
|
||||
"bK" = (
|
||||
/obj/item/trash/pistachios,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/asteroid/snow;
|
||||
wet = 0
|
||||
@@ -753,9 +741,7 @@
|
||||
d2 = 8;
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/asteroid/snow;
|
||||
wet = 0
|
||||
@@ -780,9 +766,7 @@
|
||||
"bP" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/weapon/bedsheet,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/carpet{
|
||||
baseturf = /turf/open/floor/plating/asteroid/snow
|
||||
},
|
||||
@@ -1164,9 +1148,7 @@
|
||||
},
|
||||
/area/awaymission/snowdin/igloo)
|
||||
"cU" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plating{
|
||||
temperature = 220
|
||||
},
|
||||
@@ -2021,9 +2003,7 @@
|
||||
},
|
||||
/area/awaymission/snowdin/post)
|
||||
"ft" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/asteroid/snow
|
||||
},
|
||||
@@ -4222,9 +4202,7 @@
|
||||
"lf" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/weapon/bedsheet,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/carpet{
|
||||
baseturf = /turf/open/floor/plating/asteroid/snow
|
||||
},
|
||||
@@ -4442,9 +4420,7 @@
|
||||
icon_state = "tube1";
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/carpet{
|
||||
baseturf = /turf/open/floor/plating/asteroid/snow
|
||||
},
|
||||
|
||||
@@ -828,9 +828,7 @@
|
||||
},
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"cO" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"cP" = (
|
||||
@@ -1053,9 +1051,7 @@
|
||||
},
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"dA" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/red/side{
|
||||
dir = 1
|
||||
},
|
||||
@@ -1747,9 +1743,7 @@
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"fI" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/cafeteria{
|
||||
dir = 2
|
||||
},
|
||||
@@ -2331,9 +2325,7 @@
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"hC" = (
|
||||
/obj/structure/chair,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/bar,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"hD" = (
|
||||
@@ -2928,9 +2920,7 @@
|
||||
/obj/structure/chair{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/bar,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"jD" = (
|
||||
|
||||
@@ -250,9 +250,7 @@
|
||||
name = "UO45 Central Hall"
|
||||
})
|
||||
"ax" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel{
|
||||
heat_capacity = 1e+006
|
||||
},
|
||||
@@ -265,9 +263,7 @@
|
||||
icon_state = "comfychair";
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
heat_capacity = 1e+006
|
||||
},
|
||||
@@ -282,9 +278,7 @@
|
||||
icon_state = "beacon";
|
||||
name = "tracking beacon"
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/neutral/side{
|
||||
dir = 4;
|
||||
heat_capacity = 1e+006
|
||||
@@ -309,9 +303,7 @@
|
||||
scrub_N2O = 0;
|
||||
scrub_Toxins = 0
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/neutral/side{
|
||||
dir = 4;
|
||||
heat_capacity = 1e+006
|
||||
@@ -498,9 +490,7 @@
|
||||
name = "UO45 Central Hall"
|
||||
})
|
||||
"aT" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
heat_capacity = 1e+006
|
||||
},
|
||||
|
||||
@@ -2165,9 +2165,7 @@
|
||||
},
|
||||
/area/awaymission/wwrefine)
|
||||
"gV" = (
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/obj/effect/landmark/awaystart,
|
||||
/turf/open/floor/plating/ironsand{
|
||||
icon_state = "ironsand1"
|
||||
},
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#define FORCE_MAP "_maps/cerestation.json"
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"map_name": "CereStation",
|
||||
"map_path": "map_files/Cerestation",
|
||||
"map_file": "cerestation.dmm",
|
||||
"minetype": "lavaland",
|
||||
"transition_config": "default"
|
||||
}
|
||||
@@ -2,8 +2,10 @@
|
||||
#include "map_files\debug\runtimestation.dmm"
|
||||
#include "map_files\Deltastation\DeltaStation2.dmm"
|
||||
#include "map_files\MetaStation\MetaStation.dmm"
|
||||
#include "map_files\OmegaStation\OmegaStation.dmm"
|
||||
#include "map_files\PubbyStation\PubbyStation.dmm"
|
||||
#include "map_files\TgStation\tgstation.2.1.3.dmm"
|
||||
#include "map_files\Cerestation\cerestation.dmm"
|
||||
#include "map_files\CitadelStation\CitadelStation-1.2.1.dmm"
|
||||
|
||||
#include "map_files\generic\Centcomm.dmm"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -38,8 +38,8 @@
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 3
|
||||
spawn_positions = 3
|
||||
access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers)
|
||||
minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers)
|
||||
access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_maint_tunnels, GLOB.access_morgue, GLOB.access_weapons, GLOB.access_forensics_lockers)
|
||||
minimal_access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_maint_tunnels, GLOB.access_morgue, GLOB.access_weapons, GLOB.access_forensics_lockers)
|
||||
|
||||
/datum/outfit/job/officer/New()
|
||||
..()
|
||||
@@ -49,8 +49,8 @@
|
||||
/datum/job/detective/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers)
|
||||
minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers)
|
||||
access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_maint_tunnels, GLOB.access_morgue, GLOB.access_weapons, GLOB.access_forensics_lockers)
|
||||
minimal_access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_maint_tunnels, GLOB.access_morgue, GLOB.access_weapons, GLOB.access_forensics_lockers)
|
||||
|
||||
/datum/outfit/job/detective/New()
|
||||
..()
|
||||
@@ -65,8 +65,8 @@
|
||||
selection_color = "#ffffff"
|
||||
total_positions = 3
|
||||
spawn_positions = 3
|
||||
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
|
||||
minimal_access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
|
||||
access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_surgery, GLOB.access_chemistry, GLOB.access_virology, GLOB.access_genetics)
|
||||
minimal_access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_surgery, GLOB.access_chemistry, GLOB.access_virology, GLOB.access_genetics)
|
||||
|
||||
//Engineering
|
||||
|
||||
@@ -75,8 +75,8 @@
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_tcomsat)
|
||||
minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_tcomsat)
|
||||
access = list(GLOB.access_eva, GLOB.access_engine, GLOB.access_engine_equip, GLOB.access_tech_storage, GLOB.access_maint_tunnels, GLOB.access_external_airlocks, GLOB.access_construction, GLOB.access_atmospherics, GLOB.access_tcomsat)
|
||||
minimal_access = list(GLOB.access_eva, GLOB.access_engine, GLOB.access_engine_equip, GLOB.access_tech_storage, GLOB.access_maint_tunnels, GLOB.access_external_airlocks, GLOB.access_construction, GLOB.access_atmospherics, GLOB.access_tcomsat)
|
||||
|
||||
/datum/outfit/job/engineer/New()
|
||||
..()
|
||||
@@ -96,8 +96,8 @@
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 3
|
||||
spawn_positions = 3
|
||||
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_mineral_storeroom, access_tech_storage)
|
||||
minimal_access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_mineral_storeroom, access_tech_storage)
|
||||
access = list(GLOB.access_robotics, GLOB.access_tox, GLOB.access_tox_storage, GLOB.access_research, GLOB.access_xenobiology, GLOB.access_mineral_storeroom, GLOB.access_tech_storage)
|
||||
minimal_access = list(GLOB.access_robotics, GLOB.access_tox, GLOB.access_tox_storage, GLOB.access_research, GLOB.access_xenobiology, GLOB.access_mineral_storeroom, GLOB.access_tech_storage)
|
||||
|
||||
//Cargo
|
||||
|
||||
@@ -106,16 +106,16 @@
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom)
|
||||
minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom)
|
||||
access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
|
||||
minimal_access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
|
||||
|
||||
/datum/job/mining/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom)
|
||||
minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom)
|
||||
access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
|
||||
minimal_access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
|
||||
|
||||
/datum/outfit/job/mining/New()
|
||||
..()
|
||||
@@ -126,27 +126,27 @@
|
||||
/datum/job/bartender/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons)
|
||||
minimal_access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons)
|
||||
access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_weapons)
|
||||
minimal_access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_weapons)
|
||||
|
||||
/datum/job/cook/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons)
|
||||
minimal_access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons)
|
||||
access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_weapons)
|
||||
minimal_access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_weapons)
|
||||
|
||||
/datum/job/hydro/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_maint_tunnels)
|
||||
minimal_access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_maint_tunnels)
|
||||
access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_maint_tunnels)
|
||||
minimal_access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_maint_tunnels)
|
||||
// they get maint access because of all the hydro content in maint
|
||||
|
||||
/datum/job/janitor/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access = list(access_janitor, access_hydroponics, access_bar, access_kitchen, access_morgue, access_maint_tunnels)
|
||||
minimal_access = list(access_janitor, access_hydroponics, access_bar, access_kitchen, access_morgue, access_maint_tunnels)
|
||||
access = list(GLOB.access_janitor, GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_maint_tunnels)
|
||||
minimal_access = list(GLOB.access_janitor, GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_maint_tunnels)
|
||||
|
||||
|
||||
//Civilian
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,20 +3,20 @@
|
||||
/datum/job/hos/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += access_crematorium
|
||||
minimal_access += access_crematorium
|
||||
access += GLOB.access_crematorium
|
||||
minimal_access += GLOB.access_crematorium
|
||||
|
||||
/datum/job/warden/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += access_crematorium
|
||||
minimal_access += access_crematorium
|
||||
access += GLOB.access_crematorium
|
||||
minimal_access += GLOB.access_crematorium
|
||||
|
||||
/datum/job/officer/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += access_crematorium
|
||||
minimal_access += access_crematorium
|
||||
access += GLOB.access_crematorium
|
||||
minimal_access += GLOB.access_crematorium
|
||||
|
||||
MAP_REMOVE_JOB(librarian)
|
||||
MAP_REMOVE_JOB(lawyer)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
"aa" = (/turf/open/space,/area/space)
|
||||
"aa" = (/turf/open/space/basic,/area/space)
|
||||
"ab" = (/obj/structure/lattice,/turf/open/space,/area/space)
|
||||
"ac" = (/turf/open/space,/area/space/nearstation)
|
||||
"ad" = (/turf/closed/wall/r_wall,/area/maintenance/maintcentral)
|
||||
@@ -139,7 +139,7 @@
|
||||
"cI" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/open/floor/plasteel/arrival{dir = 8},/area/hallway/secondary/entry)
|
||||
"cJ" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/open/floor/plasteel/arrival{dir = 10},/area/hallway/secondary/entry)
|
||||
"cK" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/machinery/light,/turf/open/floor/plasteel/arrival,/area/hallway/secondary/entry)
|
||||
"cL" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3;pixel_y = 7},/obj/item/weapon/pen,/turf/open/floor/plasteel/arrival,/area/hallway/secondary/entry)
|
||||
"cL" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3;pixel_y = 7},/turf/open/floor/plasteel/arrival,/area/hallway/secondary/entry)
|
||||
"cM" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/healthanalyzer,/turf/open/floor/plasteel/arrival,/area/hallway/secondary/entry)
|
||||
"cN" = (/turf/closed/wall/r_wall,/area/construction)
|
||||
"cO" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2"},/turf/closed/wall/r_wall,/area/construction)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"aa" = (
|
||||
/turf/open/space,
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
"ab" = (
|
||||
/turf/closed/indestructible/riveted,
|
||||
@@ -2297,7 +2297,7 @@
|
||||
/turf/closed/indestructible/riveted,
|
||||
/area/start)
|
||||
"gd" = (
|
||||
/obj/effect/landmark/start,
|
||||
/obj/effect/landmark/start/new_player,
|
||||
/turf/open/floor/plating,
|
||||
/area/start)
|
||||
"ge" = (
|
||||
@@ -2992,9 +2992,7 @@
|
||||
/turf/closed/indestructible/riveted,
|
||||
/area/centcom/control)
|
||||
"iv" = (
|
||||
/obj/effect/landmark{
|
||||
name = "prisonwarp"
|
||||
},
|
||||
/obj/effect/landmark/prisonwarp,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 8
|
||||
},
|
||||
@@ -6494,9 +6492,7 @@
|
||||
/area/syndicate_mothership/control)
|
||||
"qp" = (
|
||||
/obj/structure/chair/stool,
|
||||
/obj/effect/landmark{
|
||||
name = "Syndicate-Spawn"
|
||||
},
|
||||
/obj/effect/landmark/syndicate_spawn,
|
||||
/turf/open/floor/plasteel/bar{
|
||||
dir = 2
|
||||
},
|
||||
@@ -8111,9 +8107,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/syndicate_mothership/control)
|
||||
"tT" = (
|
||||
/obj/effect/landmark{
|
||||
name = "Syndicate-Spawn"
|
||||
},
|
||||
/obj/effect/landmark/syndicate_spawn,
|
||||
/turf/open/floor/wood,
|
||||
/area/syndicate_mothership/control)
|
||||
"tU" = (
|
||||
@@ -9049,16 +9043,12 @@
|
||||
/area/centcom/ferry)
|
||||
"wo" = (
|
||||
/obj/structure/chair/office/dark,
|
||||
/obj/effect/landmark{
|
||||
name = "Emergencyresponseteam"
|
||||
},
|
||||
/obj/effect/landmark/ert_spawn,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/centcom/ferry)
|
||||
"wp" = (
|
||||
/obj/structure/chair/office/dark,
|
||||
/obj/effect/landmark{
|
||||
name = "Emergencyresponseteam"
|
||||
},
|
||||
/obj/effect/landmark/ert_spawn,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
},
|
||||
@@ -9204,9 +9194,7 @@
|
||||
/obj/structure/chair/office/dark{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "Emergencyresponseteam"
|
||||
},
|
||||
/obj/effect/landmark/ert_spawn,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/centcom/ferry)
|
||||
"wK" = (
|
||||
@@ -9294,9 +9282,7 @@
|
||||
},
|
||||
/area/wizard_station)
|
||||
"wY" = (
|
||||
/obj/effect/landmark/start{
|
||||
name = "wizard"
|
||||
},
|
||||
/obj/effect/landmark/start/wizard,
|
||||
/turf/open/floor/engine/cult,
|
||||
/area/wizard_station)
|
||||
"wZ" = (
|
||||
@@ -9357,9 +9343,7 @@
|
||||
/obj/structure/chair/office/dark{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "Emergencyresponseteam"
|
||||
},
|
||||
/obj/effect/landmark/ert_spawn,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
},
|
||||
@@ -9697,18 +9681,14 @@
|
||||
/obj/structure/chair/office/dark{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "Emergencyresponseteam"
|
||||
},
|
||||
/obj/effect/landmark/ert_spawn,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/centcom/ferry)
|
||||
"xV" = (
|
||||
/obj/structure/chair/office/dark{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "Emergencyresponseteam"
|
||||
},
|
||||
/obj/effect/landmark/ert_spawn,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
},
|
||||
@@ -10328,9 +10308,7 @@
|
||||
/area/wizard_station)
|
||||
"zj" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/landmark{
|
||||
name = "Teleport-Scroll"
|
||||
},
|
||||
/obj/effect/landmark/teleport_scroll,
|
||||
/obj/item/weapon/dice/d20,
|
||||
/obj/item/weapon/dice,
|
||||
/turf/open/floor/carpet,
|
||||
@@ -11791,9 +11769,7 @@
|
||||
/turf/open/space,
|
||||
/area/space)
|
||||
"CV" = (
|
||||
/obj/effect/landmark{
|
||||
name = "Holding Facility"
|
||||
},
|
||||
/obj/effect/landmark/holding_facility,
|
||||
/turf/open/floor/engine,
|
||||
/area/centcom/holding)
|
||||
"CW" = (
|
||||
@@ -11837,9 +11813,7 @@
|
||||
/area/tdome/tdomeobserve)
|
||||
"Da" = (
|
||||
/obj/structure/chair,
|
||||
/obj/effect/landmark{
|
||||
name = "tdomeobserve"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/observe,
|
||||
/obj/structure/sign/barsign{
|
||||
pixel_y = 32
|
||||
},
|
||||
@@ -11849,9 +11823,7 @@
|
||||
/area/tdome/tdomeobserve)
|
||||
"Db" = (
|
||||
/obj/structure/chair,
|
||||
/obj/effect/landmark{
|
||||
name = "tdomeobserve"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/observe,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 8
|
||||
},
|
||||
@@ -12189,27 +12161,21 @@
|
||||
},
|
||||
/area/tdome/arena)
|
||||
"DO" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome2"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/two,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tdome/arena)
|
||||
"DP" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome2"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/two,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tdome/arena)
|
||||
"DQ" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome2"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/two,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
@@ -12262,27 +12228,21 @@
|
||||
},
|
||||
/area/tdome/arena)
|
||||
"DZ" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome1"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/one,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tdome/arena)
|
||||
"Ea" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome1"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/one,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tdome/arena)
|
||||
"Eb" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome1"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/one,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
@@ -12336,9 +12296,7 @@
|
||||
},
|
||||
/area/tdome/tdomeadmin)
|
||||
"Eh" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome2"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/two,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
@@ -12348,22 +12306,16 @@
|
||||
/obj/machinery/recharger{
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "tdome2"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/two,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tdome/arena)
|
||||
"Ej" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome2"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/two,
|
||||
/turf/open/floor/plasteel/neutral,
|
||||
/area/tdome/arena)
|
||||
"Ek" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome2"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/two,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
@@ -12380,9 +12332,7 @@
|
||||
},
|
||||
/area/tdome/arena)
|
||||
"En" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome1"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/one,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
@@ -12392,22 +12342,16 @@
|
||||
/obj/machinery/recharger{
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "tdome1"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/one,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tdome/arena)
|
||||
"Ep" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome1"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/one,
|
||||
/turf/open/floor/plasteel/neutral,
|
||||
/area/tdome/arena)
|
||||
"Eq" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome1"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/one,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
@@ -12441,9 +12385,7 @@
|
||||
network = list("thunder");
|
||||
c_tag = "Red Team"
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "tdome2"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/two,
|
||||
/turf/open/floor/plasteel/neutral,
|
||||
/area/tdome/arena)
|
||||
"Ev" = (
|
||||
@@ -12474,9 +12416,7 @@
|
||||
network = list("thunder");
|
||||
c_tag = "Green Team"
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "tdome1"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/one,
|
||||
/turf/open/floor/plasteel/neutral,
|
||||
/area/tdome/arena)
|
||||
"EA" = (
|
||||
@@ -12516,50 +12456,38 @@
|
||||
/turf/open/floor/plasteel/green/corner,
|
||||
/area/tdome/arena)
|
||||
"EG" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome2"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/two,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tdome/arena)
|
||||
"EH" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome2"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/two,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tdome/arena)
|
||||
"EI" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome2"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/two,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tdome/arena)
|
||||
"EJ" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome1"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/one,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tdome/arena)
|
||||
"EK" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome1"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/one,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tdome/arena)
|
||||
"EL" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdome1"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/one,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
},
|
||||
@@ -12644,9 +12572,7 @@
|
||||
},
|
||||
/area/tdome/tdomeadmin)
|
||||
"EV" = (
|
||||
/obj/effect/landmark{
|
||||
name = "tdomeadmin"
|
||||
},
|
||||
/obj/effect/landmark/thunderdome/admin,
|
||||
/obj/structure/chair/comfy/black{
|
||||
dir = 1
|
||||
},
|
||||
@@ -14446,7 +14372,7 @@
|
||||
/area/wizard_station)
|
||||
"KN" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/engine/cult,
|
||||
/area/wizard_station)
|
||||
@@ -14964,6 +14890,10 @@
|
||||
name = "Centcom"
|
||||
},
|
||||
/area/centcom/evac)
|
||||
"Md" = (
|
||||
/obj/machinery/computer/emergency_shuttle,
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -62947,7 +62877,7 @@ tH
|
||||
qk
|
||||
Ks
|
||||
ql
|
||||
Ma
|
||||
LY
|
||||
Mb
|
||||
yS
|
||||
Lc
|
||||
@@ -65807,7 +65737,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
Fa
|
||||
Fh
|
||||
Md
|
||||
Fp
|
||||
FC
|
||||
Fh
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"a" = (/turf/open/space,/area/space)
|
||||
"a" = (/turf/open/space/basic,/area/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"a" = (/turf/open/space,/area/space)
|
||||
"a" = (/turf/open/space/basic,/area/space)
|
||||
"b" = (/obj/docking_port/stationary{dheight = 0;dir = 2;dwidth = 11;height = 22;id = "whiteship_away";name = "Deep Space";width = 35},/turf/open/space,/area/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
|
||||
@@ -250,7 +250,7 @@
|
||||
"aN" = (
|
||||
/obj/structure/chair/stool/bar{
|
||||
can_buckle = 1;
|
||||
name = "buckable bar stool"
|
||||
name = "buckleable bar stool"
|
||||
},
|
||||
/turf/open/floor/plasteel/bar,
|
||||
/area/shuttle/escape)
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
//See controllers/globals.dm
|
||||
#define GLOBAL_MANAGED(X, InitValue)\
|
||||
/datum/controller/global_vars/proc/InitGlobal##X(){\
|
||||
##X = ##InitValue;\
|
||||
gvars_datum_init_order += #X;\
|
||||
}
|
||||
#define GLOBAL_UNMANAGED(X, InitValue) /datum/controller/global_vars/proc/InitGlobal##X()
|
||||
|
||||
#ifndef TESTING
|
||||
#define GLOBAL_PROTECT(X)\
|
||||
/datum/controller/global_vars/InitGlobal##X(){\
|
||||
..();\
|
||||
gvars_datum_protected_varlist += #X;\
|
||||
}
|
||||
#else
|
||||
#define GLOBAL_PROTECT(X)
|
||||
#endif
|
||||
|
||||
#define GLOBAL_REAL(X, Typepath) var/global##Typepath/##X
|
||||
|
||||
#define GLOBAL_RAW(X) /datum/controller/global_vars/var/global##X
|
||||
|
||||
#define GLOBAL_VAR_INIT(X, InitValue) GLOBAL_RAW(/##X); GLOBAL_MANAGED(X, InitValue)
|
||||
|
||||
#define GLOBAL_VAR_CONST(X, InitValue) GLOBAL_RAW(/const/##X) = InitValue; GLOBAL_UNMANAGED(X, InitValue)
|
||||
|
||||
#define GLOBAL_LIST_INIT(X, InitValue) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, InitValue)
|
||||
|
||||
#define GLOBAL_LIST_EMPTY(X) GLOBAL_LIST_INIT(X, list())
|
||||
|
||||
#define GLOBAL_DATUM_INIT(X, Typepath, InitValue) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, InitValue)
|
||||
|
||||
#define GLOBAL_VAR(X) GLOBAL_RAW(/##X); GLOBAL_MANAGED(X, null)
|
||||
|
||||
#define GLOBAL_LIST(X) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, null)
|
||||
|
||||
#define GLOBAL_DATUM(X, Typepath) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, null)
|
||||
+13
-15
@@ -1,4 +1,4 @@
|
||||
#define MC_TICK_CHECK ( ( world.tick_usage > CURRENT_TICKLIMIT || src.state != SS_RUNNING ) ? pause() : 0 )
|
||||
#define MC_TICK_CHECK ( ( world.tick_usage > GLOB.CURRENT_TICKLIMIT || src.state != SS_RUNNING ) ? pause() : 0 )
|
||||
// Used to smooth out costs to try and avoid oscillation.
|
||||
#define MC_AVERAGE_FAST(average, current) (0.7 * (average) + 0.3 * (current))
|
||||
#define MC_AVERAGE(average, current) (0.8 * (average) + 0.2 * (current))
|
||||
@@ -52,18 +52,16 @@
|
||||
#define SS_SLEEPING 4 //fire() slept.
|
||||
#define SS_PAUSING 5 //in the middle of pausing
|
||||
|
||||
#define SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/##X);\
|
||||
/datum/controller/subsystem/##X/New(){\
|
||||
NEW_SS_GLOBAL(SS##X);\
|
||||
PreInit();\
|
||||
}\
|
||||
/datum/controller/subsystem/##X
|
||||
|
||||
//Timing subsystem
|
||||
//Don't run if there is an identical unique timer active
|
||||
#define TIMER_UNIQUE 0x1
|
||||
//For unique timers: Replace the old timer rather then not start this one
|
||||
#define TIMER_OVERRIDE 0x2
|
||||
//Timing should be based on how timing progresses on clients, not the sever.
|
||||
// tracking this is more expensive,
|
||||
// should only be used in conjuction with things that have to progress client side, such as animate() or sound()
|
||||
#define TIMER_CLIENT_TIME 0x4
|
||||
//Timer can be stopped using deltimer()
|
||||
#define TIMER_STOPPABLE 0x8
|
||||
//To be used with TIMER_UNIQUE
|
||||
//prevents distinguishing identical timers with the wait variable
|
||||
#define TIMER_NO_HASH_WAIT 0x10
|
||||
#define PROCESSING_SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/processing/##X);\
|
||||
/datum/controller/subsystem/processing/##X/New(){\
|
||||
NEW_SS_GLOBAL(SS##X);\
|
||||
PreInit();\
|
||||
}\
|
||||
/datum/controller/subsystem/processing/##X
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
#define ADMIN_VV(atom) "(<a href='?_src_=vars;Vars=\ref[atom]'>VV</a>)"
|
||||
#define ADMIN_SM(user) "(<a href='?_src_=holder;subtlemessage=\ref[user]'>SM</a>)"
|
||||
#define ADMIN_TP(user) "(<a href='?_src_=holder;traitor=\ref[user]'>TP</a>)"
|
||||
#define ADMIN_BSA(user) "(<a href='?_src_=holder;BlueSpaceArtillery=\ref[user]'>BSA</a>)"
|
||||
#define ADMIN_KICK(user) "(<a href='?_src_=holder;boot2=\ref[user]'>KICK</a>)"
|
||||
#define ADMIN_CENTCOM_REPLY(user) "(<a href='?_src_=holder;CentcommReply=\ref[user]'>RPLY</a>)"
|
||||
#define ADMIN_SYNDICATE_REPLY(user) "(<a href='?_src_=holder;SyndicateReply=\ref[user]'>RPLY</a>)"
|
||||
@@ -52,11 +51,14 @@
|
||||
#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]"
|
||||
#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]"
|
||||
#define ADMIN_SET_SD_CODE "(<a href='?_src_=holder;set_selfdestruct_code=1'>SETCODE</a>)"
|
||||
#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_QUE(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_FLW(user)] [ADMIN_TP(user)]"
|
||||
#define ADMIN_FULLMONTY_NONAME(user) "[ADMIN_QUE(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_FLW(user)] [ADMIN_TP(user)] [ADMIN_INDIVIDUALLOG(user)]"
|
||||
#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_FULLMONTY_NONAME(user)]"
|
||||
#define ADMIN_JMP(src) "(<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)"
|
||||
#define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]"
|
||||
#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]"
|
||||
#define ADMIN_INDIVIDUALLOG(user) "(<a href='?_src_=holder;individuallog=\ref[user]'>LOGS</a>)"
|
||||
|
||||
#define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt"
|
||||
#define ADMIN_PUNISHMENT_BRAINDAMAGE "Brain damage"
|
||||
#define ADMIN_PUNISHMENT_GIB "Gib"
|
||||
#define ADMIN_PUNISHMENT_GIB "Gib"
|
||||
#define ADMIN_PUNISHMENT_BSA "Bluespace Artillery Device"
|
||||
@@ -65,18 +65,6 @@
|
||||
#define MILK_RATE_MULT 1
|
||||
#define MILK_EFFICIENCY 1
|
||||
|
||||
|
||||
// Admin ticket things
|
||||
#define TICKET_RESOLVED "Yes"
|
||||
#define TICKET_UNRESOLVED "No"
|
||||
#define TICKET_UNASSIGNED "N/A"
|
||||
|
||||
#define TICKET_REPLIED "Yes"
|
||||
#define TICKET_UNREPLIED "No"
|
||||
|
||||
#define TICKET_INACTIVE "No"
|
||||
#define TICKET_ACTIVE "Yes"
|
||||
|
||||
//Individual logging define
|
||||
#define INDIVIDUAL_LOOC_LOG "LOOC log"
|
||||
|
||||
|
||||
+19
-15
@@ -5,17 +5,17 @@
|
||||
#define REPLICANT_ALLOY "replicant_alloy"
|
||||
#define HIEROPHANT_ANSIBLE "hierophant_ansible"
|
||||
|
||||
var/global/clockwork_construction_value = 0 //The total value of all structures built by the clockwork cult
|
||||
var/global/clockwork_caches = 0 //How many clockwork caches exist in the world (not each individual)
|
||||
var/global/clockwork_daemons = 0 //How many daemons exist in the world
|
||||
var/global/list/clockwork_generals_invoked = list("nezbere" = FALSE, "sevtug" = FALSE, "nzcrentr" = FALSE, "inath-neq" = FALSE) //How many generals have been recently invoked
|
||||
var/global/list/all_clockwork_objects = list() //All clockwork items, structures, and effects in existence
|
||||
var/global/list/all_clockwork_mobs = list() //All clockwork SERVANTS (not creatures) in existence
|
||||
var/global/list/clockwork_component_cache = list(BELLIGERENT_EYE = 0, VANGUARD_COGWHEEL = 0, GEIS_CAPACITOR = 0, REPLICANT_ALLOY = 0, HIEROPHANT_ANSIBLE = 0) //The pool of components that caches draw from
|
||||
var/global/ratvar_awakens = 0 //If Ratvar has been summoned; not a boolean, for proper handling of multiple Ratvars
|
||||
var/global/nezbere_invoked = 0 //If Nezbere has been invoked; not a boolean, for proper handling of multiple Nezberes
|
||||
var/global/clockwork_gateway_activated = FALSE //if a gateway to the celestial derelict has ever been successfully activated
|
||||
var/global/list/all_scripture = list() //a list containing scripture instances; not used to track existing scripture
|
||||
GLOBAL_VAR_INIT(clockwork_construction_value, 0) //The total value of all structures built by the clockwork cult
|
||||
GLOBAL_VAR_INIT(clockwork_caches, 0) //How many clockwork caches exist in the world (not each individual)
|
||||
GLOBAL_VAR_INIT(clockwork_daemons, 0) //How many daemons exist in the world
|
||||
GLOBAL_LIST_INIT(clockwork_generals_invoked, list("nezbere" = FALSE, "sevtug" = FALSE, "nzcrentr" = FALSE, "inath-neq" = FALSE)) //How many generals have been recently invoked
|
||||
GLOBAL_LIST_EMPTY(all_clockwork_objects) //All clockwork items, structures, and effects in existence
|
||||
GLOBAL_LIST_EMPTY(all_clockwork_mobs) //All clockwork SERVANTS (not creatures) in existence
|
||||
GLOBAL_LIST_INIT(clockwork_component_cache, list(BELLIGERENT_EYE = 0, VANGUARD_COGWHEEL = 0, GEIS_CAPACITOR = 0, REPLICANT_ALLOY = 0, HIEROPHANT_ANSIBLE = 0)) //The pool of components that caches draw from
|
||||
GLOBAL_VAR_INIT(ratvar_awakens, 0) //If Ratvar has been summoned; not a boolean, for proper handling of multiple Ratvars
|
||||
GLOBAL_VAR_INIT(nezbere_invoked, 0) //If Nezbere has been invoked; not a boolean, for proper handling of multiple Nezberes
|
||||
GLOBAL_VAR_INIT(clockwork_gateway_activated, FALSE) //if a gateway to the celestial derelict has ever been successfully activated
|
||||
GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not used to track existing scripture
|
||||
|
||||
//Scripture tiers and requirements; peripherals should never be used
|
||||
#define SCRIPTURE_PERIPHERAL "Peripheral"
|
||||
@@ -43,7 +43,9 @@ var/global/list/all_scripture = list() //a list containing scripture instances;
|
||||
|
||||
#define SLAB_SLOWDOWN_MAXIMUM 2700 //maximum slowdown from additional servants; defaults to 4 minutes 30 seconds
|
||||
|
||||
#define CACHE_PRODUCTION_TIME 900 //how long(deciseconds) caches require to produce a component; defaults to 1 minute 30 seconds
|
||||
#define CACHE_PRODUCTION_TIME 600 //how long(deciseconds) caches require to produce a component; defaults to 1 minute
|
||||
|
||||
#define ACTIVE_CACHE_SLOWDOWN 100 //how many additional deciseconds caches take to produce a component for each linked cache; defaults to 10 seconds
|
||||
|
||||
#define LOWER_PROB_PER_COMPONENT 10 //how much each component in the cache reduces the weight of getting another of that component type
|
||||
|
||||
@@ -85,10 +87,12 @@ var/global/list/all_scripture = list() //a list containing scripture instances;
|
||||
|
||||
#define GATEWAY_RATVAR_ARRIVAL 300 //when progress is at or above this, game over ratvar's here everybody go home
|
||||
|
||||
//Objective defines
|
||||
#define CLOCKCULT_GATEWAY "summon ratvar"
|
||||
#define ARK_SUMMON_COST 3 //how many of each component an Ark costs to summon
|
||||
|
||||
#define CLOCKCULT_ESCAPE "proselytize the station"
|
||||
#define ARK_CONSUME_COST 7 //how many of each component an Ark needs to consume to activate
|
||||
|
||||
//Objective text define
|
||||
#define CLOCKCULT_OBJECTIVE "Construct the Ark of the Clockwork Justicar and free Ratvar."
|
||||
|
||||
//misc clockcult stuff
|
||||
#define MARAUDER_EMERGE_THRESHOLD 65 //marauders cannot emerge unless host is at this% or less health
|
||||
|
||||
@@ -60,6 +60,12 @@
|
||||
#define GEAR_SECURE 1
|
||||
#define GEAR_LOOSE 2
|
||||
|
||||
//floodlights because apparently we use defines now
|
||||
#define FLOODLIGHT_NEEDS_WIRES 0
|
||||
#define FLOODLIGHT_NEEDS_LIGHTS 1
|
||||
#define FLOODLIGHT_NEEDS_SECURING 2
|
||||
#define FLOODLIGHT_NEEDS_WRENCHING 3
|
||||
|
||||
//other construction-related things
|
||||
|
||||
//windows affected by nar-sie turn this color.
|
||||
|
||||
+11
-16
@@ -19,10 +19,11 @@
|
||||
#define ON_BORDER 512 // item has priority to check when entering or leaving
|
||||
|
||||
#define NOSLIP 1024 //prevents from slipping on wet floors, in space etc
|
||||
#define CLEAN_ON_MOVE 2048
|
||||
|
||||
// BLOCK_GAS_SMOKE_EFFECT only used in masks at the moment.
|
||||
#define BLOCK_GAS_SMOKE_EFFECT 8192 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! (NOTE: flag shared with THICKMATERIAL)
|
||||
#define THICKMATERIAL 8192 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. (NOTE: flag shared with BLOCK_GAS_SMOKE_EFFECT)
|
||||
#define BLOCK_GAS_SMOKE_EFFECT 4096 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY!
|
||||
#define THICKMATERIAL 8192 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body.
|
||||
#define DROPDEL 16384 // When dropped, it calls qdel on itself
|
||||
|
||||
/* Secondary atom flags, access using the SECONDARY_FLAG macros */
|
||||
@@ -35,6 +36,12 @@
|
||||
#define INFORM_ADMINS_ON_RELOCATE "inform_admins_on_relocate"
|
||||
#define BANG_PROTECT "bang_protect"
|
||||
|
||||
// A mob with OMNITONGUE has no restriction in the ability to speak
|
||||
// languages that they know. So even if they wouldn't normally be able to
|
||||
// through mob or tongue restrictions, this flag allows them to ignore
|
||||
// those restrictions.
|
||||
#define OMNITONGUE "omnitongue"
|
||||
|
||||
//turf-only flags
|
||||
#define NOJAUNT 1
|
||||
#define UNUSED_TRANSIT_TURF 2
|
||||
@@ -59,20 +66,6 @@
|
||||
#define GROUND 1
|
||||
#define FLYING 2
|
||||
|
||||
|
||||
/*
|
||||
These defines are used specifically with the atom/movable/languages bitmask.
|
||||
They are used in atom/movable/Hear() and atom/movable/say() to determine whether hearers can understand a message.
|
||||
*/
|
||||
#define HUMAN 1
|
||||
#define MONKEY 2
|
||||
#define ALIEN 4
|
||||
#define ROBOT 8
|
||||
#define SLIME 16
|
||||
#define DRONE 32
|
||||
#define SWARMER 64
|
||||
#define RATVAR 128
|
||||
|
||||
// Flags for reagents
|
||||
#define REAGENT_NOREACT 1
|
||||
|
||||
@@ -84,3 +77,5 @@
|
||||
#define UNACIDABLE 16 //acid can't even appear on it, let alone melt it.
|
||||
#define ACID_PROOF 32 //acid stuck on it doesn't melt it.
|
||||
#define INDESTRUCTIBLE 64 //doesn't take damage
|
||||
|
||||
// language secondary flags for atoms
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
|
||||
#define ismineralturf(A) (istype(A, /turf/closed/mineral))
|
||||
|
||||
#define islava(A) (istype(A, /turf/open/floor/plating/lava))
|
||||
|
||||
//Mobs
|
||||
#define isliving(A) (istype(A, /mob/living))
|
||||
|
||||
@@ -120,13 +122,13 @@
|
||||
|
||||
#define isorgan(A) (istype(A, /obj/item/organ))
|
||||
|
||||
var/list/static/global/pointed_types = typecacheof(list(
|
||||
GLOBAL_LIST_INIT(pointed_types, typecacheof(list(
|
||||
/obj/item/weapon/pen,
|
||||
/obj/item/weapon/screwdriver,
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/kitchen/fork))
|
||||
/obj/item/weapon/kitchen/fork)))
|
||||
|
||||
#define is_pointed(W) (is_type_in_typecache(W, pointed_types))
|
||||
#define is_pointed(W) (is_type_in_typecache(W, GLOB.pointed_types))
|
||||
|
||||
#define isbodypart(A) (istype(A, /obj/item/bodypart))
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
#define ENGSEC (1<<0)
|
||||
|
||||
#define CAPTAIN (1<<0)
|
||||
#define HOS (1<<1)
|
||||
#define WARDEN (1<<2)
|
||||
#define DETECTIVE (1<<3)
|
||||
#define OFFICER (1<<4)
|
||||
#define CHIEF (1<<5)
|
||||
#define ENGINEER (1<<6)
|
||||
#define ATMOSTECH (1<<7)
|
||||
#define ROBOTICIST (1<<8)
|
||||
#define AI_JF (1<<9)
|
||||
#define CYBORG (1<<10)
|
||||
|
||||
|
||||
#define MEDSCI (1<<1)
|
||||
|
||||
#define RD_JF (1<<0)
|
||||
#define SCIENTIST (1<<1)
|
||||
#define CHEMIST (1<<2)
|
||||
#define CMO_JF (1<<3)
|
||||
#define DOCTOR (1<<4)
|
||||
#define GENETICIST (1<<5)
|
||||
#define VIROLOGIST (1<<6)
|
||||
|
||||
|
||||
#define CIVILIAN (1<<2)
|
||||
|
||||
#define HOP (1<<0)
|
||||
#define BARTENDER (1<<1)
|
||||
#define BOTANIST (1<<2)
|
||||
#define COOK (1<<3)
|
||||
#define JANITOR (1<<4)
|
||||
#define LIBRARIAN (1<<5)
|
||||
#define QUARTERMASTER (1<<6)
|
||||
#define CARGOTECH (1<<7)
|
||||
#define MINER (1<<8)
|
||||
#define LAWYER (1<<9)
|
||||
#define CHAPLAIN (1<<10)
|
||||
#define CLOWN (1<<11)
|
||||
#define MIME (1<<12)
|
||||
#define ASSISTANT (1<<13)
|
||||
@@ -0,0 +1,2 @@
|
||||
#define NO_STUTTER 1
|
||||
#define TONGUELESS_SPEECH 2
|
||||
@@ -4,9 +4,9 @@
|
||||
#define LIGHTING_FALLOFF 1 // type of falloff to use for lighting; 1 for circular, 2 for square
|
||||
#define LIGHTING_LAMBERTIAN 0 // use lambertian shading for light sources
|
||||
#define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone
|
||||
#define LIGHTING_ROUND_VALUE 1 / 128 //Value used to round lumcounts, values smaller than 1/255 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY.
|
||||
#define LIGHTING_ROUND_VALUE 1 / 64 //Value used to round lumcounts, values smaller than 1/129 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY.
|
||||
|
||||
#define LIGHTING_ICON 'icons/effects/lighting_object.png' // icon used for lighting shading effects
|
||||
#define LIGHTING_ICON 'icons/effects/lighting_object.dmi' // icon used for lighting shading effects
|
||||
|
||||
// If the max of the lighting lumcounts of each spectrum drops below this, disable luminosity on the lighting objects.
|
||||
// Set to zero to disable soft lighting. Luminosity changes then work if it's lit at all.
|
||||
@@ -67,3 +67,8 @@
|
||||
#define LIGHT_COLOR_SLIME_LAMP "#AFC84B" //Weird color, between yellow and green, very slimy. rgb(175, 200, 75)
|
||||
#define LIGHT_COLOR_TUNGSTEN "#FAE1AF" //Extremely diluted yellow, close to skin color (for some reason). rgb(250, 225, 175)
|
||||
#define LIGHT_COLOR_HALOGEN "#F0FAFA" //Barely visible cyan-ish hue, as the doctor prescribed. rgb(240, 250, 250)
|
||||
|
||||
#define LIGHTING_PLANE_ALPHA_VISIBLE 255
|
||||
#define LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE 192
|
||||
#define LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE 128 //For lighting alpha, small amounts lead to big changes. even at 128 its hard to figure out what is dark and what is light, at 64 you almost can't even tell.
|
||||
#define LIGHTING_PLANE_ALPHA_INVISIBLE 0
|
||||
@@ -63,3 +63,6 @@
|
||||
#define PROGRAM_STATE_KILLED 0
|
||||
#define PROGRAM_STATE_BACKGROUND 1
|
||||
#define PROGRAM_STATE_ACTIVE 2
|
||||
|
||||
#define FIREDOOR_OPEN 1
|
||||
#define FIREDOOR_CLOSED 2
|
||||
@@ -41,4 +41,6 @@ Last space-z level = empty
|
||||
#define ZLEVEL_EMPTY_SPACE 11
|
||||
|
||||
#define ZLEVEL_SPACEMIN 3
|
||||
#define ZLEVEL_SPACEMAX 11
|
||||
#define ZLEVEL_SPACEMAX 11
|
||||
|
||||
#define SPACERUIN_MAP_EDGE_PAD 15
|
||||
@@ -22,4 +22,4 @@
|
||||
//time of day but automatically adjusts to the server going into the next day within the same round.
|
||||
//for when you need a reliable time number that doesn't depend on byond time.
|
||||
#define REALTIMEOFDAY (world.timeofday + (MIDNIGHT_ROLLOVER * MIDNIGHT_ROLLOVER_CHECK))
|
||||
#define MIDNIGHT_ROLLOVER_CHECK ( rollovercheck_last_timeofday != world.timeofday ? update_midnight_rollover() : midnight_rollovers )
|
||||
#define MIDNIGHT_ROLLOVER_CHECK ( GLOB.rollovercheck_last_timeofday != world.timeofday ? update_midnight_rollover() : GLOB.midnight_rollovers )
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
#define STAGE_FIVE 9
|
||||
#define STAGE_SIX 11 //From supermatter shard
|
||||
|
||||
//ticker.current_state values
|
||||
//SSticker.current_state values
|
||||
#define GAME_STATE_STARTUP 0
|
||||
#define GAME_STATE_PREGAME 1
|
||||
#define GAME_STATE_SETTING_UP 2
|
||||
@@ -188,7 +188,7 @@
|
||||
//Key:
|
||||
//"entered-[blood_state]-[dir_of_image]"
|
||||
//or: "exited-[blood_state]-[dir_of_image]"
|
||||
var/list/bloody_footprints_cache = list()
|
||||
GLOBAL_LIST_EMPTY(bloody_footprints_cache)
|
||||
|
||||
//Bloody shoes/footprints
|
||||
#define MAX_SHOE_BLOODINESS 100
|
||||
@@ -253,7 +253,7 @@ var/list/bloody_footprints_cache = list()
|
||||
|
||||
#define GHOST_ACCS_DEFAULT_OPTION GHOST_ACCS_FULL
|
||||
|
||||
var/global/list/ghost_accs_options = list(GHOST_ACCS_NONE, GHOST_ACCS_DIR, GHOST_ACCS_FULL) //So save files can be sanitized properly.
|
||||
GLOBAL_LIST_INIT(ghost_accs_options, list(GHOST_ACCS_NONE, GHOST_ACCS_DIR, GHOST_ACCS_FULL)) //So save files can be sanitized properly.
|
||||
|
||||
#define GHOST_OTHERS_SIMPLE 1
|
||||
#define GHOST_OTHERS_DEFAULT_SPRITE 50
|
||||
@@ -269,7 +269,7 @@ var/global/list/ghost_accs_options = list(GHOST_ACCS_NONE, GHOST_ACCS_DIR, GHOST
|
||||
#define GHOST_MAX_VIEW_RANGE_MEMBER 14
|
||||
|
||||
|
||||
var/global/list/ghost_others_options = list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DEFAULT_SPRITE, GHOST_OTHERS_THEIR_SETTING) //Same as ghost_accs_options.
|
||||
GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DEFAULT_SPRITE, GHOST_OTHERS_THEIR_SETTING)) //Same as ghost_accs_options.
|
||||
|
||||
//Color Defines
|
||||
#define OOC_COLOR "#002eb8"
|
||||
@@ -332,9 +332,9 @@ var/global/list/ghost_others_options = list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
|
||||
#define SHELTER_DEPLOY_ANCHORED_OBJECTS "anchored objects"
|
||||
|
||||
//debug printing macros
|
||||
#define debug_world(msg) if (Debug2) to_chat(world, "DEBUG: [msg]")
|
||||
#define debug_admins(msg) if (Debug2) to_chat(admins, "DEBUG: [msg]")
|
||||
#define debug_world_log(msg) if (Debug2) log_world("DEBUG: [msg]")
|
||||
#define debug_world(msg) if (GLOB.Debug2) to_chat(world, "DEBUG: [msg]")
|
||||
#define debug_admins(msg) if (GLOB.Debug2) to_chat(GLOB.admins, "DEBUG: [msg]")
|
||||
#define debug_world_log(msg) if (GLOB.Debug2) log_world("DEBUG: [msg]")
|
||||
|
||||
#define COORD(A) "([A.x],[A.y],[A.z])"
|
||||
#define INCREMENT_TALLY(L, stat) if(L[stat]){L[stat]++}else{L[stat] = 1}
|
||||
|
||||
+10
-1
@@ -107,4 +107,13 @@
|
||||
#define INDIVIDUAL_SAY_LOG "Say log"
|
||||
#define INDIVIDUAL_EMOTE_LOG "Emote log"
|
||||
#define INDIVIDUAL_OOC_LOG "OOC log"
|
||||
#define INDIVIDUAL_SHOW_ALL_LOG "All logs"
|
||||
#define INDIVIDUAL_SHOW_ALL_LOG "All logs"
|
||||
|
||||
#define TK_MAXRANGE 15
|
||||
|
||||
#define NO_SLIP_WHEN_WALKING 1
|
||||
#define SLIDE 2
|
||||
#define GALOSHES_DONT_HELP 4
|
||||
#define SLIDE_ICE 8
|
||||
|
||||
#define MAX_CHICKENS 50
|
||||
@@ -3,4 +3,10 @@
|
||||
#define GAS 3
|
||||
|
||||
#define OPENCONTAINER 4096 // is an open container for chemistry purposes
|
||||
#define TRANSPARENT 8192 //Used for non-open containers which you still want to be able to see the reagents off.
|
||||
#define TRANSPARENT 8192 //Used for non-open containers which you still want to be able to see the reagents off.
|
||||
|
||||
#define TOUCH 1 //splashing
|
||||
#define INGEST 2 //ingestion
|
||||
#define VAPOR 3 //foam, spray, blob attack
|
||||
#define PATCH 4 //patches
|
||||
#define INJECT 5 //injection
|
||||
@@ -34,3 +34,9 @@
|
||||
#define FLOOR_BOT 4 // Floorbots
|
||||
#define CLEAN_BOT 8 // Cleanbots
|
||||
#define MED_BOT 16 // Medibots
|
||||
|
||||
//AI notification defines
|
||||
#define NEW_BORG 1
|
||||
#define NEW_MODULE 2
|
||||
#define RENAME 3
|
||||
#define AI_SHELL 4
|
||||
@@ -28,7 +28,7 @@
|
||||
//Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR.
|
||||
//The gamemode specific ones are just so the gamemodes can query whether a player is old enough
|
||||
//(in game days played) to play that role
|
||||
var/global/list/special_roles = list(
|
||||
GLOBAL_LIST_INIT(special_roles, list(
|
||||
ROLE_TRAITOR = /datum/game_mode/traitor,
|
||||
ROLE_OPERATIVE = /datum/game_mode/nuclear,
|
||||
ROLE_CHANGELING = /datum/game_mode/changeling,
|
||||
@@ -47,7 +47,7 @@ var/global/list/special_roles = list(
|
||||
ROLE_DEVIL = /datum/game_mode/devil,
|
||||
ROLE_SERVANT_OF_RATVAR = /datum/game_mode/clockwork_cult,
|
||||
ROLE_BORER,
|
||||
)
|
||||
))
|
||||
|
||||
//Job defines for what happens when you fail to qualify for any job during job selection
|
||||
#define BEASSISTANT 1
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#define MODE_INTERCOM "intercom"
|
||||
#define MODE_BINARY "binary"
|
||||
#define MODE_WHISPER "whisper"
|
||||
#define MODE_WHISPER_CRIT "whispercrit"
|
||||
#define MODE_DEPARTMENT "department"
|
||||
#define MODE_ALIEN "alientalk"
|
||||
#define MODE_HOLOPAD "holopad"
|
||||
@@ -32,6 +33,9 @@
|
||||
#define REDUCE_RANGE 2
|
||||
#define NOPASS 4
|
||||
|
||||
//Eavesdropping
|
||||
#define EAVESDROP_EXTRA_RANGE 1 //how much past the specified message_range does the message get starred, whispering only
|
||||
|
||||
// A link given to ghost alice to follow bob
|
||||
#define FOLLOW_LINK(alice, bob) "<a href=?src=\ref[alice];follow=\ref[bob]>(F)</a>"
|
||||
#define TURF_LINK(alice, turfy) "<a href=?src=\ref[alice];x=[turfy.x];y=[turfy.y];z=[turfy.z]>(T)</a>"
|
||||
|
||||
@@ -43,4 +43,6 @@
|
||||
|
||||
#define HYPERSPACE_WARMUP 1
|
||||
#define HYPERSPACE_LAUNCH 2
|
||||
#define HYPERSPACE_END 3
|
||||
#define HYPERSPACE_END 3
|
||||
|
||||
#define CALL_SHUTTLE_REASON_LENGTH 12
|
||||
@@ -1,8 +1,5 @@
|
||||
|
||||
#define SEE_INVISIBLE_MINIMUM 5
|
||||
|
||||
#define SEE_INVISIBLE_NOLIGHTING 15 //to not see the lighting objects. Used for nightvision and observer with darkness toggled.
|
||||
|
||||
#define INVISIBILITY_LIGHTING 20
|
||||
|
||||
#define SEE_INVISIBLE_LIVING 25
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
//max channel is 1024. Only go lower from here, because byond tends to pick the first availiable channel to play sounds on
|
||||
#define CHANNEL_LOBBYMUSIC 1024
|
||||
#define CHANNEL_ADMIN 1023
|
||||
#define CHANNEL_VOX 1022
|
||||
|
||||
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
|
||||
//KEEP IT UPDATED
|
||||
#define CHANNEL_HIGHEST_AVAILABLE 1021
|
||||
@@ -1,6 +1,12 @@
|
||||
|
||||
//These are all the different status effects. Use the paths for each effect in the defines.
|
||||
|
||||
#define STATUS_EFFECT_MULTIPLE 0 //if it allows multiple instances of the effect
|
||||
|
||||
#define STATUS_EFFECT_UNIQUE 1 //if it allows only one, preventing new instances
|
||||
|
||||
#define STATUS_EFFECT_REPLACE 2 //if it allows only one, but new instances replace
|
||||
|
||||
#define BASIC_STATUS_EFFECT /datum/status_effect //Has no effect.
|
||||
|
||||
///////////
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
//Timing subsystem
|
||||
//Don't run if there is an identical unique timer active
|
||||
#define TIMER_UNIQUE 0x1
|
||||
//For unique timers: Replace the old timer rather then not start this one
|
||||
#define TIMER_OVERRIDE 0x2
|
||||
//Timing should be based on how timing progresses on clients, not the sever.
|
||||
// tracking this is more expensive,
|
||||
// should only be used in conjuction with things that have to progress client side, such as animate() or sound()
|
||||
#define TIMER_CLIENT_TIME 0x4
|
||||
//Timer can be stopped using deltimer()
|
||||
#define TIMER_STOPPABLE 0x8
|
||||
//To be used with TIMER_UNIQUE
|
||||
//prevents distinguishing identical timers with the wait variable
|
||||
#define TIMER_NO_HASH_WAIT 0x10
|
||||
|
||||
#define TIMER_NO_INVOKE_WARNING 600 //number of byond ticks that are allowed to pass before the timer subsystem thinks it hung on something
|
||||
|
||||
//For servers that can't do with any additional lag, set this to none in flightpacks.dm in subsystem/processing.
|
||||
#define FLIGHTSUIT_PROCESSING_NONE 0
|
||||
#define FLIGHTSUIT_PROCESSING_FULL 1
|
||||
@@ -3,5 +3,5 @@
|
||||
#define TICK_LIMIT_MC 70
|
||||
#define TICK_LIMIT_MC_INIT_DEFAULT 98
|
||||
|
||||
#define TICK_CHECK ( world.tick_usage > CURRENT_TICKLIMIT )
|
||||
#define CHECK_TICK if (world.tick_usage > CURRENT_TICKLIMIT) stoplag()
|
||||
#define TICK_CHECK ( world.tick_usage > GLOB.CURRENT_TICKLIMIT )
|
||||
#define CHECK_TICK if TICK_CHECK stoplag()
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
// Overhauled vore system
|
||||
#define DM_HOLD "Hold"
|
||||
#define DM_DIGEST "Digest"
|
||||
#define DM_HEAL "Heal"
|
||||
#define DM_DIGESTF "Fast Digest"
|
||||
|
||||
#define VORE_STRUGGLE_EMOTE_CHANCE 40
|
||||
|
||||
// Stance for hostile mobs to be in while devouring someone.
|
||||
#define HOSTILE_STANCE_EATING 99
|
||||
|
||||
/*
|
||||
var/global/list/player_sizes_list = list("Macro" = SIZESCALE_HUGE, "Big" = SIZESCALE_BIG, "Normal" = SIZESCALE_NORMAL, "Small" = SIZESCALE_SMALL, "Tiny" = SIZESCALE_TINY)
|
||||
// moved to sound.dm
|
||||
|
||||
var/global/list/digestion_sounds = list(
|
||||
'sound/vore/digest1.ogg',
|
||||
'sound/vore/digest2.ogg',
|
||||
'sound/vore/digest3.ogg',
|
||||
'sound/vore/digest4.ogg',
|
||||
'sound/vore/digest5.ogg',
|
||||
'sound/vore/digest6.ogg',
|
||||
'sound/vore/digest7.ogg',
|
||||
'sound/vore/digest8.ogg',
|
||||
'sound/vore/digest9.ogg',
|
||||
'sound/vore/digest10.ogg',
|
||||
'sound/vore/digest11.ogg',
|
||||
'sound/vore/digest12.ogg')
|
||||
|
||||
var/global/list/death_sounds = list(
|
||||
'sound/vore/death1.ogg',
|
||||
'sound/vore/death2.ogg',
|
||||
'sound/vore/death3.ogg',
|
||||
'sound/vore/death4.ogg',
|
||||
'sound/vore/death5.ogg',
|
||||
'sound/vore/death6.ogg',
|
||||
'sound/vore/death7.ogg',
|
||||
'sound/vore/death8.ogg',
|
||||
'sound/vore/death9.ogg',
|
||||
'sound/vore/death10.ogg') */
|
||||
|
||||
var/global/list/vore_sounds = list(
|
||||
"Gulp" = 'sound/vore/gulp.ogg',
|
||||
"Insert" = 'sound/vore/insert.ogg',
|
||||
"Insertion1" = 'sound/vore/insertion1.ogg',
|
||||
"Insertion2" = 'sound/vore/insertion2.ogg',
|
||||
"Insertion3" = 'sound/vore/insertion3.ogg',
|
||||
"Schlorp" = 'sound/vore/schlorp.ogg',
|
||||
"Squish1" = 'sound/vore/squish1.ogg',
|
||||
"Squish2" = 'sound/vore/squish2.ogg',
|
||||
"Squish3" = 'sound/vore/squish3.ogg',
|
||||
"Squish4" = 'sound/vore/squish4.ogg')
|
||||
/* also moved to sound.dmi
|
||||
var/global/list/struggle_sounds = list(
|
||||
"Squish1" = 'sound/vore/squish1.ogg',
|
||||
"Squish2" = 'sound/vore/squish2.ogg',
|
||||
"Squish3" = 'sound/vore/squish3.ogg',
|
||||
"Squish4" = 'sound/vore/squish4.ogg')
|
||||
|
||||
/proc/log_debug(text)
|
||||
if (config.log_debug)
|
||||
diary << "\[[time_stamp()]]DEBUG: [text][log_end]"
|
||||
|
||||
for(var/client/C in admins)
|
||||
if(C.prefs.toggles & CHAT_DEBUGLOGS)
|
||||
C << "DEBUG: [text]" */
|
||||
@@ -65,7 +65,10 @@
|
||||
if(!L || !L.len || !A)
|
||||
|
||||
return 0
|
||||
return L[A.type]
|
||||
if(ispath(A))
|
||||
. = L[A]
|
||||
else
|
||||
. = L[A.type]
|
||||
|
||||
//Checks for a string in a list
|
||||
/proc/is_string_in_list(string, list/L)
|
||||
@@ -278,7 +281,7 @@
|
||||
|
||||
//Specifically for record datums in a list.
|
||||
/proc/sortRecord(list/L, field = "name", order = 1)
|
||||
cmp_field = field
|
||||
GLOB.cmp_field = field
|
||||
return sortTim(L, order >= 0 ? /proc/cmp_records_asc : /proc/cmp_records_dsc)
|
||||
|
||||
//any value in a list
|
||||
|
||||
+19
-19
@@ -18,15 +18,15 @@
|
||||
#endif
|
||||
|
||||
/proc/log_admin(text)
|
||||
admin_log.Add(text)
|
||||
GLOB.admin_log.Add(text)
|
||||
if (config.log_admin)
|
||||
diary << "\[[time_stamp()]]ADMIN: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]ADMIN: [text]"
|
||||
|
||||
//Items using this proc are stripped from public logs - use with caution
|
||||
/proc/log_admin_private(text)
|
||||
admin_log.Add(text)
|
||||
GLOB.admin_log.Add(text)
|
||||
if (config.log_admin)
|
||||
diary << "\[[time_stamp()]]ADMINPRIVATE: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]ADMINPRIVATE: [text]"
|
||||
|
||||
/proc/log_adminsay(text)
|
||||
if (config.log_adminchat)
|
||||
@@ -38,65 +38,65 @@
|
||||
|
||||
/proc/log_game(text)
|
||||
if (config.log_game)
|
||||
diary << "\[[time_stamp()]]GAME: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]GAME: [text]"
|
||||
|
||||
/proc/log_vote(text)
|
||||
if (config.log_vote)
|
||||
diary << "\[[time_stamp()]]VOTE: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]VOTE: [text]"
|
||||
|
||||
/proc/log_access(text)
|
||||
if (config.log_access)
|
||||
diary << "\[[time_stamp()]]ACCESS: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]ACCESS: [text]"
|
||||
|
||||
/proc/log_say(text)
|
||||
if (config.log_say)
|
||||
diary << "\[[time_stamp()]]SAY: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]SAY: [text]"
|
||||
|
||||
/proc/log_prayer(text)
|
||||
if (config.log_prayer)
|
||||
diary << "\[[time_stamp()]]PRAY: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]PRAY: [text]"
|
||||
|
||||
/proc/log_law(text)
|
||||
if (config.log_law)
|
||||
diary << "\[[time_stamp()]]LAW: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]LAW: [text]"
|
||||
|
||||
/proc/log_ooc(text)
|
||||
if (config.log_ooc)
|
||||
diary << "\[[time_stamp()]]OOC: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]OOC: [text]"
|
||||
|
||||
/proc/log_whisper(text)
|
||||
if (config.log_whisper)
|
||||
diary << "\[[time_stamp()]]WHISPER: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]WHISPER: [text]"
|
||||
|
||||
/proc/log_emote(text)
|
||||
if (config.log_emote)
|
||||
diary << "\[[time_stamp()]]EMOTE: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]EMOTE: [text]"
|
||||
|
||||
/proc/log_attack(text)
|
||||
if (config.log_attack)
|
||||
diaryofmeanpeople << "\[[time_stamp()]]ATTACK: [text]"
|
||||
GLOB.diaryofmeanpeople << "\[[time_stamp()]]ATTACK: [text]"
|
||||
|
||||
/proc/log_pda(text)
|
||||
if (config.log_pda)
|
||||
diary << "\[[time_stamp()]]PDA: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]PDA: [text]"
|
||||
|
||||
/proc/log_comment(text)
|
||||
if (config.log_pda)
|
||||
//reusing the PDA option because I really don't think news comments are worth a config option
|
||||
diary << "\[[time_stamp()]]COMMENT: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]COMMENT: [text]"
|
||||
|
||||
/proc/log_chat(text)
|
||||
if (config.log_pda)
|
||||
diary << "\[[time_stamp()]]CHAT: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]CHAT: [text]"
|
||||
|
||||
/proc/log_sql(text)
|
||||
if(config.sql_enabled)
|
||||
diary << "\[[time_stamp()]]SQL: [text]"
|
||||
GLOB.diary << "\[[time_stamp()]]SQL: [text]"
|
||||
|
||||
//This replaces world.log so it displays both in DD and the file
|
||||
/proc/log_world(text)
|
||||
if(config && config.log_runtimes)
|
||||
world.log = runtime_diary
|
||||
world.log = GLOB.runtime_diary
|
||||
world.log << text
|
||||
world.log = null
|
||||
world.log << text
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
#define pick_list_replacements(FILE, KEY) (strings_replacement(FILE, KEY))
|
||||
#define json_load(FILE) (json_decode(file2text(FILE)))
|
||||
|
||||
var/global/list/string_cache
|
||||
var/global/string_filename_current_key
|
||||
GLOBAL_LIST(string_cache)
|
||||
GLOBAL_VAR(string_filename_current_key)
|
||||
|
||||
|
||||
/proc/strings_replacement(filename, key)
|
||||
load_strings_file(filename)
|
||||
|
||||
if((filename in string_cache) && (key in string_cache[filename]))
|
||||
var/response = pick(string_cache[filename][key])
|
||||
if((filename in GLOB.string_cache) && (key in GLOB.string_cache[filename]))
|
||||
var/response = pick(GLOB.string_cache[filename][key])
|
||||
var/regex/r = regex("@pick\\((\\D+?)\\)", "g")
|
||||
response = r.Replace(response, /proc/strings_subkey_lookup)
|
||||
return response
|
||||
@@ -19,23 +19,23 @@ var/global/string_filename_current_key
|
||||
|
||||
/proc/strings(filename as text, key as text)
|
||||
load_strings_file(filename)
|
||||
if((filename in string_cache) && (key in string_cache[filename]))
|
||||
return string_cache[filename][key]
|
||||
if((filename in GLOB.string_cache) && (key in GLOB.string_cache[filename]))
|
||||
return GLOB.string_cache[filename][key]
|
||||
else
|
||||
CRASH("strings list not found: strings/[filename], index=[key]")
|
||||
|
||||
/proc/strings_subkey_lookup(match, group1)
|
||||
return pick_list(string_filename_current_key, group1)
|
||||
return pick_list(GLOB.string_filename_current_key, group1)
|
||||
|
||||
/proc/load_strings_file(filename)
|
||||
string_filename_current_key = filename
|
||||
if(filename in string_cache)
|
||||
GLOB.string_filename_current_key = filename
|
||||
if(filename in GLOB.string_cache)
|
||||
return //no work to do
|
||||
|
||||
if(!string_cache)
|
||||
string_cache = new
|
||||
if(!GLOB.string_cache)
|
||||
GLOB.string_cache = new
|
||||
|
||||
if(fexists("strings/[filename]"))
|
||||
string_cache[filename] = json_load("strings/[filename]")
|
||||
GLOB.string_cache[filename] = json_load("strings/[filename]")
|
||||
else
|
||||
CRASH("file not found: strings/[filename]")
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
|
||||
/client/proc/join_date_check(y,m,d)
|
||||
var/DBQuery/query_datediff = dbcon.NewQuery("SELECT DATEDIFF(Now(),'[y]-[m]-[d]')")
|
||||
var/DBQuery/query_datediff = GLOB.dbcon.NewQuery("SELECT DATEDIFF(Now(),'[y]-[m]-[d]')")
|
||||
|
||||
if(!query_datediff.Execute())
|
||||
return FALSE
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
/proc/cmp_name_dsc(atom/a, atom/b)
|
||||
return sorttext(a.name, b.name)
|
||||
|
||||
var/cmp_field = "name"
|
||||
GLOBAL_VAR_INIT(cmp_field, "name")
|
||||
/proc/cmp_records_asc(datum/data/record/a, datum/data/record/b)
|
||||
return sorttext(b.fields[cmp_field], a.fields[cmp_field])
|
||||
return sorttext(b.fields[GLOB.cmp_field], a.fields[GLOB.cmp_field])
|
||||
|
||||
/proc/cmp_records_dsc(datum/data/record/a, datum/data/record/b)
|
||||
return sorttext(a.fields[cmp_field], b.fields[cmp_field])
|
||||
return sorttext(a.fields[GLOB.cmp_field], b.fields[GLOB.cmp_field])
|
||||
|
||||
/proc/cmp_ckey_asc(client/a, client/b)
|
||||
return sorttext(b.ckey, a.ckey)
|
||||
|
||||
@@ -51,11 +51,11 @@
|
||||
|
||||
PLEASE USE RESPONSIBLY, Some log files can reach sizes of 4MB! */
|
||||
/client/proc/file_spam_check()
|
||||
var/time_to_wait = fileaccess_timer - world.time
|
||||
var/time_to_wait = GLOB.fileaccess_timer - world.time
|
||||
if(time_to_wait > 0)
|
||||
to_chat(src, "<font color='red'>Error: file_spam_check(): Spam. Please wait [round(time_to_wait/10)] seconds.</font>")
|
||||
return 1
|
||||
fileaccess_timer = world.time + FTPDELAY
|
||||
GLOB.fileaccess_timer = world.time + FTPDELAY
|
||||
return 0
|
||||
#undef FTPDELAY
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#define HAS_SECONDARY_FLAG(atom, sflag) (atom.secondary_flags ? atom.secondary_flags[sflag] : FALSE)
|
||||
#define SET_SECONDARY_FLAG(atom, sflag) if(!atom.secondary_flags) { atom.secondary_flags = list(); } atom.secondary_flags[sflag] = TRUE;
|
||||
#define CLEAR_SECONDARY_FLAG(atom, sflag) if(atom.secondary_flags) atom.secondary_flags[sflag] = null
|
||||
#define TOGGLE_SECONDARY_FLAG(atom, sflag) if(HAS_SECONDARY_FLAG(atom, sflag)) { CLEAR_SECONDARY_FLAG(atom, sflag); } else {SET_SECONDARY_FLAG(atom, sflag) ; }
|
||||
|
||||
+17
-17
@@ -76,7 +76,7 @@
|
||||
|
||||
/proc/alone_in_area(area/the_area, mob/must_be_alone, check_type = /mob/living/carbon)
|
||||
var/area/our_area = get_area(the_area)
|
||||
for(var/C in living_mob_list)
|
||||
for(var/C in GLOB.living_mob_list)
|
||||
if(!istype(C, check_type))
|
||||
continue
|
||||
if(C == must_be_alone)
|
||||
@@ -301,12 +301,12 @@
|
||||
|
||||
/proc/try_move_adjacent(atom/movable/AM)
|
||||
var/turf/T = get_turf(AM)
|
||||
for(var/direction in cardinal)
|
||||
for(var/direction in GLOB.cardinal)
|
||||
if(AM.Move(get_step(T, direction)))
|
||||
break
|
||||
|
||||
/proc/get_mob_by_key(key)
|
||||
for(var/mob/M in mob_list)
|
||||
for(var/mob/M in GLOB.mob_list)
|
||||
if(M.ckey == lowertext(key))
|
||||
return M
|
||||
return null
|
||||
@@ -317,7 +317,7 @@
|
||||
var/list/candidates = list()
|
||||
// Keep looping until we find a non-afk candidate within the time bracket (we limit the bracket to 10 minutes (6000))
|
||||
while(!candidates.len && afk_bracket < 6000)
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
for(var/mob/dead/observer/G in GLOB.player_list)
|
||||
if(G.client != null)
|
||||
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
|
||||
if(!G.client.is_afk(afk_bracket) && (be_special_type in G.client.prefs.be_special))
|
||||
@@ -358,8 +358,8 @@
|
||||
/proc/get_active_player_count(var/alive_check = 0, var/afk_check = 0, var/human_check = 0)
|
||||
// Get active players who are playing in the round
|
||||
var/active_players = 0
|
||||
for(var/i = 1; i <= player_list.len; i++)
|
||||
var/mob/M = player_list[i]
|
||||
for(var/i = 1; i <= GLOB.player_list.len; i++)
|
||||
var/mob/M = GLOB.player_list[i]
|
||||
if(M && M.client)
|
||||
if(alive_check && M.stat)
|
||||
continue
|
||||
@@ -431,10 +431,10 @@
|
||||
if(2)
|
||||
to_chat(G, "<span class='danger'>Choice registered: No.</span>")
|
||||
if(3)
|
||||
var/list/L = poll_ignore[ignore_category]
|
||||
var/list/L = GLOB.poll_ignore[ignore_category]
|
||||
if(!L)
|
||||
poll_ignore[ignore_category] = list()
|
||||
poll_ignore[ignore_category] += G.ckey
|
||||
GLOB.poll_ignore[ignore_category] = list()
|
||||
GLOB.poll_ignore[ignore_category] += G.ckey
|
||||
to_chat(G, "<span class='danger'>Choice registered: Never for this round.</span>")
|
||||
|
||||
/proc/pollCandidates(var/Question, var/jobbanType, var/datum/game_mode/gametypeCheck, var/be_special_flag = 0, var/poll_time = 300, var/ignore_category = null, flashwindow = TRUE)
|
||||
@@ -443,8 +443,8 @@
|
||||
if (!Question)
|
||||
Question = "Would you like to be a special role?"
|
||||
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
if(!G.key || !G.client || (ignore_category && poll_ignore[ignore_category] && G.ckey in poll_ignore[ignore_category]))
|
||||
for(var/mob/dead/observer/G in GLOB.player_list)
|
||||
if(!G.key || !G.client || (ignore_category && GLOB.poll_ignore[ignore_category] && G.ckey in GLOB.poll_ignore[ignore_category]))
|
||||
continue
|
||||
if(be_special_flag)
|
||||
if(!(G.client.prefs) || !(be_special_flag in G.client.prefs.be_special))
|
||||
@@ -490,7 +490,7 @@
|
||||
return
|
||||
|
||||
//First we spawn a dude.
|
||||
var/mob/living/carbon/human/new_character = new(pick(latejoin))//The mob being spawned.
|
||||
var/mob/living/carbon/human/new_character = new(pick(GLOB.latejoin))//The mob being spawned.
|
||||
|
||||
G_found.client.prefs.copy_to(new_character)
|
||||
new_character.dna.update_dna_identity()
|
||||
@@ -499,7 +499,7 @@
|
||||
return new_character
|
||||
|
||||
/proc/send_to_playing_players(thing) //sends a whatever to all playing players; use instead of to_chat(world, where needed)
|
||||
for(var/M in player_list)
|
||||
for(var/M in GLOB.player_list)
|
||||
if(M && !isnewplayer(M))
|
||||
to_chat(M, thing)
|
||||
|
||||
@@ -513,19 +513,19 @@
|
||||
winset(C, "mainwindow", "flash=5")
|
||||
|
||||
/proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank)
|
||||
if(ticker.current_state != GAME_STATE_PLAYING || !character)
|
||||
if(SSticker.current_state != GAME_STATE_PLAYING || !character)
|
||||
return
|
||||
var/area/A = get_area(character)
|
||||
var/message = "<span class='game deadsay'><span class='name'>\
|
||||
[character.real_name]</span> ([rank]) has arrived at the station at \
|
||||
<span class='name'>[A.name]</span>.</span>"
|
||||
deadchat_broadcast(message, follow_target = character, message_type=DEADCHAT_ARRIVALRATTLE)
|
||||
if((!announcement_systems.len) || (!character.mind))
|
||||
if((!GLOB.announcement_systems.len) || (!character.mind))
|
||||
return
|
||||
if((character.mind.assigned_role == "Cyborg") || (character.mind.assigned_role == character.mind.special_role))
|
||||
return
|
||||
|
||||
var/obj/machinery/announcement_system/announcer = pick(announcement_systems)
|
||||
var/obj/machinery/announcement_system/announcer = pick(GLOB.announcement_systems)
|
||||
announcer.announce("ARRIVAL", character.real_name, rank, list()) //make the list empty to make it announce it in common
|
||||
|
||||
/proc/GetRedPart(const/hexa)
|
||||
@@ -535,4 +535,4 @@
|
||||
return hex2num(copytext(hexa, 4, 6))
|
||||
|
||||
/proc/GetBluePart(const/hexa)
|
||||
return hex2num(copytext(hexa, 6, 8))
|
||||
return hex2num(copytext(hexa, 6, 8))
|
||||
|
||||
@@ -4,86 +4,79 @@
|
||||
|
||||
/proc/make_datum_references_lists()
|
||||
//hair
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/hair, hair_styles_list, hair_styles_male_list, hair_styles_female_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/hair, GLOB.hair_styles_list, GLOB.hair_styles_male_list, GLOB.hair_styles_female_list)
|
||||
//facial hair
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/facial_hair, facial_hair_styles_list, facial_hair_styles_male_list, facial_hair_styles_female_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/facial_hair, GLOB.facial_hair_styles_list, GLOB.facial_hair_styles_male_list, GLOB.facial_hair_styles_female_list)
|
||||
//underwear
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, underwear_list, underwear_m, underwear_f)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, GLOB.underwear_list, GLOB.underwear_m, GLOB.underwear_f)
|
||||
//undershirt
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, undershirt_list, undershirt_m, undershirt_f)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, GLOB.undershirt_list, GLOB.undershirt_m, GLOB.undershirt_f)
|
||||
//socks
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, socks_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, GLOB.socks_list)
|
||||
//lizard bodyparts (blizzard intensifies)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, body_markings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, tails_list_lizard)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/lizard, animated_tails_list_lizard)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, tails_list_human)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/human, animated_tails_list_human)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts, snouts_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/horns, horns_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, ears_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, wings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings_open, wings_open_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/frills, frills_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/spines, spines_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/spines_animated, animated_spines_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, legs_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, r_wings_list,roundstart = TRUE)
|
||||
|
||||
//human mutant bodyparts
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, tails_list_human)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/human, animated_tails_list_human)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, ears_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, wings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings_open, wings_open_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.body_markings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, GLOB.tails_list_lizard)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/lizard, GLOB.animated_tails_list_lizard)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, GLOB.tails_list_human)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/human, GLOB.animated_tails_list_human)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts, GLOB.snouts_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/horns,GLOB.horns_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, GLOB.ears_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings_open, GLOB.wings_open_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/frills, GLOB.frills_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/spines, GLOB.spines_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/spines_animated, GLOB.animated_spines_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.r_wings_list,roundstart = TRUE)
|
||||
|
||||
//citadel code
|
||||
//mammal bodyparts (fucking furries)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, mam_body_markings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, mam_tails_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_ears, mam_ears_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails_animated, mam_tails_animated_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/taur, taur_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, GLOB.mam_body_markings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, GLOB.mam_tails_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_ears, GLOB.mam_ears_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails_animated, GLOB.mam_tails_animated_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/taur, GLOB.taur_list)
|
||||
//avian bodyparts (i swear this isn't starbound)
|
||||
// init_sprite_accessory_subtypes(/datum/sprite_accessory/beaks/avian, avian_beaks_list)
|
||||
// init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/avian, avian_tails_list)
|
||||
// init_sprite_accessory_subtypes(/datum/sprite_accessory/avian_wings, avian_wings_list)
|
||||
// init_sprite_accessory_subtypes(/datum/sprite_accessory/avian_open_wings, avian_open_wings_list)
|
||||
// init_sprite_accessory_subtypes(/datum/sprite_accessory/beaks/avian, GLOB.avian_beaks_list)
|
||||
// init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/avian, GLOB.avian_tails_list)
|
||||
// init_sprite_accessory_subtypes(/datum/sprite_accessory/avian_wings, GLOB.avian_wings_list)
|
||||
// init_sprite_accessory_subtypes(/datum/sprite_accessory/avian_open_wings, GLOB.avian_open_wings_list)
|
||||
//xeno parts (hiss?)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_head, xeno_head_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_tail, xeno_tail_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_dorsal, xeno_dorsal_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_head, GLOB.xeno_head_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_tail, GLOB.xeno_tail_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_dorsal, GLOB.xeno_dorsal_list)
|
||||
//genitals
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/penis, cock_shapes_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, breasts_size_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/penis, GLOB.cock_shapes_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, GLOB.breasts_size_list)
|
||||
|
||||
//Species
|
||||
for(var/spath in subtypesof(/datum/species))
|
||||
var/datum/species/S = new spath()
|
||||
if(S.roundstart)
|
||||
roundstart_species[S.id] = S.type
|
||||
species_list[S.id] = S.type
|
||||
GLOB.roundstart_species[S.id] = S.type
|
||||
GLOB.species_list[S.id] = S.type
|
||||
|
||||
//Surgeries
|
||||
for(var/path in subtypesof(/datum/surgery))
|
||||
surgeries_list += new path()
|
||||
GLOB.surgeries_list += new path()
|
||||
|
||||
//Materials
|
||||
for(var/path in subtypesof(/datum/material))
|
||||
var/datum/material/D = new path()
|
||||
materials_list[D.id] = D
|
||||
GLOB.materials_list[D.id] = D
|
||||
|
||||
//Techs
|
||||
for(var/path in subtypesof(/datum/tech))
|
||||
var/datum/tech/D = new path()
|
||||
tech_list[D.id] = D
|
||||
GLOB.tech_list[D.id] = D
|
||||
|
||||
//Emotes
|
||||
for(var/path in subtypesof(/datum/emote))
|
||||
var/datum/emote/E = new path()
|
||||
emote_list[E.key] = E
|
||||
E.emote_list[E.key] = E
|
||||
|
||||
init_subtypes(/datum/crafting_recipe, crafting_recipes)
|
||||
init_subtypes(/datum/crafting_recipe, GLOB.crafting_recipes)
|
||||
|
||||
/* // Uncomment to debug chemical reaction list.
|
||||
/client/verb/debug_chemical_list()
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
if(AM.can_be_unanchored && !AM.anchored)
|
||||
return 0
|
||||
|
||||
for(var/direction in cardinal)
|
||||
for(var/direction in GLOB.cardinal)
|
||||
AM = find_type_in_direction(A, direction)
|
||||
if(AM == NULLTURF_BORDER)
|
||||
if((A.smooth & SMOOTH_BORDER))
|
||||
@@ -259,7 +259,7 @@
|
||||
A.cut_overlay(A.bottom_left_corner)
|
||||
A.bottom_left_corner = se
|
||||
LAZYADD(New, se)
|
||||
|
||||
|
||||
if(New)
|
||||
A.add_overlay(New)
|
||||
|
||||
|
||||
+11
-12
@@ -15,7 +15,7 @@ CHANGING ICONS
|
||||
Several new procs have been added to the /icon datum to simplify working with icons. To use them,
|
||||
remember you first need to setup an /icon var like so:
|
||||
|
||||
var/icon/my_icon = new('iconfile.dmi')
|
||||
GLOBAL_DATUM_INIT(my_icon, /icon, new('iconfile.dmi'))
|
||||
|
||||
icon/ChangeOpacity(amount = 1)
|
||||
A very common operation in DM is to try to make an icon more or less transparent. Making an icon more
|
||||
@@ -872,18 +872,18 @@ The _flatIcons list is a cache for generated icon files.
|
||||
qdel(atom_icon)
|
||||
return text_image
|
||||
|
||||
var/global/list/friendly_animal_types = list()
|
||||
GLOBAL_LIST_EMPTY(friendly_animal_types)
|
||||
|
||||
// Pick a random animal instead of the icon, and use that instead
|
||||
/proc/getRandomAnimalImage(atom/A)
|
||||
if(!friendly_animal_types.len)
|
||||
if(!GLOB.friendly_animal_types.len)
|
||||
for(var/T in typesof(/mob/living/simple_animal))
|
||||
var/mob/living/simple_animal/SA = T
|
||||
if(initial(SA.gold_core_spawnable) == 2)
|
||||
friendly_animal_types += SA
|
||||
GLOB.friendly_animal_types += SA
|
||||
|
||||
|
||||
var/mob/living/simple_animal/SA = pick(friendly_animal_types)
|
||||
var/mob/living/simple_animal/SA = pick(GLOB.friendly_animal_types)
|
||||
|
||||
var/icon = initial(SA.icon)
|
||||
var/icon_state = initial(SA.icon_state)
|
||||
@@ -943,16 +943,16 @@ var/global/list/friendly_animal_types = list()
|
||||
return J
|
||||
return 0
|
||||
|
||||
var/global/list/humanoid_icon_cache = list()
|
||||
//For creating consistent icons for human looking simple animals
|
||||
/proc/get_flat_human_icon(var/icon_id,var/outfit,var/datum/preferences/prefs)
|
||||
/proc/get_flat_human_icon(icon_id, datum/job/J, datum/preferences/prefs)
|
||||
var/static/list/humanoid_icon_cache = list()
|
||||
if(!icon_id || !humanoid_icon_cache[icon_id])
|
||||
var/mob/living/carbon/human/dummy/body = new()
|
||||
|
||||
if(prefs)
|
||||
prefs.copy_to(body)
|
||||
if(outfit)
|
||||
body.equipOutfit(outfit, TRUE)
|
||||
if(J)
|
||||
J.equip(body, TRUE, FALSE)
|
||||
|
||||
SSoverlays.Flush()
|
||||
|
||||
@@ -988,13 +988,12 @@ var/global/list/humanoid_icon_cache = list()
|
||||
/image/proc/setDir(newdir)
|
||||
dir = newdir
|
||||
|
||||
// Used to make the frozen item visuals for Freon.
|
||||
var/list/freeze_item_icons = list()
|
||||
|
||||
/atom/proc/freeze_icon_index()
|
||||
return "\ref[initial(icon)]-[initial(icon_state)]"
|
||||
|
||||
/obj/proc/make_frozen_visual()
|
||||
// Used to make the frozen item visuals for Freon.
|
||||
var/static/list/freeze_item_icons = list()
|
||||
if(!HAS_SECONDARY_FLAG(src, FROZEN) && (initial(icon) && initial(icon_state)))
|
||||
var/index = freeze_icon_index()
|
||||
var/icon/IC
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// Credits to Nickr5 for the useful procs I've taken from his library resource.
|
||||
|
||||
var/const/E = 2.71828183
|
||||
var/const/Sqrt2 = 1.41421356
|
||||
GLOBAL_VAR_INIT(E, 2.71828183)
|
||||
GLOBAL_VAR_INIT(Sqrt2, 1.41421356)
|
||||
|
||||
// List of square roots for the numbers 1-100.
|
||||
var/list/sqrtTable = list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5,
|
||||
GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
|
||||
8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10)
|
||||
8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10))
|
||||
|
||||
/proc/sign(x)
|
||||
return x!=0?x/abs(x):0
|
||||
@@ -150,9 +150,9 @@ var/list/sqrtTable = list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
|
||||
//68% chance that the number is within 1stddev
|
||||
//95% chance that the number is within 2stddev
|
||||
//98% chance that the number is within 3stddev...etc
|
||||
var/gaussian_next
|
||||
#define ACCURACY 10000
|
||||
/proc/gaussian(mean, stddev)
|
||||
var/static/gaussian_next
|
||||
var/R1;var/R2;var/working
|
||||
if(gaussian_next != null)
|
||||
R1 = gaussian_next
|
||||
|
||||
+100
-75
@@ -21,58 +21,59 @@
|
||||
return "000"
|
||||
|
||||
/proc/random_underwear(gender)
|
||||
if(!underwear_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, underwear_list, underwear_m, underwear_f)
|
||||
if(!GLOB.underwear_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, GLOB.underwear_list, GLOB.underwear_m, GLOB.underwear_f)
|
||||
switch(gender)
|
||||
if(MALE)
|
||||
return pick(underwear_m)
|
||||
return pick(GLOB.underwear_m)
|
||||
if(FEMALE)
|
||||
return pick(underwear_f)
|
||||
return pick(GLOB.underwear_f)
|
||||
else
|
||||
return pick(underwear_list)
|
||||
return pick(GLOB.underwear_list)
|
||||
|
||||
/proc/random_undershirt(gender)
|
||||
if(!undershirt_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, undershirt_list, undershirt_m, undershirt_f)
|
||||
if(!GLOB.undershirt_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, GLOB.undershirt_list, GLOB.undershirt_m, GLOB.undershirt_f)
|
||||
switch(gender)
|
||||
if(MALE)
|
||||
return pick(undershirt_m)
|
||||
return pick(GLOB.undershirt_m)
|
||||
if(FEMALE)
|
||||
return pick(undershirt_f)
|
||||
return pick(GLOB.undershirt_f)
|
||||
else
|
||||
return pick(undershirt_list)
|
||||
return pick(GLOB.undershirt_list)
|
||||
|
||||
/proc/random_socks()
|
||||
if(!socks_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, socks_list)
|
||||
return pick(socks_list)
|
||||
if(!GLOB.socks_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, GLOB.socks_list)
|
||||
return pick(GLOB.socks_list)
|
||||
|
||||
/proc/random_features(penis=0,balls=0,vagina=0,womb=0,breasts=0)
|
||||
if(!tails_list_human.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, tails_list_human)
|
||||
if(!tails_list_lizard.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, tails_list_lizard)
|
||||
if(!snouts_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts, snouts_list)
|
||||
if(!horns_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/horns, horns_list)
|
||||
if(!ears_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, horns_list)
|
||||
if(!frills_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/frills, frills_list)
|
||||
if(!spines_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/spines, spines_list)
|
||||
if(!legs_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, legs_list)
|
||||
if(!body_markings_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, body_markings_list)
|
||||
if(!wings_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, wings_list)
|
||||
if(!cock_shapes_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/penis, cock_shapes_list)
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(H.gender == MALE)
|
||||
/proc/random_features()
|
||||
if(!GLOB.tails_list_human.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, GLOB.tails_list_human)
|
||||
if(!GLOB.tails_list_lizard.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, GLOB.tails_list_lizard)
|
||||
if(!GLOB.snouts_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts, GLOB.snouts_list)
|
||||
if(!GLOB.horns_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/horns, GLOB.horns_list)
|
||||
if(!GLOB.ears_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, GLOB.horns_list)
|
||||
if(!GLOB.frills_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/frills, GLOB.frills_list)
|
||||
if(!GLOB.spines_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/spines, GLOB.spines_list)
|
||||
if(!GLOB.legs_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list)
|
||||
if(!GLOB.body_markings_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.body_markings_list)
|
||||
if(!GLOB.wings_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list)
|
||||
|
||||
if(!GLOB.cock_shapes_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/penis, GLOB.cock_shapes_list)
|
||||
// if(ishuman(src))
|
||||
// var/mob/living/carbon/human/H = src
|
||||
/* if(H.gender == MALE) Fuck if I know how to fix this.
|
||||
penis = 1
|
||||
balls = 1
|
||||
vagina = 0
|
||||
@@ -83,21 +84,21 @@
|
||||
balls = 0
|
||||
vagina = 1
|
||||
womb = 1
|
||||
breasts = 1
|
||||
breasts = 1 */
|
||||
|
||||
return(list(
|
||||
"mcolor" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"mcolor2" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"mcolor3" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"tail_lizard" = pick(tails_list_lizard),
|
||||
"tail_lizard" = pick(GLOB.tails_list_lizard),
|
||||
"tail_human" = "None",
|
||||
"wings" = "None",
|
||||
"snout" = pick(snouts_list),
|
||||
"horns" = pick(horns_list),
|
||||
"snout" = pick(GLOB.snouts_list),
|
||||
"horns" = pick(GLOB.horns_list),
|
||||
"ears" = "None",
|
||||
"frills" = pick(frills_list),
|
||||
"spines" = pick(spines_list),
|
||||
"body_markings" = pick(body_markings_list),
|
||||
"frills" = pick(GLOB.frills_list),
|
||||
"spines" = pick(GLOB.spines_list),
|
||||
"body_markings" = pick(GLOB.body_markings_list),
|
||||
"legs" = "Normal Legs",
|
||||
"taur" = "None",
|
||||
"mam_body_markings" = "None",
|
||||
@@ -137,7 +138,7 @@
|
||||
"eggsack_egg_size" = EGG_GIRTH_DEF,
|
||||
"has_breasts" = FALSE,
|
||||
"breasts_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"breasts_size" = pick(breasts_size_list),
|
||||
"breasts_size" = pick(GLOB.breasts_size_list),
|
||||
"breasts_fluid" = "milk",
|
||||
"has_vag" = FALSE,
|
||||
"vag_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
@@ -153,27 +154,27 @@
|
||||
/proc/random_hair_style(gender)
|
||||
switch(gender)
|
||||
if(MALE)
|
||||
return pick(hair_styles_male_list)
|
||||
return pick(GLOB.hair_styles_male_list)
|
||||
if(FEMALE)
|
||||
return pick(hair_styles_female_list)
|
||||
return pick(GLOB.hair_styles_female_list)
|
||||
else
|
||||
return pick(hair_styles_list)
|
||||
return pick(GLOB.hair_styles_list)
|
||||
|
||||
/proc/random_facial_hair_style(gender)
|
||||
switch(gender)
|
||||
if(MALE)
|
||||
return pick(facial_hair_styles_male_list)
|
||||
return pick(GLOB.facial_hair_styles_male_list)
|
||||
if(FEMALE)
|
||||
return pick(facial_hair_styles_female_list)
|
||||
return pick(GLOB.facial_hair_styles_female_list)
|
||||
else
|
||||
return pick(facial_hair_styles_list)
|
||||
return pick(GLOB.facial_hair_styles_list)
|
||||
|
||||
/proc/random_unique_name(gender, attempts_to_find_unique_name=10)
|
||||
for(var/i=1, i<=attempts_to_find_unique_name, i++)
|
||||
if(gender==FEMALE)
|
||||
. = capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
|
||||
. = capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
. = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
|
||||
. = capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names))
|
||||
|
||||
if(i != attempts_to_find_unique_name && !findname(.))
|
||||
break
|
||||
@@ -193,9 +194,9 @@
|
||||
break
|
||||
|
||||
/proc/random_skin_tone()
|
||||
return pick(skin_tones)
|
||||
return pick(GLOB.skin_tones)
|
||||
|
||||
var/list/skin_tones = list(
|
||||
GLOBAL_LIST_INIT(skin_tones, list(
|
||||
"albino",
|
||||
"caucasian1",
|
||||
"caucasian2",
|
||||
@@ -208,10 +209,10 @@ var/list/skin_tones = list(
|
||||
"indian",
|
||||
"african1",
|
||||
"african2"
|
||||
)
|
||||
))
|
||||
|
||||
var/global/list/species_list[0]
|
||||
var/global/list/roundstart_species[0]
|
||||
GLOBAL_LIST_EMPTY(species_list)
|
||||
GLOBAL_LIST_EMPTY(roundstart_species)
|
||||
|
||||
/proc/age2agedescription(age)
|
||||
switch(age)
|
||||
@@ -241,32 +242,56 @@ Proc for attack log creation, because really why not
|
||||
1 argument is the actor
|
||||
2 argument is the target of action
|
||||
3 is the description of action(like punched, throwed, or any other verb)
|
||||
4 should it make adminlog note or not
|
||||
5 is the tool with which the action was made(usually item) 5 and 6 are very similar(5 have "by " before it, that it) and are separated just to keep things in a bit more in order
|
||||
6 is additional information, anything that needs to be added
|
||||
4 is the tool with which the action was made(usually item) 4 and 5 are very similar(5 have "by " before it, that it) and are separated just to keep things in a bit more in order
|
||||
5 is additional information, anything that needs to be added
|
||||
*/
|
||||
|
||||
/proc/add_logs(mob/user, mob/target, what_done, object=null, addition=null)
|
||||
var/turf/attack_location = get_turf(target)
|
||||
|
||||
var/is_mob_user = user && typecache_mob[user.type]
|
||||
var/is_mob_target = target && typecache_mob[target.type]
|
||||
var/is_mob_user = user && GLOB.typecache_mob[user.type]
|
||||
var/is_mob_target = target && GLOB.typecache_mob[target.type]
|
||||
|
||||
var/mob/living/living_target
|
||||
|
||||
|
||||
if(target && isliving(target))
|
||||
living_target = target
|
||||
|
||||
var/hp =" "
|
||||
if(living_target)
|
||||
hp = "(NEWHP: [living_target.health])"
|
||||
|
||||
var/starget = "NON-EXISTENT SUBJECT"
|
||||
if(target)
|
||||
if(is_mob_target && target.ckey)
|
||||
starget = "[target.name]([target.ckey])"
|
||||
else
|
||||
starget = "[target.name]"
|
||||
|
||||
var/ssource = "NON-EXISTENT USER" //How!?
|
||||
if(user)
|
||||
if(is_mob_user && user.ckey)
|
||||
ssource = "[user.name]([user.ckey])"
|
||||
else
|
||||
ssource = "[user.name]"
|
||||
|
||||
var/sobject = ""
|
||||
if(object)
|
||||
sobject = "[object]"
|
||||
|
||||
var/sattackloc = ""
|
||||
if(attack_location)
|
||||
sattackloc = "([attack_location.x],[attack_location.y],[attack_location.z])"
|
||||
|
||||
if(is_mob_user)
|
||||
var/message = "<font color='red'>has [what_done] [target ? "[target.name][(is_mob_target && target.ckey) ? "([target.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition][(living_target) ? " (NEWHP: [living_target.health])" : ""][(attack_location) ? "([attack_location.x],[attack_location.y],[attack_location.z])" : ""]</font>"
|
||||
var/message = "<font color='red'>has [what_done] [starget] with [sobject][addition] [hp] [sattackloc]</font>"
|
||||
user.log_message(message, INDIVIDUAL_ATTACK_LOG)
|
||||
|
||||
if(is_mob_target)
|
||||
var/message = "<font color='orange'>has been [what_done] by [user ? "[user.name][(is_mob_user && user.ckey) ? "([user.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition][(living_target) ? " (NEWHP: [living_target.health])" : ""][(attack_location) ? "([attack_location.x],[attack_location.y],[attack_location.z])" : ""]</font>"
|
||||
var/message = "<font color='orange'>has been [what_done] by [ssource] with [sobject][addition] [hp] [sattackloc]</font>"
|
||||
target.log_message(message, INDIVIDUAL_ATTACK_LOG)
|
||||
|
||||
log_attack("[user ? "[user.name][(is_mob_user && user.ckey) ? "([user.ckey])" : ""]" : "NON-EXISTANT SUBJECT"] [what_done] [target ? "[target.name][(is_mob_target && target.ckey)? "([target.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition][(living_target) ? " (NEWHP: [living_target.health])" : ""][(attack_location) ? "([attack_location.x],[attack_location.y],[attack_location.z])" : ""]")
|
||||
log_attack("[ssource] [what_done] [starget] with [sobject][addition] [hp] [sattackloc]")
|
||||
|
||||
|
||||
/proc/do_mob(mob/user , mob/target, time = 30, uninterruptible = 0, progress = 1, datum/callback/extra_checks = null)
|
||||
@@ -292,7 +317,7 @@ Proc for attack log creation, because really why not
|
||||
stoplag()
|
||||
if (progress)
|
||||
progbar.update(world.time - starttime)
|
||||
if(!user || !target)
|
||||
if(QDELETED(user) || QDELETED(target))
|
||||
. = 0
|
||||
break
|
||||
if(uninterruptible)
|
||||
@@ -344,11 +369,11 @@ Proc for attack log creation, because really why not
|
||||
drifting = 0
|
||||
Uloc = user.loc
|
||||
|
||||
if(!user || user.stat || user.weakened || user.stunned || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke()))
|
||||
if(QDELETED(user) || user.stat || user.weakened || user.stunned || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke()))
|
||||
. = 0
|
||||
break
|
||||
|
||||
if(Tloc && (!target || Tloc != target.loc))
|
||||
if(!QDELETED(Tloc) && (QDELETED(target) || Tloc != target.loc))
|
||||
if((Uloc != Tloc || Tloc != user) && !drifting)
|
||||
. = 0
|
||||
break
|
||||
@@ -394,7 +419,7 @@ Proc for attack log creation, because really why not
|
||||
sleep(1)
|
||||
if(progress)
|
||||
progbar.update(world.time - starttime)
|
||||
if(!user || !targets)
|
||||
if(QDELETED(user) || !targets)
|
||||
. = 0
|
||||
break
|
||||
if(uninterruptible)
|
||||
@@ -405,7 +430,7 @@ Proc for attack log creation, because really why not
|
||||
user_loc = user.loc
|
||||
|
||||
for(var/atom/target in targets)
|
||||
if((!drifting && user_loc != user.loc) || originalloc[target] != target.loc || user.get_active_held_item() != holding || user.incapacitated() || user.lying || (extra_checks && !extra_checks.Invoke()))
|
||||
if((!drifting && user_loc != user.loc) || QDELETED(target) || originalloc[target] != target.loc || user.get_active_held_item() != holding || user.incapacitated() || user.lying || (extra_checks && !extra_checks.Invoke()))
|
||||
. = 0
|
||||
break mainloop
|
||||
if(progbar)
|
||||
@@ -447,7 +472,7 @@ Proc for attack log creation, because really why not
|
||||
step(X, pick(NORTH, SOUTH, EAST, WEST))
|
||||
|
||||
/proc/deadchat_broadcast(message, mob/follow_target=null, turf/turf_target=null, speaker_key=null, message_type=DEADCHAT_REGULAR)
|
||||
for(var/mob/M in player_list)
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
var/datum/preferences/prefs
|
||||
if(M.client && M.client.prefs)
|
||||
prefs = M.client.prefs
|
||||
|
||||
+34
-34
@@ -2,15 +2,15 @@
|
||||
|
||||
/proc/lizard_name(gender)
|
||||
if(gender == MALE)
|
||||
return "[pick(lizard_names_male)]-[pick(lizard_names_male)]"
|
||||
return "[pick(GLOB.lizard_names_male)]-[pick(GLOB.lizard_names_male)]"
|
||||
else
|
||||
return "[pick(lizard_names_female)]-[pick(lizard_names_female)]"
|
||||
return "[pick(GLOB.lizard_names_female)]-[pick(GLOB.lizard_names_female)]"
|
||||
|
||||
/proc/plasmaman_name()
|
||||
return "[pick(plasmaman_names)] \Roman[rand(1,99)]"
|
||||
return "[pick(GLOB.plasmaman_names)] \Roman[rand(1,99)]"
|
||||
|
||||
var/church_name = null
|
||||
/proc/church_name()
|
||||
var/static/church_name
|
||||
if (church_name)
|
||||
return church_name
|
||||
|
||||
@@ -26,24 +26,24 @@ var/church_name = null
|
||||
|
||||
return name
|
||||
|
||||
var/command_name = null
|
||||
GLOBAL_VAR(command_name)
|
||||
/proc/command_name()
|
||||
if (command_name)
|
||||
return command_name
|
||||
if (GLOB.command_name)
|
||||
return GLOB.command_name
|
||||
|
||||
var/name = "Central Command"
|
||||
|
||||
command_name = name
|
||||
GLOB.command_name = name
|
||||
return name
|
||||
|
||||
/proc/change_command_name(name)
|
||||
|
||||
command_name = name
|
||||
GLOB.command_name = name
|
||||
|
||||
return name
|
||||
|
||||
var/religion_name = null
|
||||
/proc/religion_name()
|
||||
var/static/religion_name
|
||||
if (religion_name)
|
||||
return religion_name
|
||||
|
||||
@@ -55,20 +55,20 @@ var/religion_name = null
|
||||
return capitalize(name)
|
||||
|
||||
/proc/station_name()
|
||||
if(station_name)
|
||||
return station_name
|
||||
if(GLOB.station_name)
|
||||
return GLOB.station_name
|
||||
|
||||
if(config && config.station_name)
|
||||
station_name = config.station_name
|
||||
GLOB.station_name = config.station_name
|
||||
else
|
||||
station_name = new_station_name()
|
||||
GLOB.station_name = new_station_name()
|
||||
|
||||
if(config && config.server_name)
|
||||
world.name = "[config.server_name][config.server_name==station_name ? "" : ": [station_name]"]"
|
||||
world.name = "[config.server_name][config.server_name==GLOB.station_name ? "" : ": [GLOB.station_name]"]"
|
||||
else
|
||||
world.name = station_name
|
||||
world.name = GLOB.station_name
|
||||
|
||||
return station_name
|
||||
return GLOB.station_name
|
||||
|
||||
/proc/new_station_name()
|
||||
var/random = rand(1,5)
|
||||
@@ -77,24 +77,24 @@ var/religion_name = null
|
||||
|
||||
//Rare: Pre-Prefix
|
||||
if (prob(10))
|
||||
name = pick(station_prefixes)
|
||||
name = pick(GLOB.station_prefixes)
|
||||
new_station_name = name + " "
|
||||
name = ""
|
||||
|
||||
// Prefix
|
||||
for(var/holiday_name in SSevent.holidays)
|
||||
for(var/holiday_name in SSevents.holidays)
|
||||
if(holiday_name == "Friday the 13th")
|
||||
random = 13
|
||||
var/datum/holiday/holiday = SSevent.holidays[holiday_name]
|
||||
var/datum/holiday/holiday = SSevents.holidays[holiday_name]
|
||||
name = holiday.getStationPrefix()
|
||||
//get normal name
|
||||
if(!name)
|
||||
name = pick(station_names)
|
||||
name = pick(GLOB.station_names)
|
||||
if(name)
|
||||
new_station_name += name + " "
|
||||
|
||||
// Suffix
|
||||
name = pick(station_suffixes)
|
||||
name = pick(GLOB.station_suffixes)
|
||||
new_station_name += name + " "
|
||||
|
||||
// ID Number
|
||||
@@ -102,19 +102,19 @@ var/religion_name = null
|
||||
if(1)
|
||||
new_station_name += "[rand(1, 99)]"
|
||||
if(2)
|
||||
new_station_name += pick(greek_letters)
|
||||
new_station_name += pick(GLOB.greek_letters)
|
||||
if(3)
|
||||
new_station_name += "\Roman[rand(1,99)]"
|
||||
if(4)
|
||||
new_station_name += pick(phonetic_alphabet)
|
||||
new_station_name += pick(GLOB.phonetic_alphabet)
|
||||
if(5)
|
||||
new_station_name += pick(numbers_as_words)
|
||||
new_station_name += pick(GLOB.numbers_as_words)
|
||||
if(13)
|
||||
new_station_name += pick("13","XIII","Thirteen")
|
||||
return new_station_name
|
||||
|
||||
var/syndicate_name = null
|
||||
/proc/syndicate_name()
|
||||
var/static/syndicate_name
|
||||
if (syndicate_name)
|
||||
return syndicate_name
|
||||
|
||||
@@ -145,8 +145,8 @@ var/syndicate_name = null
|
||||
|
||||
|
||||
//Traitors and traitor silicons will get these. Revs will not.
|
||||
var/syndicate_code_phrase//Code phrase for traitors.
|
||||
var/syndicate_code_response//Code response for traitors.
|
||||
GLOBAL_VAR(syndicate_code_phrase) //Code phrase for traitors.
|
||||
GLOBAL_VAR(syndicate_code_response) //Code response for traitors.
|
||||
|
||||
/*
|
||||
Should be expanded.
|
||||
@@ -179,10 +179,10 @@ var/syndicate_code_response//Code response for traitors.
|
||||
var/threats = strings(ION_FILE, "ionthreats")
|
||||
var/foods = strings(ION_FILE, "ionfood")
|
||||
var/drinks = strings(ION_FILE, "iondrinks")
|
||||
var/list/locations = teleportlocs.len ? teleportlocs : drinks //if null, defaults to drinks instead.
|
||||
var/list/locations = GLOB.teleportlocs.len ? GLOB.teleportlocs : drinks //if null, defaults to drinks instead.
|
||||
|
||||
var/list/names = list()
|
||||
for(var/datum/data/record/t in data_core.general)//Picks from crew manifest.
|
||||
for(var/datum/data/record/t in GLOB.data_core.general)//Picks from crew manifest.
|
||||
names += t.fields["name"]
|
||||
|
||||
var/maxwords = words//Extra var to check for duplicates.
|
||||
@@ -204,9 +204,9 @@ var/syndicate_code_response//Code response for traitors.
|
||||
if(prob(10))
|
||||
code_phrase += pick(lizard_name(MALE),lizard_name(FEMALE))
|
||||
else
|
||||
code_phrase += pick(pick(first_names_male,first_names_female))
|
||||
code_phrase += pick(pick(GLOB.first_names_male,GLOB.first_names_female))
|
||||
code_phrase += " "
|
||||
code_phrase += pick(last_names)
|
||||
code_phrase += pick(GLOB.last_names)
|
||||
if(2)
|
||||
code_phrase += pick(get_all_jobs())//Returns a job.
|
||||
safety -= 1
|
||||
@@ -217,7 +217,7 @@ var/syndicate_code_response//Code response for traitors.
|
||||
if(2)
|
||||
code_phrase += lowertext(pick(foods))
|
||||
if(3)
|
||||
code_phrase += pick(locations)
|
||||
code_phrase += lowertext(pick(locations))
|
||||
safety -= 2
|
||||
if(3)
|
||||
switch(rand(1,4))//Abstract nouns, objects, adjectives, threats. Can be selected more than once.
|
||||
@@ -241,4 +241,4 @@ var/syndicate_code_response//Code response for traitors.
|
||||
world.name = "[config.server_name]: [designation]"
|
||||
else
|
||||
world.name = designation
|
||||
station_name = designation
|
||||
GLOB.station_name = designation
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
if(toIndex <= 0)
|
||||
toIndex += L.len + 1
|
||||
|
||||
sortInstance.L = L
|
||||
sortInstance.cmp = cmp
|
||||
sortInstance.associative = associative
|
||||
GLOB.sortInstance.L = L
|
||||
GLOB.sortInstance.cmp = cmp
|
||||
GLOB.sortInstance.associative = associative
|
||||
|
||||
sortInstance.binarySort(fromIndex, toIndex, fromIndex)
|
||||
GLOB.sortInstance.binarySort(fromIndex, toIndex, fromIndex)
|
||||
return L
|
||||
@@ -8,9 +8,9 @@
|
||||
if(toIndex <= 0)
|
||||
toIndex += L.len + 1
|
||||
|
||||
sortInstance.L = L
|
||||
sortInstance.cmp = cmp
|
||||
sortInstance.associative = associative
|
||||
sortInstance.mergeSort(fromIndex, toIndex)
|
||||
GLOB.sortInstance.L = L
|
||||
GLOB.sortInstance.cmp = cmp
|
||||
GLOB.sortInstance.associative = associative
|
||||
GLOB.sortInstance.mergeSort(fromIndex, toIndex)
|
||||
|
||||
return L
|
||||
@@ -8,10 +8,10 @@
|
||||
if(toIndex <= 0)
|
||||
toIndex += L.len + 1
|
||||
|
||||
sortInstance.L = L
|
||||
sortInstance.cmp = cmp
|
||||
sortInstance.associative = associative
|
||||
GLOB.sortInstance.L = L
|
||||
GLOB.sortInstance.cmp = cmp
|
||||
GLOB.sortInstance.associative = associative
|
||||
|
||||
sortInstance.timSort(fromIndex, toIndex)
|
||||
GLOB.sortInstance.timSort(fromIndex, toIndex)
|
||||
|
||||
return L
|
||||
@@ -9,7 +9,7 @@
|
||||
#define MIN_GALLOP 7
|
||||
|
||||
//This is a global instance to allow much of this code to be reused. The interfaces are kept seperately
|
||||
var/datum/sortInstance/sortInstance = new()
|
||||
GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new())
|
||||
/datum/sortInstance
|
||||
//The array being sorted.
|
||||
var/list/L
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
|
||||
// Run all strings to be used in an SQL query through this proc first to properly escape out injection attempts.
|
||||
/proc/sanitizeSQL(t)
|
||||
var/sqltext = dbcon.Quote("[t]");
|
||||
var/sqltext = GLOB.dbcon.Quote("[t]");
|
||||
return copytext(sqltext, 2, lentext(sqltext));//Quote() adds quotes around input, we already do that
|
||||
|
||||
/proc/format_table_name(table as text)
|
||||
return sqlfdbktableprefix + table
|
||||
return GLOB.sqlfdbktableprefix + table
|
||||
|
||||
/*
|
||||
* Text sanitization
|
||||
@@ -334,10 +334,10 @@
|
||||
new_text += copytext(text, i, i+1)
|
||||
return new_text
|
||||
|
||||
var/list/zero_character_only = list("0")
|
||||
var/list/hex_characters = list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f")
|
||||
var/list/alphabet = list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
|
||||
var/list/binary = list("0","1")
|
||||
GLOBAL_LIST_INIT(zero_character_only, list("0"))
|
||||
GLOBAL_LIST_INIT(hex_characters, list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"))
|
||||
GLOBAL_LIST_INIT(alphabet, list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"))
|
||||
GLOBAL_LIST_INIT(binary, list("0","1"))
|
||||
/proc/random_string(length, list/characters)
|
||||
. = ""
|
||||
for(var/i=1, i<=length, i++)
|
||||
@@ -349,10 +349,10 @@ var/list/binary = list("0","1")
|
||||
. += string
|
||||
|
||||
/proc/random_short_color()
|
||||
return random_string(3, hex_characters)
|
||||
return random_string(3, GLOB.hex_characters)
|
||||
|
||||
/proc/random_color()
|
||||
return random_string(6, hex_characters)
|
||||
return random_string(6, GLOB.hex_characters)
|
||||
|
||||
/proc/add_zero2(t, u)
|
||||
var/temp1
|
||||
|
||||
@@ -17,9 +17,11 @@ proc/TextPreview(var/string,var/len=40)
|
||||
else
|
||||
return "[copytext(string, 1, 37)]..."
|
||||
|
||||
var/list/mentor_log = list ( )
|
||||
//var/list/admintickets = list()
|
||||
var/global/list/whitelisted_species_list[0]
|
||||
GLOBAL_LIST_EMPTY(mentor_log)
|
||||
GLOBAL_PROTECT(mentor_log)
|
||||
|
||||
GLOBAL_LIST_EMPTY(whitelisted_species_list)
|
||||
|
||||
/proc/log_mentor(text)
|
||||
mentor_log.Add(text)
|
||||
diary << "\[[time_stamp()]]MENTOR: [text]"
|
||||
GLOB.mentor_log.Add(text)
|
||||
GLOB.diary << "\[[time_stamp()]]MENTOR: [text]"
|
||||
+10
-8
@@ -1,13 +1,15 @@
|
||||
//Returns the world time in english
|
||||
/proc/worldtime2text()
|
||||
return gameTimestamp("hh:mm:ss")
|
||||
return gameTimestamp("hh:mm:ss", world.time)
|
||||
|
||||
/proc/time_stamp(format = "hh:mm:ss", show_ds)
|
||||
var/time_string = time2text(world.timeofday, format)
|
||||
return show_ds ? "[time_string]:[world.timeofday % 10]" : time_string
|
||||
|
||||
/proc/gameTimestamp(format = "hh:mm:ss") // Get the game time in text
|
||||
return time2text(world.time - timezoneOffset + 432000 - round_start_time, format)
|
||||
/proc/gameTimestamp(format = "hh:mm:ss", wtime=null)
|
||||
if(!wtime)
|
||||
wtime = world.time
|
||||
return time2text(wtime - GLOB.timezoneOffset + SSticker.gametime_offset - SSticker.round_start_time, format)
|
||||
|
||||
/* Returns 1 if it is the selected month and day */
|
||||
/proc/isDay(month, day)
|
||||
@@ -28,10 +30,10 @@
|
||||
return time2text(timevar, "YYYY-MM-DD hh:mm:ss")
|
||||
|
||||
|
||||
/var/midnight_rollovers = 0
|
||||
/var/rollovercheck_last_timeofday = 0
|
||||
GLOBAL_VAR_INIT(midnight_rollovers, 0)
|
||||
GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0)
|
||||
/proc/update_midnight_rollover()
|
||||
if (world.timeofday < rollovercheck_last_timeofday) //TIME IS GOING BACKWARDS!
|
||||
return midnight_rollovers++
|
||||
return midnight_rollovers
|
||||
if (world.timeofday < GLOB.rollovercheck_last_timeofday) //TIME IS GOING BACKWARDS!
|
||||
return GLOB.midnight_rollovers++
|
||||
return GLOB.midnight_rollovers
|
||||
|
||||
|
||||
@@ -337,15 +337,6 @@
|
||||
|
||||
return "[year][seperator][((month < 10) ? "0[month]" : month)][seperator][((day < 10) ? "0[day]" : day)]"
|
||||
|
||||
/*
|
||||
var/list/test_times = list("December" = 1323522004, "August" = 1123522004, "January" = 1011522004,
|
||||
"Jan Leap" = 946684800, "Jan Normal" = 978307200, "New Years Eve" = 1009670400,
|
||||
"New Years" = 1009836000, "New Years 2" = 1041372000, "New Years 3" = 1104530400,
|
||||
"July Month End" = 744161003, "July Month End 12" = 1343777003, "End July" = 1091311200)
|
||||
for(var/t in test_times)
|
||||
world.log << "TEST: [t] is [unix2date(test_times[t])]"
|
||||
*/
|
||||
|
||||
/proc/isLeap(y)
|
||||
return ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
|
||||
|
||||
|
||||
+70
-64
@@ -200,17 +200,17 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
else
|
||||
switch(role)
|
||||
if("clown")
|
||||
newname = pick(clown_names)
|
||||
newname = pick(GLOB.clown_names)
|
||||
if("mime")
|
||||
newname = pick(mime_names)
|
||||
newname = pick(GLOB.mime_names)
|
||||
if("ai")
|
||||
newname = pick(ai_names)
|
||||
newname = pick(GLOB.ai_names)
|
||||
if("deity")
|
||||
newname = pick(clown_names|ai_names|mime_names) //pick any old name
|
||||
newname = pick(GLOB.clown_names|GLOB.ai_names|GLOB.mime_names) //pick any old name
|
||||
else
|
||||
return
|
||||
|
||||
for(var/mob/living/M in player_list)
|
||||
for(var/mob/living/M in GLOB.player_list)
|
||||
if(M == src)
|
||||
continue
|
||||
if(!newname || M.real_name == newname)
|
||||
@@ -231,8 +231,8 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
//Returns a list of unslaved cyborgs
|
||||
/proc/active_free_borgs()
|
||||
. = list()
|
||||
for(var/mob/living/silicon/robot/R in living_mob_list)
|
||||
if(R.connected_ai)
|
||||
for(var/mob/living/silicon/robot/R in GLOB.living_mob_list)
|
||||
if(R.connected_ai || R.shell)
|
||||
continue
|
||||
if(R.stat == DEAD)
|
||||
continue
|
||||
@@ -243,7 +243,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
//Returns a list of AI's
|
||||
/proc/active_ais(check_mind=0)
|
||||
. = list()
|
||||
for(var/mob/living/silicon/ai/A in living_mob_list)
|
||||
for(var/mob/living/silicon/ai/A in GLOB.living_mob_list)
|
||||
if(A.stat == DEAD)
|
||||
continue
|
||||
if(A.control_disabled == 1)
|
||||
@@ -305,7 +305,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
pois[name] = M
|
||||
|
||||
if(!mobs_only)
|
||||
for(var/atom/A in poi_list)
|
||||
for(var/atom/A in GLOB.poi_list)
|
||||
if(!A || !A.loc)
|
||||
continue
|
||||
pois[avoid_assoc_duplicate_keys(A.name, namecounts)] = A
|
||||
@@ -314,7 +314,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
//Orders mobs by type then by name
|
||||
/proc/sortmobs()
|
||||
var/list/moblist = list()
|
||||
var/list/sortmob = sortNames(mob_list)
|
||||
var/list/sortmob = sortNames(GLOB.mob_list)
|
||||
for(var/mob/living/silicon/ai/M in sortmob)
|
||||
moblist.Add(M)
|
||||
for(var/mob/camera/M in sortmob)
|
||||
@@ -378,7 +378,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
else if(istext(whom))
|
||||
key = whom
|
||||
ckey = ckey(whom)
|
||||
C = directory[ckey]
|
||||
C = GLOB.directory[ckey]
|
||||
if(C)
|
||||
M = C.mob
|
||||
else
|
||||
@@ -583,16 +583,16 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
|
||||
//Repopulates sortedAreas list
|
||||
/proc/SortAreas()
|
||||
sortedAreas = list()
|
||||
GLOB.sortedAreas = list()
|
||||
|
||||
for(var/area/A in world)
|
||||
sortedAreas.Add(A)
|
||||
GLOB.sortedAreas.Add(A)
|
||||
|
||||
sortTim(sortedAreas, /proc/cmp_name_asc)
|
||||
sortTim(GLOB.sortedAreas, /proc/cmp_name_asc)
|
||||
|
||||
/area/proc/addSorted()
|
||||
sortedAreas.Add(src)
|
||||
sortTim(sortedAreas, /proc/cmp_name_asc)
|
||||
GLOB.sortedAreas.Add(src)
|
||||
sortTim(GLOB.sortedAreas, /proc/cmp_name_asc)
|
||||
|
||||
//Takes: Area type as text string or as typepath OR an instance of the area.
|
||||
//Returns: A list of all areas of that type in the world.
|
||||
@@ -608,12 +608,12 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
var/list/areas = list()
|
||||
if(subtypes)
|
||||
var/list/cache = typecacheof(areatype)
|
||||
for(var/V in sortedAreas)
|
||||
for(var/V in GLOB.sortedAreas)
|
||||
var/area/A = V
|
||||
if(cache[A.type])
|
||||
areas += V
|
||||
else
|
||||
for(var/V in sortedAreas)
|
||||
for(var/V in GLOB.sortedAreas)
|
||||
var/area/A = V
|
||||
if(A.type == areatype)
|
||||
areas += V
|
||||
@@ -633,7 +633,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
var/list/turfs = list()
|
||||
if(subtypes)
|
||||
var/list/cache = typecacheof(areatype)
|
||||
for(var/V in sortedAreas)
|
||||
for(var/V in GLOB.sortedAreas)
|
||||
var/area/A = V
|
||||
if(!cache[A.type])
|
||||
continue
|
||||
@@ -641,7 +641,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
if(target_z == 0 || target_z == T.z)
|
||||
turfs += T
|
||||
else
|
||||
for(var/V in sortedAreas)
|
||||
for(var/V in GLOB.sortedAreas)
|
||||
var/area/A = V
|
||||
if(A.type != areatype)
|
||||
continue
|
||||
@@ -763,9 +763,9 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
|
||||
//For objects that should embed, but make no sense being is_sharp or is_pointed()
|
||||
//e.g: rods
|
||||
var/list/can_embed_types = typecacheof(list(
|
||||
GLOBAL_LIST_INIT(can_embed_types, typecacheof(list(
|
||||
/obj/item/stack/rods,
|
||||
/obj/item/pipe))
|
||||
/obj/item/pipe)))
|
||||
|
||||
/proc/can_embed(obj/item/W)
|
||||
if(W.is_sharp())
|
||||
@@ -773,14 +773,14 @@ var/list/can_embed_types = typecacheof(list(
|
||||
if(is_pointed(W))
|
||||
return 1
|
||||
|
||||
if(is_type_in_typecache(W, can_embed_types))
|
||||
if(is_type_in_typecache(W, GLOB.can_embed_types))
|
||||
return 1
|
||||
|
||||
|
||||
/*
|
||||
Checks if that loc and dir has a item on the wall
|
||||
*/
|
||||
var/list/WALLITEMS = typecacheof(list(
|
||||
GLOBAL_LIST_INIT(WALLITEMS, typecacheof(list(
|
||||
/obj/machinery/power/apc, /obj/machinery/airalarm, /obj/item/device/radio/intercom,
|
||||
/obj/structure/extinguisher_cabinet, /obj/structure/reagent_dispensers/peppertank,
|
||||
/obj/machinery/status_display, /obj/machinery/requests_console, /obj/machinery/light_switch, /obj/structure/sign,
|
||||
@@ -788,22 +788,22 @@ var/list/WALLITEMS = typecacheof(list(
|
||||
/obj/machinery/computer/security/telescreen, /obj/machinery/embedded_controller/radio/simple_vent_controller,
|
||||
/obj/item/weapon/storage/secure/safe, /obj/machinery/door_timer, /obj/machinery/flasher, /obj/machinery/keycard_auth,
|
||||
/obj/structure/mirror, /obj/structure/fireaxecabinet, /obj/machinery/computer/security/telescreen/entertainment
|
||||
))
|
||||
)))
|
||||
|
||||
var/list/WALLITEMS_EXTERNAL = typecacheof(list(
|
||||
GLOBAL_LIST_INIT(WALLITEMS_EXTERNAL, typecacheof(list(
|
||||
/obj/machinery/camera, /obj/structure/camera_assembly,
|
||||
/obj/structure/light_construct, /obj/machinery/light))
|
||||
/obj/structure/light_construct, /obj/machinery/light)))
|
||||
|
||||
var/list/WALLITEMS_INVERSE = typecacheof(list(
|
||||
/obj/structure/light_construct, /obj/machinery/light))
|
||||
GLOBAL_LIST_INIT(WALLITEMS_INVERSE, typecacheof(list(
|
||||
/obj/structure/light_construct, /obj/machinery/light)))
|
||||
|
||||
|
||||
/proc/gotwallitem(loc, dir, var/check_external = 0)
|
||||
var/locdir = get_step(loc, dir)
|
||||
for(var/obj/O in loc)
|
||||
if(is_type_in_typecache(O, WALLITEMS) && check_external != 2)
|
||||
if(is_type_in_typecache(O, GLOB.WALLITEMS) && check_external != 2)
|
||||
//Direction works sometimes
|
||||
if(is_type_in_typecache(O, WALLITEMS_INVERSE))
|
||||
if(is_type_in_typecache(O, GLOB.WALLITEMS_INVERSE))
|
||||
if(O.dir == turn(dir, 180))
|
||||
return 1
|
||||
else if(O.dir == dir)
|
||||
@@ -814,8 +814,8 @@ var/list/WALLITEMS_INVERSE = typecacheof(list(
|
||||
if(get_turf_pixel(O) == locdir)
|
||||
return 1
|
||||
|
||||
if(is_type_in_typecache(O, WALLITEMS_EXTERNAL) && check_external)
|
||||
if(is_type_in_typecache(O, WALLITEMS_INVERSE))
|
||||
if(is_type_in_typecache(O, GLOB.WALLITEMS_EXTERNAL) && check_external)
|
||||
if(is_type_in_typecache(O, GLOB.WALLITEMS_INVERSE))
|
||||
if(O.dir == turn(dir, 180))
|
||||
return 1
|
||||
else if(O.dir == dir)
|
||||
@@ -823,7 +823,7 @@ var/list/WALLITEMS_INVERSE = typecacheof(list(
|
||||
|
||||
//Some stuff is placed directly on the wallturf (signs)
|
||||
for(var/obj/O in locdir)
|
||||
if(is_type_in_typecache(O, WALLITEMS) && check_external != 2)
|
||||
if(is_type_in_typecache(O, GLOB.WALLITEMS) && check_external != 2)
|
||||
if(O.pixel_x == 0 && O.pixel_y == 0)
|
||||
return 1
|
||||
return 0
|
||||
@@ -845,7 +845,7 @@ var/list/WALLITEMS_INVERSE = typecacheof(list(
|
||||
|
||||
for(var/id in cached_gases)
|
||||
var/gas_concentration = cached_gases[id][MOLES]/total_moles
|
||||
if(id in hardcoded_gases || gas_concentration > 0.001) //ensures the four primary gases are always shown.
|
||||
if((id in GLOB.hardcoded_gases) || gas_concentration > 0.001) //ensures the four primary gases are always shown.
|
||||
to_chat(user, "<span class='notice'>[cached_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] %</span>")
|
||||
|
||||
to_chat(user, "<span class='notice'>Temperature: [round(air_contents.temperature-T0C)] °C</span>")
|
||||
@@ -871,14 +871,14 @@ var/list/WALLITEMS_INVERSE = typecacheof(list(
|
||||
var/initial_chance = chance
|
||||
while(steps > 0)
|
||||
if(prob(chance))
|
||||
step(AM, pick(alldirs))
|
||||
step(AM, pick(GLOB.alldirs))
|
||||
chance = max(chance - (initial_chance / steps), 0)
|
||||
steps--
|
||||
|
||||
/proc/living_player_count()
|
||||
var/living_player_count = 0
|
||||
for(var/mob in player_list)
|
||||
if(mob in living_mob_list)
|
||||
for(var/mob in GLOB.player_list)
|
||||
if(mob in GLOB.living_mob_list)
|
||||
living_player_count += 1
|
||||
return living_player_count
|
||||
|
||||
@@ -1188,7 +1188,7 @@ B --><-- A
|
||||
/proc/get_areas_in_z(zlevel)
|
||||
. = list()
|
||||
var/validarea = FALSE
|
||||
for(var/V in sortedAreas)
|
||||
for(var/V in GLOB.sortedAreas)
|
||||
var/area/A = V
|
||||
validarea = TRUE
|
||||
for(var/turf/T in A)
|
||||
@@ -1254,7 +1254,7 @@ proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
|
||||
. += round(i*DELTA_CALC)
|
||||
sleep(i*world.tick_lag*DELTA_CALC)
|
||||
i *= 2
|
||||
while (world.tick_usage > min(TICK_LIMIT_TO_RUN, CURRENT_TICKLIMIT))
|
||||
while (world.tick_usage > min(TICK_LIMIT_TO_RUN, GLOB.CURRENT_TICKLIMIT))
|
||||
|
||||
#undef DELTA_CALC
|
||||
|
||||
@@ -1313,41 +1313,44 @@ proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
|
||||
else
|
||||
. = ""
|
||||
|
||||
/var/mob/dview/dview_mob = new
|
||||
GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
|
||||
|
||||
//Version of view() which ignores darkness, because BYOND doesn't have it (I actually suggested it but it was tagged redundant, BUT HEARERS IS A T- /rant).
|
||||
/proc/dview(var/range = world.view, var/center, var/invis_flags = 0)
|
||||
if(!center)
|
||||
return
|
||||
|
||||
dview_mob.loc = center
|
||||
GLOB.dview_mob.loc = center
|
||||
|
||||
dview_mob.see_invisible = invis_flags
|
||||
GLOB.dview_mob.see_invisible = invis_flags
|
||||
|
||||
. = view(range, dview_mob)
|
||||
dview_mob.loc = null
|
||||
. = view(range, GLOB.dview_mob)
|
||||
GLOB.dview_mob.loc = null
|
||||
|
||||
/mob/dview
|
||||
name = "INTERNAL DVIEW MOB"
|
||||
invisibility = 101
|
||||
density = 0
|
||||
density = FALSE
|
||||
see_in_dark = 1e6
|
||||
anchored = 1
|
||||
anchored = TRUE
|
||||
var/ready_to_die = FALSE
|
||||
|
||||
/mob/dview/Destroy(force=0)
|
||||
stack_trace("ALRIGHT WHICH FUCKER TRIED TO DELETE *MY* DVIEW?")
|
||||
/mob/dview/Destroy(force = FALSE)
|
||||
if(!ready_to_die)
|
||||
stack_trace("ALRIGHT WHICH FUCKER TRIED TO DELETE *MY* DVIEW?")
|
||||
|
||||
if (!force)
|
||||
return QDEL_HINT_LETMELIVE
|
||||
if (!force)
|
||||
return QDEL_HINT_LETMELIVE
|
||||
|
||||
world.log << "EVACUATE THE SHITCODE IS TRYING TO STEAL MUH JOBS"
|
||||
global.dview_mob = new
|
||||
return QDEL_HINT_QUEUE
|
||||
log_world("EVACUATE THE SHITCODE IS TRYING TO STEAL MUH JOBS")
|
||||
GLOB.dview_mob = new
|
||||
return ..()
|
||||
|
||||
|
||||
#define FOR_DVIEW(type, range, center, invis_flags) \
|
||||
dview_mob.loc = center; \
|
||||
dview_mob.see_invisible = invis_flags; \
|
||||
for(type in view(range, dview_mob))
|
||||
GLOB.dview_mob.loc = center; \
|
||||
GLOB.dview_mob.see_invisible = invis_flags; \
|
||||
for(type in view(range, GLOB.dview_mob))
|
||||
|
||||
//can a window be here, or is there a window blocking it?
|
||||
/proc/valid_window_location(turf/T, dir_to_check)
|
||||
@@ -1372,17 +1375,17 @@ proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
|
||||
//Set this to TRUE before calling
|
||||
//This prevents RCEs from badmins
|
||||
//kevinz000 if you touch this I will hunt you down
|
||||
var/valid_HTTPSGet = FALSE
|
||||
GLOBAL_VAR_INIT(valid_HTTPSGet, FALSE)
|
||||
/proc/HTTPSGet(url)
|
||||
if(findtext(url, "\""))
|
||||
valid_HTTPSGet = FALSE
|
||||
GLOB.valid_HTTPSGet = FALSE
|
||||
|
||||
if(!valid_HTTPSGet)
|
||||
if(!GLOB.valid_HTTPSGet)
|
||||
if(usr)
|
||||
CRASH("[usr.ckey]([usr]) just attempted an invalid HTTPSGet on: [url]!")
|
||||
else
|
||||
CRASH("Invalid HTTPSGet call on: [url]")
|
||||
valid_HTTPSGet = FALSE
|
||||
GLOB.valid_HTTPSGet = FALSE
|
||||
|
||||
//"This has got to be the ugliest hack I have ever done"
|
||||
//warning, here be dragons
|
||||
@@ -1407,15 +1410,15 @@ var/valid_HTTPSGet = FALSE
|
||||
else
|
||||
CRASH("Invalid world.system_type ([world.system_type])? Yell at Lummox.")
|
||||
|
||||
world.log << "HTTPSGet: [url]"
|
||||
log_world("HTTPSGet: [url]")
|
||||
var/result = shell(command)
|
||||
if(result != 0)
|
||||
world.log << "Download failed: shell exited with code: [result]"
|
||||
log_world("Download failed: shell exited with code: [result]")
|
||||
return
|
||||
|
||||
var/f = file(temp_file)
|
||||
if(!f)
|
||||
world.log << "Download failed: Temp file not found"
|
||||
log_world("Download failed: Temp file not found")
|
||||
return
|
||||
|
||||
. = file2text(f)
|
||||
@@ -1426,3 +1429,6 @@ var/valid_HTTPSGet = FALSE
|
||||
|
||||
/proc/to_chat(target, message)
|
||||
target << message
|
||||
|
||||
/proc/pass()
|
||||
return
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
/*
|
||||
|
||||
This is a smart+stupid method of maintaining paths during refactors.
|
||||
At this point in time we have more maps than ever, and our tools just aren't that great.
|
||||
So instead of repathing all the maps...
|
||||
|
||||
Keep the old path defined, just as an empty type with that path, and then define it's
|
||||
parent_type as the new path, effectively maintaining the object/mob w/e without having
|
||||
to touch all the maps, avoiding all those nasty conflicts!
|
||||
|
||||
Ideally the old paths would be cleaned out as mappers go about their usual routine of
|
||||
updating old maps.
|
||||
|
||||
tl;dr TYPEFUCKERY, because fuck updating all these maps
|
||||
|
||||
Example:
|
||||
|
||||
/obj/structure/bed/chair/janicart/secway
|
||||
parent_type = /obj/vehicle/secway
|
||||
|
||||
*/
|
||||
@@ -7,6 +7,8 @@
|
||||
//#define GC_FAILURE_HARD_LOOKUP //makes paths that fail to GC call find_references before del'ing.
|
||||
//Also allows for recursive reference searching of datums.
|
||||
//Sets world.loop_checks to false and prevents find references from sleeping
|
||||
|
||||
//#define VISUALIZE_ACTIVE_TURFS //Highlights atmos active turfs in green
|
||||
#endif
|
||||
|
||||
#define PRELOAD_RSC 1 /*set to:
|
||||
|
||||
@@ -1,40 +1,47 @@
|
||||
var/datum/configuration/config = null
|
||||
GLOBAL_REAL(config, /datum/configuration)
|
||||
|
||||
var/host = null
|
||||
var/join_motd = null
|
||||
var/station_name = null
|
||||
var/game_version = "/tg/ Station 13"
|
||||
var/changelog_hash = ""
|
||||
GLOBAL_DATUM_INIT(revdata, /datum/getrev, new)
|
||||
|
||||
var/ooc_allowed = 1 // used with admin verbs to disable ooc - not a config option apparently
|
||||
var/dooc_allowed = 1
|
||||
var/abandon_allowed = 1
|
||||
var/enter_allowed = 1
|
||||
var/guests_allowed = 1
|
||||
var/shuttle_frozen = 0
|
||||
var/shuttle_left = 0
|
||||
var/tinted_weldhelh = 1
|
||||
GLOBAL_VAR(host)
|
||||
GLOBAL_VAR(join_motd)
|
||||
GLOBAL_VAR(station_name)
|
||||
GLOBAL_VAR_INIT(game_version, "/tg/ Station 13")
|
||||
GLOBAL_VAR_INIT(changelog_hash, "")
|
||||
|
||||
GLOBAL_VAR_INIT(ooc_allowed, TRUE) // used with admin verbs to disable ooc - not a config option apparently
|
||||
GLOBAL_VAR_INIT(dooc_allowed, TRUE)
|
||||
GLOBAL_VAR_INIT(abandon_allowed, TRUE)
|
||||
GLOBAL_VAR_INIT(enter_allowed, TRUE)
|
||||
GLOBAL_VAR_INIT(guests_allowed, TRUE)
|
||||
GLOBAL_VAR_INIT(shuttle_frozen, FALSE)
|
||||
GLOBAL_VAR_INIT(shuttle_left, FALSE)
|
||||
GLOBAL_VAR_INIT(tinted_weldhelh, TRUE)
|
||||
|
||||
|
||||
// Debug is used exactly once (in living.dm) but is commented out in a lot of places. It is not set anywhere and only checked.
|
||||
// Debug2 is used in conjunction with a lot of admin verbs and therefore is actually legit.
|
||||
var/Debug = 0 // global debug switch
|
||||
var/Debug2 = 0
|
||||
GLOBAL_VAR_INIT(Debug, FALSE) // global debug switch
|
||||
GLOBAL_VAR_INIT(Debug2, FALSE)
|
||||
|
||||
//Server API key
|
||||
var/global/comms_key = "default_pwd"
|
||||
var/global/comms_allowed = 0 //By default, the server does not allow messages to be sent to it, unless the key is strong enough (this is to prevent misconfigured servers from becoming vulnerable)
|
||||
GLOBAL_VAR_INIT(comms_key, "default_pwd")
|
||||
GLOBAL_PROTECT(comms_key)
|
||||
GLOBAL_VAR_INIT(comms_allowed, FALSE) //By default, the server does not allow messages to be sent to it, unless the key is strong enough (this is to prevent misconfigured servers from becoming vulnerable)
|
||||
GLOBAL_PROTECT(comms_allowed)
|
||||
|
||||
var/global/medal_hub = null
|
||||
var/global/medal_pass = " "
|
||||
var/global/medals_enabled = TRUE //will be auto set to false if the game fails contacting the medal hub to prevent unneeded calls.
|
||||
GLOBAL_VAR(medal_hub)
|
||||
GLOBAL_PROTECT(medal_hub)
|
||||
GLOBAL_VAR_INIT(medal_pass, " ")
|
||||
GLOBAL_PROTECT(medal_pass)
|
||||
GLOBAL_VAR_INIT(medals_enabled, TRUE) //will be auto set to false if the game fails contacting the medal hub to prevent unneeded calls.
|
||||
GLOBAL_PROTECT(medals_enabled)
|
||||
|
||||
|
||||
//This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage
|
||||
var/MAX_EX_DEVESTATION_RANGE = 3
|
||||
var/MAX_EX_HEAVY_RANGE = 7
|
||||
var/MAX_EX_LIGHT_RANGE = 14
|
||||
var/MAX_EX_FLASH_RANGE = 14
|
||||
var/MAX_EX_FLAME_RANGE = 14
|
||||
var/DYN_EX_SCALE = 0.5
|
||||
GLOBAL_VAR_INIT(MAX_EX_DEVESTATION_RANGE, 3)
|
||||
GLOBAL_VAR_INIT(MAX_EX_HEAVY_RANGE, 7)
|
||||
GLOBAL_VAR_INIT(MAX_EX_LIGHT_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(MAX_EX_FLASH_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(MAX_EX_FLAME_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(DYN_EX_SCALE, 0.5)
|
||||
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
// MySQL configuration
|
||||
|
||||
var/sqladdress = "localhost"
|
||||
var/sqlport = "3306"
|
||||
var/sqlfdbkdb = "test"
|
||||
var/sqlfdbklogin = "root"
|
||||
var/sqlfdbkpass = ""
|
||||
var/sqlfdbktableprefix = "erro_" //backwords compatibility with downstream server hosts
|
||||
GLOBAL_VAR_INIT(sqladdress, "localhost")
|
||||
GLOBAL_PROTECT(sqladdress)
|
||||
GLOBAL_VAR_INIT(sqlport, "3306")
|
||||
GLOBAL_PROTECT(sqlport)
|
||||
GLOBAL_VAR_INIT(sqlfdbkdb, "test")
|
||||
GLOBAL_PROTECT(sqlfdbkdb)
|
||||
GLOBAL_VAR_INIT(sqlfdbklogin, "root")
|
||||
GLOBAL_PROTECT(sqlfdbklogin)
|
||||
GLOBAL_VAR_INIT(sqlfdbkpass, "")
|
||||
GLOBAL_PROTECT(sqlfdbkpass)
|
||||
GLOBAL_VAR_INIT(sqlfdbktableprefix, "erro_") //backwords compatibility with downstream server hosts
|
||||
GLOBAL_PROTECT(sqlfdbktableprefix)
|
||||
|
||||
//Database connections
|
||||
//A connection is established on world creation. Ideally, the connection dies when the server restarts (After feedback logging.).
|
||||
var/DBConnection/dbcon = new() //Feedback database (New database)
|
||||
GLOBAL_DATUM_INIT(dbcon, /DBConnection, new) //Feedback database (New database)
|
||||
GLOBAL_PROTECT(dbcon)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
var/master_mode = "traitor"//"extended"
|
||||
var/secret_force_mode = "secret" // if this is anything but "secret", the secret rotation will forceably choose this mode
|
||||
GLOBAL_VAR_INIT(master_mode, "traitor") //"extended"
|
||||
GLOBAL_VAR_INIT(secret_force_mode, "secret") // if this is anything but "secret", the secret rotation will forceably choose this mode
|
||||
|
||||
var/wavesecret = 0 // meteor mode, delays wave progression, terrible name
|
||||
var/datum/station_state/start_state = null // Used in round-end report
|
||||
GLOBAL_VAR_INIT(wavesecret, 0) // meteor mode, delays wave progression, terrible name
|
||||
GLOBAL_DATUM(start_state, /datum/station_state) // Used in round-end report
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
//////////////
|
||||
var/NEARSIGHTBLOCK = 0
|
||||
var/EPILEPSYBLOCK = 0
|
||||
var/COUGHBLOCK = 0
|
||||
var/TOURETTESBLOCK = 0
|
||||
var/NERVOUSBLOCK = 0
|
||||
var/BLINDBLOCK = 0
|
||||
var/DEAFBLOCK = 0
|
||||
var/HULKBLOCK = 0
|
||||
var/TELEBLOCK = 0
|
||||
var/FIREBLOCK = 0
|
||||
var/XRAYBLOCK = 0
|
||||
var/CLUMSYBLOCK = 0
|
||||
var/STRANGEBLOCK = 0
|
||||
var/RACEBLOCK = 0
|
||||
GLOBAL_VAR_INIT(NEARSIGHTBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(EPILEPSYBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(COUGHBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(TOURETTESBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(NERVOUSBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(BLINDBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(DEAFBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(HULKBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(TELEBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(FIREBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(XRAYBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(CLUMSYBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(STRANGEBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(RACEBLOCK, 0)
|
||||
|
||||
var/list/bad_se_blocks
|
||||
var/list/good_se_blocks
|
||||
var/list/op_se_blocks
|
||||
GLOBAL_LIST(bad_se_blocks)
|
||||
GLOBAL_LIST(good_se_blocks)
|
||||
GLOBAL_LIST(op_se_blocks)
|
||||
|
||||
var/NULLED_SE
|
||||
var/NULLED_UI
|
||||
GLOBAL_VAR(NULLED_SE)
|
||||
GLOBAL_VAR(NULLED_UI)
|
||||
|
||||
var/list/global_mutations = list() // list of hidden mutation things
|
||||
GLOBAL_LIST_EMPTY(global_mutations) // list of hidden mutation things
|
||||
|
||||
var/list/bad_mutations = list()
|
||||
var/list/good_mutations = list()
|
||||
var/list/not_good_mutations = list()
|
||||
GLOBAL_LIST_EMPTY(bad_mutations)
|
||||
GLOBAL_LIST_EMPTY(good_mutations)
|
||||
GLOBAL_LIST_EMPTY(not_good_mutations)
|
||||
@@ -1,44 +1,44 @@
|
||||
//Preferences stuff
|
||||
//Hairstyles
|
||||
var/global/list/hair_styles_list = list() //stores /datum/sprite_accessory/hair indexed by name
|
||||
var/global/list/hair_styles_male_list = list() //stores only hair names
|
||||
var/global/list/hair_styles_female_list = list() //stores only hair names
|
||||
var/global/list/facial_hair_styles_list = list() //stores /datum/sprite_accessory/facial_hair indexed by name
|
||||
var/global/list/facial_hair_styles_male_list = list() //stores only hair names
|
||||
var/global/list/facial_hair_styles_female_list = list() //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(hair_styles_list) //stores /datum/sprite_accessory/hair indexed by name
|
||||
GLOBAL_LIST_EMPTY(hair_styles_male_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(hair_styles_female_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_list) //stores /datum/sprite_accessory/facial_hair indexed by name
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_male_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_female_list) //stores only hair names
|
||||
//Underwear
|
||||
var/global/list/underwear_list = list() //stores /datum/sprite_accessory/underwear indexed by name
|
||||
var/global/list/underwear_m = list() //stores only underwear name
|
||||
var/global/list/underwear_f = list() //stores only underwear name
|
||||
GLOBAL_LIST_EMPTY(underwear_list) //stores /datum/sprite_accessory/underwear indexed by name
|
||||
GLOBAL_LIST_EMPTY(underwear_m) //stores only underwear name
|
||||
GLOBAL_LIST_EMPTY(underwear_f) //stores only underwear name
|
||||
//Undershirts
|
||||
var/global/list/undershirt_list = list() //stores /datum/sprite_accessory/undershirt indexed by name
|
||||
var/global/list/undershirt_m = list() //stores only undershirt name
|
||||
var/global/list/undershirt_f = list() //stores only undershirt name
|
||||
GLOBAL_LIST_EMPTY(undershirt_list) //stores /datum/sprite_accessory/undershirt indexed by name
|
||||
GLOBAL_LIST_EMPTY(undershirt_m) //stores only undershirt name
|
||||
GLOBAL_LIST_EMPTY(undershirt_f) //stores only undershirt name
|
||||
//Socks
|
||||
var/global/list/socks_list = list() //stores /datum/sprite_accessory/socks indexed by name
|
||||
GLOBAL_LIST_EMPTY(socks_list) //stores /datum/sprite_accessory/socks indexed by name
|
||||
//Lizard Bits (all datum lists indexed by name)
|
||||
var/global/list/body_markings_list = list()
|
||||
var/global/list/tails_list_lizard = list()
|
||||
var/global/list/animated_tails_list_lizard = list()
|
||||
var/global/list/snouts_list = list()
|
||||
var/global/list/horns_list = list()
|
||||
var/global/list/frills_list = list()
|
||||
var/global/list/spines_list = list()
|
||||
var/global/list/legs_list = list()
|
||||
var/global/list/animated_spines_list = list()
|
||||
GLOBAL_LIST_EMPTY(body_markings_list)
|
||||
GLOBAL_LIST_EMPTY(tails_list_lizard)
|
||||
GLOBAL_LIST_EMPTY(animated_tails_list_lizard)
|
||||
GLOBAL_LIST_EMPTY(snouts_list)
|
||||
GLOBAL_LIST_EMPTY(horns_list)
|
||||
GLOBAL_LIST_EMPTY(frills_list)
|
||||
GLOBAL_LIST_EMPTY(spines_list)
|
||||
GLOBAL_LIST_EMPTY(legs_list)
|
||||
GLOBAL_LIST_EMPTY(animated_spines_list)
|
||||
|
||||
//Mutant Human bits
|
||||
var/global/list/tails_list_human = list()
|
||||
var/global/list/animated_tails_list_human = list()
|
||||
var/global/list/ears_list = list()
|
||||
var/global/list/wings_list = list()
|
||||
var/global/list/wings_open_list = list()
|
||||
var/global/list/r_wings_list = list()
|
||||
GLOBAL_LIST_EMPTY(tails_list_human)
|
||||
GLOBAL_LIST_EMPTY(animated_tails_list_human)
|
||||
GLOBAL_LIST_EMPTY(ears_list)
|
||||
GLOBAL_LIST_EMPTY(wings_list)
|
||||
GLOBAL_LIST_EMPTY(wings_open_list)
|
||||
GLOBAL_LIST_EMPTY(r_wings_list)
|
||||
|
||||
var/global/list/ghost_forms_with_directions_list = list("ghost") //stores the ghost forms that support directional sprites
|
||||
var/global/list/ghost_forms_with_accessories_list = list("ghost") //stores the ghost forms that support hair and other such things
|
||||
GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites
|
||||
GLOBAL_LIST_INIT(ghost_forms_with_accessories_list, list("ghost")) //stores the ghost forms that support hair and other such things
|
||||
|
||||
var/global/list/security_depts_prefs = list(SEC_DEPT_RANDOM, SEC_DEPT_NONE, SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, SEC_DEPT_SCIENCE, SEC_DEPT_SUPPLY)
|
||||
GLOBAL_LIST_INIT(security_depts_prefs, list(SEC_DEPT_RANDOM, SEC_DEPT_NONE, SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, SEC_DEPT_SCIENCE, SEC_DEPT_SUPPLY))
|
||||
|
||||
//Backpacks
|
||||
#define GBACKPACK "Grey Backpack"
|
||||
@@ -48,21 +48,21 @@ var/global/list/security_depts_prefs = list(SEC_DEPT_RANDOM, SEC_DEPT_NONE, SEC_
|
||||
#define DBACKPACK "Department Backpack"
|
||||
#define DSATCHEL "Department Satchel"
|
||||
#define DDUFFLEBAG "Department Dufflebag"
|
||||
var/global/list/backbaglist = list(DBACKPACK, DSATCHEL, DDUFFLEBAG, GBACKPACK, GSATCHEL, GDUFFLEBAG, LSATCHEL)
|
||||
GLOBAL_LIST_INIT(backbaglist, list(DBACKPACK, DSATCHEL, DDUFFLEBAG, GBACKPACK, GSATCHEL, GDUFFLEBAG, LSATCHEL))
|
||||
|
||||
//Uplink spawn loc
|
||||
#define UPLINK_PDA "PDA"
|
||||
#define UPLINK_RADIO "Radio"
|
||||
#define UPLINK_PEN "Pen" //like a real spy!
|
||||
var/global/list/uplink_spawn_loc_list = list(UPLINK_PDA, UPLINK_RADIO, UPLINK_PEN)
|
||||
GLOBAL_LIST_INIT(uplink_spawn_loc_list, list(UPLINK_PDA, UPLINK_RADIO, UPLINK_PEN))
|
||||
|
||||
//Female Uniforms
|
||||
var/global/list/female_clothing_icons = list()
|
||||
GLOBAL_LIST_EMPTY(female_clothing_icons)
|
||||
|
||||
//radical shit
|
||||
var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF")
|
||||
GLOBAL_LIST_INIT(hit_appends, list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF"))
|
||||
|
||||
var/list/scarySounds = list('sound/weapons/thudswoosh.ogg','sound/weapons/Taser.ogg','sound/weapons/armbomb.ogg','sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg','sound/voice/hiss5.ogg','sound/voice/hiss6.ogg','sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg','sound/items/Welder.ogg','sound/items/Welder2.ogg','sound/machines/airlock.ogg','sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg')
|
||||
GLOBAL_LIST_INIT(scarySounds, list('sound/weapons/thudswoosh.ogg','sound/weapons/Taser.ogg','sound/weapons/armbomb.ogg','sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg','sound/voice/hiss5.ogg','sound/voice/hiss6.ogg','sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg','sound/items/Welder.ogg','sound/items/Welder2.ogg','sound/machines/airlock.ogg','sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg'))
|
||||
|
||||
|
||||
// Reference list for disposal sort junctions. Set the sortType variable on disposal sort junctions to
|
||||
@@ -96,23 +96,23 @@ var/list/scarySounds = list('sound/weapons/thudswoosh.ogg','sound/weapons/Taser.
|
||||
23 Genetics
|
||||
*/
|
||||
|
||||
var/list/TAGGERLOCATIONS = list("Disposals",
|
||||
GLOBAL_LIST_INIT(TAGGERLOCATIONS, list("Disposals",
|
||||
"Cargo Bay", "QM Office", "Engineering", "CE Office",
|
||||
"Atmospherics", "Security", "HoS Office", "Medbay",
|
||||
"CMO Office", "Chemistry", "Research", "RD Office",
|
||||
"Robotics", "HoP Office", "Library", "Chapel", "Theatre",
|
||||
"Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics")
|
||||
"Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics"))
|
||||
|
||||
var/global/list/guitar_notes = flist("sound/guitar/")
|
||||
GLOBAL_LIST_INIT(guitar_notes, flist("sound/guitar/"))
|
||||
|
||||
var/global/list/station_prefixes = list("", "Imperium", "Heretical", "Cuban",
|
||||
GLOBAL_LIST_INIT(station_prefixes, list("", "Imperium", "Heretical", "Cuban",
|
||||
"Psychic", "Elegant", "Common", "Uncommon", "Rare", "Unique",
|
||||
"Houseruled", "Religious", "Atheist", "Traditional", "Houseruled",
|
||||
"Mad", "Super", "Ultra", "Secret", "Top Secret", "Deep", "Death",
|
||||
"Zybourne", "Central", "Main", "Government", "Uoi", "Fat",
|
||||
"Automated", "Experimental", "Augmented")
|
||||
"Automated", "Experimental", "Augmented"))
|
||||
|
||||
var/global/list/station_names = list("", "Stanford", "Dorf", "Alium",
|
||||
GLOBAL_LIST_INIT(station_names, list("", "Stanford", "Dorf", "Alium",
|
||||
"Prefix", "Clowning", "Aegis", "Ishimura", "Scaredy", "Death-World",
|
||||
"Mime", "Honk", "Rogue", "MacRagge", "Ultrameens", "Safety", "Paranoia",
|
||||
"Explosive", "Neckbear", "Donk", "Muppet", "North", "West", "East",
|
||||
@@ -124,9 +124,9 @@ var/global/list/station_names = list("", "Stanford", "Dorf", "Alium",
|
||||
"System", "Mining", "Neckbeard", "Research", "Supply", "Military",
|
||||
"Orbital", "Battle", "Science", "Asteroid", "Home", "Production",
|
||||
"Transport", "Delivery", "Extraplanetary", "Orbital", "Correctional",
|
||||
"Robot", "Hats", "Pizza")
|
||||
"Robot", "Hats", "Pizza"))
|
||||
|
||||
var/global/list/station_suffixes = list("Station", "Frontier",
|
||||
GLOBAL_LIST_INIT(station_suffixes, list("Station", "Frontier",
|
||||
"Suffix", "Death-trap", "Space-hulk", "Lab", "Hazard","Spess Junk",
|
||||
"Fishery", "No-Moon", "Tomb", "Crypt", "Hut", "Monkey", "Bomb",
|
||||
"Trade Post", "Fortress", "Village", "Town", "City", "Edition", "Hive",
|
||||
@@ -135,23 +135,23 @@ var/global/list/station_suffixes = list("Station", "Frontier",
|
||||
"Construct", "Hangar", "Prison", "Center", "Port", "Waystation",
|
||||
"Factory", "Waypoint", "Stopover", "Hub", "HQ", "Office", "Object",
|
||||
"Fortification", "Colony", "Planet-Cracker", "Roost", "Fat Camp",
|
||||
"Airstrip")
|
||||
"Airstrip"))
|
||||
|
||||
var/global/list/greek_letters = list("Alpha", "Beta", "Gamma", "Delta",
|
||||
GLOBAL_LIST_INIT(greek_letters, list("Alpha", "Beta", "Gamma", "Delta",
|
||||
"Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu",
|
||||
"Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi",
|
||||
"Chi", "Psi", "Omega")
|
||||
"Chi", "Psi", "Omega"))
|
||||
|
||||
var/global/list/phonetic_alphabet = list("Alpha", "Bravo", "Charlie",
|
||||
GLOBAL_LIST_INIT(phonetic_alphabet, list("Alpha", "Bravo", "Charlie",
|
||||
"Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet",
|
||||
"Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec",
|
||||
"Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray",
|
||||
"Yankee", "Zulu")
|
||||
"Yankee", "Zulu"))
|
||||
|
||||
var/global/list/numbers_as_words = list("One", "Two", "Three", "Four",
|
||||
GLOBAL_LIST_INIT(numbers_as_words, list("One", "Two", "Three", "Four",
|
||||
"Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve",
|
||||
"Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen",
|
||||
"Eighteen", "Nineteen")
|
||||
"Eighteen", "Nineteen"))
|
||||
|
||||
/proc/generate_number_strings()
|
||||
var/list/L
|
||||
@@ -160,4 +160,4 @@ var/global/list/numbers_as_words = list("One", "Two", "Three", "Four",
|
||||
L += "\Roman[i]"
|
||||
return L
|
||||
|
||||
var/global/list/station_numerals = greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings()
|
||||
GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings())
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
#define Z_SOUTH 3
|
||||
#define Z_WEST 4
|
||||
|
||||
var/list/cardinal = list( NORTH, SOUTH, EAST, WEST )
|
||||
var/list/alldirs = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)
|
||||
var/list/diagonals = list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)
|
||||
GLOBAL_LIST_INIT(cardinal, list( NORTH, SOUTH, EAST, WEST ))
|
||||
GLOBAL_LIST_INIT(alldirs, list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST))
|
||||
GLOBAL_LIST_INIT(diagonals, list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST))
|
||||
|
||||
//This list contains the z-level numbers which can be accessed via space travel and the percentile chances to get there.
|
||||
//(Exceptions: extended, sandbox and nuke) -Errorage
|
||||
//Was list("3" = 30, "4" = 70).
|
||||
//Spacing should be a reliable method of getting rid of a body -- Urist.
|
||||
//Go away Urist, I'm restoring this to the longer list. ~Errorage
|
||||
var/list/accessable_z_levels = list(1,3,4,5,6,7) //Keep this to six maps, repeating z-levels is ok if needed
|
||||
GLOBAL_LIST_INIT(accessable_z_levels, list(1,3,4,5,6,7)) //Keep this to six maps, repeating z-levels is ok if needed
|
||||
|
||||
var/global/list/global_map = null
|
||||
GLOBAL_LIST(global_map)
|
||||
//list/global_map = list(list(1,5),list(4,3))//an array of map Z levels.
|
||||
//Resulting sector map looks like
|
||||
//|_1_|_4_|
|
||||
@@ -25,34 +25,32 @@ var/global/list/global_map = null
|
||||
//3 - AI satellite
|
||||
//5 - empty space
|
||||
|
||||
var/list/landmarks_list = list() //list of all landmarks created
|
||||
var/list/start_landmarks_list = list() //list of all spawn points created
|
||||
var/list/department_security_spawns = list() //list of all department security spawns
|
||||
var/list/generic_event_spawns = list() //list of all spawns for events
|
||||
GLOBAL_LIST_EMPTY(landmarks_list) //list of all landmarks created
|
||||
GLOBAL_LIST_EMPTY(start_landmarks_list) //list of all spawn points created
|
||||
GLOBAL_LIST_EMPTY(department_security_spawns) //list of all department security spawns
|
||||
GLOBAL_LIST_EMPTY(generic_event_spawns) //list of all spawns for events
|
||||
|
||||
var/list/monkeystart = list()
|
||||
var/list/wizardstart = list()
|
||||
var/list/newplayer_start = list()
|
||||
var/list/latejoin = list()
|
||||
var/list/prisonwarp = list() //prisoners go to these
|
||||
var/list/holdingfacility = list() //captured people go here
|
||||
var/list/xeno_spawn = list()//Aliens spawn at these.
|
||||
var/list/tdome1 = list()
|
||||
var/list/tdome2 = list()
|
||||
var/list/tdomeobserve = list()
|
||||
var/list/tdomeadmin = list()
|
||||
var/list/prisonsecuritywarp = list() //prison security goes to these
|
||||
var/list/prisonwarped = list() //list of players already warped
|
||||
var/list/blobstart = list()
|
||||
var/list/secequipment = list()
|
||||
var/list/deathsquadspawn = list()
|
||||
var/list/emergencyresponseteamspawn = list()
|
||||
var/list/ruin_landmarks = list()
|
||||
GLOBAL_LIST_EMPTY(wizardstart)
|
||||
GLOBAL_LIST_EMPTY(newplayer_start)
|
||||
GLOBAL_LIST_EMPTY(latejoin)
|
||||
GLOBAL_LIST_EMPTY(prisonwarp) //prisoners go to these
|
||||
GLOBAL_LIST_EMPTY(holdingfacility) //captured people go here
|
||||
GLOBAL_LIST_EMPTY(xeno_spawn)//Aliens spawn at these.
|
||||
GLOBAL_LIST_EMPTY(tdome1)
|
||||
GLOBAL_LIST_EMPTY(tdome2)
|
||||
GLOBAL_LIST_EMPTY(tdomeobserve)
|
||||
GLOBAL_LIST_EMPTY(tdomeadmin)
|
||||
GLOBAL_LIST_EMPTY(prisonwarped) //list of players already warped
|
||||
GLOBAL_LIST_EMPTY(blobstart)
|
||||
GLOBAL_LIST_EMPTY(secequipment)
|
||||
GLOBAL_LIST_EMPTY(deathsquadspawn)
|
||||
GLOBAL_LIST_EMPTY(emergencyresponseteamspawn)
|
||||
GLOBAL_LIST_EMPTY(ruin_landmarks)
|
||||
|
||||
//away missions
|
||||
var/list/awaydestinations = list() //a list of landmarks that the warpgate can take you to
|
||||
GLOBAL_LIST_EMPTY(awaydestinations) //a list of landmarks that the warpgate can take you to
|
||||
|
||||
//used by jump-to-area etc. Updated by area/updateName()
|
||||
var/list/sortedAreas = list()
|
||||
GLOBAL_LIST_EMPTY(sortedAreas)
|
||||
|
||||
var/list/transit_markers = list()
|
||||
GLOBAL_LIST_EMPTY(transit_markers)
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
var/list/clients = list() //all clients
|
||||
var/list/admins = list() //all clients whom are admins
|
||||
var/list/deadmins = list() //all clients who have used the de-admin verb.
|
||||
var/list/directory = list() //all ckeys with associated client
|
||||
var/list/stealthminID = list() //reference list with IDs that store ckeys, for stealthmins
|
||||
GLOBAL_LIST_EMPTY(clients) //all clients
|
||||
GLOBAL_LIST_EMPTY(admins) //all clients whom are admins
|
||||
GLOBAL_PROTECT(admins)
|
||||
GLOBAL_LIST_EMPTY(deadmins) //all clients who have used the de-admin verb.
|
||||
GLOBAL_PROTECT(deadmins)
|
||||
GLOBAL_LIST_EMPTY(directory) //all ckeys with associated client
|
||||
GLOBAL_LIST_EMPTY(stealthminID) //reference list with IDs that store ckeys, for stealthmins
|
||||
|
||||
//Since it didn't really belong in any other category, I'm putting this here
|
||||
//This is for procs to replace all the goddamn 'in world's that are chilling around the code
|
||||
|
||||
var/global/list/player_list = list() //all mobs **with clients attached**. Excludes /mob/dead/new_player
|
||||
var/global/list/mob_list = list() //all mobs, including clientless
|
||||
var/global/list/living_mob_list = list() //all alive mobs, including clientless. Excludes /mob/dead/new_player
|
||||
var/global/list/dead_mob_list = list() //all dead mobs, including clientless. Excludes /mob/dead/new_player
|
||||
var/global/list/joined_player_list = list() //all clients that have joined the game at round-start or as a latejoin.
|
||||
var/global/list/silicon_mobs = list() //all silicon mobs
|
||||
var/global/list/pai_list = list()
|
||||
GLOBAL_LIST_EMPTY(player_list) //all mobs **with clients attached**. Excludes /mob/dead/new_player
|
||||
GLOBAL_LIST_EMPTY(mob_list) //all mobs, including clientless
|
||||
GLOBAL_LIST_EMPTY(living_mob_list) //all alive mobs, including clientless. Excludes /mob/dead/new_player
|
||||
GLOBAL_LIST_EMPTY(dead_mob_list) //all dead mobs, including clientless. Excludes /mob/dead/new_player
|
||||
GLOBAL_LIST_EMPTY(joined_player_list) //all clients that have joined the game at round-start or as a latejoin.
|
||||
GLOBAL_LIST_EMPTY(silicon_mobs) //all silicon mobs
|
||||
GLOBAL_LIST_EMPTY(ai_list)
|
||||
GLOBAL_LIST_EMPTY(pai_list)
|
||||
GLOBAL_LIST_EMPTY(available_ai_shells)
|
||||
GLOBAL_LIST_EMPTY(language_datums)
|
||||
@@ -1,22 +1,23 @@
|
||||
var/list/ai_names = file2list("config/names/ai.txt")
|
||||
var/list/wizard_first = file2list("config/names/wizardfirst.txt")
|
||||
var/list/wizard_second = file2list("config/names/wizardsecond.txt")
|
||||
var/list/ninja_titles = file2list("config/names/ninjatitle.txt")
|
||||
var/list/ninja_names = file2list("config/names/ninjaname.txt")
|
||||
var/list/commando_names = file2list("config/names/death_commando.txt")
|
||||
var/list/first_names_male = file2list("config/names/first_male.txt")
|
||||
var/list/first_names_female = file2list("config/names/first_female.txt")
|
||||
var/list/last_names = file2list("config/names/last.txt")
|
||||
var/list/lizard_names_male = file2list("config/names/lizard_male.txt")
|
||||
var/list/lizard_names_female = file2list("config/names/lizard_female.txt")
|
||||
var/list/clown_names = file2list("config/names/clown.txt")
|
||||
var/list/mime_names = file2list("config/names/mime.txt")
|
||||
var/list/carp_names = file2list("config/names/carp.txt")
|
||||
var/list/golem_names = file2list("config/names/golem.txt")
|
||||
var/list/plasmaman_names = file2list("config/names/plasmaman.txt")
|
||||
GLOBAL_LIST_INIT(ai_names, file2list("config/names/ai.txt"))
|
||||
GLOBAL_LIST_INIT(wizard_first, file2list("config/names/wizardfirst.txt"))
|
||||
GLOBAL_LIST_INIT(wizard_second, file2list("config/names/wizardsecond.txt"))
|
||||
GLOBAL_LIST_INIT(ninja_titles, file2list("config/names/ninjatitle.txt"))
|
||||
GLOBAL_LIST_INIT(ninja_names, file2list("config/names/ninjaname.txt"))
|
||||
GLOBAL_LIST_INIT(commando_names, file2list("config/names/death_commando.txt"))
|
||||
GLOBAL_LIST_INIT(first_names_male, file2list("config/names/first_male.txt"))
|
||||
GLOBAL_LIST_INIT(first_names_female, file2list("config/names/first_female.txt"))
|
||||
GLOBAL_LIST_INIT(last_names, file2list("config/names/last.txt"))
|
||||
GLOBAL_LIST_INIT(lizard_names_male, file2list("config/names/lizard_male.txt"))
|
||||
GLOBAL_LIST_INIT(lizard_names_female, file2list("config/names/lizard_female.txt"))
|
||||
GLOBAL_LIST_INIT(clown_names, file2list("config/names/clown.txt"))
|
||||
GLOBAL_LIST_INIT(mime_names, file2list("config/names/mime.txt"))
|
||||
GLOBAL_LIST_INIT(carp_names, file2list("config/names/carp.txt"))
|
||||
GLOBAL_LIST_INIT(golem_names, file2list("config/names/golem.txt"))
|
||||
GLOBAL_LIST_INIT(plasmaman_names, file2list("config/names/plasmaman.txt"))
|
||||
GLOBAL_LIST_INIT(posibrain_names, list("PBU","HIU","SINA","ARMA","OSI","HBL","MSO","RR","CHRI","CDB","HG","XSI","ORNG","GUN","KOR","MET","FRE","XIS","SLI","PKP","HOG","RZH","GOOF","MRPR","JJR","FIRC","INC","PHL","BGB","ANTR","MIW","WJ","JRD","CHOC","ANCL","JLLO","JNLG","KOS","TKRG","XAL","STLP","CBOS","DUNC","FXMC","DRSD","COI"))
|
||||
|
||||
|
||||
var/list/verbs = file2list("config/names/verbs.txt")
|
||||
var/list/adjectives = file2list("config/names/adjectives.txt")
|
||||
GLOBAL_LIST_INIT(verbs, file2list("config/names/verbs.txt"))
|
||||
GLOBAL_LIST_INIT(adjectives, file2list("config/names/adjectives.txt"))
|
||||
//loaded on startup because of "
|
||||
//would include in rsc if ' was used
|
||||
|
||||
@@ -1,30 +1,34 @@
|
||||
var/global/list/cable_list = list() //Index for all cables, so that powernets don't have to look through the entire world all the time
|
||||
var/global/list/portals = list() //list of all /obj/effect/portal
|
||||
var/global/list/airlocks = list() //list of all airlocks
|
||||
var/global/list/mechas_list = list() //list of all mechs. Used by hostile mobs target tracking.
|
||||
var/global/list/shuttle_caller_list = list() //list of all communication consoles and AIs, for automatic shuttle calls when there are none.
|
||||
var/global/list/machines = list() //NOTE: this is a list of ALL machines now. The processing machines list is SSmachine.processing !
|
||||
var/global/list/syndicate_shuttle_boards = list() //important to keep track of for managing nukeops war declarations.
|
||||
var/global/list/navbeacons = list() //list of all bot nagivation beacons, used for patrolling.
|
||||
var/global/list/teleportbeacons = list() //list of all tracking beacons used by teleporters
|
||||
var/global/list/deliverybeacons = list() //list of all MULEbot delivery beacons.
|
||||
var/global/list/deliverybeacontags = list() //list of all tags associated with delivery beacons.
|
||||
var/global/list/nuke_list = list()
|
||||
var/global/list/alarmdisplay = list() //list of all machines or programs that can display station alerts
|
||||
var/global/list/singularities = list() //list of all singularities on the station (actually technically all engines)
|
||||
GLOBAL_LIST_EMPTY(cable_list) //Index for all cables, so that powernets don't have to look through the entire world all the time
|
||||
GLOBAL_LIST_EMPTY(portals) //list of all /obj/effect/portal
|
||||
GLOBAL_LIST_EMPTY(airlocks) //list of all airlocks
|
||||
GLOBAL_LIST_EMPTY(mechas_list) //list of all mechs. Used by hostile mobs target tracking.
|
||||
GLOBAL_LIST_EMPTY(shuttle_caller_list) //list of all communication consoles and AIs, for automatic shuttle calls when there are none.
|
||||
GLOBAL_LIST_EMPTY(machines) //NOTE: this is a list of ALL machines now. The processing machines list is SSmachine.processing !
|
||||
GLOBAL_LIST_EMPTY(syndicate_shuttle_boards) //important to keep track of for managing nukeops war declarations.
|
||||
GLOBAL_LIST_EMPTY(navbeacons) //list of all bot nagivation beacons, used for patrolling.
|
||||
GLOBAL_LIST_EMPTY(teleportbeacons) //list of all tracking beacons used by teleporters
|
||||
GLOBAL_LIST_EMPTY(deliverybeacons) //list of all MULEbot delivery beacons.
|
||||
GLOBAL_LIST_EMPTY(deliverybeacontags) //list of all tags associated with delivery beacons.
|
||||
GLOBAL_LIST_EMPTY(nuke_list)
|
||||
GLOBAL_LIST_EMPTY(alarmdisplay) //list of all machines or programs that can display station alerts
|
||||
GLOBAL_LIST_EMPTY(singularities) //list of all singularities on the station (actually technically all engines)
|
||||
|
||||
var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions
|
||||
var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff
|
||||
var/global/list/materials_list = list() //list of all /datum/material datums indexed by material id.
|
||||
var/global/list/tech_list = list() //list of all /datum/tech datums indexed by id.
|
||||
var/global/list/surgeries_list = list() //list of all surgeries by name, associated with their path.
|
||||
var/global/list/crafting_recipes = list() //list of all table craft recipes
|
||||
var/global/list/rcd_list = list() //list of Rapid Construction Devices.
|
||||
var/global/list/apcs_list = list() //list of all Area Power Controller machines, seperate from machines for powernet speeeeeeed.
|
||||
var/global/list/tracked_implants = list() //list of all current implants that are tracked to work out what sort of trek everyone is on. Sadly not on lavaworld not implemented...
|
||||
var/global/list/tracked_chem_implants = list() //list of implants the prisoner console can track and send inject commands too
|
||||
var/global/list/poi_list = list() //list of points of interest for observe/follow
|
||||
var/global/list/pinpointer_list = list() //list of all pinpointers. Used to change stuff they are pointing to all at once.
|
||||
var/global/list/zombie_infection_list = list() // A list of all zombie_infection organs, for any mass "animation"
|
||||
var/global/list/meteor_list = list() // List of all meteors.
|
||||
var/global/list/active_jammers = list() // List of active radio jammers
|
||||
GLOBAL_LIST(chemical_reactions_list) //list of all /datum/chemical_reaction datums. Used during chemical reactions
|
||||
GLOBAL_LIST(chemical_reagents_list) //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff
|
||||
GLOBAL_LIST_EMPTY(materials_list) //list of all /datum/material datums indexed by material id.
|
||||
GLOBAL_LIST_EMPTY(tech_list) //list of all /datum/tech datums indexed by id.
|
||||
GLOBAL_LIST_EMPTY(surgeries_list) //list of all surgeries by name, associated with their path.
|
||||
GLOBAL_LIST_EMPTY(crafting_recipes) //list of all table craft recipes
|
||||
GLOBAL_LIST_EMPTY(rcd_list) //list of Rapid Construction Devices.
|
||||
GLOBAL_LIST_EMPTY(apcs_list) //list of all Area Power Controller machines, seperate from machines for powernet speeeeeeed.
|
||||
GLOBAL_LIST_EMPTY(tracked_implants) //list of all current implants that are tracked to work out what sort of trek everyone is on. Sadly not on lavaworld not implemented...
|
||||
GLOBAL_LIST_EMPTY(tracked_chem_implants) //list of implants the prisoner console can track and send inject commands too
|
||||
GLOBAL_LIST_EMPTY(poi_list) //list of points of interest for observe/follow
|
||||
GLOBAL_LIST_EMPTY(pinpointer_list) //list of all pinpointers. Used to change stuff they are pointing to all at once.
|
||||
GLOBAL_LIST_EMPTY(zombie_infection_list) // A list of all zombie_infection organs, for any mass "animation"
|
||||
GLOBAL_LIST_EMPTY(meteor_list) // List of all meteors.
|
||||
GLOBAL_LIST_EMPTY(active_jammers) // List of active radio jammers
|
||||
GLOBAL_LIST_EMPTY(ladders)
|
||||
|
||||
GLOBAL_LIST_EMPTY(wire_color_directory)
|
||||
GLOBAL_LIST_EMPTY(wire_name_directory)
|
||||
@@ -4,5 +4,6 @@
|
||||
#define POLL_IGNORE_SENTIENCE_POTION "sentience_potion"
|
||||
#define POLL_IGNORE_POSSESSED_BLADE "possessed_blade"
|
||||
#define POLL_IGNORE_ALIEN_LARVA "alien_larva"
|
||||
#define POLL_IGNORE_CLOCKWORK_MARAUDER "clockwork_marauder"
|
||||
|
||||
var/list/poll_ignore = list()
|
||||
GLOBAL_LIST_EMPTY(poll_ignore)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
//Note: typecache can only replace istype if you know for sure the thing is at least a datum.
|
||||
|
||||
var/list/typecache_mob = typecacheof(list(/mob))
|
||||
GLOBAL_LIST_INIT(typecache_mob, typecacheof(list(/mob)))
|
||||
|
||||
|
||||
|
||||
|
||||
+25
-14
@@ -1,17 +1,28 @@
|
||||
var/diary = null
|
||||
var/runtime_diary = null
|
||||
var/diaryofmeanpeople = null
|
||||
var/href_logfile = null
|
||||
GLOBAL_VAR(diary)
|
||||
GLOBAL_PROTECT(diary)
|
||||
GLOBAL_VAR(runtime_diary)
|
||||
GLOBAL_PROTECT(runtime_diary)
|
||||
GLOBAL_VAR(diaryofmeanpeople)
|
||||
GLOBAL_PROTECT(diaryofmeanpeople)
|
||||
GLOBAL_VAR(href_logfile)
|
||||
GLOBAL_PROTECT(href_logfile)
|
||||
|
||||
var/list/bombers = list( )
|
||||
var/list/admin_log = list ( )
|
||||
var/list/lastsignalers = list( ) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]"
|
||||
var/list/lawchanges = list( ) //Stores who uploaded laws to which silicon-based lifeform, and what the law was
|
||||
GLOBAL_LIST_EMPTY(bombers)
|
||||
GLOBAL_PROTECT(bombers)
|
||||
GLOBAL_LIST_EMPTY(admin_log)
|
||||
GLOBAL_PROTECT(admin_log)
|
||||
GLOBAL_LIST_EMPTY(lastsignalers) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]"
|
||||
GLOBAL_PROTECT(lastsignalers)
|
||||
GLOBAL_LIST_EMPTY(lawchanges) //Stores who uploaded laws to which silicon-based lifeform, and what the law was
|
||||
GLOBAL_PROTECT(lawchanges)
|
||||
|
||||
var/list/combatlog = list()
|
||||
var/list/IClog = list()
|
||||
var/list/OOClog = list()
|
||||
var/list/adminlog = list()
|
||||
var/list/mentorlog = list ()
|
||||
GLOBAL_LIST_EMPTY(combatlog)
|
||||
GLOBAL_PROTECT(combatlog)
|
||||
GLOBAL_LIST_EMPTY(IClog)
|
||||
GLOBAL_PROTECT(IClog)
|
||||
GLOBAL_LIST_EMPTY(OOClog)
|
||||
GLOBAL_PROTECT(OOClog)
|
||||
GLOBAL_LIST_EMPTY(adminlog)
|
||||
GLOBAL_PROTECT(adminlog)
|
||||
|
||||
var/list/active_turfs_startlist = list()
|
||||
GLOBAL_LIST_EMPTY(active_turfs_startlist)
|
||||
@@ -1,9 +1,9 @@
|
||||
var/admin_notice = "" // Admin notice that all clients see when joining the server
|
||||
GLOBAL_VAR_INIT(admin_notice, "") // Admin notice that all clients see when joining the server
|
||||
|
||||
var/timezoneOffset = 0 // The difference betwen midnight (of the host computer) and 0 world.ticks.
|
||||
GLOBAL_VAR_INIT(timezoneOffset, 0) // The difference betwen midnight (of the host computer) and 0 world.ticks.
|
||||
|
||||
// For FTP requests. (i.e. downloading runtime logs.)
|
||||
// However it'd be ok to use for accessing attack logs and such too, which are even laggier.
|
||||
var/fileaccess_timer = 0
|
||||
GLOBAL_VAR_INIT(fileaccess_timer, 0)
|
||||
|
||||
var/TAB = " "
|
||||
GLOBAL_VAR_INIT(TAB, " ")
|
||||
@@ -1,8 +1,6 @@
|
||||
var/global/datum/datacore/data_core = null
|
||||
//var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event
|
||||
//Noble idea, but doing this made GC fail. The gains from waiting on deffering are lost by using del()
|
||||
GLOBAL_DATUM(data_core, /datum/datacore)
|
||||
|
||||
var/CELLRATE = 0.002 // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second)
|
||||
var/CHARGELEVEL = 0.001 // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second)
|
||||
GLOBAL_VAR_INIT(CELLRATE, 0.002) // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second)
|
||||
GLOBAL_VAR_INIT(CHARGELEVEL, 0.001) // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second)
|
||||
|
||||
var/list/powernets = list()
|
||||
GLOBAL_LIST_EMPTY(powernets)
|
||||
@@ -1,5 +1,5 @@
|
||||
//this function places received data into element with specified id.
|
||||
var/const/js_byjax = {"
|
||||
#define js_byjax {"
|
||||
|
||||
function replaceContent() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
@@ -1,4 +1,4 @@
|
||||
var/const/js_dropdowns = {"
|
||||
#define js_dropdowns {"
|
||||
function dropdowns() {
|
||||
var divs = document.getElementsByTagName('div');
|
||||
var headers = new Array();
|
||||
+5
-3
@@ -37,7 +37,7 @@
|
||||
var/turf/pixel_turf = get_turf_pixel(A)
|
||||
var/turf_visible
|
||||
if(pixel_turf)
|
||||
turf_visible = cameranet.checkTurfVis(pixel_turf)
|
||||
turf_visible = GLOB.cameranet.checkTurfVis(pixel_turf)
|
||||
if(!turf_visible)
|
||||
if(istype(loc, /obj/item/device/aicard) && (pixel_turf in view(client.view, loc)))
|
||||
turf_visible = TRUE
|
||||
@@ -45,7 +45,9 @@
|
||||
if (pixel_turf.obscured)
|
||||
log_admin("[key_name_admin(src)] might be running a modified client! (failed checkTurfVis on AI click of [A]([COORD(pixel_turf)])")
|
||||
message_admins("[key_name_admin(src)] might be running a modified client! (failed checkTurfVis on AI click of [A]([ADMIN_COORDJMP(pixel_turf)]))")
|
||||
send2irc_adminless_only("NOCHEAT", "[key_name(src)] might be running a modified client! (failed checkTurfVis on AI click of [A]([COORD(pixel_turf)]))")
|
||||
if(REALTIMEOFDAY >= chnotify + 9000)
|
||||
chnotify = REALTIMEOFDAY
|
||||
send2irc_adminless_only("NOCHEAT", "[key_name(src)] might be running a modified client! (failed checkTurfVis on AI click of [A]([COORD(pixel_turf)]))")
|
||||
return
|
||||
|
||||
var/list/modifiers = params2list(params)
|
||||
@@ -188,4 +190,4 @@
|
||||
//
|
||||
|
||||
/mob/living/silicon/ai/TurfAdjacent(var/turf/T)
|
||||
return (cameranet && cameranet.checkTurfVis(T))
|
||||
return (GLOB.cameranet && GLOB.cameranet.checkTurfVis(T))
|
||||
|
||||
+9
-13
@@ -31,13 +31,16 @@
|
||||
Note that this proc can be overridden, and is in the case of screen objects.
|
||||
*/
|
||||
/atom/Click(location,control,params)
|
||||
usr.ClickOn(src, params)
|
||||
if(initialized)
|
||||
usr.ClickOn(src, params)
|
||||
|
||||
/atom/DblClick(location,control,params)
|
||||
usr.DblClickOn(src,params)
|
||||
if(initialized)
|
||||
usr.DblClickOn(src,params)
|
||||
|
||||
/atom/MouseWheel(delta_x,delta_y,location,control,params)
|
||||
usr.MouseWheelOn(src, delta_x, delta_y, params)
|
||||
if(initialized)
|
||||
usr.MouseWheelOn(src, delta_x, delta_y, params)
|
||||
|
||||
/*
|
||||
Standard mob ClickOn()
|
||||
@@ -114,10 +117,7 @@
|
||||
if(A.ClickAccessible(src, depth=INVENTORY_DEPTH))
|
||||
// No adjacency needed
|
||||
if(W)
|
||||
if(W.pre_attackby(A,src,params))
|
||||
var/resolved = A.attackby(W,src)
|
||||
if(!resolved && A && W)
|
||||
W.afterattack(A,src,1,params) // 1 indicates adjacency
|
||||
melee_item_attack_chain(src, W, A, params)
|
||||
else
|
||||
if(ismob(A))
|
||||
changeNext_move(CLICK_CD_MELEE)
|
||||
@@ -131,11 +131,7 @@
|
||||
if(isturf(A) || isturf(A.loc) || (A.loc && isturf(A.loc.loc)))
|
||||
if(Adjacent(A) || (W && CheckReach(src, A, W.reach))) //Adjacent or reaching attacks
|
||||
if(W)
|
||||
if(W.pre_attackby(A,src,params))
|
||||
// Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example)
|
||||
var/resolved = A.attackby(W,src,params)
|
||||
if(!resolved && A && W)
|
||||
W.afterattack(A,src,1,params) // 1: clicking something Adjacent
|
||||
melee_item_attack_chain(src, W, A, params)
|
||||
else
|
||||
if(ismob(A))
|
||||
changeNext_move(CLICK_CD_MELEE)
|
||||
@@ -163,7 +159,7 @@
|
||||
if(dummy.loc == there.loc)
|
||||
qdel(dummy)
|
||||
return 1
|
||||
if(there.density && dummy in range(1, there)) //For windows and
|
||||
if(there.density && dummy in range(1, there)) //For windows and suchlike
|
||||
qdel(dummy)
|
||||
return 1
|
||||
if(!dummy.Move(T)) //we're blocked!
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user