Merge branch 'master' into lets_go_rebind_things

This commit is contained in:
S34N
2022-07-09 17:55:37 +01:00
572 changed files with 15277 additions and 15101 deletions
+16 -11
View File
@@ -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
View File
@@ -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
+130
View File
@@ -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()
+3
View File
@@ -0,0 +1,3 @@
# Updates DB from 39 to 40 -Sirryan2002
# Clears out old table
DROP TABLE `library_old`;
+1 -1
View File
@@ -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
View File
@@ -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
+47 -54
View File
@@ -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" = (
+1 -1
View File
@@ -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
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -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" = (
+1 -1
View File
@@ -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
}, },
+1 -1
View File
@@ -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
+1 -2
View File
@@ -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"
+47
View File
@@ -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
+1 -1
View File
@@ -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
-2
View File
@@ -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
-1
View File
@@ -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,
+2
View File
@@ -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
+3 -1
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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))
+1
View File
@@ -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"
+1 -1
View File
@@ -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"))
+3
View File
@@ -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"))
+5 -3
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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
View File
@@ -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 ..()
+1 -1
View File
@@ -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)
+5 -5
View File
@@ -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
/** /**
+53 -4
View File
@@ -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
View File
@@ -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 -1
View File
@@ -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
+1 -1
View File
@@ -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"
+4 -4
View File
@@ -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()
+8 -8
View File
@@ -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
+1 -1
View File
@@ -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"
+7 -7
View File
@@ -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
+1 -1
View File
@@ -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"
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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"
+1 -1
View File
@@ -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 -3
View File
@@ -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"
+7 -7
View File
@@ -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>")
+1 -1
View File
@@ -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"
+1 -1
View File
@@ -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>"
+1 -1
View File
@@ -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>"
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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
+5 -5
View File
@@ -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 ..()
+4 -4
View File
@@ -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)
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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"
+3 -3
View File
@@ -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
+15 -15
View File
@@ -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"
+29
View File
@@ -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
+5 -2
View File
@@ -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.
-1
View File
@@ -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
+1 -3
View File
@@ -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())
+1 -1
View File
@@ -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 -4
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
+5 -5
View File
@@ -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"
+2 -2
View File
@@ -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)
+3 -3
View File
@@ -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)
+3 -3
View File
@@ -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")
+3 -3
View File
@@ -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()
-4
View File
@@ -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 ..()
+6 -2
View File
@@ -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