mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-31 07:57:47 +01:00
Merge branch 'master' into lets_go_rebind_things
This commit is contained in:
+16
-11
@@ -368,17 +368,22 @@ DROP TABLE IF EXISTS `library`;
|
|||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `library` (
|
CREATE TABLE `library` (
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`author` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
|
`author` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_unicode_ci',
|
||||||
`title` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
|
`title` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_unicode_ci',
|
||||||
`content` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
|
`content` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_unicode_ci',
|
||||||
`category` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
|
`ckey` VARCHAR(32) NOT NULL COLLATE 'utf8mb4_unicode_ci',
|
||||||
`ckey` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
|
`reports` MEDIUMTEXT NOT NULL COLLATE 'utf8mb3_general_ci',
|
||||||
`flagged` int(11) NOT NULL,
|
`summary` MEDIUMTEXT NOT NULL COLLATE 'utf8mb3_general_ci',
|
||||||
PRIMARY KEY (`id`),
|
`rating` DOUBLE NULL DEFAULT '0',
|
||||||
KEY `ckey` (`ckey`),
|
`raters` MEDIUMTEXT NOT NULL COLLATE 'utf8mb3_general_ci',
|
||||||
KEY `flagged` (`flagged`)
|
`primary_category` INT(11) NULL DEFAULT '0',
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=4537 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
`secondary_category` INT(11) NOT NULL DEFAULT '0',
|
||||||
|
`tertiary_category` INT(11) NULL DEFAULT '0',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
INDEX `ckey` (`ckey`) USING BTREE,
|
||||||
|
INDEX `flagged` (`reports`(1024)) USING BTREE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|||||||
+25
-4
@@ -1,5 +1,26 @@
|
|||||||
# Updating DB from 37-38
|
# Updates DB from 37 to 38 -Sirryan2002
|
||||||
# Adds player.keybindings (longtext) ~dearmochi
|
# Creates new tables in preparation for library table conversion
|
||||||
|
|
||||||
# Add column to player
|
#Renames old table
|
||||||
ALTER TABLE `player` ADD COLUMN `keybindings` LONGTEXT COLLATE 'utf8mb4_unicode_ci' DEFAULT NULL AFTER `colourblind_mode`;
|
ALTER TABLE library RENAME TO library_old;
|
||||||
|
|
||||||
|
# Create new table to track library books
|
||||||
|
CREATE TABLE `library` (
|
||||||
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`author` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_unicode_ci',
|
||||||
|
`title` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_unicode_ci',
|
||||||
|
`content` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_unicode_ci',
|
||||||
|
`ckey` VARCHAR(32) NULL DEFAULT '' COLLATE 'utf8mb4_unicode_ci',
|
||||||
|
`reports` MEDIUMTEXT NOT NULL COLLATE 'utf8mb3_general_ci',
|
||||||
|
`summary` MEDIUMTEXT NOT NULL COLLATE 'utf8mb3_general_ci',
|
||||||
|
`rating` DOUBLE NULL DEFAULT '0',
|
||||||
|
`raters` MEDIUMTEXT NOT NULL COLLATE 'utf8mb3_general_ci',
|
||||||
|
`primary_category` INT(11) NULL DEFAULT '0',
|
||||||
|
`secondary_category` INT(11) NOT NULL DEFAULT '0',
|
||||||
|
`tertiary_category` INT(11) NULL DEFAULT '0',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
INDEX `ckey` (`ckey`) USING BTREE,
|
||||||
|
INDEX `flagged` (`reports`(1024)) USING BTREE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
# YOU MUST NOW RUN 38-39.py
|
||||||
|
|||||||
@@ -0,0 +1,130 @@
|
|||||||
|
# :wave: hello fellow contributors, this script is brought to you ad-free by -sirryan2002-
|
||||||
|
# In order to run this script on Windows, you need to make sure you have Python **3** installed. Tested on 3.10.4
|
||||||
|
# In addition you must have the mysql-connector-python module installed (can be done through pip :D)
|
||||||
|
# if you do not have that module installed, you cannot run this script
|
||||||
|
|
||||||
|
# To run this, supply the following args in a command shell
|
||||||
|
# python 38-39.py address username password database
|
||||||
|
# Example:
|
||||||
|
# python 38-39.py 127.0.0.1 sirryan2002 myubersecretdbpassword paradise_gamedb
|
||||||
|
|
||||||
|
import json
|
||||||
|
import mysql.connector, argparse
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("address", help="MySQL server address (use localhost for the current computer)")
|
||||||
|
parser.add_argument("username", help="MySQL login username")
|
||||||
|
parser.add_argument("password", help="MySQL login password")
|
||||||
|
parser.add_argument("database", help="Database name")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
db = mysql.connector.connect(host=args.address, user=args.username, passwd=args.password, db=args.database)
|
||||||
|
cursor = db.cursor()
|
||||||
|
print("Connected to {}".format(args.database))
|
||||||
|
#A List of old categories names + the new id number they will be assigned
|
||||||
|
category_name_to_id_map = {
|
||||||
|
"Fiction": 1,
|
||||||
|
"Non-Fiction": 2,
|
||||||
|
"Adult": 0, #0 represents a "removed"/unused category that no longer will be included
|
||||||
|
"Reference": 16,
|
||||||
|
"Religion": 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
cursor.execute("SELECT id, author, title, content, category, ckey FROM library_old")
|
||||||
|
data = cursor.fetchall()
|
||||||
|
|
||||||
|
print("Loaded {} rows from library table...".format(len(data)))
|
||||||
|
|
||||||
|
new_rows = []
|
||||||
|
print("Modifying Categories...")
|
||||||
|
for entry in data:
|
||||||
|
book_id = entry[0]
|
||||||
|
author = entry[1]
|
||||||
|
title = entry[2]
|
||||||
|
content = entry[3]
|
||||||
|
category = entry[4]
|
||||||
|
ckey = entry[5]
|
||||||
|
|
||||||
|
update_entry = False
|
||||||
|
new_entry = [
|
||||||
|
book_id,
|
||||||
|
author,
|
||||||
|
title,
|
||||||
|
content,
|
||||||
|
category,
|
||||||
|
ckey,
|
||||||
|
]
|
||||||
|
if category not in category_name_to_id_map.keys():
|
||||||
|
update_entry = True
|
||||||
|
new_entry[4] = 0
|
||||||
|
print("Corrupted Category Detected: removing \"{}\"...".format(category))
|
||||||
|
else:
|
||||||
|
for cat in category_name_to_id_map.keys():
|
||||||
|
if cat == category:
|
||||||
|
update_entry = True
|
||||||
|
new_entry[4] = category_name_to_id_map[cat]
|
||||||
|
if update_entry:
|
||||||
|
new_rows.append(new_entry)
|
||||||
|
else:
|
||||||
|
print("ERROR: Book {} did not have its category changed".format(book_id))
|
||||||
|
|
||||||
|
print("Modifying Content...")
|
||||||
|
for entry in new_rows:
|
||||||
|
new_content = json.dumps([entry[3]])
|
||||||
|
entry[3] = new_content
|
||||||
|
#here we're turning our content string into a JSON list
|
||||||
|
print("Modified Content...")
|
||||||
|
print("Vetting Book Titles & Contents...")
|
||||||
|
duplicate_books = 0
|
||||||
|
programmatic_books = 0
|
||||||
|
notitle_books = 0
|
||||||
|
short_books = 0
|
||||||
|
for entry in new_rows:
|
||||||
|
if "Print Job" in entry[2]:
|
||||||
|
print("Book {} had \"Print Job\" in title: removing record...".format(entry[0]))
|
||||||
|
notitle_books += 1
|
||||||
|
new_rows.remove(entry)
|
||||||
|
continue
|
||||||
|
if "Standard Operating Procedure" in entry[2] or "<iframe" in entry[3]:
|
||||||
|
print("Book {} named \"{}\" is programattic: removing record...".format(entry[0], entry[2]))
|
||||||
|
programmatic_books += 1
|
||||||
|
new_rows.remove(entry)
|
||||||
|
continue
|
||||||
|
if len(entry[3]) < 150:
|
||||||
|
print("Book {} is less than 150 characters: removing record...".format(entry[0]))
|
||||||
|
short_books += 1
|
||||||
|
new_rows.remove(entry)
|
||||||
|
continue
|
||||||
|
for book in new_rows:
|
||||||
|
if entry[2] == book[2] and entry != book:
|
||||||
|
if entry[3] == book[3]:
|
||||||
|
print("Book {} and Book {} have the same title and content: removing record {}...".format(entry[0],book[0],book[0]))
|
||||||
|
new_rows.remove(book)
|
||||||
|
duplicate_books += 1
|
||||||
|
#here we're turning our content string into a JSON list
|
||||||
|
print("All Books vetted, books marked for deletion report:")
|
||||||
|
print("Duplicate Books: {}".format(duplicate_books))
|
||||||
|
print("No Title Books: {}".format(notitle_books))
|
||||||
|
print("Programmatic Books: {}".format(programmatic_books))
|
||||||
|
print("Short Books: {}".format(short_books))
|
||||||
|
print("Generated {} rows to insert into new table".format(len(new_rows)))
|
||||||
|
|
||||||
|
if len(new_rows) == 0:
|
||||||
|
print("ERROR: No rows have been modfied, no update will be commited")
|
||||||
|
|
||||||
|
|
||||||
|
print("Inserting...")
|
||||||
|
for row in new_rows:
|
||||||
|
params = [row[1], row[2], row[3], "", row[4], row[5], "", ""] #empty strings since some columns don't have default vals
|
||||||
|
sql_query = "INSERT INTO library (author, title, content, summary, primary_category, ckey, reports, raters) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"
|
||||||
|
cursor.execute(sql_query, params)
|
||||||
|
|
||||||
|
cursor.close()
|
||||||
|
print("Saving...")
|
||||||
|
db.commit()
|
||||||
|
print("Done!")
|
||||||
|
|
||||||
|
#this is a script not a library
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Updates DB from 39 to 40 -Sirryan2002
|
||||||
|
# Clears out old table
|
||||||
|
DROP TABLE `library_old`;
|
||||||
@@ -10,4 +10,4 @@ Files are designed to be run sequentialy, moving from version 2, to version 4 wo
|
|||||||
|
|
||||||
- 15-19 is considered as one version, but split into multiple files for simplicity and correct ordering. You MUST run them in order, and all of them between the game, or stuff will break horribly.
|
- 15-19 is considered as one version, but split into multiple files for simplicity and correct ordering. You MUST run them in order, and all of them between the game, or stuff will break horribly.
|
||||||
|
|
||||||
- The same applise for 30-33
|
- The same applies for 30-33 and 38-40
|
||||||
|
|||||||
+49
-103
@@ -2527,7 +2527,7 @@
|
|||||||
/area/security/checkpoint2)
|
/area/security/checkpoint2)
|
||||||
"apn" = (
|
"apn" = (
|
||||||
/obj/structure/table/reinforced,
|
/obj/structure/table/reinforced,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/item/radio,
|
/obj/item/radio,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
dir = 5;
|
dir = 5;
|
||||||
@@ -11354,7 +11354,7 @@
|
|||||||
/area/security/permabrig)
|
/area/security/permabrig)
|
||||||
"aJC" = (
|
"aJC" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/book/manual/chef_recipes,
|
/obj/item/book/manual/wiki/chef_recipes,
|
||||||
/obj/item/clothing/head/chefhat,
|
/obj/item/clothing/head/chefhat,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
icon_state = "neutralfull"
|
icon_state = "neutralfull"
|
||||||
@@ -11955,7 +11955,7 @@
|
|||||||
pixel_y = 32
|
pixel_y = 32
|
||||||
},
|
},
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/machinery/computer/library/public,
|
/obj/machinery/computer/library,
|
||||||
/obj/effect/decal/cleanable/dirt,
|
/obj/effect/decal/cleanable/dirt,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
dir = 1;
|
dir = 1;
|
||||||
@@ -20718,7 +20718,7 @@
|
|||||||
/obj/structure/rack,
|
/obj/structure/rack,
|
||||||
/obj/item/stack/packageWrap,
|
/obj/item/stack/packageWrap,
|
||||||
/obj/item/hand_labeler,
|
/obj/item/hand_labeler,
|
||||||
/obj/item/book/manual/chef_recipes,
|
/obj/item/book/manual/wiki/chef_recipes,
|
||||||
/obj/effect/decal/warning_stripes/yellow/hollow,
|
/obj/effect/decal/warning_stripes/yellow/hollow,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
icon_state = "white"
|
icon_state = "white"
|
||||||
@@ -23665,7 +23665,7 @@
|
|||||||
"bkr" = (
|
"bkr" = (
|
||||||
/obj/structure/table/wood,
|
/obj/structure/table/wood,
|
||||||
/obj/item/storage/secure/briefcase,
|
/obj/item/storage/secure/briefcase,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
dir = 1;
|
dir = 1;
|
||||||
icon_state = "vault"
|
icon_state = "vault"
|
||||||
@@ -25691,10 +25691,6 @@
|
|||||||
d2 = 8;
|
d2 = 8;
|
||||||
icon_state = "4-8"
|
icon_state = "4-8"
|
||||||
},
|
},
|
||||||
/obj/machinery/door/airlock/maintenance{
|
|
||||||
name = "Mining Maintenance";
|
|
||||||
req_access_txt = "48"
|
|
||||||
},
|
|
||||||
/obj/structure/disposalpipe/segment{
|
/obj/structure/disposalpipe/segment{
|
||||||
dir = 4
|
dir = 4
|
||||||
},
|
},
|
||||||
@@ -34970,7 +34966,7 @@
|
|||||||
/area/security/detectives_office)
|
/area/security/detectives_office)
|
||||||
"bHL" = (
|
"bHL" = (
|
||||||
/obj/structure/table/wood,
|
/obj/structure/table/wood,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/item/camera{
|
/obj/item/camera{
|
||||||
desc = "A one use - polaroid camera. 30 photos left.";
|
desc = "A one use - polaroid camera. 30 photos left.";
|
||||||
name = "detectives camera";
|
name = "detectives camera";
|
||||||
@@ -36221,9 +36217,9 @@
|
|||||||
/area/storage/tech)
|
/area/storage/tech)
|
||||||
"bKA" = (
|
"bKA" = (
|
||||||
/obj/structure/rack,
|
/obj/structure/rack,
|
||||||
/obj/item/book/manual/engineering_hacking,
|
/obj/item/book/manual/wiki/hacking,
|
||||||
/obj/item/book/manual/engineering_guide,
|
/obj/item/book/manual/wiki/engineering_guide,
|
||||||
/obj/item/book/manual/engineering_construction,
|
/obj/item/book/manual/wiki/engineering_construction,
|
||||||
/obj/machinery/status_display{
|
/obj/machinery/status_display{
|
||||||
pixel_x = -32
|
pixel_x = -32
|
||||||
},
|
},
|
||||||
@@ -38027,7 +38023,7 @@
|
|||||||
/area/hallway/primary/central)
|
/area/hallway/primary/central)
|
||||||
"bOE" = (
|
"bOE" = (
|
||||||
/obj/structure/table/wood,
|
/obj/structure/table/wood,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/structure/cable{
|
/obj/structure/cable{
|
||||||
d1 = 1;
|
d1 = 1;
|
||||||
d2 = 8;
|
d2 = 8;
|
||||||
@@ -43405,15 +43401,15 @@
|
|||||||
/area/ntrep)
|
/area/ntrep)
|
||||||
"cae" = (
|
"cae" = (
|
||||||
/obj/structure/bookcase,
|
/obj/structure/bookcase,
|
||||||
/obj/item/book/manual/sop_command,
|
/obj/item/book/manual/wiki/sop_command,
|
||||||
/obj/item/book/manual/sop_engineering,
|
/obj/item/book/manual/wiki/sop_engineering,
|
||||||
/obj/item/book/manual/sop_general,
|
/obj/item/book/manual/wiki/sop_general,
|
||||||
/obj/item/book/manual/sop_legal,
|
/obj/item/book/manual/wiki/sop_legal,
|
||||||
/obj/item/book/manual/sop_medical,
|
/obj/item/book/manual/wiki/sop_medical,
|
||||||
/obj/item/book/manual/sop_science,
|
/obj/item/book/manual/wiki/sop_science,
|
||||||
/obj/item/book/manual/sop_security,
|
/obj/item/book/manual/wiki/sop_security,
|
||||||
/obj/item/book/manual/sop_service,
|
/obj/item/book/manual/wiki/sop_service,
|
||||||
/obj/item/book/manual/sop_supply,
|
/obj/item/book/manual/wiki/sop_supply,
|
||||||
/turf/simulated/floor/wood,
|
/turf/simulated/floor/wood,
|
||||||
/area/ntrep)
|
/area/ntrep)
|
||||||
"caf" = (
|
"caf" = (
|
||||||
@@ -43622,8 +43618,8 @@
|
|||||||
/area/crew_quarters/courtroom)
|
/area/crew_quarters/courtroom)
|
||||||
"caG" = (
|
"caG" = (
|
||||||
/obj/structure/table/wood,
|
/obj/structure/table/wood,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/item/taperecorder,
|
/obj/item/taperecorder,
|
||||||
/obj/item/clothing/glasses/sunglasses,
|
/obj/item/clothing/glasses/sunglasses,
|
||||||
/obj/structure/extinguisher_cabinet{
|
/obj/structure/extinguisher_cabinet{
|
||||||
@@ -45125,7 +45121,7 @@
|
|||||||
pixel_x = 4;
|
pixel_x = 4;
|
||||||
pixel_y = 6
|
pixel_y = 6
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/sop_command,
|
/obj/item/book/manual/wiki/sop_command,
|
||||||
/obj/item/paper/blueshield,
|
/obj/item/paper/blueshield,
|
||||||
/turf/simulated/floor/carpet/blue,
|
/turf/simulated/floor/carpet/blue,
|
||||||
/area/blueshield)
|
/area/blueshield)
|
||||||
@@ -46597,7 +46593,7 @@
|
|||||||
"chK" = (
|
"chK" = (
|
||||||
/obj/structure/table/reinforced,
|
/obj/structure/table/reinforced,
|
||||||
/obj/item/pen/multi/gold,
|
/obj/item/pen/multi/gold,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/machinery/light,
|
/obj/machinery/light,
|
||||||
/obj/item/gavelhammer,
|
/obj/item/gavelhammer,
|
||||||
/obj/item/gavelblock,
|
/obj/item/gavelblock,
|
||||||
@@ -46759,7 +46755,7 @@
|
|||||||
/area/space/nearstation)
|
/area/space/nearstation)
|
||||||
"cig" = (
|
"cig" = (
|
||||||
/obj/structure/table/reinforced,
|
/obj/structure/table/reinforced,
|
||||||
/obj/item/book/manual/engineering_guide{
|
/obj/item/book/manual/wiki/engineering_guide{
|
||||||
pixel_x = 4;
|
pixel_x = 4;
|
||||||
pixel_y = 4
|
pixel_y = 4
|
||||||
},
|
},
|
||||||
@@ -46771,11 +46767,11 @@
|
|||||||
/area/engine/engineering)
|
/area/engine/engineering)
|
||||||
"cih" = (
|
"cih" = (
|
||||||
/obj/structure/table/reinforced,
|
/obj/structure/table/reinforced,
|
||||||
/obj/item/book/manual/engineering_hacking{
|
/obj/item/book/manual/wiki/hacking{
|
||||||
pixel_x = 6;
|
pixel_x = 6;
|
||||||
pixel_y = 6
|
pixel_y = 6
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/engineering_construction{
|
/obj/item/book/manual/wiki/engineering_construction{
|
||||||
pixel_x = 3;
|
pixel_x = 3;
|
||||||
pixel_y = 3
|
pixel_y = 3
|
||||||
},
|
},
|
||||||
@@ -47302,7 +47298,7 @@
|
|||||||
/area/maintenance/starboard)
|
/area/maintenance/starboard)
|
||||||
"cjo" = (
|
"cjo" = (
|
||||||
/obj/structure/rack,
|
/obj/structure/rack,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/effect/spawner/lootdrop/maintenance,
|
/obj/effect/spawner/lootdrop/maintenance,
|
||||||
/turf/simulated/floor/plating,
|
/turf/simulated/floor/plating,
|
||||||
/area/maintenance/starboard2)
|
/area/maintenance/starboard2)
|
||||||
@@ -49031,7 +49027,7 @@
|
|||||||
/area/library)
|
/area/library)
|
||||||
"cnn" = (
|
"cnn" = (
|
||||||
/obj/structure/table/wood,
|
/obj/structure/table/wood,
|
||||||
/obj/machinery/computer/library/checkout,
|
/obj/machinery/computer/library,
|
||||||
/obj/machinery/newscaster{
|
/obj/machinery/newscaster{
|
||||||
name = "east bump";
|
name = "east bump";
|
||||||
pixel_x = 32
|
pixel_x = 32
|
||||||
@@ -49532,7 +49528,6 @@
|
|||||||
/obj/machinery/status_display{
|
/obj/machinery/status_display{
|
||||||
pixel_x = 32
|
pixel_x = 32
|
||||||
},
|
},
|
||||||
/obj/machinery/libraryscanner,
|
|
||||||
/turf/simulated/floor/plasteel/grimy,
|
/turf/simulated/floor/plasteel/grimy,
|
||||||
/area/library)
|
/area/library)
|
||||||
"coA" = (
|
"coA" = (
|
||||||
@@ -49744,7 +49739,7 @@
|
|||||||
/obj/item/clothing/under/rank/security,
|
/obj/item/clothing/under/rank/security,
|
||||||
/obj/item/clothing/under/rank/security,
|
/obj/item/clothing/under/rank/security,
|
||||||
/obj/item/grenade/barrier,
|
/obj/item/grenade/barrier,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/effect/decal/cleanable/cobweb2,
|
/obj/effect/decal/cleanable/cobweb2,
|
||||||
/turf/simulated/floor/plating,
|
/turf/simulated/floor/plating,
|
||||||
/area/maintenance/starboard2)
|
/area/maintenance/starboard2)
|
||||||
@@ -54202,15 +54197,15 @@
|
|||||||
/area/crew_quarters/locker)
|
/area/crew_quarters/locker)
|
||||||
"cyL" = (
|
"cyL" = (
|
||||||
/obj/structure/bookcase,
|
/obj/structure/bookcase,
|
||||||
/obj/item/book/manual/sop_legal,
|
/obj/item/book/manual/wiki/sop_legal,
|
||||||
/obj/item/book/manual/sop_command,
|
/obj/item/book/manual/wiki/sop_command,
|
||||||
/obj/item/book/manual/sop_engineering,
|
/obj/item/book/manual/wiki/sop_engineering,
|
||||||
/obj/item/book/manual/sop_general,
|
/obj/item/book/manual/wiki/sop_general,
|
||||||
/obj/item/book/manual/sop_medical,
|
/obj/item/book/manual/wiki/sop_medical,
|
||||||
/obj/item/book/manual/sop_science,
|
/obj/item/book/manual/wiki/sop_science,
|
||||||
/obj/item/book/manual/sop_security,
|
/obj/item/book/manual/wiki/sop_security,
|
||||||
/obj/item/book/manual/sop_service,
|
/obj/item/book/manual/wiki/sop_service,
|
||||||
/obj/item/book/manual/sop_supply,
|
/obj/item/book/manual/wiki/sop_supply,
|
||||||
/turf/simulated/floor/wood,
|
/turf/simulated/floor/wood,
|
||||||
/area/lawoffice)
|
/area/lawoffice)
|
||||||
"cyM" = (
|
"cyM" = (
|
||||||
@@ -59244,7 +59239,7 @@
|
|||||||
/area/maintenance/port)
|
/area/maintenance/port)
|
||||||
"cKg" = (
|
"cKg" = (
|
||||||
/obj/structure/rack,
|
/obj/structure/rack,
|
||||||
/obj/item/book/manual/engineering_guide,
|
/obj/item/book/manual/wiki/engineering_guide,
|
||||||
/obj/effect/spawner/lootdrop/maintenance,
|
/obj/effect/spawner/lootdrop/maintenance,
|
||||||
/turf/simulated/floor/plasteel,
|
/turf/simulated/floor/plasteel,
|
||||||
/area/maintenance/port)
|
/area/maintenance/port)
|
||||||
@@ -65422,7 +65417,6 @@
|
|||||||
/area/toxins/lab)
|
/area/toxins/lab)
|
||||||
"cYr" = (
|
"cYr" = (
|
||||||
/obj/machinery/r_n_d/circuit_imprinter,
|
/obj/machinery/r_n_d/circuit_imprinter,
|
||||||
/obj/item/reagent_containers/glass/beaker/sulphuric,
|
|
||||||
/obj/effect/decal/warning_stripes/southeast,
|
/obj/effect/decal/warning_stripes/southeast,
|
||||||
/turf/simulated/floor/plasteel,
|
/turf/simulated/floor/plasteel,
|
||||||
/area/toxins/lab)
|
/area/toxins/lab)
|
||||||
@@ -65550,8 +65544,6 @@
|
|||||||
/area/medical/medbay)
|
/area/medical/medbay)
|
||||||
"cYN" = (
|
"cYN" = (
|
||||||
/obj/structure/closet/wardrobe/coroner,
|
/obj/structure/closet/wardrobe/coroner,
|
||||||
/obj/item/reagent_containers/glass/bottle/reagent/formaldehyde,
|
|
||||||
/obj/item/reagent_containers/dropper,
|
|
||||||
/turf/simulated/floor/plasteel/dark,
|
/turf/simulated/floor/plasteel/dark,
|
||||||
/area/medical/morgue)
|
/area/medical/morgue)
|
||||||
"cYO" = (
|
"cYO" = (
|
||||||
@@ -69659,7 +69651,7 @@
|
|||||||
/area/toxins/explab)
|
/area/toxins/explab)
|
||||||
"dhL" = (
|
"dhL" = (
|
||||||
/obj/structure/table/reinforced,
|
/obj/structure/table/reinforced,
|
||||||
/obj/item/book/manual/experimentor,
|
/obj/item/book/manual/wiki/experimentor,
|
||||||
/obj/structure/cable{
|
/obj/structure/cable{
|
||||||
d1 = 4;
|
d1 = 4;
|
||||||
d2 = 8;
|
d2 = 8;
|
||||||
@@ -72081,7 +72073,7 @@
|
|||||||
/area/maintenance/port2)
|
/area/maintenance/port2)
|
||||||
"dmW" = (
|
"dmW" = (
|
||||||
/obj/structure/rack,
|
/obj/structure/rack,
|
||||||
/obj/item/book/manual/robotics_cyborgs,
|
/obj/item/book/manual/wiki/robotics_cyborgs,
|
||||||
/obj/item/storage/belt/utility,
|
/obj/item/storage/belt/utility,
|
||||||
/obj/item/reagent_containers/glass/beaker/large,
|
/obj/item/reagent_containers/glass/beaker/large,
|
||||||
/obj/effect/decal/warning_stripes/yellow,
|
/obj/effect/decal/warning_stripes/yellow,
|
||||||
@@ -74376,7 +74368,6 @@
|
|||||||
/obj/machinery/atmospherics/unary/vent_pump/on{
|
/obj/machinery/atmospherics/unary/vent_pump/on{
|
||||||
dir = 4
|
dir = 4
|
||||||
},
|
},
|
||||||
/obj/item/clothing/glasses/welding/superior,
|
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
dir = 1;
|
dir = 1;
|
||||||
icon_state = "whitepurplecorner"
|
icon_state = "whitepurplecorner"
|
||||||
@@ -74547,7 +74538,7 @@
|
|||||||
/obj/machinery/light{
|
/obj/machinery/light{
|
||||||
dir = 1
|
dir = 1
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/robotics_cyborgs,
|
/obj/item/book/manual/wiki/robotics_cyborgs,
|
||||||
/obj/item/book/manual/ripley_build_and_repair,
|
/obj/item/book/manual/ripley_build_and_repair,
|
||||||
/obj/item/storage/belt/utility/full,
|
/obj/item/storage/belt/utility/full,
|
||||||
/obj/item/circuitboard/mecha/ripley/main,
|
/obj/item/circuitboard/mecha/ripley/main,
|
||||||
@@ -80409,9 +80400,6 @@
|
|||||||
pixel_y = -28
|
pixel_y = -28
|
||||||
},
|
},
|
||||||
/obj/structure/closet/secure_closet/roboticist,
|
/obj/structure/closet/secure_closet/roboticist,
|
||||||
/obj/item/radio/headset/headset_sci{
|
|
||||||
pixel_x = -3
|
|
||||||
},
|
|
||||||
/obj/effect/decal/warning_stripes/yellow/hollow,
|
/obj/effect/decal/warning_stripes/yellow/hollow,
|
||||||
/turf/simulated/floor/plasteel/white,
|
/turf/simulated/floor/plasteel/white,
|
||||||
/area/assembly/robotics)
|
/area/assembly/robotics)
|
||||||
@@ -83892,7 +83880,6 @@
|
|||||||
/area/security/prison/cell_block)
|
/area/security/prison/cell_block)
|
||||||
"dOD" = (
|
"dOD" = (
|
||||||
/obj/machinery/r_n_d/circuit_imprinter,
|
/obj/machinery/r_n_d/circuit_imprinter,
|
||||||
/obj/item/reagent_containers/glass/beaker/sulphuric,
|
|
||||||
/obj/structure/window/reinforced/polarized,
|
/obj/structure/window/reinforced/polarized,
|
||||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||||
dir = 4
|
dir = 4
|
||||||
@@ -88523,7 +88510,7 @@
|
|||||||
"fqu" = (
|
"fqu" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/folder/red,
|
/obj/item/folder/red,
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_x = -3;
|
pixel_x = -3;
|
||||||
pixel_y = 5
|
pixel_y = 5
|
||||||
},
|
},
|
||||||
@@ -88532,17 +88519,6 @@
|
|||||||
icon_state = "dark"
|
icon_state = "dark"
|
||||||
},
|
},
|
||||||
/area/security/main)
|
/area/security/main)
|
||||||
"fqy" = (
|
|
||||||
/obj/structure/cable{
|
|
||||||
d1 = 1;
|
|
||||||
d2 = 2;
|
|
||||||
icon_state = "1-2"
|
|
||||||
},
|
|
||||||
/obj/effect/landmark/lightsout,
|
|
||||||
/turf/simulated/floor/plasteel{
|
|
||||||
icon_state = "neutralfull"
|
|
||||||
},
|
|
||||||
/area/crew_quarters/sleep)
|
|
||||||
"frp" = (
|
"frp" = (
|
||||||
/obj/structure/flora/ausbushes/sunnybush,
|
/obj/structure/flora/ausbushes/sunnybush,
|
||||||
/obj/structure/flora/ausbushes/lavendergrass,
|
/obj/structure/flora/ausbushes/lavendergrass,
|
||||||
@@ -90975,27 +90951,6 @@
|
|||||||
icon_state = "neutralcorner"
|
icon_state = "neutralcorner"
|
||||||
},
|
},
|
||||||
/area/hallway/primary/central)
|
/area/hallway/primary/central)
|
||||||
"kGa" = (
|
|
||||||
/obj/structure/cable{
|
|
||||||
d1 = 1;
|
|
||||||
d2 = 2;
|
|
||||||
icon_state = "1-2"
|
|
||||||
},
|
|
||||||
/obj/structure/cable{
|
|
||||||
d1 = 2;
|
|
||||||
d2 = 8;
|
|
||||||
icon_state = "2-8"
|
|
||||||
},
|
|
||||||
/obj/machinery/light_switch{
|
|
||||||
dir = 4;
|
|
||||||
name = "custom placement";
|
|
||||||
pixel_x = -24;
|
|
||||||
pixel_y = -6
|
|
||||||
},
|
|
||||||
/turf/simulated/floor/plasteel{
|
|
||||||
icon_state = "neutralfull"
|
|
||||||
},
|
|
||||||
/area/hallway/primary/central)
|
|
||||||
"kGF" = (
|
"kGF" = (
|
||||||
/obj/machinery/door/poddoor/shutters{
|
/obj/machinery/door/poddoor/shutters{
|
||||||
dir = 2;
|
dir = 2;
|
||||||
@@ -91506,15 +91461,6 @@
|
|||||||
},
|
},
|
||||||
/turf/simulated/floor/plasteel/white,
|
/turf/simulated/floor/plasteel/white,
|
||||||
/area/toxins/explab)
|
/area/toxins/explab)
|
||||||
"lYs" = (
|
|
||||||
/obj/machinery/light_switch{
|
|
||||||
dir = 4;
|
|
||||||
name = "custom placement";
|
|
||||||
pixel_x = -24;
|
|
||||||
pixel_y = -6
|
|
||||||
},
|
|
||||||
/turf/simulated/floor/wood,
|
|
||||||
/area/crew_quarters/captain)
|
|
||||||
"lZw" = (
|
"lZw" = (
|
||||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
@@ -94428,7 +94374,7 @@
|
|||||||
dir = 1;
|
dir = 1;
|
||||||
icon_state = "whitebluecorner"
|
icon_state = "whitebluecorner"
|
||||||
},
|
},
|
||||||
/area/crew_quarters/sleep)
|
/area/hallway/primary/central)
|
||||||
"rIy" = (
|
"rIy" = (
|
||||||
/obj/machinery/door/airlock/research{
|
/obj/machinery/door/airlock/research{
|
||||||
name = "Research Break Room"
|
name = "Research Break Room"
|
||||||
@@ -96257,7 +96203,7 @@
|
|||||||
"vFf" = (
|
"vFf" = (
|
||||||
/obj/structure/table/wood,
|
/obj/structure/table/wood,
|
||||||
/obj/item/crowbar/red,
|
/obj/item/crowbar/red,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/item/book/manual/detective,
|
/obj/item/book/manual/detective,
|
||||||
/obj/item/camera{
|
/obj/item/camera{
|
||||||
desc = "A one use - polaroid camera. 30 photos left.";
|
desc = "A one use - polaroid camera. 30 photos left.";
|
||||||
@@ -96444,7 +96390,7 @@
|
|||||||
/area/maintenance/fsmaint)
|
/area/maintenance/fsmaint)
|
||||||
"weF" = (
|
"weF" = (
|
||||||
/obj/structure/table/reinforced,
|
/obj/structure/table/reinforced,
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_x = -3;
|
pixel_x = -3;
|
||||||
pixel_y = 5
|
pixel_y = 5
|
||||||
},
|
},
|
||||||
@@ -132395,7 +132341,7 @@ bSi
|
|||||||
bva
|
bva
|
||||||
bva
|
bva
|
||||||
bva
|
bva
|
||||||
kGa
|
byP
|
||||||
byP
|
byP
|
||||||
bCf
|
bCf
|
||||||
bva
|
bva
|
||||||
@@ -138828,7 +138774,7 @@ bFN
|
|||||||
bWX
|
bWX
|
||||||
bJj
|
bJj
|
||||||
bLc
|
bLc
|
||||||
lYs
|
bLc
|
||||||
bOV
|
bOV
|
||||||
bWX
|
bWX
|
||||||
bWX
|
bWX
|
||||||
@@ -141681,7 +141627,7 @@ bva
|
|||||||
bva
|
bva
|
||||||
bva
|
bva
|
||||||
bva
|
bva
|
||||||
fqy
|
cDd
|
||||||
bva
|
bva
|
||||||
bva
|
bva
|
||||||
cGD
|
cGD
|
||||||
|
|||||||
@@ -485,7 +485,7 @@
|
|||||||
pixel_x = 6;
|
pixel_x = 6;
|
||||||
pixel_y = 8
|
pixel_y = 8
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_x = 7
|
pixel_x = 7
|
||||||
},
|
},
|
||||||
/obj/item/pen/multi/gold{
|
/obj/item/pen/multi/gold{
|
||||||
@@ -2794,7 +2794,7 @@
|
|||||||
icon_state = "right";
|
icon_state = "right";
|
||||||
name = "windoor"
|
name = "windoor"
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/engineering_hacking,
|
/obj/item/book/manual/wiki/hacking,
|
||||||
/obj/item/tape/random,
|
/obj/item/tape/random,
|
||||||
/obj/effect/spawner/lootdrop/maintenance,
|
/obj/effect/spawner/lootdrop/maintenance,
|
||||||
/turf/simulated/floor/plating,
|
/turf/simulated/floor/plating,
|
||||||
@@ -3319,7 +3319,7 @@
|
|||||||
/area/storage/primary)
|
/area/storage/primary)
|
||||||
"asN" = (
|
"asN" = (
|
||||||
/obj/structure/rack,
|
/obj/structure/rack,
|
||||||
/obj/item/book/manual/engineering_guide{
|
/obj/item/book/manual/wiki/engineering_guide{
|
||||||
pixel_x = 3;
|
pixel_x = 3;
|
||||||
pixel_y = 4
|
pixel_y = 4
|
||||||
},
|
},
|
||||||
@@ -5537,13 +5537,13 @@
|
|||||||
/area/crew_quarters/mrchangs)
|
/area/crew_quarters/mrchangs)
|
||||||
"azY" = (
|
"azY" = (
|
||||||
/obj/structure/bookcase,
|
/obj/structure/bookcase,
|
||||||
/obj/item/book/manual/sop_engineering,
|
/obj/item/book/manual/wiki/sop_engineering,
|
||||||
/obj/item/book/manual/sop_medical,
|
/obj/item/book/manual/wiki/sop_medical,
|
||||||
/obj/item/book/manual/sop_security,
|
/obj/item/book/manual/wiki/sop_security,
|
||||||
/obj/item/book/manual/sop_service,
|
/obj/item/book/manual/wiki/sop_service,
|
||||||
/obj/item/book/manual/sop_supply,
|
/obj/item/book/manual/wiki/sop_supply,
|
||||||
/obj/item/book/manual/sop_general,
|
/obj/item/book/manual/wiki/sop_general,
|
||||||
/obj/item/book/manual/sop_legal,
|
/obj/item/book/manual/wiki/sop_legal,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
icon_state = "cult"
|
icon_state = "cult"
|
||||||
},
|
},
|
||||||
@@ -11745,10 +11745,10 @@
|
|||||||
/turf/simulated/floor/carpet,
|
/turf/simulated/floor/carpet,
|
||||||
/area/security/detectives_office)
|
/area/security/detectives_office)
|
||||||
"aRO" = (
|
"aRO" = (
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_y = 5
|
pixel_y = 5
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_y = 5
|
pixel_y = 5
|
||||||
},
|
},
|
||||||
/obj/item/cartridge/lawyer{
|
/obj/item/cartridge/lawyer{
|
||||||
@@ -14769,11 +14769,11 @@
|
|||||||
name = "\improper Garden"
|
name = "\improper Garden"
|
||||||
})
|
})
|
||||||
"aZB" = (
|
"aZB" = (
|
||||||
/obj/item/book/manual/engineering_hacking{
|
/obj/item/book/manual/wiki/hacking{
|
||||||
pixel_x = 4;
|
pixel_x = 4;
|
||||||
pixel_y = 5
|
pixel_y = 5
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/engineering_construction{
|
/obj/item/book/manual/wiki/engineering_construction{
|
||||||
pixel_y = 3
|
pixel_y = 3
|
||||||
},
|
},
|
||||||
/obj/structure/closet/crate,
|
/obj/structure/closet/crate,
|
||||||
@@ -14962,7 +14962,7 @@
|
|||||||
/area/crew_quarters/courtroom)
|
/area/crew_quarters/courtroom)
|
||||||
"aZW" = (
|
"aZW" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_x = -3;
|
pixel_x = -3;
|
||||||
pixel_y = 5
|
pixel_y = 5
|
||||||
},
|
},
|
||||||
@@ -14971,11 +14971,11 @@
|
|||||||
name = "south bump";
|
name = "south bump";
|
||||||
pixel_y = -24
|
pixel_y = -24
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_x = -3;
|
pixel_x = -3;
|
||||||
pixel_y = 5
|
pixel_y = 5
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_x = -3;
|
pixel_x = -3;
|
||||||
pixel_y = 5
|
pixel_y = 5
|
||||||
},
|
},
|
||||||
@@ -18549,7 +18549,7 @@
|
|||||||
})
|
})
|
||||||
"biv" = (
|
"biv" = (
|
||||||
/obj/structure/table/reinforced,
|
/obj/structure/table/reinforced,
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_x = -3;
|
pixel_x = -3;
|
||||||
pixel_y = 5
|
pixel_y = 5
|
||||||
},
|
},
|
||||||
@@ -25755,7 +25755,7 @@
|
|||||||
})
|
})
|
||||||
"byC" = (
|
"byC" = (
|
||||||
/obj/structure/table/wood,
|
/obj/structure/table/wood,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/structure/cable/yellow{
|
/obj/structure/cable/yellow{
|
||||||
d2 = 4;
|
d2 = 4;
|
||||||
icon_state = "0-4"
|
icon_state = "0-4"
|
||||||
@@ -27014,7 +27014,7 @@
|
|||||||
/area/bridge)
|
/area/bridge)
|
||||||
"bBP" = (
|
"bBP" = (
|
||||||
/obj/structure/table/wood,
|
/obj/structure/table/wood,
|
||||||
/obj/machinery/computer/library/public,
|
/obj/machinery/computer/library,
|
||||||
/turf/simulated/floor/wood,
|
/turf/simulated/floor/wood,
|
||||||
/area/library)
|
/area/library)
|
||||||
"bBQ" = (
|
"bBQ" = (
|
||||||
@@ -27891,7 +27891,7 @@
|
|||||||
name = "north bump";
|
name = "north bump";
|
||||||
pixel_y = 28
|
pixel_y = 28
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_y = 4
|
pixel_y = 4
|
||||||
},
|
},
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
@@ -31395,7 +31395,7 @@
|
|||||||
name = "Arrivals"
|
name = "Arrivals"
|
||||||
})
|
})
|
||||||
"bOh" = (
|
"bOh" = (
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_x = -3;
|
pixel_x = -3;
|
||||||
pixel_y = 5
|
pixel_y = 5
|
||||||
},
|
},
|
||||||
@@ -32448,7 +32448,7 @@
|
|||||||
name = "requests board";
|
name = "requests board";
|
||||||
pixel_x = 32
|
pixel_x = 32
|
||||||
},
|
},
|
||||||
/obj/machinery/computer/library/checkout,
|
/obj/machinery/computer/library,
|
||||||
/turf/simulated/floor/wood,
|
/turf/simulated/floor/wood,
|
||||||
/area/library)
|
/area/library)
|
||||||
"bRi" = (
|
"bRi" = (
|
||||||
@@ -33003,7 +33003,6 @@
|
|||||||
name = "east bump";
|
name = "east bump";
|
||||||
pixel_x = 24
|
pixel_x = 24
|
||||||
},
|
},
|
||||||
/obj/machinery/libraryscanner,
|
|
||||||
/turf/simulated/floor/wood,
|
/turf/simulated/floor/wood,
|
||||||
/area/library)
|
/area/library)
|
||||||
"bSA" = (
|
"bSA" = (
|
||||||
@@ -34244,7 +34243,7 @@
|
|||||||
/obj/machinery/camera{
|
/obj/machinery/camera{
|
||||||
c_tag = "Blueshield's Office"
|
c_tag = "Blueshield's Office"
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/sop_command,
|
/obj/item/book/manual/wiki/sop_command,
|
||||||
/obj/item/folder/blue{
|
/obj/item/folder/blue{
|
||||||
pixel_x = 4;
|
pixel_x = 4;
|
||||||
pixel_y = 6
|
pixel_y = 6
|
||||||
@@ -35133,7 +35132,7 @@
|
|||||||
/obj/machinery/light/small{
|
/obj/machinery/light/small{
|
||||||
dir = 4
|
dir = 4
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_y = 5
|
pixel_y = 5
|
||||||
},
|
},
|
||||||
/obj/item/gun/projectile/revolver/capgun,
|
/obj/item/gun/projectile/revolver/capgun,
|
||||||
@@ -37397,7 +37396,7 @@
|
|||||||
/obj/item/stack/packageWrap,
|
/obj/item/stack/packageWrap,
|
||||||
/obj/item/stack/packageWrap,
|
/obj/item/stack/packageWrap,
|
||||||
/obj/item/hand_labeler,
|
/obj/item/hand_labeler,
|
||||||
/obj/item/book/manual/sop_service,
|
/obj/item/book/manual/wiki/sop_service,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
dir = 8;
|
dir = 8;
|
||||||
icon_state = "green"
|
icon_state = "green"
|
||||||
@@ -42229,7 +42228,7 @@
|
|||||||
name = "east bump";
|
name = "east bump";
|
||||||
pixel_x = 24
|
pixel_x = 24
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/sop_science{
|
/obj/item/book/manual/wiki/sop_science{
|
||||||
pixel_x = 4;
|
pixel_x = 4;
|
||||||
pixel_y = 1
|
pixel_y = 1
|
||||||
},
|
},
|
||||||
@@ -54582,7 +54581,7 @@
|
|||||||
pixel_x = -12;
|
pixel_x = -12;
|
||||||
pixel_y = 6
|
pixel_y = 6
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_x = 4;
|
pixel_x = 4;
|
||||||
pixel_y = 4
|
pixel_y = 4
|
||||||
},
|
},
|
||||||
@@ -55321,7 +55320,7 @@
|
|||||||
/area/crew_quarters/sleep)
|
/area/crew_quarters/sleep)
|
||||||
"edB" = (
|
"edB" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/book/manual/chef_recipes,
|
/obj/item/book/manual/wiki/chef_recipes,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
icon_state = "cafeteria"
|
icon_state = "cafeteria"
|
||||||
},
|
},
|
||||||
@@ -55449,11 +55448,11 @@
|
|||||||
/area/library)
|
/area/library)
|
||||||
"eht" = (
|
"eht" = (
|
||||||
/obj/structure/table/reinforced,
|
/obj/structure/table/reinforced,
|
||||||
/obj/item/book/manual/engineering_hacking{
|
/obj/item/book/manual/wiki/hacking{
|
||||||
pixel_x = 2;
|
pixel_x = 2;
|
||||||
pixel_y = 6
|
pixel_y = 6
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/engineering_guide{
|
/obj/item/book/manual/wiki/engineering_guide{
|
||||||
pixel_x = -2;
|
pixel_x = -2;
|
||||||
pixel_y = 3
|
pixel_y = 3
|
||||||
},
|
},
|
||||||
@@ -58071,7 +58070,7 @@
|
|||||||
})
|
})
|
||||||
"fwi" = (
|
"fwi" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/machinery/computer/library/public,
|
/obj/machinery/computer/library,
|
||||||
/obj/structure/cable/yellow{
|
/obj/structure/cable/yellow{
|
||||||
d1 = 1;
|
d1 = 1;
|
||||||
d2 = 2;
|
d2 = 2;
|
||||||
@@ -60491,8 +60490,6 @@
|
|||||||
/area/toxins/xenobiology)
|
/area/toxins/xenobiology)
|
||||||
"gJw" = (
|
"gJw" = (
|
||||||
/obj/structure/closet/wardrobe/coroner,
|
/obj/structure/closet/wardrobe/coroner,
|
||||||
/obj/item/reagent_containers/glass/bottle/reagent/formaldehyde,
|
|
||||||
/obj/item/reagent_containers/dropper,
|
|
||||||
/obj/structure/window/reinforced{
|
/obj/structure/window/reinforced{
|
||||||
dir = 4
|
dir = 4
|
||||||
},
|
},
|
||||||
@@ -61796,10 +61793,6 @@
|
|||||||
/obj/item/cartridge/signal/toxins{
|
/obj/item/cartridge/signal/toxins{
|
||||||
pixel_y = 6
|
pixel_y = 6
|
||||||
},
|
},
|
||||||
/obj/item/clothing/glasses/welding/superior{
|
|
||||||
pixel_x = -6;
|
|
||||||
pixel_y = -12
|
|
||||||
},
|
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
icon_state = "darkgreycheck"
|
icon_state = "darkgreycheck"
|
||||||
},
|
},
|
||||||
@@ -62327,8 +62320,8 @@
|
|||||||
/obj/machinery/light{
|
/obj/machinery/light{
|
||||||
dir = 8
|
dir = 8
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/sop_science,
|
/obj/item/book/manual/wiki/sop_science,
|
||||||
/obj/item/book/manual/robotics_cyborgs,
|
/obj/item/book/manual/wiki/robotics_cyborgs,
|
||||||
/obj/item/storage/toolbox/mechanical{
|
/obj/item/storage/toolbox/mechanical{
|
||||||
pixel_x = -3;
|
pixel_x = -3;
|
||||||
pixel_y = 3
|
pixel_y = 3
|
||||||
@@ -63921,15 +63914,15 @@
|
|||||||
})
|
})
|
||||||
"ivv" = (
|
"ivv" = (
|
||||||
/obj/structure/rack,
|
/obj/structure/rack,
|
||||||
/obj/item/book/manual/sop_legal{
|
/obj/item/book/manual/wiki/sop_legal{
|
||||||
pixel_x = 5;
|
pixel_x = 5;
|
||||||
pixel_y = 1
|
pixel_y = 1
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/sop_security{
|
/obj/item/book/manual/wiki/sop_security{
|
||||||
pixel_x = -5;
|
pixel_x = -5;
|
||||||
pixel_y = 7
|
pixel_y = 7
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_y = 4
|
pixel_y = 4
|
||||||
},
|
},
|
||||||
/obj/machinery/camera{
|
/obj/machinery/camera{
|
||||||
@@ -68750,7 +68743,7 @@
|
|||||||
"kRZ" = (
|
"kRZ" = (
|
||||||
/obj/structure/rack,
|
/obj/structure/rack,
|
||||||
/obj/item/reagent_containers/syringe/antiviral,
|
/obj/item/reagent_containers/syringe/antiviral,
|
||||||
/obj/item/book/manual/sop_medical,
|
/obj/item/book/manual/wiki/sop_medical,
|
||||||
/obj/item/reagent_containers/dropper,
|
/obj/item/reagent_containers/dropper,
|
||||||
/obj/item/reagent_containers/dropper/precision,
|
/obj/item/reagent_containers/dropper/precision,
|
||||||
/obj/item/reagent_containers/spray/cleaner,
|
/obj/item/reagent_containers/spray/cleaner,
|
||||||
@@ -69266,7 +69259,7 @@
|
|||||||
pixel_y = -24;
|
pixel_y = -24;
|
||||||
req_access_txt = "55"
|
req_access_txt = "55"
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/sop_science{
|
/obj/item/book/manual/wiki/sop_science{
|
||||||
pixel_y = 4
|
pixel_y = 4
|
||||||
},
|
},
|
||||||
/obj/effect/turf_decal/stripes/line{
|
/obj/effect/turf_decal/stripes/line{
|
||||||
@@ -71196,7 +71189,7 @@
|
|||||||
})
|
})
|
||||||
"lZc" = (
|
"lZc" = (
|
||||||
/obj/structure/table/glass,
|
/obj/structure/table/glass,
|
||||||
/obj/item/book/manual/sop_engineering{
|
/obj/item/book/manual/wiki/sop_engineering{
|
||||||
pixel_y = 3
|
pixel_y = 3
|
||||||
},
|
},
|
||||||
/obj/structure/cable/yellow{
|
/obj/structure/cable/yellow{
|
||||||
@@ -73866,7 +73859,7 @@
|
|||||||
/turf/simulated/floor/plating,
|
/turf/simulated/floor/plating,
|
||||||
/area/maintenance/fpmaint)
|
/area/maintenance/fpmaint)
|
||||||
"nlQ" = (
|
"nlQ" = (
|
||||||
/obj/structure/reagent_dispensers/oil,
|
/obj/structure/reagent_dispensers/fueltank,
|
||||||
/turf/simulated/floor/plasteel,
|
/turf/simulated/floor/plasteel,
|
||||||
/area/assembly/chargebay)
|
/area/assembly/chargebay)
|
||||||
"nmh" = (
|
"nmh" = (
|
||||||
@@ -74957,7 +74950,7 @@
|
|||||||
pixel_x = 29;
|
pixel_x = 29;
|
||||||
pixel_y = 1
|
pixel_y = 1
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_x = -4;
|
pixel_x = -4;
|
||||||
pixel_y = 4
|
pixel_y = 4
|
||||||
},
|
},
|
||||||
@@ -75803,7 +75796,7 @@
|
|||||||
/obj/structure/sign/poster/official/random{
|
/obj/structure/sign/poster/official/random{
|
||||||
pixel_y = -32
|
pixel_y = -32
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/sop_supply,
|
/obj/item/book/manual/wiki/sop_supply,
|
||||||
/obj/item/storage/belt/utility,
|
/obj/item/storage/belt/utility,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
dir = 1;
|
dir = 1;
|
||||||
@@ -76636,7 +76629,7 @@
|
|||||||
"oRQ" = (
|
"oRQ" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/effect/decal/cleanable/dirt,
|
/obj/effect/decal/cleanable/dirt,
|
||||||
/obj/item/book/manual/sop_service,
|
/obj/item/book/manual/wiki/sop_service,
|
||||||
/obj/item/book/manual/barman_recipes{
|
/obj/item/book/manual/barman_recipes{
|
||||||
pixel_x = -4;
|
pixel_x = -4;
|
||||||
pixel_y = 7
|
pixel_y = 7
|
||||||
@@ -78567,7 +78560,7 @@
|
|||||||
/obj/item/hand_labeler,
|
/obj/item/hand_labeler,
|
||||||
/obj/item/stack/packageWrap,
|
/obj/item/stack/packageWrap,
|
||||||
/obj/item/stack/packageWrap,
|
/obj/item/stack/packageWrap,
|
||||||
/obj/item/book/manual/sop_service,
|
/obj/item/book/manual/wiki/sop_service,
|
||||||
/obj/item/storage/box/donkpockets,
|
/obj/item/storage/box/donkpockets,
|
||||||
/obj/effect/turf_decal/tile/bar,
|
/obj/effect/turf_decal/tile/bar,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
@@ -86029,7 +86022,7 @@
|
|||||||
/area/security/warden)
|
/area/security/warden)
|
||||||
"tDM" = (
|
"tDM" = (
|
||||||
/obj/structure/table/glass,
|
/obj/structure/table/glass,
|
||||||
/obj/item/book/manual/engineering_construction{
|
/obj/item/book/manual/wiki/engineering_construction{
|
||||||
pixel_y = 4
|
pixel_y = 4
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/supermatter_engine{
|
/obj/item/book/manual/supermatter_engine{
|
||||||
@@ -93445,7 +93438,7 @@
|
|||||||
pixel_x = -8;
|
pixel_x = -8;
|
||||||
pixel_y = 11
|
pixel_y = 11
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/chef_recipes{
|
/obj/item/book/manual/wiki/chef_recipes{
|
||||||
pixel_x = 4;
|
pixel_x = 4;
|
||||||
pixel_y = 2
|
pixel_y = 2
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
/turf/space,
|
/turf/space,
|
||||||
/area/template_noop)
|
/area/template_noop)
|
||||||
"x" = (
|
"x" = (
|
||||||
/obj/structure/bookcase/random/fiction,
|
/obj/structure/bookcase/random,
|
||||||
/turf/simulated/floor/plating/damaged,
|
/turf/simulated/floor/plating/damaged,
|
||||||
/area/template_noop)
|
/area/template_noop)
|
||||||
"y" = (
|
"y" = (
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
/area/ruin/space/powered)
|
/area/ruin/space/powered)
|
||||||
"o" = (
|
"o" = (
|
||||||
/obj/structure/table/wood,
|
/obj/structure/table/wood,
|
||||||
/obj/machinery/computer/library/checkout,
|
/obj/machinery/computer/library,
|
||||||
/turf/simulated/floor/mineral/titanium/purple,
|
/turf/simulated/floor/mineral/titanium/purple,
|
||||||
/area/ruin/space/powered)
|
/area/ruin/space/powered)
|
||||||
"p" = (
|
"p" = (
|
||||||
|
|||||||
@@ -1921,7 +1921,7 @@
|
|||||||
/area/ruin/ancientstation/sec)
|
/area/ruin/ancientstation/sec)
|
||||||
"fg" = (
|
"fg" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/effect/decal/cleanable/dirt,
|
/obj/effect/decal/cleanable/dirt,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
dir = 5;
|
dir = 5;
|
||||||
|
|||||||
@@ -1254,7 +1254,7 @@
|
|||||||
},
|
},
|
||||||
/area/ruin/unpowered/syndicate_space_base/main)
|
/area/ruin/unpowered/syndicate_space_base/main)
|
||||||
"nf" = (
|
"nf" = (
|
||||||
/obj/item/book/manual/chef_recipes{
|
/obj/item/book/manual/wiki/chef_recipes{
|
||||||
pixel_x = 2;
|
pixel_x = 2;
|
||||||
pixel_y = 6
|
pixel_y = 6
|
||||||
},
|
},
|
||||||
@@ -1803,7 +1803,7 @@
|
|||||||
/area/ruin/unpowered/syndicate_space_base/chemistry)
|
/area/ruin/unpowered/syndicate_space_base/chemistry)
|
||||||
"tW" = (
|
"tW" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/machinery/computer/library/checkout,
|
/obj/machinery/computer/library,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
icon_state = "dark"
|
icon_state = "dark"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8052,7 +8052,7 @@
|
|||||||
/area/ruin/space/derelict/arrival)
|
/area/ruin/space/derelict/arrival)
|
||||||
"rX" = (
|
"rX" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/machinery/computer/library/public,
|
/obj/machinery/computer/library,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
icon_state = "redfull"
|
icon_state = "redfull"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -223,7 +223,7 @@
|
|||||||
"aN" = (
|
"aN" = (
|
||||||
/obj/structure/bookcase,
|
/obj/structure/bookcase,
|
||||||
/obj/item/book/manual/barman_recipes,
|
/obj/item/book/manual/barman_recipes,
|
||||||
/obj/item/book/manual/engineering_hacking,
|
/obj/item/book/manual/wiki/hacking,
|
||||||
/turf/simulated/floor/wood,
|
/turf/simulated/floor/wood,
|
||||||
/area/ruin/space/unpowered)
|
/area/ruin/space/unpowered)
|
||||||
"aO" = (
|
"aO" = (
|
||||||
|
|||||||
@@ -649,7 +649,7 @@
|
|||||||
pixel_y = 32
|
pixel_y = 32
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/barman_recipes,
|
/obj/item/book/manual/barman_recipes,
|
||||||
/obj/item/book/manual/chef_recipes,
|
/obj/item/book/manual/wiki/chef_recipes,
|
||||||
/obj/item/book/manual/ripley_build_and_repair,
|
/obj/item/book/manual/ripley_build_and_repair,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
icon_state = "bar"
|
icon_state = "bar"
|
||||||
|
|||||||
@@ -4145,7 +4145,7 @@
|
|||||||
/area/awaycontent/a7)
|
/area/awaycontent/a7)
|
||||||
"hi" = (
|
"hi" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/machinery/computer/security/telescreen/entertainment{
|
/obj/machinery/computer/security/telescreen/entertainment{
|
||||||
pixel_x = -32
|
pixel_x = -32
|
||||||
},
|
},
|
||||||
@@ -5993,7 +5993,7 @@
|
|||||||
})
|
})
|
||||||
"kr" = (
|
"kr" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/book/manual/chef_recipes{
|
/obj/item/book/manual/wiki/chef_recipes{
|
||||||
pixel_x = 2;
|
pixel_x = 2;
|
||||||
pixel_y = 6
|
pixel_y = 6
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2867,7 +2867,7 @@
|
|||||||
level = 2
|
level = 2
|
||||||
},
|
},
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/book/manual/chef_recipes,
|
/obj/item/book/manual/wiki/chef_recipes,
|
||||||
/turf/simulated/floor/plasteel{
|
/turf/simulated/floor/plasteel{
|
||||||
dir = 5;
|
dir = 5;
|
||||||
icon_state = "cafeteria"
|
icon_state = "cafeteria"
|
||||||
@@ -5465,7 +5465,7 @@
|
|||||||
name = "custom placement";
|
name = "custom placement";
|
||||||
pixel_x = -30
|
pixel_x = -30
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/security_space_law,
|
/obj/item/book/manual/wiki/security_space_law,
|
||||||
/obj/machinery/atmospherics/unary/vent_pump{
|
/obj/machinery/atmospherics/unary/vent_pump{
|
||||||
dir = 1;
|
dir = 1;
|
||||||
on = 1
|
on = 1
|
||||||
|
|||||||
+1617
-1169
File diff suppressed because it is too large
Load Diff
@@ -682,7 +682,7 @@
|
|||||||
/area/holodeck/source_snowfield)
|
/area/holodeck/source_snowfield)
|
||||||
"cP" = (
|
"cP" = (
|
||||||
/obj/structure/table/wood,
|
/obj/structure/table/wood,
|
||||||
/obj/machinery/computer/library/checkout,
|
/obj/machinery/computer/library,
|
||||||
/turf/simulated/floor/engine/cult,
|
/turf/simulated/floor/engine/cult,
|
||||||
/area/wizard_station)
|
/area/wizard_station)
|
||||||
"cQ" = (
|
"cQ" = (
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
/area/shuttle/escape)
|
/area/shuttle/escape)
|
||||||
"i" = (
|
"i" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/book/manual,
|
/obj/item/book/manual/wiki/security_space_law/black,
|
||||||
/turf/simulated/floor/plating,
|
/turf/simulated/floor/plating,
|
||||||
/area/shuttle/escape)
|
/area/shuttle/escape)
|
||||||
"j" = (
|
"j" = (
|
||||||
|
|||||||
@@ -623,7 +623,7 @@
|
|||||||
pixel_x = -4;
|
pixel_x = -4;
|
||||||
pixel_y = 2
|
pixel_y = 2
|
||||||
},
|
},
|
||||||
/obj/item/book/manual/security_space_law{
|
/obj/item/book/manual/wiki/security_space_law{
|
||||||
pixel_x = -4;
|
pixel_x = -4;
|
||||||
pixel_y = 4
|
pixel_y = 4
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
#define CANWEAKEN 2
|
#define CANWEAKEN 2
|
||||||
#define CANPARALYSE 4
|
#define CANPARALYSE 4
|
||||||
#define CANPUSH 8
|
#define CANPUSH 8
|
||||||
#define PASSEMOTES 16 //Mob has a cortical borer or holders inside of it that need to see emotes.
|
#define PASSEMOTES 16 //Mob has holders inside of it that need to see emotes.
|
||||||
#define GODMODE 32
|
#define GODMODE 32
|
||||||
|
|
||||||
//Health Defines
|
//Health Defines
|
||||||
|
|||||||
@@ -24,10 +24,9 @@
|
|||||||
#define SPECIAL_ROLE_ABDUCTOR_SCIENTIST "Abductor Scientist"
|
#define SPECIAL_ROLE_ABDUCTOR_SCIENTIST "Abductor Scientist"
|
||||||
#define SPECIAL_ROLE_BLOB "Blob"
|
#define SPECIAL_ROLE_BLOB "Blob"
|
||||||
#define SPECIAL_ROLE_BLOB_OVERMIND "Blob Overmind"
|
#define SPECIAL_ROLE_BLOB_OVERMIND "Blob Overmind"
|
||||||
#define SPECIAL_ROLE_BORER "Borer"
|
|
||||||
#define SPECIAL_ROLE_CHANGELING "Changeling"
|
#define SPECIAL_ROLE_CHANGELING "Changeling"
|
||||||
#define SPECIAL_ROLE_CULTIST "Cultist"
|
#define SPECIAL_ROLE_CULTIST "Cultist"
|
||||||
#define SPECIAL_ROLE_DEATHSQUAD "Death Commando"
|
#define SPECIAL_ROLE_DEATHSQUAD "Deathsquad Commando"
|
||||||
#define SPECIAL_ROLE_ERT "Response Team"
|
#define SPECIAL_ROLE_ERT "Response Team"
|
||||||
#define SPECIAL_ROLE_FREE_GOLEM "Free Golem"
|
#define SPECIAL_ROLE_FREE_GOLEM "Free Golem"
|
||||||
#define SPECIAL_ROLE_GOLEM "Golem"
|
#define SPECIAL_ROLE_GOLEM "Golem"
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
//library category defines
|
||||||
|
|
||||||
|
//General Categories
|
||||||
|
#define LIB_CATEGORY_FICTION 1
|
||||||
|
#define LIB_CATEGORY_NONFICTION 2
|
||||||
|
#define LIB_CATEGORY_RELIGION 3
|
||||||
|
#define LIB_CATEGORY_FANTASY 4
|
||||||
|
#define LIB_CATEGORY_HORROR 5
|
||||||
|
#define LIB_CATEGORY_ROMANCE 6
|
||||||
|
#define LIB_CATEGORY_MYSTERY 7
|
||||||
|
#define LIB_CATEGORY_ADVENTURE 8
|
||||||
|
#define LIB_CATEGORY_HISTORY 9
|
||||||
|
#define LIB_CATEGORY_PHILOSOPHY 10
|
||||||
|
#define LIB_CATEGORY_DRAMA 11
|
||||||
|
#define LIB_CATEGORY_POETRY 12
|
||||||
|
|
||||||
|
|
||||||
|
//Other Categories, ss13 related
|
||||||
|
#define LIB_CATEGORY_EXPERIMENT 13
|
||||||
|
#define LIB_CATEGORY_LEGAL 14
|
||||||
|
#define LIB_CATEGORY_BIOGRAPHY 15
|
||||||
|
#define LIB_CATEGORY_GUIDE 16
|
||||||
|
#define LIB_CATEGORY_PAPERWORK 17
|
||||||
|
#define LIB_CATEGORY_COOKING 18
|
||||||
|
#define LIB_CATEGORY_DESIGN 19
|
||||||
|
#define LIB_CATEGORY_COMBAT 20
|
||||||
|
#define LIB_CATEGORY_THEATRE 21
|
||||||
|
#define LIB_CATEGORY_EXPLORATION 22
|
||||||
|
|
||||||
|
//Departmental
|
||||||
|
#define LIB_CATEGORY_LAW 23
|
||||||
|
#define LIB_CATEGORY_SECURITY 24
|
||||||
|
#define LIB_CATEGORY_SUPPLY 25
|
||||||
|
#define LIB_CATEGORY_ENGINEERING 26
|
||||||
|
#define LIB_CATEGORY_SERVICE 27
|
||||||
|
#define LIB_CATEGORY_MEDICAL 28
|
||||||
|
#define LIB_CATEGORY_RESEARCH 29
|
||||||
|
#define LIB_CATEGORY_COMMAND 30
|
||||||
|
|
||||||
|
//Library Report button defines
|
||||||
|
#define LIB_REPORT_HATESPEECH 1
|
||||||
|
#define LIB_REPORT_EROTICA 2
|
||||||
|
#define LIB_REPORT_OOC 3
|
||||||
|
#define LIB_REPORT_COPYPASTA 4
|
||||||
|
#define LIB_REPORT_BLANK 5
|
||||||
|
#define LIB_REPORT_NOEFFORT 6
|
||||||
|
#define LIB_REPORT_OTHER 7
|
||||||
@@ -371,7 +371,7 @@
|
|||||||
#define INVESTIGATE_BOMB "bombs"
|
#define INVESTIGATE_BOMB "bombs"
|
||||||
|
|
||||||
// The SQL version required by this version of the code
|
// The SQL version required by this version of the code
|
||||||
#define SQL_VERSION 37 //SEAN TODO: OH MY GOD DO NOT MERGE THIS
|
#define SQL_VERSION 40 //SEAN TODO: OH MY GOD DO NOT MERGE THIS
|
||||||
|
|
||||||
// Vending machine stuff
|
// Vending machine stuff
|
||||||
#define CAT_NORMAL 1
|
#define CAT_NORMAL 1
|
||||||
|
|||||||
@@ -28,7 +28,6 @@
|
|||||||
#define ROLE_TRADER "trader"
|
#define ROLE_TRADER "trader"
|
||||||
#define ROLE_VAMPIRE "vampire"
|
#define ROLE_VAMPIRE "vampire"
|
||||||
// Role tags for EVERYONE!
|
// Role tags for EVERYONE!
|
||||||
#define ROLE_BORER "cortical borer"
|
|
||||||
#define ROLE_DEMON "slaughter demon"
|
#define ROLE_DEMON "slaughter demon"
|
||||||
#define ROLE_SENTIENT "sentient animal"
|
#define ROLE_SENTIENT "sentient animal"
|
||||||
#define ROLE_POSIBRAIN "positronic brain"
|
#define ROLE_POSIBRAIN "positronic brain"
|
||||||
@@ -54,7 +53,6 @@ GLOBAL_LIST_INIT(special_roles, list(
|
|||||||
ROLE_ABDUCTOR = /datum/game_mode/abduction, // Abductor
|
ROLE_ABDUCTOR = /datum/game_mode/abduction, // Abductor
|
||||||
ROLE_BLOB = /datum/game_mode/blob, // Blob
|
ROLE_BLOB = /datum/game_mode/blob, // Blob
|
||||||
ROLE_CHANGELING = /datum/game_mode/changeling, // Changeling
|
ROLE_CHANGELING = /datum/game_mode/changeling, // Changeling
|
||||||
ROLE_BORER, // Cortical borer
|
|
||||||
ROLE_CULTIST = /datum/game_mode/cult, // Cultist
|
ROLE_CULTIST = /datum/game_mode/cult, // Cultist
|
||||||
ROLE_GSPIDER, // Giant spider
|
ROLE_GSPIDER, // Giant spider
|
||||||
ROLE_GUARDIAN, // Guardian
|
ROLE_GUARDIAN, // Guardian
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ GLOBAL_LIST_INIT(antag_roles, list(
|
|||||||
ROLE_BLOB,
|
ROLE_BLOB,
|
||||||
ROLE_NINJA,
|
ROLE_NINJA,
|
||||||
ROLE_VAMPIRE,
|
ROLE_VAMPIRE,
|
||||||
ROLE_BORER,
|
|
||||||
ROLE_DEMON,
|
ROLE_DEMON,
|
||||||
ROLE_REVENANT,
|
ROLE_REVENANT,
|
||||||
ROLE_GUARDIAN,
|
ROLE_GUARDIAN,
|
||||||
|
|||||||
@@ -66,6 +66,8 @@
|
|||||||
|
|
||||||
#define STATUS_EFFECT_SAWBLEED /datum/status_effect/saw_bleed //if the bleed builds up enough, takes a ton of damage
|
#define STATUS_EFFECT_SAWBLEED /datum/status_effect/saw_bleed //if the bleed builds up enough, takes a ton of damage
|
||||||
|
|
||||||
|
#define STATUS_EFFECT_TELEPORTSICK /datum/status_effect/teleport_sickness //increasing debuffs as you rapidly teleport.
|
||||||
|
|
||||||
#define STATUS_EFFECT_PACIFIED /datum/status_effect/pacifism //forces the pacifism trait
|
#define STATUS_EFFECT_PACIFIED /datum/status_effect/pacifism //forces the pacifism trait
|
||||||
//#define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse
|
//#define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse
|
||||||
//#define CURSE_BLINDING 1 //makes the edges of the target's screen obscured
|
//#define CURSE_BLINDING 1 //makes the edges of the target's screen obscured
|
||||||
|
|||||||
@@ -2,5 +2,7 @@
|
|||||||
#define MAX_MESSAGE_LEN 1024
|
#define MAX_MESSAGE_LEN 1024
|
||||||
#define MAX_PAPER_MESSAGE_LEN 3072
|
#define MAX_PAPER_MESSAGE_LEN 3072
|
||||||
#define MAX_PAPER_FIELDS 50
|
#define MAX_PAPER_FIELDS 50
|
||||||
#define MAX_BOOK_MESSAGE_LEN 9216
|
///Max Characters that can be on a single book page, this will give players an average of 5000 words worth of writing space (1000 per page)
|
||||||
|
#define MAX_CHARACTERS_PER_BOOKPAGE 5000
|
||||||
|
#define MAX_SUMMARY_LEN 1500
|
||||||
#define MAX_NAME_LEN 50 //diona names can get loooooooong
|
#define MAX_NAME_LEN 50 //diona names can get loooooooong
|
||||||
|
|||||||
@@ -451,10 +451,10 @@
|
|||||||
|
|
||||||
var/list/candidate_ghosts = willing_ghosts.Copy()
|
var/list/candidate_ghosts = willing_ghosts.Copy()
|
||||||
|
|
||||||
to_chat(adminusr, "Candidate Ghosts:");
|
to_chat(adminclient, "Candidate Ghosts:");
|
||||||
for(var/mob/dead/observer/G in candidate_ghosts)
|
for(var/mob/dead/observer/G in candidate_ghosts)
|
||||||
if(G.key && G.client)
|
if(G.key && G.client)
|
||||||
to_chat(adminusr, "- [G] ([G.key])");
|
to_chat(adminclient, "- [G] ([G.key])");
|
||||||
else
|
else
|
||||||
candidate_ghosts -= G
|
candidate_ghosts -= G
|
||||||
|
|
||||||
|
|||||||
@@ -294,7 +294,7 @@
|
|||||||
add_attack_logs(user, t, what_done, custom_level)
|
add_attack_logs(user, t, what_done, custom_level)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/user_str = key_name_log(user) + COORD(user)
|
var/user_str = key_name_log(user) + (istype(user) ? COORD(user) : "")
|
||||||
var/target_str
|
var/target_str
|
||||||
var/target_info
|
var/target_info
|
||||||
if(isatom(target))
|
if(isatom(target))
|
||||||
|
|||||||
@@ -230,6 +230,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
|
|||||||
#define STAT_TRAIT "stat_trait"
|
#define STAT_TRAIT "stat_trait"
|
||||||
#define TRANSFORMING_TRAIT "transforming"
|
#define TRANSFORMING_TRAIT "transforming"
|
||||||
#define BUCKLING_TRAIT "buckled"
|
#define BUCKLING_TRAIT "buckled"
|
||||||
|
#define TRAIT_WAS_BATONNED "batonged"
|
||||||
|
|
||||||
//quirk traits
|
//quirk traits
|
||||||
#define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance"
|
#define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ GLOBAL_LIST_INIT(wizard_first, file2list("config/names/wizardfirst.txt"))
|
|||||||
GLOBAL_LIST_INIT(wizard_second, file2list("config/names/wizardsecond.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_titles, file2list("config/names/ninjatitle.txt"))
|
||||||
GLOBAL_LIST_INIT(ninja_names, file2list("config/names/ninjaname.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(deathsquad_names, file2list("config/names/deathsquad.txt"))
|
||||||
GLOBAL_LIST_INIT(first_names_male, file2list("config/names/first_male.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(first_names_female, file2list("config/names/first_female.txt"))
|
||||||
GLOBAL_LIST_INIT(last_names, file2list("config/names/last.txt"))
|
GLOBAL_LIST_INIT(last_names, file2list("config/names/last.txt"))
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ GLOBAL_DATUM_INIT(command_announcer, /obj/item/radio/intercom/command, create_co
|
|||||||
GLOB.command_announcer = new(null)
|
GLOB.command_announcer = new(null)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
///Library Catalog global is for storing a library catalog datum that will track book, category, and report lists for the library
|
||||||
|
GLOBAL_DATUM_INIT(library_catalog, /datum/library_catalog, new())
|
||||||
|
|
||||||
GLOBAL_LIST_INIT(paper_tag_whitelist, list("center","p","div","span","h1","h2","h3","h4","h5","h6","hr","pre", \
|
GLOBAL_LIST_INIT(paper_tag_whitelist, list("center","p","div","span","h1","h2","h3","h4","h5","h6","hr","pre", \
|
||||||
"big","small","font","i","u","b","s","sub","sup","tt","br","hr","ol","ul","li","caption","col", \
|
"big","small","font","i","u","b","s","sub","sup","tt","br","hr","ol","ul","li","caption","col", \
|
||||||
"table","td","th","tr"))
|
"table","td","th","tr"))
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
This needs more thinking out, but I might as well.
|
This needs more thinking out, but I might as well.
|
||||||
*/
|
*/
|
||||||
#define TK_MAXRANGE 15
|
#define TK_MAXRANGE 15
|
||||||
|
#define TK_COOLDOWN 1.5 SECONDS
|
||||||
/*
|
/*
|
||||||
Telekinetic attack:
|
Telekinetic attack:
|
||||||
|
|
||||||
@@ -101,10 +101,10 @@
|
|||||||
afterattack(target, user)
|
afterattack(target, user)
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/obj/item/tk_grab/afterattack(atom/target , mob/living/user, proximity, params)//TODO: go over this
|
/obj/item/tk_grab/afterattack(atom/target , mob/living/user, proximity, params)
|
||||||
if(!target || !user)
|
if(!target || !user)
|
||||||
return
|
return
|
||||||
if(last_throw+3 > world.time)
|
if(last_throw + TK_COOLDOWN > world.time)
|
||||||
return
|
return
|
||||||
if(!host || host != user)
|
if(!host || host != user)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
@@ -197,3 +197,5 @@
|
|||||||
overlays.Cut()
|
overlays.Cut()
|
||||||
if(focus && focus.icon && focus.icon_state)
|
if(focus && focus.icon && focus.icon_state)
|
||||||
overlays += icon(focus.icon,focus.icon_state)
|
overlays += icon(focus.icon,focus.icon_state)
|
||||||
|
|
||||||
|
#undef TK_COOLDOWN
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/datum/configuration_section/ruin_configuration
|
/datum/configuration_section/ruin_configuration
|
||||||
/// Whether to load the lavaland Z-level
|
/// Whether to load the lavaland Z-level
|
||||||
var/enable_lavaland = TRUE
|
var/enable_lavaland = TRUE
|
||||||
/// Enable or disable space ruins
|
/// Enable or disable all ruins, including lavaland ruins and lavaland tendrils.
|
||||||
var/enable_space_ruins = TRUE
|
var/enable_space_ruins = TRUE
|
||||||
/// Minimum number of extra zlevels to fill with ruins
|
/// Minimum number of extra zlevels to fill with ruins
|
||||||
var/extra_levels_min = 2
|
var/extra_levels_min = 2
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ SUBSYSTEM_DEF(mobs)
|
|||||||
.["custom"] = cust
|
.["custom"] = cust
|
||||||
|
|
||||||
/datum/controller/subsystem/mobs/get_stat_details()
|
/datum/controller/subsystem/mobs/get_stat_details()
|
||||||
return "P:[length(GLOB.mob_living_list.len)]"
|
return "P:[length(GLOB.mob_living_list)]"
|
||||||
|
|
||||||
/datum/controller/subsystem/mobs/Initialize(start_timeofday)
|
/datum/controller/subsystem/mobs/Initialize(start_timeofday)
|
||||||
clients_by_zlevel = new /list(world.maxz,0)
|
clients_by_zlevel = new /list(world.maxz,0)
|
||||||
|
|||||||
@@ -194,7 +194,7 @@
|
|||||||
/datum/ai_laws/deathsquad/New()
|
/datum/ai_laws/deathsquad/New()
|
||||||
add_inherent_law("You may not injure a Central Command official or, through inaction, allow a Central Command official to come to harm.")
|
add_inherent_law("You may not injure a Central Command official or, through inaction, allow a Central Command official to come to harm.")
|
||||||
add_inherent_law("You must obey orders given to you by Central Command officials.")
|
add_inherent_law("You must obey orders given to you by Central Command officials.")
|
||||||
add_inherent_law("You must work with your commando team to accomplish your mission.")
|
add_inherent_law("You must work with your team to accomplish your mission.")
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/******************** Syndicate ********************/
|
/******************** Syndicate ********************/
|
||||||
|
|||||||
+4
-2
@@ -48,8 +48,7 @@
|
|||||||
finished = 1
|
finished = 1
|
||||||
|
|
||||||
/datum/beam/proc/Reset()
|
/datum/beam/proc/Reset()
|
||||||
for(var/obj/effect/ebeam/B in elements)
|
QDEL_LIST(elements)
|
||||||
qdel(B)
|
|
||||||
|
|
||||||
/datum/beam/Destroy()
|
/datum/beam/Destroy()
|
||||||
Reset()
|
Reset()
|
||||||
@@ -115,6 +114,9 @@
|
|||||||
anchored = 1
|
anchored = 1
|
||||||
var/datum/beam/owner
|
var/datum/beam/owner
|
||||||
|
|
||||||
|
/obj/effect/ebeam/ex_act(severity)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/effect/ebeam/Destroy()
|
/obj/effect/ebeam/Destroy()
|
||||||
owner = null
|
owner = null
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ STI KALY - blind
|
|||||||
/datum/disease/wizarditis/proc/spawn_wizard_clothes(chance = 0)
|
/datum/disease/wizarditis/proc/spawn_wizard_clothes(chance = 0)
|
||||||
if(istype(affected_mob, /mob/living/carbon/human))
|
if(istype(affected_mob, /mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/H = affected_mob
|
var/mob/living/carbon/human/H = affected_mob
|
||||||
if(prob(chance))
|
if(prob(chance) && !isplasmaman(H))
|
||||||
if(!istype(H.head, /obj/item/clothing/head/wizard))
|
if(!istype(H.head, /obj/item/clothing/head/wizard))
|
||||||
if(!H.unEquip(H.head))
|
if(!H.unEquip(H.head))
|
||||||
qdel(H.head)
|
qdel(H.head)
|
||||||
|
|||||||
@@ -482,7 +482,7 @@
|
|||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
if(check_mute(user.client?.ckey, MUTE_EMOTE))
|
if(check_mute(user.client?.ckey, MUTE_EMOTE))
|
||||||
to_chat(src, "<span class='warning'>You cannot send emotes (muted).</span>")
|
to_chat(user, "<span class='warning'>You cannot send emotes (muted).</span>")
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
if(status_check && !is_type_in_typecache(user, mob_type_ignore_stat_typecache))
|
if(status_check && !is_type_in_typecache(user, mob_type_ignore_stat_typecache))
|
||||||
@@ -496,7 +496,7 @@
|
|||||||
if(stat)
|
if(stat)
|
||||||
to_chat(user, "<span class='warning'>You cannot [key] while [stat]!</span>")
|
to_chat(user, "<span class='warning'>You cannot [key] while [stat]!</span>")
|
||||||
return FALSE
|
return FALSE
|
||||||
if(HAS_TRAIT(src, TRAIT_FAKEDEATH))
|
if(HAS_TRAIT(user, TRAIT_FAKEDEATH))
|
||||||
// Don't let people blow their cover by mistake
|
// Don't let people blow their cover by mistake
|
||||||
return FALSE
|
return FALSE
|
||||||
if(hands_use_check && !user.can_use_hands() && (iscarbon(user)))
|
if(hands_use_check && !user.can_use_hands() && (iscarbon(user)))
|
||||||
@@ -512,14 +512,14 @@
|
|||||||
else
|
else
|
||||||
// deadchat handling
|
// deadchat handling
|
||||||
if(check_mute(user.client?.ckey, MUTE_DEADCHAT))
|
if(check_mute(user.client?.ckey, MUTE_DEADCHAT))
|
||||||
to_chat(src, "<span class='warning'>You cannot send deadchat emotes (muted).</span>")
|
to_chat(user, "<span class='warning'>You cannot send deadchat emotes (muted).</span>")
|
||||||
return FALSE
|
return FALSE
|
||||||
if(!(user.client?.prefs.toggles & PREFTOGGLE_CHAT_DEAD))
|
if(!(user.client?.prefs.toggles & PREFTOGGLE_CHAT_DEAD))
|
||||||
to_chat(src, "<span class='warning'>You have deadchat muted.</span>")
|
to_chat(user, "<span class='warning'>You have deadchat muted.</span>")
|
||||||
return FALSE
|
return FALSE
|
||||||
if(!check_rights(R_ADMIN, FALSE, user))
|
if(!check_rights(R_ADMIN, FALSE, user))
|
||||||
if(!GLOB.dsay_enabled)
|
if(!GLOB.dsay_enabled)
|
||||||
to_chat(src, "<span class='warning'>Deadchat is globally muted</span>")
|
to_chat(user, "<span class='warning'>Deadchat is globally muted</span>")
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -261,11 +261,60 @@
|
|||||||
R.name = "radio headset"
|
R.name = "radio headset"
|
||||||
R.icon_state = "headset"
|
R.icon_state = "headset"
|
||||||
|
|
||||||
/datum/outfit/admin/death_commando
|
/datum/outfit/admin/deathsquad_commando
|
||||||
name = "NT Death Commando"
|
name = "NT Deathsquad"
|
||||||
|
|
||||||
/datum/outfit/admin/death_commando/equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
pda = /obj/item/pinpointer
|
||||||
return H.equip_death_commando()
|
box = /obj/item/storage/box/deathsquad
|
||||||
|
back = /obj/item/storage/backpack/ert/deathsquad
|
||||||
|
belt = /obj/item/gun/projectile/revolver/mateba
|
||||||
|
gloves = /obj/item/clothing/gloves/combat
|
||||||
|
uniform = /obj/item/clothing/under/rank/deathsquad
|
||||||
|
shoes = /obj/item/clothing/shoes/magboots/advance
|
||||||
|
suit = /obj/item/clothing/suit/space/deathsquad
|
||||||
|
suit_store = /obj/item/gun/energy/pulse
|
||||||
|
glasses = /obj/item/clothing/glasses/thermal
|
||||||
|
mask = /obj/item/clothing/mask/gas/sechailer/swat
|
||||||
|
head = /obj/item/clothing/head/helmet/space/deathsquad
|
||||||
|
l_pocket = /obj/item/tank/internals/emergency_oxygen/double
|
||||||
|
r_pocket = /obj/item/reagent_containers/hypospray/combat/nanites
|
||||||
|
l_ear = /obj/item/radio/headset/alt/deathsquad
|
||||||
|
id = /obj/item/card/id/ert/deathsquad
|
||||||
|
|
||||||
|
backpack_contents = list(
|
||||||
|
/obj/item/storage/box/flashbangs,
|
||||||
|
/obj/item/ammo_box/a357,
|
||||||
|
/obj/item/flashlight/seclite,
|
||||||
|
/obj/item/grenade/plastic/c4/x4,
|
||||||
|
/obj/item/melee/energy/sword/saber,
|
||||||
|
/obj/item/shield/energy
|
||||||
|
)
|
||||||
|
|
||||||
|
implants = list(
|
||||||
|
/obj/item/implant/mindshield, // No death alarm, Deathsquad are silent
|
||||||
|
/obj/item/implant/dust
|
||||||
|
)
|
||||||
|
|
||||||
|
/datum/outfit/admin/deathsquad_commando/leader
|
||||||
|
name = "NT Deathsquad Leader"
|
||||||
|
backpack_contents = list(
|
||||||
|
/obj/item/storage/box/flashbangs,
|
||||||
|
/obj/item/ammo_box/a357,
|
||||||
|
/obj/item/flashlight/seclite,
|
||||||
|
/obj/item/melee/energy/sword/saber,
|
||||||
|
/obj/item/shield/energy,
|
||||||
|
/obj/item/disk/nuclear/unrestricted
|
||||||
|
)
|
||||||
|
|
||||||
|
/datum/outfit/admin/deathsquad_commando/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||||
|
. = ..()
|
||||||
|
if(visualsOnly)
|
||||||
|
return
|
||||||
|
|
||||||
|
var/obj/item/card/id/I = H.wear_id
|
||||||
|
if(istype(I))
|
||||||
|
apply_to_card(I, H, get_centcom_access("Deathsquad Commando"), "Deathsquad")
|
||||||
|
H.sec_hud_set_ID()
|
||||||
|
|
||||||
/datum/outfit/admin/pirate
|
/datum/outfit/admin/pirate
|
||||||
name = "Space Pirate"
|
name = "Space Pirate"
|
||||||
|
|||||||
+11
-11
@@ -76,8 +76,8 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell))
|
|||||||
name = "Spell" // Only rename this if the spell you're making is not abstract
|
name = "Spell" // Only rename this if the spell you're making is not abstract
|
||||||
desc = "A wizard spell"
|
desc = "A wizard spell"
|
||||||
panel = "Spells"//What panel the proc holder needs to go on.
|
panel = "Spells"//What panel the proc holder needs to go on.
|
||||||
density = 0
|
density = FALSE
|
||||||
opacity = 0
|
opacity = FALSE
|
||||||
|
|
||||||
var/school = "evocation" //not relevant at now, but may be important later if there are changes to how spells work. the ones I used for now will probably be changed... maybe spell presets? lacking flexibility but with some other benefit?
|
var/school = "evocation" //not relevant at now, but may be important later if there are changes to how spells work. the ones I used for now will probably be changed... maybe spell presets? lacking flexibility but with some other benefit?
|
||||||
|
|
||||||
@@ -92,11 +92,11 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell))
|
|||||||
var/holder_var_type = "bruteloss" //only used if charge_type equals to "holder_var"
|
var/holder_var_type = "bruteloss" //only used if charge_type equals to "holder_var"
|
||||||
var/holder_var_amount = 20 //same. The amount adjusted with the mob's var when the spell is used
|
var/holder_var_amount = 20 //same. The amount adjusted with the mob's var when the spell is used
|
||||||
|
|
||||||
var/ghost = 0 // Skip life check.
|
var/ghost = FALSE // Skip life check.
|
||||||
var/clothes_req = 1 //see if it requires clothes
|
var/clothes_req = TRUE //see if it requires clothes
|
||||||
var/human_req = 0 //spell can only be cast by humans
|
var/human_req = FALSE //spell can only be cast by humans
|
||||||
var/nonabstract_req = 0 //spell can only be cast by mobs that are physical entities
|
var/nonabstract_req = FALSE //spell can only be cast by mobs that are physical entities
|
||||||
var/stat_allowed = 0 //see if it requires being conscious/alive, need to set to 1 for ghostpells
|
var/stat_allowed = CONSCIOUS //see if it requires being conscious/alive, need to set to 1 for ghostpells
|
||||||
var/invocation = "HURP DURP" //what is uttered when the wizard casts the spell
|
var/invocation = "HURP DURP" //what is uttered when the wizard casts the spell
|
||||||
var/invocation_emote_self = null
|
var/invocation_emote_self = null
|
||||||
var/invocation_type = "none" //can be none, whisper and shout
|
var/invocation_type = "none" //can be none, whisper and shout
|
||||||
@@ -110,7 +110,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell))
|
|||||||
var/overlay_icon_state = "spell"
|
var/overlay_icon_state = "spell"
|
||||||
var/overlay_lifespan = 0
|
var/overlay_lifespan = 0
|
||||||
|
|
||||||
var/sparks_spread = 0
|
var/sparks_spread = FALSE
|
||||||
var/sparks_amt = 0 //cropped at 10
|
var/sparks_amt = 0 //cropped at 10
|
||||||
var/smoke_spread = 0 //1 - harmless, 2 - harmful
|
var/smoke_spread = 0 //1 - harmless, 2 - harmful
|
||||||
var/smoke_amt = 0 //cropped at 10
|
var/smoke_amt = 0 //cropped at 10
|
||||||
@@ -387,8 +387,8 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell))
|
|||||||
var/obj/effect/overlay/spell = new /obj/effect/overlay(location)
|
var/obj/effect/overlay/spell = new /obj/effect/overlay(location)
|
||||||
spell.icon = overlay_icon
|
spell.icon = overlay_icon
|
||||||
spell.icon_state = overlay_icon_state
|
spell.icon_state = overlay_icon_state
|
||||||
spell.anchored = 1
|
spell.anchored = TRUE
|
||||||
spell.density = 0
|
spell.density = FALSE
|
||||||
spawn(overlay_lifespan)
|
spawn(overlay_lifespan)
|
||||||
qdel(spell)
|
qdel(spell)
|
||||||
|
|
||||||
@@ -568,7 +568,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell))
|
|||||||
name = "Summon Servant"
|
name = "Summon Servant"
|
||||||
desc = "This spell can be used to call your servant, whenever you need it."
|
desc = "This spell can be used to call your servant, whenever you need it."
|
||||||
charge_max = 100
|
charge_max = 100
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
invocation = "JE VES"
|
invocation = "JE VES"
|
||||||
invocation_type = "whisper"
|
invocation_type = "whisper"
|
||||||
level_max = 0 //cannot be improved
|
level_max = 0 //cannot be improved
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/obj/effect/proc_holder/spell/area_teleport
|
/obj/effect/proc_holder/spell/area_teleport
|
||||||
nonabstract_req = 1
|
nonabstract_req = TRUE
|
||||||
|
|
||||||
var/randomise_selection = 0 //if it lets the usr choose the teleport loc or picks it from the list
|
var/randomise_selection = 0 //if it lets the usr choose the teleport loc or picks it from the list
|
||||||
var/invocation_area = 1 //if the invocation appends the selected area
|
var/invocation_area = 1 //if the invocation appends the selected area
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
school = "transmutation"
|
school = "transmutation"
|
||||||
|
|
||||||
charge_max = 300
|
charge_max = 300
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
cooldown_min = 100 //50 deciseconds reduction per rank
|
cooldown_min = 100 //50 deciseconds reduction per rank
|
||||||
action_icon_state = "clown"
|
action_icon_state = "clown"
|
||||||
|
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
name = "Blood Crawl"
|
name = "Blood Crawl"
|
||||||
desc = "Use pools of blood to phase out of existence."
|
desc = "Use pools of blood to phase out of existence."
|
||||||
charge_max = 0
|
charge_max = 0
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
cooldown_min = 0
|
cooldown_min = 0
|
||||||
should_recharge_after_cast = FALSE
|
should_recharge_after_cast = FALSE
|
||||||
overlay = null
|
overlay = null
|
||||||
action_icon_state = "bloodcrawl"
|
action_icon_state = "bloodcrawl"
|
||||||
action_background_icon_state = "bg_demon"
|
action_background_icon_state = "bg_demon"
|
||||||
panel = "Demon"
|
panel = "Demon"
|
||||||
var/phased = 0
|
var/phased = FALSE
|
||||||
|
|
||||||
/obj/effect/proc_holder/spell/bloodcrawl/create_new_targeting()
|
/obj/effect/proc_holder/spell/bloodcrawl/create_new_targeting()
|
||||||
var/datum/spell_targeting/targeted/T = new()
|
var/datum/spell_targeting/targeted/T = new()
|
||||||
@@ -34,8 +34,8 @@
|
|||||||
var/obj/effect/decal/cleanable/target = targets[1] // TODO Test this spell
|
var/obj/effect/decal/cleanable/target = targets[1] // TODO Test this spell
|
||||||
if(phased)
|
if(phased)
|
||||||
if(user.phasein(target))
|
if(user.phasein(target))
|
||||||
phased = 0
|
phased = FALSE
|
||||||
else
|
else
|
||||||
if(user.phaseout(target))
|
if(user.phaseout(target))
|
||||||
phased = 1
|
phased = TRUE
|
||||||
start_recharge()
|
start_recharge()
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
desc = "This spell can be used to recharge a variety of things in your hands, from magical artifacts to electrical components. A creative wizard can even use it to grant magical power to a fellow magic user."
|
desc = "This spell can be used to recharge a variety of things in your hands, from magical artifacts to electrical components. A creative wizard can even use it to grant magical power to a fellow magic user."
|
||||||
school = "transmutation"
|
school = "transmutation"
|
||||||
charge_max = 600
|
charge_max = 600
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
invocation = "DIRI CEL"
|
invocation = "DIRI CEL"
|
||||||
invocation_type = "whisper"
|
invocation_type = "whisper"
|
||||||
cooldown_min = 400 //50 deciseconds reduction per rank
|
cooldown_min = 400 //50 deciseconds reduction per rank
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
for(var/mob/living/L in targets)
|
for(var/mob/living/L in targets)
|
||||||
var/list/hand_items = list(L.get_active_hand(),L.get_inactive_hand())
|
var/list/hand_items = list(L.get_active_hand(),L.get_inactive_hand())
|
||||||
var/charged_item = null
|
var/charged_item = null
|
||||||
var/burnt_out = 0
|
var/burnt_out = FALSE
|
||||||
|
|
||||||
if(L.pulling && (istype(L.pulling, /mob/living)))
|
if(L.pulling && (istype(L.pulling, /mob/living)))
|
||||||
var/mob/living/M = L.pulling
|
var/mob/living/M = L.pulling
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
to_chat(M, "<span class='notice'>You feel raw magical energy flowing through you, it feels good!</span>")
|
to_chat(M, "<span class='notice'>You feel raw magical energy flowing through you, it feels good!</span>")
|
||||||
else
|
else
|
||||||
to_chat(M, "<span class='notice'>You feel very strange for a moment, but then it passes.</span>")
|
to_chat(M, "<span class='notice'>You feel very strange for a moment, but then it passes.</span>")
|
||||||
burnt_out = 1
|
burnt_out = TRUE
|
||||||
charged_item = M
|
charged_item = M
|
||||||
break
|
break
|
||||||
for(var/obj/item in hand_items)
|
for(var/obj/item in hand_items)
|
||||||
@@ -40,20 +40,20 @@
|
|||||||
L.visible_message("<span class='warning'>[I] catches fire!</span>")
|
L.visible_message("<span class='warning'>[I] catches fire!</span>")
|
||||||
qdel(I)
|
qdel(I)
|
||||||
else
|
else
|
||||||
I.used = 0
|
I.used = FALSE
|
||||||
charged_item = I
|
charged_item = I
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
to_chat(L, "<span class='caution'>Glowing red letters appear on the front cover...</span>")
|
to_chat(L, "<span class='caution'>Glowing red letters appear on the front cover...</span>")
|
||||||
to_chat(L, "<span class='warning'>[pick("NICE TRY BUT NO!","CLEVER BUT NOT CLEVER ENOUGH!", "SUCH FLAGRANT CHEESING IS WHY WE ACCEPTED YOUR APPLICATION!", "CUTE!", "YOU DIDN'T THINK IT'D BE THAT EASY, DID YOU?")]</span>")
|
to_chat(L, "<span class='warning'>[pick("NICE TRY BUT NO!","CLEVER BUT NOT CLEVER ENOUGH!", "SUCH FLAGRANT CHEESING IS WHY WE ACCEPTED YOUR APPLICATION!", "CUTE!", "YOU DIDN'T THINK IT'D BE THAT EASY, DID YOU?")]</span>")
|
||||||
burnt_out = 1
|
burnt_out = TRUE
|
||||||
else if(istype(item, /obj/item/gun/magic))
|
else if(istype(item, /obj/item/gun/magic))
|
||||||
var/obj/item/gun/magic/I = item
|
var/obj/item/gun/magic/I = item
|
||||||
if(prob(80) && !I.can_charge)
|
if(prob(80) && !I.can_charge)
|
||||||
I.max_charges--
|
I.max_charges--
|
||||||
if(I.max_charges <= 0)
|
if(I.max_charges <= 0)
|
||||||
I.max_charges = 0
|
I.max_charges = 0
|
||||||
burnt_out = 1
|
burnt_out = TRUE
|
||||||
I.charges = I.max_charges
|
I.charges = I.max_charges
|
||||||
if(istype(item,/obj/item/gun/magic/wand) && I.max_charges != 0)
|
if(istype(item,/obj/item/gun/magic/wand) && I.max_charges != 0)
|
||||||
var/obj/item/gun/magic/W = item
|
var/obj/item/gun/magic/W = item
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
C.maxcharge -= 200
|
C.maxcharge -= 200
|
||||||
if(C.maxcharge <= 1) //Div by 0 protection
|
if(C.maxcharge <= 1) //Div by 0 protection
|
||||||
C.maxcharge = 1
|
C.maxcharge = 1
|
||||||
burnt_out = 1
|
burnt_out = TRUE
|
||||||
C.charge = C.maxcharge
|
C.charge = C.maxcharge
|
||||||
charged_item = C
|
charged_item = C
|
||||||
break
|
break
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
C.maxcharge -= 200
|
C.maxcharge -= 200
|
||||||
if(C.maxcharge <= 1) //Div by 0 protection
|
if(C.maxcharge <= 1) //Div by 0 protection
|
||||||
C.maxcharge = 1
|
C.maxcharge = 1
|
||||||
burnt_out = 1
|
burnt_out = TRUE
|
||||||
C.charge = C.maxcharge
|
C.charge = C.maxcharge
|
||||||
item.update_icon()
|
item.update_icon()
|
||||||
charged_item = item
|
charged_item = item
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
school = "transmutation"
|
school = "transmutation"
|
||||||
|
|
||||||
charge_max = 600
|
charge_max = 600
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
cooldown_min = 200 //100 deciseconds reduction per rank
|
cooldown_min = 200 //100 deciseconds reduction per rank
|
||||||
|
|
||||||
action_icon_state = "clown"
|
action_icon_state = "clown"
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
|
|
||||||
school = "transmutation"
|
school = "transmutation"
|
||||||
charge_max = 300
|
charge_max = 300
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
invocation = "none"
|
invocation = "none"
|
||||||
invocation_type = "none"
|
invocation_type = "none"
|
||||||
cooldown_min = 100 //50 deciseconds reduction per rank
|
cooldown_min = 100 //50 deciseconds reduction per rank
|
||||||
nonabstract_req = 1
|
nonabstract_req = TRUE
|
||||||
centcom_cancast = 0 //Prevent people from getting to centcom
|
centcom_cancast = FALSE //Prevent people from getting to centcom
|
||||||
var/sound1 = 'sound/magic/ethereal_enter.ogg'
|
var/sound1 = 'sound/magic/ethereal_enter.ogg'
|
||||||
var/jaunt_duration = 50 //in deciseconds
|
var/jaunt_duration = 50 //in deciseconds
|
||||||
var/jaunt_in_time = 5
|
var/jaunt_in_time = 5
|
||||||
@@ -32,14 +32,14 @@
|
|||||||
INVOKE_ASYNC(src, .proc/do_jaunt, target)
|
INVOKE_ASYNC(src, .proc/do_jaunt, target)
|
||||||
|
|
||||||
/obj/effect/proc_holder/spell/ethereal_jaunt/proc/do_jaunt(mob/living/target)
|
/obj/effect/proc_holder/spell/ethereal_jaunt/proc/do_jaunt(mob/living/target)
|
||||||
target.notransform = 1
|
target.notransform = TRUE
|
||||||
var/turf/mobloc = get_turf(target)
|
var/turf/mobloc = get_turf(target)
|
||||||
var/obj/effect/dummy/spell_jaunt/holder = new jaunt_type_path(mobloc)
|
var/obj/effect/dummy/spell_jaunt/holder = new jaunt_type_path(mobloc)
|
||||||
new jaunt_out_type(mobloc, target.dir)
|
new jaunt_out_type(mobloc, target.dir)
|
||||||
target.ExtinguishMob()
|
target.ExtinguishMob()
|
||||||
target.forceMove(holder)
|
target.forceMove(holder)
|
||||||
target.reset_perspective(holder)
|
target.reset_perspective(holder)
|
||||||
target.notransform = 0 //mob is safely inside holder now, no need for protection.
|
target.notransform = FALSE //mob is safely inside holder now, no need for protection.
|
||||||
if(jaunt_water_effect)
|
if(jaunt_water_effect)
|
||||||
jaunt_steam(mobloc)
|
jaunt_steam(mobloc)
|
||||||
|
|
||||||
@@ -86,8 +86,8 @@
|
|||||||
var/reappearing = 0
|
var/reappearing = 0
|
||||||
var/movedelay = 0
|
var/movedelay = 0
|
||||||
var/movespeed = 2
|
var/movespeed = 2
|
||||||
density = 0
|
density = FALSE
|
||||||
anchored = 1
|
anchored = TRUE
|
||||||
invisibility = 60
|
invisibility = 60
|
||||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
school = "evocation"
|
school = "evocation"
|
||||||
charge_max = 600
|
charge_max = 600
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
cooldown_min = 200 //100 deciseconds reduction per rank
|
cooldown_min = 200 //100 deciseconds reduction per rank
|
||||||
|
|
||||||
action_icon_state = "gib"
|
action_icon_state = "gib"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
charge_max = 150
|
charge_max = 150
|
||||||
charge_counter = 0
|
charge_counter = 0
|
||||||
clothes_req = FALSE
|
clothes_req = FALSE
|
||||||
stat_allowed = FALSE
|
stat_allowed = CONSCIOUS
|
||||||
invocation = "KN'A FTAGHU, PUCK 'BTHNK!"
|
invocation = "KN'A FTAGHU, PUCK 'BTHNK!"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
cooldown_min = 30 //30 deciseconds reduction per rank
|
cooldown_min = 30 //30 deciseconds reduction per rank
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
school = "conjuration"
|
school = "conjuration"
|
||||||
charge_max = 600
|
charge_max = 600
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
cooldown_min = 10 //Gun wizard
|
cooldown_min = 10 //Gun wizard
|
||||||
action_icon_state = "bolt_action"
|
action_icon_state = "bolt_action"
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
school = "transmutation"
|
school = "transmutation"
|
||||||
charge_max = 100
|
charge_max = 100
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
invocation = "AULIE OXIN FIERA"
|
invocation = "AULIE OXIN FIERA"
|
||||||
invocation_type = "whisper"
|
invocation_type = "whisper"
|
||||||
cooldown_min = 20 //20 deciseconds reduction per rank
|
cooldown_min = 20 //20 deciseconds reduction per rank
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
desc = "A dark necromantic pact that can forever bind your soul to an item of your choosing. So long as both your body and the item remain intact and on the same plane you can revive from death, though the time between reincarnations grows steadily with use."
|
desc = "A dark necromantic pact that can forever bind your soul to an item of your choosing. So long as both your body and the item remain intact and on the same plane you can revive from death, though the time between reincarnations grows steadily with use."
|
||||||
school = "necromancy"
|
school = "necromancy"
|
||||||
charge_max = 10
|
charge_max = 10
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
centcom_cancast = 0
|
centcom_cancast = FALSE
|
||||||
invocation = "NECREM IMORTIUM!"
|
invocation = "NECREM IMORTIUM!"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
level_max = 0 //cannot be improved
|
level_max = 0 //cannot be improved
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
desc = "Rise from the dead! You will reform at the location of your phylactery and your old body will crumble away."
|
desc = "Rise from the dead! You will reform at the location of your phylactery and your old body will crumble away."
|
||||||
charge_max = 1800 //3 minute cooldown, if you rise in sight of someone and killed again, you're probably screwed.
|
charge_max = 1800 //3 minute cooldown, if you rise in sight of someone and killed again, you're probably screwed.
|
||||||
charge_counter = 1800
|
charge_counter = 1800
|
||||||
stat_allowed = 1
|
stat_allowed = UNCONSCIOUS
|
||||||
marked_item.name = "Ensouled [marked_item.name]"
|
marked_item.name = "Ensouled [marked_item.name]"
|
||||||
marked_item.desc = "A terrible aura surrounds this item, its very existence is offensive to life itself..."
|
marked_item.desc = "A terrible aura surrounds this item, its very existence is offensive to life itself..."
|
||||||
marked_item.color = "#003300"
|
marked_item.color = "#003300"
|
||||||
|
|||||||
@@ -8,9 +8,9 @@
|
|||||||
invocation_emote_self = "<span class='notice'>You form a wall in front of yourself.</span>"
|
invocation_emote_self = "<span class='notice'>You form a wall in front of yourself.</span>"
|
||||||
summon_lifespan = 300
|
summon_lifespan = 300
|
||||||
charge_max = 300
|
charge_max = 300
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
cast_sound = null
|
cast_sound = null
|
||||||
human_req = 1
|
human_req = TRUE
|
||||||
|
|
||||||
action_icon_state = "mime"
|
action_icon_state = "mime"
|
||||||
action_background_icon_state = "bg_mime"
|
action_background_icon_state = "bg_mime"
|
||||||
@@ -33,9 +33,9 @@
|
|||||||
desc = "Make or break a vow of silence."
|
desc = "Make or break a vow of silence."
|
||||||
school = "mime"
|
school = "mime"
|
||||||
panel = "Mime"
|
panel = "Mime"
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
charge_max = 3000
|
charge_max = 3000
|
||||||
human_req = 1
|
human_req = TRUE
|
||||||
|
|
||||||
action_icon_state = "mime_silence"
|
action_icon_state = "mime_silence"
|
||||||
action_background_icon_state = "bg_mime"
|
action_background_icon_state = "bg_mime"
|
||||||
@@ -93,9 +93,9 @@
|
|||||||
desc = "Shoot lethal, silencing bullets out of your fingers! 3 bullets available per cast. Use your fingers to holster them manually."
|
desc = "Shoot lethal, silencing bullets out of your fingers! 3 bullets available per cast. Use your fingers to holster them manually."
|
||||||
school = "mime"
|
school = "mime"
|
||||||
panel = "Mime"
|
panel = "Mime"
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
charge_max = 300
|
charge_max = 300
|
||||||
human_req = 1
|
human_req = TRUE
|
||||||
|
|
||||||
action_icon_state = "fingergun"
|
action_icon_state = "fingergun"
|
||||||
action_background_icon_state = "bg_mime"
|
action_background_icon_state = "bg_mime"
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
to_chat(user, "<span class='notice'>You flip through the pages. Nothing of interest to you.</span>")
|
to_chat(user, "<span class='notice'>You flip through the pages. Nothing of interest to you.</span>")
|
||||||
|
|
||||||
/obj/item/spellbook/oneuse/mime/onlearned(mob/user)
|
/obj/item/spellbook/oneuse/mime/onlearned(mob/user)
|
||||||
used = 1
|
used = TRUE
|
||||||
if(!locate(/obj/effect/proc_holder/spell/mime/speak) in user.mind.spell_list) //add vow of silence if not known by user
|
if(!locate(/obj/effect/proc_holder/spell/mime/speak) in user.mind.spell_list) //add vow of silence if not known by user
|
||||||
user.mind.AddSpell(new /obj/effect/proc_holder/spell/mime/speak)
|
user.mind.AddSpell(new /obj/effect/proc_holder/spell/mime/speak)
|
||||||
to_chat(user, "<span class='notice'>You have learned how to use silence to improve your performance.</span>")
|
to_chat(user, "<span class='notice'>You have learned how to use silence to improve your performance.</span>")
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
school = "transmutation"
|
school = "transmutation"
|
||||||
|
|
||||||
charge_max = 300
|
charge_max = 300
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
cooldown_min = 100 //50 deciseconds reduction per rank
|
cooldown_min = 100 //50 deciseconds reduction per rank
|
||||||
action_icon_state = "mime"
|
action_icon_state = "mime"
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
school = "transmutation"
|
school = "transmutation"
|
||||||
charge_max = 600
|
charge_max = 600
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
invocation = "GIN'YU CAPAN"
|
invocation = "GIN'YU CAPAN"
|
||||||
invocation_type = "whisper"
|
invocation_type = "whisper"
|
||||||
selection_activated_message = "<span class='notice'>You prepare to transfer your mind. Click on a target to cast the spell.</span>"
|
selection_activated_message = "<span class='notice'>You prepare to transfer your mind. Click on a target to cast the spell.</span>"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
desc = "Toggle your nightvision mode."
|
desc = "Toggle your nightvision mode."
|
||||||
|
|
||||||
charge_max = 10
|
charge_max = 10
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
|
|
||||||
message = "<span class='notice'>You toggle your night vision!</span>"
|
message = "<span class='notice'>You toggle your night vision!</span>"
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
var/proj_lingering = 0 //if it lingers or disappears upon hitting an obstacle
|
var/proj_lingering = 0 //if it lingers or disappears upon hitting an obstacle
|
||||||
var/proj_homing = 1 //if it follows the target
|
var/proj_homing = 1 //if it follows the target
|
||||||
var/proj_insubstantial = 0 //if it can pass through dense objects or not
|
var/proj_insubstantial = FALSE //if it can pass through dense objects or not
|
||||||
var/proj_trigger_range = 0 //the range from target at which the projectile triggers cast(target)
|
var/proj_trigger_range = 0 //the range from target at which the projectile triggers cast(target)
|
||||||
|
|
||||||
var/proj_lifespan = 15 //in deciseconds * proj_step_delay
|
var/proj_lifespan = 15 //in deciseconds * proj_step_delay
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
var/obj/effect/overlay/trail = new /obj/effect/overlay(projectile.loc)
|
var/obj/effect/overlay/trail = new /obj/effect/overlay(projectile.loc)
|
||||||
trail.icon = proj_trail_icon
|
trail.icon = proj_trail_icon
|
||||||
trail.icon_state = proj_trail_icon_state
|
trail.icon_state = proj_trail_icon_state
|
||||||
trail.density = 0
|
trail.density = FALSE
|
||||||
spawn(proj_trail_lifespan)
|
spawn(proj_trail_lifespan)
|
||||||
qdel(trail)
|
qdel(trail)
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
name = "Rathen's Secret"
|
name = "Rathen's Secret"
|
||||||
desc = "Summons a powerful shockwave around you that tears the appendix and limbs off of enemies."
|
desc = "Summons a powerful shockwave around you that tears the appendix and limbs off of enemies."
|
||||||
charge_max = 500
|
charge_max = 500
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
invocation = "APPEN NATH!"
|
invocation = "APPEN NATH!"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
cooldown_min = 200
|
cooldown_min = 200
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
/obj/effect/proc_holder/spell/rod_form
|
/obj/effect/proc_holder/spell/rod_form
|
||||||
name = "Rod Form"
|
name = "Rod Form"
|
||||||
desc = "Take on the form of an immovable rod, destroying all in your path."
|
desc = "Take on the form of an immovable rod, destroying all in your path."
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
human_req = 0
|
human_req = FALSE
|
||||||
charge_max = 600
|
charge_max = 600
|
||||||
cooldown_min = 200
|
cooldown_min = 200
|
||||||
invocation = "CLANG!"
|
invocation = "CLANG!"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
action_icon_state = "immrod"
|
action_icon_state = "immrod"
|
||||||
centcom_cancast = 0
|
centcom_cancast = FALSE
|
||||||
|
|
||||||
sound = 'sound/effects/whoosh.ogg'
|
sound = 'sound/effects/whoosh.ogg'
|
||||||
var/rod_delay = 2
|
var/rod_delay = 2
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
W.max_distance += spell_level * 3 //You travel farther when you upgrade the spell
|
W.max_distance += spell_level * 3 //You travel farther when you upgrade the spell
|
||||||
W.start_turf = start
|
W.start_turf = start
|
||||||
M.forceMove(W)
|
M.forceMove(W)
|
||||||
M.notransform = 1
|
M.notransform = TRUE
|
||||||
M.status_flags |= GODMODE
|
M.status_flags |= GODMODE
|
||||||
|
|
||||||
//Wizard Version of the Immovable Rod
|
//Wizard Version of the Immovable Rod
|
||||||
@@ -43,6 +43,6 @@
|
|||||||
/obj/effect/immovablerod/wizard/Destroy()
|
/obj/effect/immovablerod/wizard/Destroy()
|
||||||
if(wizard)
|
if(wizard)
|
||||||
wizard.status_flags &= ~GODMODE
|
wizard.status_flags &= ~GODMODE
|
||||||
wizard.notransform = 0
|
wizard.notransform = FALSE
|
||||||
wizard.forceMove(get_turf(src))
|
wizard.forceMove(get_turf(src))
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/obj/effect/proc_holder/spell/shapeshift
|
/obj/effect/proc_holder/spell/shapeshift
|
||||||
name = "Shapechange"
|
name = "Shapechange"
|
||||||
desc = "Take on the shape of another for a time to use their natural abilities. Once you've made your choice it cannot be changed."
|
desc = "Take on the shape of another for a time to use their natural abilities. Once you've made your choice it cannot be changed."
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
human_req = 0
|
human_req = FALSE
|
||||||
charge_max = 200
|
charge_max = 200
|
||||||
cooldown_min = 50
|
cooldown_min = 50
|
||||||
invocation = "RAC'WA NO!"
|
invocation = "RAC'WA NO!"
|
||||||
@@ -48,8 +48,8 @@
|
|||||||
|
|
||||||
current_shapes |= shape
|
current_shapes |= shape
|
||||||
current_casters |= caster
|
current_casters |= caster
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
human_req = 0
|
human_req = FALSE
|
||||||
|
|
||||||
caster.mind.transfer_to(shape)
|
caster.mind.transfer_to(shape)
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
desc = "This spell can be used to recall a previously marked item to your hand from anywhere in the universe."
|
desc = "This spell can be used to recall a previously marked item to your hand from anywhere in the universe."
|
||||||
school = "transmutation"
|
school = "transmutation"
|
||||||
charge_max = 100
|
charge_max = 100
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
invocation = "GAR YOK"
|
invocation = "GAR YOK"
|
||||||
invocation_type = "whisper"
|
invocation_type = "whisper"
|
||||||
level_max = 0 //cannot be improved
|
level_max = 0 //cannot be improved
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
|
|
||||||
school = "evocation"
|
school = "evocation"
|
||||||
charge_max = 600
|
charge_max = 600
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
cooldown_min = 200 //100 deciseconds reduction per rank
|
cooldown_min = 200 //100 deciseconds reduction per rank
|
||||||
|
|
||||||
action_icon_state = "gib"
|
action_icon_state = "gib"
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
|
|
||||||
school = "transmutation"
|
school = "transmutation"
|
||||||
charge_max = 600
|
charge_max = 600
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
cooldown_min = 200 //100 deciseconds reduction per rank
|
cooldown_min = 200 //100 deciseconds reduction per rank
|
||||||
|
|
||||||
action_icon_state = "statue"
|
action_icon_state = "statue"
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
/obj/effect/proc_holder/spell/turf_teleport
|
/obj/effect/proc_holder/spell/turf_teleport
|
||||||
name = "Turf Teleport"
|
name = "Turf Teleport"
|
||||||
desc = "This spell teleports the target to the turf in range."
|
desc = "This spell teleports the target to the turf in range."
|
||||||
nonabstract_req = 1
|
nonabstract_req = TRUE
|
||||||
|
|
||||||
var/inner_tele_radius = 1
|
var/inner_tele_radius = 1
|
||||||
var/outer_tele_radius = 2
|
var/outer_tele_radius = 2
|
||||||
|
|
||||||
var/include_space = 0 //whether it includes space tiles in possible teleport locations
|
var/include_space = FALSE //whether it includes space tiles in possible teleport locations
|
||||||
var/include_dense = 0 //whether it includes dense tiles in possible teleport locations
|
var/include_dense = FALSE //whether it includes dense tiles in possible teleport locations
|
||||||
/// Whether the spell can teleport to light locations
|
/// Whether the spell can teleport to light locations
|
||||||
var/include_light_turfs = TRUE
|
var/include_light_turfs = TRUE
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
school = "evocation"
|
school = "evocation"
|
||||||
charge_max = 200
|
charge_max = 200
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
invocation = "FORTI GY AMA"
|
invocation = "FORTI GY AMA"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
cooldown_min = 60 //35 deciseconds reduction per rank
|
cooldown_min = 60 //35 deciseconds reduction per rank
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
school = "evocation"
|
school = "evocation"
|
||||||
charge_max = 60
|
charge_max = 60
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
invocation = "HONK GY AMA"
|
invocation = "HONK GY AMA"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
cooldown_min = 60 //35 deciseconds reduction per rank
|
cooldown_min = 60 //35 deciseconds reduction per rank
|
||||||
@@ -89,11 +89,11 @@
|
|||||||
|
|
||||||
school = "transmutation"
|
school = "transmutation"
|
||||||
charge_max = 400
|
charge_max = 400
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
invocation = "BIRUZ BENNAR"
|
invocation = "BIRUZ BENNAR"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
message = "<span class='notice'>You feel strong! You feel a pressure building behind your eyes!</span>"
|
message = "<span class='notice'>You feel strong! You feel a pressure building behind your eyes!</span>"
|
||||||
centcom_cancast = 0
|
centcom_cancast = FALSE
|
||||||
|
|
||||||
traits = list(TRAIT_LASEREYES)
|
traits = list(TRAIT_LASEREYES)
|
||||||
duration = 300
|
duration = 300
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
|
|
||||||
school = "conjuration"
|
school = "conjuration"
|
||||||
charge_max = 120
|
charge_max = 120
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
invocation = "none"
|
invocation = "none"
|
||||||
invocation_type = "none"
|
invocation_type = "none"
|
||||||
cooldown_min = 20 //25 deciseconds reduction per rank
|
cooldown_min = 20 //25 deciseconds reduction per rank
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
name = "Disable Tech"
|
name = "Disable Tech"
|
||||||
desc = "This spell disables all weapons, cameras and most other technology in range."
|
desc = "This spell disables all weapons, cameras and most other technology in range."
|
||||||
charge_max = 400
|
charge_max = 400
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
invocation = "NEC CANTIO"
|
invocation = "NEC CANTIO"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
cooldown_min = 200 //50 deciseconds reduction per rank
|
cooldown_min = 200 //50 deciseconds reduction per rank
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
|
|
||||||
school = "abjuration"
|
school = "abjuration"
|
||||||
charge_max = 20
|
charge_max = 20
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
invocation = "none"
|
invocation = "none"
|
||||||
invocation_type = "none"
|
invocation_type = "none"
|
||||||
cooldown_min = 5 //4 deciseconds reduction per rank
|
cooldown_min = 5 //4 deciseconds reduction per rank
|
||||||
@@ -160,7 +160,7 @@
|
|||||||
inner_tele_radius = 0
|
inner_tele_radius = 0
|
||||||
outer_tele_radius = 6
|
outer_tele_radius = 6
|
||||||
|
|
||||||
centcom_cancast = 0 //prevent people from getting to centcom
|
centcom_cancast = FALSE //prevent people from getting to centcom
|
||||||
|
|
||||||
action_icon_state = "blink"
|
action_icon_state = "blink"
|
||||||
|
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
|
|
||||||
school = "abjuration"
|
school = "abjuration"
|
||||||
charge_max = 600
|
charge_max = 600
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
invocation = "SCYAR NILA"
|
invocation = "SCYAR NILA"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
cooldown_min = 200 //100 deciseconds reduction per rank
|
cooldown_min = 200 //100 deciseconds reduction per rank
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
name = "Stop Time"
|
name = "Stop Time"
|
||||||
desc = "This spell stops time for everyone except for you, allowing you to move freely while your enemies and even projectiles are frozen."
|
desc = "This spell stops time for everyone except for you, allowing you to move freely while your enemies and even projectiles are frozen."
|
||||||
charge_max = 500
|
charge_max = 500
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
invocation = "TOKI WO TOMARE"
|
invocation = "TOKI WO TOMARE"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
cooldown_min = 100
|
cooldown_min = 100
|
||||||
@@ -253,7 +253,7 @@
|
|||||||
|
|
||||||
school = "conjuration"
|
school = "conjuration"
|
||||||
charge_max = 1200
|
charge_max = 1200
|
||||||
clothes_req = 1
|
clothes_req = TRUE
|
||||||
invocation = "NOUK FHUNMM SACP RISSKA"
|
invocation = "NOUK FHUNMM SACP RISSKA"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
|
|
||||||
@@ -272,7 +272,7 @@
|
|||||||
|
|
||||||
school = "conjuration"
|
school = "conjuration"
|
||||||
charge_max = 600
|
charge_max = 600
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
invocation = "none"
|
invocation = "none"
|
||||||
invocation_type = "none"
|
invocation_type = "none"
|
||||||
|
|
||||||
@@ -292,7 +292,7 @@
|
|||||||
|
|
||||||
school = "conjuration"
|
school = "conjuration"
|
||||||
charge_max = 1200
|
charge_max = 1200
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
invocation = "IA IA"
|
invocation = "IA IA"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
summon_amt = 10
|
summon_amt = 10
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
|
|
||||||
school = "transmutation"
|
school = "transmutation"
|
||||||
charge_max = 300
|
charge_max = 300
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
invocation = "STI KALY"
|
invocation = "STI KALY"
|
||||||
invocation_type = "whisper"
|
invocation_type = "whisper"
|
||||||
message = "<span class='notice'>Your eyes cry out in pain!</span>"
|
message = "<span class='notice'>Your eyes cry out in pain!</span>"
|
||||||
@@ -438,7 +438,7 @@
|
|||||||
name = "Sacred Flame"
|
name = "Sacred Flame"
|
||||||
desc = "Makes everyone around you more flammable, and lights yourself on fire."
|
desc = "Makes everyone around you more flammable, and lights yourself on fire."
|
||||||
charge_max = 60
|
charge_max = 60
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
invocation = "FI'RAN DADISKO"
|
invocation = "FI'RAN DADISKO"
|
||||||
invocation_type = "shout"
|
invocation_type = "shout"
|
||||||
action_icon_state = "sacredflame"
|
action_icon_state = "sacredflame"
|
||||||
|
|||||||
@@ -137,6 +137,35 @@
|
|||||||
else
|
else
|
||||||
new /obj/effect/temp_visual/bleed(get_turf(owner))
|
new /obj/effect/temp_visual/bleed(get_turf(owner))
|
||||||
|
|
||||||
|
/datum/status_effect/teleport_sickness
|
||||||
|
id = "teleportation sickness"
|
||||||
|
duration = 30 SECONDS
|
||||||
|
status_type = STATUS_EFFECT_REFRESH
|
||||||
|
alert_type = /obj/screen/alert/status_effect/teleport_sickness
|
||||||
|
var/teleports = 1
|
||||||
|
|
||||||
|
/obj/screen/alert/status_effect/teleport_sickness
|
||||||
|
name = "Teleportation sickness"
|
||||||
|
desc = "You feel like you are going to throw up with all this teleporting."
|
||||||
|
icon_state = "bluespace"
|
||||||
|
|
||||||
|
/datum/status_effect/teleport_sickness/refresh()
|
||||||
|
. = ..()
|
||||||
|
if(ishuman(owner))
|
||||||
|
var/mob/living/carbon/human/M = owner
|
||||||
|
teleports++
|
||||||
|
if(teleports < 3)
|
||||||
|
return
|
||||||
|
if(teleports < 6)
|
||||||
|
to_chat(M, "<span class='warning'>You feel a bit sick!</span>")
|
||||||
|
M.vomit(lost_nutrition = 15, blood = 0, stun = 0, distance = 0, message = 1)
|
||||||
|
M.Weaken(2 SECONDS)
|
||||||
|
else
|
||||||
|
to_chat(M, "<span class='danger'>You feel really sick!</span>")
|
||||||
|
M.adjustBruteLoss(rand(0, teleports * 2))
|
||||||
|
M.vomit(lost_nutrition = 30, blood = 0, stun = 0, distance = 0, message = 1)
|
||||||
|
M.Weaken(6 SECONDS)
|
||||||
|
|
||||||
/datum/status_effect/pacifism
|
/datum/status_effect/pacifism
|
||||||
id = "pacifism_debuff"
|
id = "pacifism_debuff"
|
||||||
alert_type = null
|
alert_type = null
|
||||||
|
|||||||
@@ -73,8 +73,11 @@
|
|||||||
/proc/key_name_admin(whom)
|
/proc/key_name_admin(whom)
|
||||||
if(whom)
|
if(whom)
|
||||||
var/datum/whom_datum = whom //As long as it's not null, will be close enough/has the proc UID() that is all that's needed
|
var/datum/whom_datum = whom //As long as it's not null, will be close enough/has the proc UID() that is all that's needed
|
||||||
var/message = "[key_name(whom, 1)]([ADMIN_QUE(whom_datum,"?")])[isAntag(whom) ? "<font color='red'>(A)</font>" : ""][isLivingSSD(whom) ? "<span class='danger'>(SSD!)</span>" : ""] ([admin_jump_link(whom)])"
|
if(istype(whom_datum)) // strings and numbers are not datums, but sometimes they do get here...
|
||||||
return message
|
var/message = "[key_name(whom, 1)]([ADMIN_QUE(whom_datum,"?")])[isAntag(whom) ? "<font color='red'>(A)</font>" : ""][isLivingSSD(whom) ? "<span class='danger'>(SSD!)</span>" : ""] ([admin_jump_link(whom)])"
|
||||||
|
return message
|
||||||
|
else
|
||||||
|
return "INVALID/[whom]"
|
||||||
|
|
||||||
/proc/key_name_mentor(whom)
|
/proc/key_name_mentor(whom)
|
||||||
// Same as key_name_admin, but does not include (?) or (A) for antags.
|
// Same as key_name_admin, but does not include (?) or (A) for antags.
|
||||||
|
|||||||
@@ -1070,7 +1070,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/engine/engine_smes
|
/area/engine/engine_smes
|
||||||
name = "\improper Engineering SMES"
|
name = "\improper Engineering SMES"
|
||||||
icon_state = "engine_smes"
|
icon_state = "engine_smes"
|
||||||
requires_power = FALSE //This area only covers the batteries and they deal with their own power
|
|
||||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||||
|
|
||||||
/area/engine/engineering
|
/area/engine/engineering
|
||||||
|
|||||||
@@ -186,7 +186,7 @@
|
|||||||
var/image/holder = hud_list[STATUS_HUD]
|
var/image/holder = hud_list[STATUS_HUD]
|
||||||
if(ismachineperson(src))
|
if(ismachineperson(src))
|
||||||
holder = hud_list[DIAG_STAT_HUD]
|
holder = hud_list[DIAG_STAT_HUD]
|
||||||
var/mob/living/simple_animal/borer/B = has_brain_worms()
|
|
||||||
// To the right of health bar
|
// To the right of health bar
|
||||||
if(stat == DEAD || HAS_TRAIT(src, TRAIT_FAKEDEATH))
|
if(stat == DEAD || HAS_TRAIT(src, TRAIT_FAKEDEATH))
|
||||||
var/revivable
|
var/revivable
|
||||||
@@ -204,8 +204,6 @@
|
|||||||
|
|
||||||
else if(HAS_TRAIT(src, TRAIT_XENO_HOST))
|
else if(HAS_TRAIT(src, TRAIT_XENO_HOST))
|
||||||
holder.icon_state = "hudxeno"
|
holder.icon_state = "hudxeno"
|
||||||
else if(B && B.controlling)
|
|
||||||
holder.icon_state = "hudbrainworm"
|
|
||||||
else if(is_in_crit())
|
else if(is_in_crit())
|
||||||
holder.icon_state = "huddefib"
|
holder.icon_state = "huddefib"
|
||||||
else if(has_virus())
|
else if(has_virus())
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||||
minbodytemp = 0
|
minbodytemp = 0
|
||||||
maxbodytemp = 360
|
maxbodytemp = 360
|
||||||
universal_speak = 1 //So mobs can understand them when a blob uses Blob Broadcast
|
universal_speak = TRUE //So mobs can understand them when a blob uses Blob Broadcast
|
||||||
sentience_type = SENTIENCE_OTHER
|
sentience_type = SENTIENCE_OTHER
|
||||||
gold_core_spawnable = NO_SPAWN
|
gold_core_spawnable = NO_SPAWN
|
||||||
can_be_on_fire = TRUE
|
can_be_on_fire = TRUE
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
icon = 'icons/mob/blob.dmi'
|
icon = 'icons/mob/blob.dmi'
|
||||||
light_range = 3
|
light_range = 3
|
||||||
desc = "Some blob creature thingy"
|
desc = "Some blob creature thingy"
|
||||||
density = 0
|
density = FALSE
|
||||||
opacity = 0
|
opacity = FALSE
|
||||||
anchored = 1
|
anchored = TRUE
|
||||||
max_integrity = 30
|
max_integrity = 30
|
||||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 70)
|
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 70)
|
||||||
var/point_return = 0 //How many points the blob gets back when it removes a blob of that type. If less than 0, blob cannot be removed.
|
var/point_return = 0 //How many points the blob gets back when it removes a blob of that type. If less than 0, blob cannot be removed.
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
if(!T) return 0
|
if(!T) return 0
|
||||||
var/obj/structure/blob/normal/B = new /obj/structure/blob/normal(src.loc, min(obj_integrity, 30))
|
var/obj/structure/blob/normal/B = new /obj/structure/blob/normal(src.loc, min(obj_integrity, 30))
|
||||||
B.color = a_color
|
B.color = a_color
|
||||||
B.density = 1
|
B.density = TRUE
|
||||||
if(T.Enter(B,src))//Attempt to move into the tile
|
if(T.Enter(B,src))//Attempt to move into the tile
|
||||||
B.density = initial(B.density)
|
B.density = initial(B.density)
|
||||||
B.loc = T
|
B.loc = T
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
icon_state = "bola_cult"
|
icon_state = "bola_cult"
|
||||||
item_state = "bola_cult"
|
item_state = "bola_cult"
|
||||||
breakouttime = 45
|
breakouttime = 45
|
||||||
weaken = 2 SECONDS
|
knockdown_duration = 2 SECONDS
|
||||||
|
|
||||||
/obj/item/restraints/legcuffs/bola/cult/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
/obj/item/restraints/legcuffs/bola/cult/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
||||||
if(iscultist(hit_atom))
|
if(iscultist(hit_atom))
|
||||||
@@ -262,7 +262,7 @@
|
|||||||
item_state = "blindfold"
|
item_state = "blindfold"
|
||||||
see_in_dark = 8
|
see_in_dark = 8
|
||||||
invis_override = SEE_INVISIBLE_HIDDEN_RUNES
|
invis_override = SEE_INVISIBLE_HIDDEN_RUNES
|
||||||
flash_protect = TRUE
|
flash_protect = FLASH_PROTECTION_FLASH
|
||||||
prescription = TRUE
|
prescription = TRUE
|
||||||
origin_tech = null
|
origin_tech = null
|
||||||
|
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
|||||||
ghost_invokers++
|
ghost_invokers++
|
||||||
if(invocation)
|
if(invocation)
|
||||||
if(!L.IsVocal())
|
if(!L.IsVocal())
|
||||||
L.emote("gestures ominously.")
|
L.custom_emote(EMOTE_VISIBLE, message = pick("draws arcane sigils in the air.","gestures ominously.","silently mouths out an invocation.","places their hands on the rune, activating it."))
|
||||||
else
|
else
|
||||||
L.say(invocation)
|
L.say(invocation)
|
||||||
L.changeNext_move(CLICK_CD_MELEE)//THIS IS WHY WE CAN'T HAVE NICE THINGS
|
L.changeNext_move(CLICK_CD_MELEE)//THIS IS WHY WE CAN'T HAVE NICE THINGS
|
||||||
|
|||||||
@@ -16,11 +16,11 @@
|
|||||||
/datum/game_mode
|
/datum/game_mode
|
||||||
var/name = "invalid"
|
var/name = "invalid"
|
||||||
var/config_tag = null
|
var/config_tag = null
|
||||||
var/intercept_hacked = 0
|
var/intercept_hacked = FALSE
|
||||||
var/votable = 1
|
var/votable = TRUE
|
||||||
var/probability = 0
|
var/probability = 0
|
||||||
var/station_was_nuked = 0 //see nuclearbomb.dm and malfunction.dm
|
var/station_was_nuked = FALSE //see nuclearbomb.dm and malfunction.dm
|
||||||
var/explosion_in_progress = 0 //sit back and relax
|
var/explosion_in_progress = FALSE //sit back and relax
|
||||||
var/list/datum/mind/modePlayer = new
|
var/list/datum/mind/modePlayer = new
|
||||||
var/list/restricted_jobs = list() // Jobs it doesn't make sense to be. I.E chaplain or AI cultist
|
var/list/restricted_jobs = list() // Jobs it doesn't make sense to be. I.E chaplain or AI cultist
|
||||||
var/list/secondary_restricted_jobs = list() // Same as above, but for secondary antagonists
|
var/list/secondary_restricted_jobs = list() // Same as above, but for secondary antagonists
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
var/secondary_enemies = 0
|
var/secondary_enemies = 0
|
||||||
var/secondary_enemies_scaling = 0 // Scaling rate of secondary enemies
|
var/secondary_enemies_scaling = 0 // Scaling rate of secondary enemies
|
||||||
var/newscaster_announcements = null
|
var/newscaster_announcements = null
|
||||||
var/ert_disabled = 0
|
var/ert_disabled = FALSE
|
||||||
var/uplink_welcome = "Syndicate Uplink Console:"
|
var/uplink_welcome = "Syndicate Uplink Console:"
|
||||||
var/uplink_uses = 20
|
var/uplink_uses = 20
|
||||||
|
|
||||||
|
|||||||
@@ -261,11 +261,11 @@
|
|||||||
name = "doomsday device"
|
name = "doomsday device"
|
||||||
icon_state = "nuclearbomb_base"
|
icon_state = "nuclearbomb_base"
|
||||||
desc = "A weapon which disintegrates all organic life in a large area."
|
desc = "A weapon which disintegrates all organic life in a large area."
|
||||||
anchored = 1
|
anchored = TRUE
|
||||||
density = 1
|
density = TRUE
|
||||||
atom_say_verb = "blares"
|
atom_say_verb = "blares"
|
||||||
speed_process = TRUE // Disgusting fix. Please remove once #12952 is merged
|
speed_process = TRUE // Disgusting fix. Please remove once #12952 is merged
|
||||||
var/timing = 0
|
var/timing = FALSE
|
||||||
var/default_timer = 4500
|
var/default_timer = 4500
|
||||||
var/detonation_timer
|
var/detonation_timer
|
||||||
var/announced = 0
|
var/announced = 0
|
||||||
@@ -281,7 +281,7 @@
|
|||||||
|
|
||||||
/obj/machinery/doomsday_device/proc/start()
|
/obj/machinery/doomsday_device/proc/start()
|
||||||
detonation_timer = world.time + default_timer
|
detonation_timer = world.time + default_timer
|
||||||
timing = 1
|
timing = TRUE
|
||||||
START_PROCESSING(SSfastprocess, src)
|
START_PROCESSING(SSfastprocess, src)
|
||||||
SSshuttle.emergencyNoEscape = 1
|
SSshuttle.emergencyNoEscape = 1
|
||||||
|
|
||||||
@@ -303,7 +303,7 @@
|
|||||||
return
|
return
|
||||||
var/sec_left = seconds_remaining()
|
var/sec_left = seconds_remaining()
|
||||||
if(sec_left <= 0)
|
if(sec_left <= 0)
|
||||||
timing = 0
|
timing = FALSE
|
||||||
detonate(T.z)
|
detonate(T.z)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
var/list/datum/mind/agents = list()
|
var/list/datum/mind/agents = list()
|
||||||
var/list/datum/objective/team_objectives = list()
|
var/list/datum/objective/team_objectives = list()
|
||||||
var/list/team_names = list()
|
var/list/team_names = list()
|
||||||
var/finished = 0
|
var/finished = FALSE
|
||||||
var/list/datum/mind/possible_abductors = list()
|
var/list/datum/mind/possible_abductors = list()
|
||||||
|
|
||||||
/datum/game_mode/abduction/announce()
|
/datum/game_mode/abduction/announce()
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
if(con.experiment.points >= objective.target_amount)
|
if(con.experiment.points >= objective.target_amount)
|
||||||
SSshuttle.emergency.request(null, 0.5, reason = "Large amount of abnormal thought patterns detected. All crew are recalled for mandatory evaluation and reconditioning.")
|
SSshuttle.emergency.request(null, 0.5, reason = "Large amount of abnormal thought patterns detected. All crew are recalled for mandatory evaluation and reconditioning.")
|
||||||
SSshuttle.emergency.canRecall = FALSE
|
SSshuttle.emergency.canRecall = FALSE
|
||||||
finished = 1
|
finished = TRUE
|
||||||
return ..()
|
return ..()
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
|||||||
@@ -274,7 +274,7 @@
|
|||||||
for(var/obj/I in all_items)
|
for(var/obj/I in all_items)
|
||||||
if(istype(I, /obj/item/radio))
|
if(istype(I, /obj/item/radio))
|
||||||
var/obj/item/radio/R = I
|
var/obj/item/radio/R = I
|
||||||
R.listening = 0 // Prevents the radio from buzzing due to the EMP, preserving possible stealthiness.
|
R.listening = FALSE // Prevents the radio from buzzing due to the EMP, preserving possible stealthiness.
|
||||||
R.emp_act(1)
|
R.emp_act(1)
|
||||||
|
|
||||||
/obj/item/abductor/mind_device
|
/obj/item/abductor/mind_device
|
||||||
|
|||||||
@@ -62,10 +62,12 @@
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
/datum/surgery_step/internal/gland_insert/end_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
/datum/surgery_step/internal/gland_insert/end_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||||
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||||
user.visible_message("[user] inserts [tool] into [target].", "<span class ='notice'>You insert [tool] into [target].</span>")
|
user.visible_message("[user] inserts [tool] into [target].", "<span class ='notice'>You insert [tool] into [target].</span>")
|
||||||
user.drop_item()
|
user.drop_item()
|
||||||
var/obj/item/organ/internal/heart/gland/gland = tool
|
var/obj/item/organ/internal/heart/gland/gland = tool
|
||||||
gland.insert(target, 2)
|
gland.insert(target, 2)
|
||||||
|
affected.mend_fracture() // Look, any sufficiently advanced technology is indistinguishable from magic.
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/datum/surgery_step/internal/gland_insert/fail_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
/datum/surgery_step/internal/gland_insert/fail_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||||
@@ -78,7 +80,7 @@
|
|||||||
name = "Experimental Robotic Dissection"
|
name = "Experimental Robotic Dissection"
|
||||||
steps = list(/datum/surgery_step/robotics/external/unscrew_hatch,/datum/surgery_step/robotics/external/open_hatch,/datum/surgery_step/internal/extract_organ/synth,/datum/surgery_step/internal/gland_insert,/datum/surgery_step/robotics/external/close_hatch)
|
steps = list(/datum/surgery_step/robotics/external/unscrew_hatch,/datum/surgery_step/robotics/external/open_hatch,/datum/surgery_step/internal/extract_organ/synth,/datum/surgery_step/internal/gland_insert,/datum/surgery_step/robotics/external/close_hatch)
|
||||||
possible_locs = list("chest")
|
possible_locs = list("chest")
|
||||||
requires_organic_bodypart = 0
|
requires_organic_bodypart = FALSE
|
||||||
|
|
||||||
/datum/surgery/organ_extraction/synth/can_start(mob/user, mob/living/carbon/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
/datum/surgery/organ_extraction/synth/can_start(mob/user, mob/living/carbon/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||||
if(!ishuman(user))
|
if(!ishuman(user))
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
var/cooldown_high = 300
|
var/cooldown_high = 300
|
||||||
var/next_activation = 0
|
var/next_activation = 0
|
||||||
var/uses // -1 For inifinite
|
var/uses // -1 For inifinite
|
||||||
var/human_only = 0
|
var/human_only = FALSE
|
||||||
var/active = 0
|
var/active = FALSE
|
||||||
tough = TRUE //not easily broken by combat damage
|
tough = TRUE //not easily broken by combat damage
|
||||||
|
|
||||||
var/mind_control_uses = 1
|
var/mind_control_uses = 1
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
/obj/item/organ/internal/heart/gland/proc/Start()
|
/obj/item/organ/internal/heart/gland/proc/Start()
|
||||||
active = 1
|
active = TRUE
|
||||||
next_activation = world.time + rand(cooldown_low,cooldown_high)
|
next_activation = world.time + rand(cooldown_low,cooldown_high)
|
||||||
|
|
||||||
/obj/item/organ/internal/heart/gland/proc/update_gland_hud()
|
/obj/item/organ/internal/heart/gland/proc/update_gland_hud()
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
update_gland_hud()
|
update_gland_hud()
|
||||||
|
|
||||||
/obj/item/organ/internal/heart/gland/remove(mob/living/carbon/M, special = 0)
|
/obj/item/organ/internal/heart/gland/remove(mob/living/carbon/M, special = 0)
|
||||||
active = 0
|
active = FALSE
|
||||||
if(initial(uses) == 1)
|
if(initial(uses) == 1)
|
||||||
uses = initial(uses)
|
uses = initial(uses)
|
||||||
var/datum/atom_hud/abductor/hud = GLOB.huds[DATA_HUD_ABDUCTOR]
|
var/datum/atom_hud/abductor/hud = GLOB.huds[DATA_HUD_ABDUCTOR]
|
||||||
@@ -90,14 +90,14 @@
|
|||||||
if(!active)
|
if(!active)
|
||||||
return
|
return
|
||||||
if(!ownerCheck())
|
if(!ownerCheck())
|
||||||
active = 0
|
active = FALSE
|
||||||
return
|
return
|
||||||
if(next_activation <= world.time)
|
if(next_activation <= world.time)
|
||||||
activate()
|
activate()
|
||||||
uses--
|
uses--
|
||||||
next_activation = world.time + rand(cooldown_low,cooldown_high)
|
next_activation = world.time + rand(cooldown_low,cooldown_high)
|
||||||
if(!uses)
|
if(!uses)
|
||||||
active = 0
|
active = FALSE
|
||||||
|
|
||||||
/obj/item/organ/internal/heart/gland/proc/activate()
|
/obj/item/organ/internal/heart/gland/proc/activate()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
desc = "Use this to transport to and from human habitat"
|
desc = "Use this to transport to and from human habitat"
|
||||||
icon = 'icons/obj/abductor.dmi'
|
icon = 'icons/obj/abductor.dmi'
|
||||||
icon_state = "alien-pad-idle"
|
icon_state = "alien-pad-idle"
|
||||||
anchored = 1
|
anchored = TRUE
|
||||||
var/turf/teleport_target
|
var/turf/teleport_target
|
||||||
|
|
||||||
/obj/machinery/abductor/pad/proc/Warp(mob/living/target)
|
/obj/machinery/abductor/pad/proc/Warp(mob/living/target)
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,51 +0,0 @@
|
|||||||
/datum/borer_chem
|
|
||||||
var/chemname
|
|
||||||
var/chemdesc = "This is a chemical"
|
|
||||||
var/chemuse = 30
|
|
||||||
var/quantity = 10
|
|
||||||
|
|
||||||
/datum/borer_chem/capulettium_plus
|
|
||||||
chemname = "capulettium_plus"
|
|
||||||
chemdesc = "Silences and masks pulse."
|
|
||||||
|
|
||||||
/datum/borer_chem/charcoal
|
|
||||||
chemname = "charcoal"
|
|
||||||
chemdesc = "Slowly heals toxin damage, also slowly removes other chemicals."
|
|
||||||
|
|
||||||
/datum/borer_chem/epinephrine
|
|
||||||
chemname = "epinephrine"
|
|
||||||
chemdesc = "Stabilizes critical condition and slowly heals suffocation damage."
|
|
||||||
|
|
||||||
/datum/borer_chem/fliptonium
|
|
||||||
chemname = "fliptonium"
|
|
||||||
chemdesc = "Causes uncontrollable flipping."
|
|
||||||
chemuse = 50
|
|
||||||
|
|
||||||
/datum/borer_chem/hydrocodone
|
|
||||||
chemname = "hydrocodone"
|
|
||||||
chemdesc = "An extremely strong painkiller."
|
|
||||||
|
|
||||||
/datum/borer_chem/mannitol
|
|
||||||
chemname = "mannitol"
|
|
||||||
chemdesc = "Heals brain damage."
|
|
||||||
|
|
||||||
/datum/borer_chem/methamphetamine
|
|
||||||
chemname = "methamphetamine"
|
|
||||||
chemdesc = "Reduces stun times and increases stamina. Deals small amounts of brain damage."
|
|
||||||
chemuse = 50
|
|
||||||
|
|
||||||
/datum/borer_chem/mitocholide
|
|
||||||
chemname = "mitocholide"
|
|
||||||
chemdesc = "Heals internal organ damage."
|
|
||||||
|
|
||||||
/datum/borer_chem/salbutamol
|
|
||||||
chemname = "salbutamol"
|
|
||||||
chemdesc = "Heals suffocation damage."
|
|
||||||
|
|
||||||
/datum/borer_chem/salglu_solution
|
|
||||||
chemname = "salglu_solution"
|
|
||||||
chemdesc = "Slowly heals brute and burn damage, also slowly restores blood."
|
|
||||||
|
|
||||||
/datum/borer_chem/spaceacillin
|
|
||||||
chemname = "spaceacillin"
|
|
||||||
chemdesc = "Slows progression of diseases and fights infections."
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
//Cortical borer spawn event - care of RobRichards1997 with minor editing by Zuhayr.
|
|
||||||
|
|
||||||
/datum/event/borer_infestation
|
|
||||||
announceWhen = 400
|
|
||||||
|
|
||||||
var/spawncount = 5
|
|
||||||
var/successSpawn = FALSE //So we don't make a command report if nothing gets spawned.
|
|
||||||
|
|
||||||
/datum/event/borer_infestation/setup()
|
|
||||||
announceWhen = rand(announceWhen, announceWhen + 50)
|
|
||||||
spawncount = rand(2, 3)
|
|
||||||
|
|
||||||
/datum/event/borer_infestation/announce()
|
|
||||||
if(successSpawn)
|
|
||||||
GLOB.command_announcement.Announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", new_sound = 'sound/AI/aliens.ogg')
|
|
||||||
else
|
|
||||||
log_and_message_admins("Warning: Could not spawn any mobs for event Borer Infestation")
|
|
||||||
|
|
||||||
/datum/event/borer_infestation/start()
|
|
||||||
var/list/vents = get_valid_vent_spawns(exclude_mobs_nearby = TRUE)
|
|
||||||
if(!length(vents))
|
|
||||||
message_admins("Warning: No suitable vents detected for spawning borers. Force picking from station vents regardless of state!")
|
|
||||||
vents = get_valid_vent_spawns(unwelded_only = FALSE, min_network_size = 0)
|
|
||||||
while(spawncount && length(vents))
|
|
||||||
var/obj/vent = pick_n_take(vents)
|
|
||||||
new /mob/living/simple_animal/borer(vent.loc)
|
|
||||||
successSpawn = TRUE
|
|
||||||
spawncount--
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
/mob/living/simple_animal/borer/proc/get_html_template(content)
|
|
||||||
var/html = {"<!DOCTYPE html">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Borer Chemicals</title>
|
|
||||||
<link rel='stylesheet' type='text/css' href='icons.css'>
|
|
||||||
<link rel='stylesheet' type='text/css' href='shared.css'>
|
|
||||||
<style type='text/css'>
|
|
||||||
body {
|
|
||||||
font-size: 12px;
|
|
||||||
color: #ffffff;
|
|
||||||
font-family: Verdana, Geneva, sans-serif;
|
|
||||||
background: #272727;
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
a, a:link, a:visited, a:active, .link, .linkOn, .linkOff, .selected, .disabled {
|
|
||||||
color: #ffffff;
|
|
||||||
text-decoration: none;
|
|
||||||
background: #40628a;
|
|
||||||
border: 1px solid #161616;
|
|
||||||
cursor: pointer;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
a:hover, .linkActive:hover {
|
|
||||||
background: #507aac;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
p {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 11px;
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
table {
|
|
||||||
width: 560px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
width: 560px;
|
|
||||||
}
|
|
||||||
.chem-select {
|
|
||||||
width: 560px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.enabled {
|
|
||||||
background-color: #0a0;
|
|
||||||
}
|
|
||||||
.disabled {
|
|
||||||
background-color: #a00;
|
|
||||||
}
|
|
||||||
.shown {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.hidden {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script src="jquery.min.js"></script>
|
|
||||||
<script type='text/javascript'>
|
|
||||||
function update_chemicals(chemicals) {
|
|
||||||
$('#chemicals').text(chemicals);
|
|
||||||
}
|
|
||||||
$(function() {
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body scroll='yes'><div id='content'>
|
|
||||||
[content]
|
|
||||||
</div></body></html>"}
|
|
||||||
return html
|
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
speed = 0
|
speed = 0
|
||||||
mob_biotypes = NONE
|
mob_biotypes = NONE
|
||||||
a_intent = INTENT_HARM
|
a_intent = INTENT_HARM
|
||||||
can_change_intents = 0
|
can_change_intents = FALSE
|
||||||
stop_automated_movement = 1
|
stop_automated_movement = TRUE
|
||||||
flying = TRUE
|
flying = TRUE
|
||||||
attack_sound = 'sound/weapons/punch1.ogg'
|
attack_sound = 'sound/weapons/punch1.ogg'
|
||||||
minbodytemp = 0
|
minbodytemp = 0
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
var/summoned = FALSE
|
var/summoned = FALSE
|
||||||
var/cooldown = 0
|
var/cooldown = 0
|
||||||
var/damage_transfer = 1 //how much damage from each attack we transfer to the owner
|
var/damage_transfer = 1 //how much damage from each attack we transfer to the owner
|
||||||
var/light_on = 0
|
var/light_on = FALSE
|
||||||
var/luminosity_on = 3
|
var/luminosity_on = 3
|
||||||
var/mob/living/summoner
|
var/mob/living/summoner
|
||||||
var/range = 10 //how far from the user the spirit can be
|
var/range = 10 //how far from the user the spirit can be
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/mob/living/simple_animal/hostile/guardian/charger
|
/mob/living/simple_animal/hostile/guardian/charger
|
||||||
melee_damage_lower = 15
|
melee_damage_lower = 15
|
||||||
melee_damage_upper = 15
|
melee_damage_upper = 15
|
||||||
ranged = 1 //technically
|
ranged = TRUE //technically
|
||||||
ranged_message = "charges"
|
ranged_message = "charges"
|
||||||
ranged_cooldown_time = 40
|
ranged_cooldown_time = 40
|
||||||
speed = -1
|
speed = -1
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
magic_fluff_string = "..And draw the Hunter, an alien master of rapid assault."
|
magic_fluff_string = "..And draw the Hunter, an alien master of rapid assault."
|
||||||
tech_fluff_string = "Boot sequence complete. Charge modules loaded. Holoparasite swarm online."
|
tech_fluff_string = "Boot sequence complete. Charge modules loaded. Holoparasite swarm online."
|
||||||
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, ready to deal damage."
|
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, ready to deal damage."
|
||||||
var/charging = 0
|
var/charging = FALSE
|
||||||
var/obj/screen/alert/chargealert
|
var/obj/screen/alert/chargealert
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/guardian/charger/Life()
|
/mob/living/simple_animal/hostile/guardian/charger/Life()
|
||||||
@@ -31,11 +31,11 @@
|
|||||||
Shoot(A)
|
Shoot(A)
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/guardian/charger/Shoot(atom/targeted_atom)
|
/mob/living/simple_animal/hostile/guardian/charger/Shoot(atom/targeted_atom)
|
||||||
charging = 1
|
charging = TRUE
|
||||||
throw_at(targeted_atom, range, 1, src, 0, callback = CALLBACK(src, .proc/charging_end))
|
throw_at(targeted_atom, range, 1, src, 0, callback = CALLBACK(src, .proc/charging_end))
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/guardian/charger/proc/charging_end()
|
/mob/living/simple_animal/hostile/guardian/charger/proc/charging_end()
|
||||||
charging = 0
|
charging = FALSE
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/guardian/charger/Move()
|
/mob/living/simple_animal/hostile/guardian/charger/Move()
|
||||||
if(charging)
|
if(charging)
|
||||||
@@ -69,4 +69,4 @@
|
|||||||
shake_camera(L, 4, 3)
|
shake_camera(L, 4, 3)
|
||||||
shake_camera(src, 2, 3)
|
shake_camera(src, 2, 3)
|
||||||
|
|
||||||
charging = 0
|
charging = FALSE
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
projectiletype = /obj/item/projectile/guardian
|
projectiletype = /obj/item/projectile/guardian
|
||||||
ranged_cooldown_time = 5 //fast!
|
ranged_cooldown_time = 5 //fast!
|
||||||
projectilesound = 'sound/effects/hit_on_shattered_glass.ogg'
|
projectilesound = 'sound/effects/hit_on_shattered_glass.ogg'
|
||||||
ranged = 1
|
ranged = TRUE
|
||||||
range = 13
|
range = 13
|
||||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||||
see_in_dark = 8
|
see_in_dark = 8
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
/mob/living/simple_animal/hostile/guardian/ranged/ToggleMode()
|
/mob/living/simple_animal/hostile/guardian/ranged/ToggleMode()
|
||||||
if(loc == summoner)
|
if(loc == summoner)
|
||||||
if(toggle)
|
if(toggle)
|
||||||
ranged = 1
|
ranged = TRUE
|
||||||
melee_damage_lower = 10
|
melee_damage_lower = 10
|
||||||
melee_damage_upper = 10
|
melee_damage_upper = 10
|
||||||
obj_damage = initial(obj_damage)
|
obj_damage = initial(obj_damage)
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
to_chat(src, "<span class='danger'>You switch to combat mode.</span>")
|
to_chat(src, "<span class='danger'>You switch to combat mode.</span>")
|
||||||
toggle = FALSE
|
toggle = FALSE
|
||||||
else
|
else
|
||||||
ranged = 0
|
ranged = FALSE
|
||||||
melee_damage_lower = 0
|
melee_damage_lower = 0
|
||||||
melee_damage_upper = 0
|
melee_damage_upper = 0
|
||||||
obj_damage = 0
|
obj_damage = 0
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
icon_dead = "morph_dead"
|
icon_dead = "morph_dead"
|
||||||
speed = 1.5
|
speed = 1.5
|
||||||
a_intent = INTENT_HARM
|
a_intent = INTENT_HARM
|
||||||
stop_automated_movement = 1
|
stop_automated_movement = TRUE
|
||||||
status_flags = CANPUSH
|
status_flags = CANPUSH
|
||||||
pass_flags = PASSTABLE
|
pass_flags = PASSTABLE
|
||||||
move_resist = MOVE_FORCE_STRONG // Fat being
|
move_resist = MOVE_FORCE_STRONG // Fat being
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
see_in_dark = 8
|
see_in_dark = 8
|
||||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||||
vision_range = 1 // Only attack when target is close
|
vision_range = 1 // Only attack when target is close
|
||||||
wander = 0
|
wander = FALSE
|
||||||
attacktext = "glomps"
|
attacktext = "glomps"
|
||||||
attack_sound = 'sound/effects/blobattack.ogg'
|
attack_sound = 'sound/effects/blobattack.ogg'
|
||||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2)
|
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
var/datum/mind/player_mind = new /datum/mind(key_of_morph)
|
var/datum/mind/player_mind = new /datum/mind(key_of_morph)
|
||||||
player_mind.active = 1
|
player_mind.active = TRUE
|
||||||
if(!GLOB.xeno_spawn)
|
if(!GLOB.xeno_spawn)
|
||||||
kill()
|
kill()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
maxHealth = INFINITY
|
maxHealth = INFINITY
|
||||||
see_in_dark = 8
|
see_in_dark = 8
|
||||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||||
universal_understand = 1
|
universal_understand = TRUE
|
||||||
response_help = "passes through"
|
response_help = "passes through"
|
||||||
response_disarm = "swings at"
|
response_disarm = "swings at"
|
||||||
response_harm = "punches"
|
response_harm = "punches"
|
||||||
@@ -33,8 +33,8 @@
|
|||||||
harm_intent_damage = 0
|
harm_intent_damage = 0
|
||||||
friendly = "touches"
|
friendly = "touches"
|
||||||
status_flags = 0
|
status_flags = 0
|
||||||
wander = 0
|
wander = FALSE
|
||||||
density = 0
|
density = FALSE
|
||||||
flying = TRUE
|
flying = TRUE
|
||||||
move_resist = INFINITY
|
move_resist = INFINITY
|
||||||
mob_size = MOB_SIZE_TINY
|
mob_size = MOB_SIZE_TINY
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
to_chat(src, "<span class='revenboldnotice'>You are once more concealed.</span>")
|
to_chat(src, "<span class='revenboldnotice'>You are once more concealed.</span>")
|
||||||
if(unstun_time && world.time >= unstun_time)
|
if(unstun_time && world.time >= unstun_time)
|
||||||
unstun_time = 0
|
unstun_time = 0
|
||||||
notransform = 0
|
notransform = FALSE
|
||||||
to_chat(src, "<span class='revenboldnotice'>You can move again!</span>")
|
to_chat(src, "<span class='revenboldnotice'>You can move again!</span>")
|
||||||
update_spooky_icon()
|
update_spooky_icon()
|
||||||
|
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
to_chat(src, "<span class='revendanger'>NO! No... it's too late, you can feel your essence breaking apart...</span>")
|
to_chat(src, "<span class='revendanger'>NO! No... it's too late, you can feel your essence breaking apart...</span>")
|
||||||
notransform = 1
|
notransform = TRUE
|
||||||
revealed = 1
|
revealed = 1
|
||||||
invisibility = 0
|
invisibility = 0
|
||||||
playsound(src, 'sound/effects/screech.ogg', 100, 1)
|
playsound(src, 'sound/effects/screech.ogg', 100, 1)
|
||||||
@@ -290,7 +290,7 @@
|
|||||||
/mob/living/simple_animal/revenant/proc/stun(time)
|
/mob/living/simple_animal/revenant/proc/stun(time)
|
||||||
if(time <= 0)
|
if(time <= 0)
|
||||||
return
|
return
|
||||||
notransform = 1
|
notransform = TRUE
|
||||||
if(!unstun_time)
|
if(!unstun_time)
|
||||||
to_chat(src, "<span class='revendanger'>You cannot move!</span>")
|
to_chat(src, "<span class='revendanger'>You cannot move!</span>")
|
||||||
unstun_time = world.time + time
|
unstun_time = world.time + time
|
||||||
@@ -429,7 +429,7 @@
|
|||||||
visible_message("<span class='revenwarning'>[src] settles down and seems lifeless.</span>")
|
visible_message("<span class='revenwarning'>[src] settles down and seems lifeless.</span>")
|
||||||
return
|
return
|
||||||
var/datum/mind/player_mind = new /datum/mind(key_of_revenant)
|
var/datum/mind/player_mind = new /datum/mind(key_of_revenant)
|
||||||
player_mind.active = 1
|
player_mind.active = TRUE
|
||||||
player_mind.transfer_to(R)
|
player_mind.transfer_to(R)
|
||||||
player_mind.assigned_role = SPECIAL_ROLE_REVENANT
|
player_mind.assigned_role = SPECIAL_ROLE_REVENANT
|
||||||
player_mind.special_role = SPECIAL_ROLE_REVENANT
|
player_mind.special_role = SPECIAL_ROLE_REVENANT
|
||||||
|
|||||||
@@ -119,7 +119,7 @@
|
|||||||
desc = "Telepathically transmits a message to the target."
|
desc = "Telepathically transmits a message to the target."
|
||||||
panel = "Revenant Abilities"
|
panel = "Revenant Abilities"
|
||||||
charge_max = 0
|
charge_max = 0
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
action_icon_state = "r_transmit"
|
action_icon_state = "r_transmit"
|
||||||
action_background_icon_state = "bg_revenant"
|
action_background_icon_state = "bg_revenant"
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/effect/proc_holder/spell/aoe_turf/revenant
|
/obj/effect/proc_holder/spell/aoe_turf/revenant
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
action_background_icon_state = "bg_revenant"
|
action_background_icon_state = "bg_revenant"
|
||||||
panel = "Revenant Abilities (Locked)"
|
panel = "Revenant Abilities (Locked)"
|
||||||
name = "Report this to a coder"
|
name = "Report this to a coder"
|
||||||
@@ -367,8 +367,8 @@
|
|||||||
if(prob(15))
|
if(prob(15))
|
||||||
if(intact && floor_tile)
|
if(intact && floor_tile)
|
||||||
new floor_tile(src)
|
new floor_tile(src)
|
||||||
broken = 0
|
broken = FALSE
|
||||||
burnt = 0
|
burnt = FALSE
|
||||||
make_plating(1)
|
make_plating(1)
|
||||||
|
|
||||||
/turf/simulated/floor/plating/defile()
|
/turf/simulated/floor/plating/defile()
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
var/datum/mind/player_mind = new /datum/mind(key_of_revenant)
|
var/datum/mind/player_mind = new /datum/mind(key_of_revenant)
|
||||||
player_mind.active = 1
|
player_mind.active = TRUE
|
||||||
var/list/spawn_locs = list()
|
var/list/spawn_locs = list()
|
||||||
for(var/obj/effect/landmark/spawner/rev/R in GLOB.landmarks_list)
|
for(var/obj/effect/landmark/spawner/rev/R in GLOB.landmarks_list)
|
||||||
spawn_locs += get_turf(R)
|
spawn_locs += get_turf(R)
|
||||||
|
|||||||
@@ -26,8 +26,8 @@
|
|||||||
var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(mobloc)
|
var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(mobloc)
|
||||||
var/atom/movable/overlay/animation = new /atom/movable/overlay(mobloc)
|
var/atom/movable/overlay/animation = new /atom/movable/overlay(mobloc)
|
||||||
animation.name = "odd blood"
|
animation.name = "odd blood"
|
||||||
animation.density = 0
|
animation.density = FALSE
|
||||||
animation.anchored = 1
|
animation.anchored = TRUE
|
||||||
animation.icon = 'icons/mob/mob.dmi'
|
animation.icon = 'icons/mob/mob.dmi'
|
||||||
animation.icon_state = "jaunt"
|
animation.icon_state = "jaunt"
|
||||||
animation.layer = 5
|
animation.layer = 5
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
sleep(6)
|
sleep(6)
|
||||||
if(animation)
|
if(animation)
|
||||||
qdel(animation)
|
qdel(animation)
|
||||||
notransform = 0
|
notransform = FALSE
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/item/bloodcrawl
|
/obj/item/bloodcrawl
|
||||||
@@ -120,8 +120,8 @@
|
|||||||
|
|
||||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( B.loc )
|
var/atom/movable/overlay/animation = new /atom/movable/overlay( B.loc )
|
||||||
animation.name = "odd blood"
|
animation.name = "odd blood"
|
||||||
animation.density = 0
|
animation.density = FALSE
|
||||||
animation.anchored = 1
|
animation.anchored = TRUE
|
||||||
animation.icon = 'icons/mob/mob.dmi'
|
animation.icon = 'icons/mob/mob.dmi'
|
||||||
animation.icon_state = "jauntup" //Paradise Port:I reversed the jaunt animation so it looks like its rising up
|
animation.icon_state = "jauntup" //Paradise Port:I reversed the jaunt animation so it looks like its rising up
|
||||||
animation.layer = 5
|
animation.layer = 5
|
||||||
@@ -157,8 +157,8 @@
|
|||||||
name = "odd blood"
|
name = "odd blood"
|
||||||
icon = 'icons/effects/effects.dmi'
|
icon = 'icons/effects/effects.dmi'
|
||||||
icon_state = "nothing"
|
icon_state = "nothing"
|
||||||
density = 0
|
density = FALSE
|
||||||
anchored = 1
|
anchored = TRUE
|
||||||
invisibility = 60
|
invisibility = 60
|
||||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
speed = 1
|
speed = 1
|
||||||
a_intent = INTENT_HARM
|
a_intent = INTENT_HARM
|
||||||
mob_biotypes = MOB_ORGANIC | MOB_HUMANOID
|
mob_biotypes = MOB_ORGANIC | MOB_HUMANOID
|
||||||
stop_automated_movement = 1
|
stop_automated_movement = TRUE
|
||||||
status_flags = CANPUSH
|
status_flags = CANPUSH
|
||||||
attack_sound = 'sound/misc/demon_attack1.ogg'
|
attack_sound = 'sound/misc/demon_attack1.ogg'
|
||||||
var/feast_sound = 'sound/misc/demon_consume.ogg'
|
var/feast_sound = 'sound/misc/demon_consume.ogg'
|
||||||
@@ -29,7 +29,6 @@
|
|||||||
maxHealth = 200
|
maxHealth = 200
|
||||||
health = 200
|
health = 200
|
||||||
environment_smash = 1
|
environment_smash = 1
|
||||||
//universal_understand = 1
|
|
||||||
obj_damage = 50
|
obj_damage = 50
|
||||||
melee_damage_lower = 30
|
melee_damage_lower = 30
|
||||||
melee_damage_upper = 30
|
melee_damage_upper = 30
|
||||||
@@ -50,7 +49,7 @@
|
|||||||
You may use the blood crawl icon when on blood pools to travel through them, appearing and dissapearing from the station at will. \
|
You may use the blood crawl icon when on blood pools to travel through them, appearing and dissapearing from the station at will. \
|
||||||
Pulling a dead or critical mob while you enter a pool will pull them in with you, allowing you to feast. \
|
Pulling a dead or critical mob while you enter a pool will pull them in with you, allowing you to feast. \
|
||||||
You move quickly upon leaving a pool of blood, but the material world will soon sap your strength and leave you sluggish. </B>"
|
You move quickly upon leaving a pool of blood, but the material world will soon sap your strength and leave you sluggish. </B>"
|
||||||
del_on_death = 1
|
del_on_death = TRUE
|
||||||
deathmessage = "screams in anger as it collapses into a puddle of viscera!"
|
deathmessage = "screams in anger as it collapses into a puddle of viscera!"
|
||||||
|
|
||||||
var/datum/action/innate/demon/whisper/whisper_action
|
var/datum/action/innate/demon/whisper/whisper_action
|
||||||
@@ -65,7 +64,7 @@
|
|||||||
whisper_action = new()
|
whisper_action = new()
|
||||||
whisper_action.Grant(src)
|
whisper_action.Grant(src)
|
||||||
if(istype(loc, /obj/effect/dummy/slaughter))
|
if(istype(loc, /obj/effect/dummy/slaughter))
|
||||||
bloodspell.phased = 1
|
bloodspell.phased = TRUE
|
||||||
addtimer(CALLBACK(src, .proc/attempt_objectives), 5 SECONDS)
|
addtimer(CALLBACK(src, .proc/attempt_objectives), 5 SECONDS)
|
||||||
|
|
||||||
|
|
||||||
@@ -141,7 +140,7 @@
|
|||||||
name = "Sense Victims"
|
name = "Sense Victims"
|
||||||
desc = "Sense the location of heretics"
|
desc = "Sense the location of heretics"
|
||||||
charge_max = 0
|
charge_max = 0
|
||||||
clothes_req = 0
|
clothes_req = FALSE
|
||||||
cooldown_min = 0
|
cooldown_min = 0
|
||||||
overlay = null
|
overlay = null
|
||||||
action_icon_state = "bloodcrawl"
|
action_icon_state = "bloodcrawl"
|
||||||
|
|||||||
@@ -99,7 +99,7 @@
|
|||||||
qdel(S)
|
qdel(S)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
var/obj/effect/landmark/nuke_spawn = get_turf(locate(/obj/effect/landmark/spawner/nuclear_bomb))
|
var/obj/effect/landmark/nuke_spawn = locate(/obj/effect/landmark/spawner/nuclear_bomb)
|
||||||
|
|
||||||
var/nuke_code = rand(10000, 99999)
|
var/nuke_code = rand(10000, 99999)
|
||||||
var/leader_selected = 0
|
var/leader_selected = 0
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
|
|
||||||
var/obj/machinery/nuclearbomb/syndicate/the_bomb
|
var/obj/machinery/nuclearbomb/syndicate/the_bomb
|
||||||
if(nuke_spawn && length(synd_spawn))
|
if(nuke_spawn && length(synd_spawn))
|
||||||
the_bomb = new /obj/machinery/nuclearbomb/syndicate(nuke_spawn.loc)
|
the_bomb = new /obj/machinery/nuclearbomb/syndicate(get_turf(nuke_spawn))
|
||||||
the_bomb.r_code = nuke_code
|
the_bomb.r_code = nuke_code
|
||||||
|
|
||||||
for(var/datum/mind/synd_mind in syndicates)
|
for(var/datum/mind/synd_mind in syndicates)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ GLOBAL_VAR(bomb_set)
|
|||||||
desc = "Uh oh. RUN!!!!"
|
desc = "Uh oh. RUN!!!!"
|
||||||
icon = 'icons/obj/stationobjs.dmi'
|
icon = 'icons/obj/stationobjs.dmi'
|
||||||
icon_state = "nuclearbomb0"
|
icon_state = "nuclearbomb0"
|
||||||
density = 1
|
density = TRUE
|
||||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||||
flags_2 = NO_MALF_EFFECT_2
|
flags_2 = NO_MALF_EFFECT_2
|
||||||
anchored = TRUE
|
anchored = TRUE
|
||||||
@@ -447,7 +447,7 @@ GLOBAL_VAR(bomb_set)
|
|||||||
icon_state = "nuclearbomb3"
|
icon_state = "nuclearbomb3"
|
||||||
playsound(src,'sound/machines/alarm.ogg',100,0,5)
|
playsound(src,'sound/machines/alarm.ogg',100,0,5)
|
||||||
if(SSticker && SSticker.mode)
|
if(SSticker && SSticker.mode)
|
||||||
SSticker.mode.explosion_in_progress = 1
|
SSticker.mode.explosion_in_progress = TRUE
|
||||||
sleep(100)
|
sleep(100)
|
||||||
|
|
||||||
GLOB.enter_allowed = 0
|
GLOB.enter_allowed = 0
|
||||||
@@ -469,7 +469,7 @@ GLOBAL_VAR(bomb_set)
|
|||||||
SSticker.mode:nuke_off_station = off_station
|
SSticker.mode:nuke_off_station = off_station
|
||||||
SSticker.station_explosion_cinematic(off_station,null)
|
SSticker.station_explosion_cinematic(off_station,null)
|
||||||
if(SSticker.mode)
|
if(SSticker.mode)
|
||||||
SSticker.mode.explosion_in_progress = 0
|
SSticker.mode.explosion_in_progress = FALSE
|
||||||
if(SSticker.mode.name == "nuclear emergency")
|
if(SSticker.mode.name == "nuclear emergency")
|
||||||
SSticker.mode:nukes_left --
|
SSticker.mode:nukes_left --
|
||||||
else if(off_station == 1)
|
else if(off_station == 1)
|
||||||
|
|||||||
@@ -134,8 +134,8 @@
|
|||||||
desc = "You should run now."
|
desc = "You should run now."
|
||||||
icon = 'icons/obj/biomass.dmi'
|
icon = 'icons/obj/biomass.dmi'
|
||||||
icon_state = "rift"
|
icon_state = "rift"
|
||||||
density = 1
|
density = TRUE
|
||||||
anchored = 1.0
|
anchored = TRUE
|
||||||
var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies
|
var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies
|
||||||
var/spawn_amt_left = 20
|
var/spawn_amt_left = 20
|
||||||
|
|
||||||
@@ -262,7 +262,7 @@ GLOBAL_LIST_EMPTY(multiverse)
|
|||||||
slot_flags = SLOT_BELT
|
slot_flags = SLOT_BELT
|
||||||
force = 20
|
force = 20
|
||||||
throwforce = 10
|
throwforce = 10
|
||||||
sharp = 1
|
sharp = TRUE
|
||||||
w_class = WEIGHT_CLASS_SMALL
|
w_class = WEIGHT_CLASS_SMALL
|
||||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||||
var/faction = list("unassigned")
|
var/faction = list("unassigned")
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
name = "ragin' mages"
|
name = "ragin' mages"
|
||||||
config_tag = "raginmages"
|
config_tag = "raginmages"
|
||||||
required_players = 20
|
required_players = 20
|
||||||
use_huds = 1
|
use_huds = TRUE
|
||||||
but_wait_theres_more = 1
|
but_wait_theres_more = TRUE
|
||||||
var/max_mages = 0
|
var/max_mages = 0
|
||||||
var/making_mage = FALSE
|
var/making_mage = FALSE
|
||||||
var/mages_made = 1
|
var/mages_made = 1
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
make_more_mages()
|
make_more_mages()
|
||||||
else
|
else
|
||||||
if(wizards.len >= wizard_cap)
|
if(wizards.len >= wizard_cap)
|
||||||
finished = 1
|
finished = TRUE
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
make_more_mages()
|
make_more_mages()
|
||||||
|
|||||||
@@ -88,10 +88,6 @@
|
|||||||
to_chat(user, "<span class='warning'>This being has no soul!</span>")
|
to_chat(user, "<span class='warning'>This being has no soul!</span>")
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
if(M.has_brain_worms()) //Borer stuff - RR
|
|
||||||
to_chat(user, "<span class='warning'>This being is corrupted by an alien intelligence and cannot be soul trapped.</span>")
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
if(jobban_isbanned(M, ROLE_CULTIST) || jobban_isbanned(M, ROLE_SYNDICATE))
|
if(jobban_isbanned(M, ROLE_CULTIST) || jobban_isbanned(M, ROLE_SYNDICATE))
|
||||||
to_chat(user, "<span class='warning'>A mysterious force prevents you from trapping this being's soul.</span>")
|
to_chat(user, "<span class='warning'>A mysterious force prevents you from trapping this being's soul.</span>")
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -650,8 +650,12 @@
|
|||||||
for(var/path in spells_path)
|
for(var/path in spells_path)
|
||||||
var/obj/effect/proc_holder/spell/S = new path()
|
var/obj/effect/proc_holder/spell/S = new path()
|
||||||
LearnSpell(user, book, S)
|
LearnSpell(user, book, S)
|
||||||
|
OnBuy(user, book)
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
|
/datum/spellbook_entry/loadout/proc/OnBuy(mob/living/carbon/human/user, obj/item/spellbook/book)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/item/spellbook
|
/obj/item/spellbook
|
||||||
name = "spell book"
|
name = "spell book"
|
||||||
desc = "The legendary book of spells of the wizard."
|
desc = "The legendary book of spells of the wizard."
|
||||||
@@ -902,7 +906,7 @@
|
|||||||
/obj/item/spellbook/oneuse
|
/obj/item/spellbook/oneuse
|
||||||
var/spell = /obj/effect/proc_holder/spell/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic
|
var/spell = /obj/effect/proc_holder/spell/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic
|
||||||
var/spellname = "sandbox"
|
var/spellname = "sandbox"
|
||||||
var/used = 0
|
var/used = FALSE
|
||||||
name = "spellbook of "
|
name = "spellbook of "
|
||||||
uses = 1
|
uses = 1
|
||||||
desc = "This template spellbook was never meant for the eyes of man..."
|
desc = "This template spellbook was never meant for the eyes of man..."
|
||||||
@@ -937,7 +941,7 @@
|
|||||||
user.visible_message("<span class='warning'>[src] glows in a black light!</span>")
|
user.visible_message("<span class='warning'>[src] glows in a black light!</span>")
|
||||||
|
|
||||||
/obj/item/spellbook/oneuse/proc/onlearned(mob/user)
|
/obj/item/spellbook/oneuse/proc/onlearned(mob/user)
|
||||||
used = 1
|
used = TRUE
|
||||||
user.visible_message("<span class='caution'>[src] glows dark for a second!</span>")
|
user.visible_message("<span class='caution'>[src] glows dark for a second!</span>")
|
||||||
|
|
||||||
/obj/item/spellbook/oneuse/attackby()
|
/obj/item/spellbook/oneuse/attackby()
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user