mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-21 03:56:47 +01:00
@@ -1,12 +1,17 @@
|
||||
/client/proc/cinematic(var/cinematic as anything in list("explosion",null))
|
||||
set name = "cinematic"
|
||||
set name = "Cinematic"
|
||||
set category = "Fun"
|
||||
set desc = "Shows a cinematic." // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted.
|
||||
set hidden = 1
|
||||
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
|
||||
if(alert("Are you sure you want to run [cinematic]?","Confirmation","Yes","No")=="No") return
|
||||
if(!ticker) return
|
||||
switch(cinematic)
|
||||
if("explosion")
|
||||
if(alert("The game will be over. Are you really sure?", "Confirmation" ,"Continue", "Cancel") == "Cancel")
|
||||
return
|
||||
var/parameter = input(src,"station_missed = ?","Enter Parameter",0) as num
|
||||
var/override
|
||||
switch(parameter)
|
||||
@@ -15,4 +20,8 @@
|
||||
if(0)
|
||||
override = input(src,"mode = ?","Enter Parameter",null) as anything in list("blob","mercenary","AI malfunction","no override")
|
||||
ticker.station_explosion_cinematic(parameter,override)
|
||||
|
||||
log_admin("[key_name(src)] launched cinematic \"[cinematic]\"")
|
||||
message_admins("[key_name_admin(src)] launched cinematic \"[cinematic]\"", 1)
|
||||
|
||||
return
|
||||
@@ -31,7 +31,7 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear
|
||||
var/display_name //Name/index. Must be unique.
|
||||
var/path //Path to item.
|
||||
var/cost //Number of points used.
|
||||
var/cost //Number of points used. Items in general cost 1 point, storage/armor/gloves/special use costs 2 points.
|
||||
var/slot //Slot to equip to.
|
||||
var/list/allowed_roles //Roles that can spawn with this item.
|
||||
var/whitelisted //Term to check the whitelist for..
|
||||
@@ -48,19 +48,19 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear/gbandana
|
||||
display_name = "bandana, green"
|
||||
path = /obj/item/clothing/head/greenbandana
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/obandana
|
||||
display_name = "bandana, orange"
|
||||
path = /obj/item/clothing/head/orangebandana
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/bandana
|
||||
display_name = "bandana, pirate-red"
|
||||
path = /obj/item/clothing/head/bandana
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/bsec_beret
|
||||
@@ -73,20 +73,20 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear/eng_beret
|
||||
display_name = "beret, engie-orange"
|
||||
path = /obj/item/clothing/head/beret/eng
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
// allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer")
|
||||
|
||||
/datum/gear/purp_beret
|
||||
display_name = "beret, purple"
|
||||
path = /obj/item/clothing/head/beret/jan
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/red_beret
|
||||
display_name = "beret, red"
|
||||
path = /obj/item/clothing/head/beret
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/sec_beret
|
||||
@@ -99,74 +99,80 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear/bcap
|
||||
display_name = "cap, blue"
|
||||
path = /obj/item/clothing/head/soft/blue
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/mailman
|
||||
display_name = "cap, blue station"
|
||||
path = /obj/item/clothing/head/mailman
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/flatcap
|
||||
display_name = "cap, brown-flat"
|
||||
path = /obj/item/clothing/head/flatcap
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/corpcap
|
||||
display_name = "cap, corporate (Security)"
|
||||
path = /obj/item/clothing/head/soft/sec/corp
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden")
|
||||
|
||||
/datum/gear/gcap
|
||||
display_name = "cap, green"
|
||||
path = /obj/item/clothing/head/soft/green
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/grcap
|
||||
display_name = "cap, grey"
|
||||
path = /obj/item/clothing/head/soft/grey
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/ocap
|
||||
display_name = "cap, orange"
|
||||
path = /obj/item/clothing/head/soft/orange
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/purcap
|
||||
display_name = "cap, purple"
|
||||
path = /obj/item/clothing/head/soft/purple
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/raincap
|
||||
display_name = "cap, rainbow"
|
||||
path = /obj/item/clothing/head/soft/rainbow
|
||||
cost = 3
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/rcap
|
||||
display_name = "cap, red"
|
||||
path = /obj/item/clothing/head/soft/red
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/ycap
|
||||
display_name = "cap, yellow"
|
||||
path = /obj/item/clothing/head/soft/yellow
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/wcap
|
||||
display_name = "cap, white"
|
||||
path = /obj/item/clothing/head/soft/mime
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/hairflower
|
||||
display_name = "hair flower pin"
|
||||
path = /obj/item/clothing/head/hairflower
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/dbhardhat
|
||||
@@ -181,6 +187,12 @@ var/global/list/gear_datums = list()
|
||||
cost = 2
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/rhardhat
|
||||
display_name = "hardhat, red"
|
||||
path = /obj/item/clothing/head/hardhat/red
|
||||
cost = 2
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/yhardhat
|
||||
display_name = "hardhat, yellow"
|
||||
path = /obj/item/clothing/head/hardhat
|
||||
@@ -190,32 +202,38 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear/boater
|
||||
display_name = "hat, boatsman"
|
||||
path = /obj/item/clothing/head/boaterhat
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/bowler
|
||||
display_name = "hat, bowler"
|
||||
path = /obj/item/clothing/head/bowler
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/fez
|
||||
display_name = "hat, fez"
|
||||
path = /obj/item/clothing/head/fez
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/tophat
|
||||
display_name = "hat, tophat"
|
||||
path = /obj/item/clothing/head/that
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
// Wig by Earthcrusher, blame him.
|
||||
/datum/gear/philosopher_wig
|
||||
display_name = "natural philosopher's wig"
|
||||
path = /obj/item/clothing/head/philosopher_wig
|
||||
cost = 3
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
/datum/gear/ushanka
|
||||
display_name = "ushanka"
|
||||
path = /obj/item/clothing/head/ushanka
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
|
||||
// This was sprited and coded specifically for Zhan-Khazan characters. Before you
|
||||
@@ -223,7 +241,7 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear/zhan_scarf
|
||||
display_name = "Zhan headscarf"
|
||||
path = /obj/item/clothing/head/tajaran/scarf
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_head
|
||||
whitelisted = "Tajara"
|
||||
|
||||
@@ -239,12 +257,37 @@ var/global/list/gear_datums = list()
|
||||
display_name = "Glasses, green"
|
||||
path = /obj/item/clothing/glasses/gglasses
|
||||
cost = 1
|
||||
slot = slot_glasses
|
||||
|
||||
/datum/gear/prescriptionhipster
|
||||
display_name = "Glasses, hipster"
|
||||
path = /obj/item/clothing/glasses/regular/hipster
|
||||
cost = 1
|
||||
slot = slot_glasses
|
||||
|
||||
/datum/gear/prescription
|
||||
display_name = "Glasses, prescription"
|
||||
path = /obj/item/clothing/glasses/regular
|
||||
cost = 1
|
||||
slot = slot_glasses
|
||||
|
||||
/datum/gear/monocle
|
||||
display_name = "Monocle"
|
||||
path = /obj/item/clothing/glasses/monocle
|
||||
cost = 1
|
||||
slot = slot_glasses
|
||||
|
||||
/datum/gear/scanning_goggles
|
||||
display_name = "scanning goggles"
|
||||
path = /obj/item/clothing/glasses/fluff/uzenwa_sissra_1
|
||||
cost = 1
|
||||
// allowed_roles = list("Roboticist", "Scientist", "Research Director")
|
||||
slot = slot_glasses
|
||||
|
||||
/datum/gear/sciencegoggles
|
||||
display_name = "Science Goggles"
|
||||
path = /obj/item/clothing/glasses/science
|
||||
cost = 1
|
||||
slot = slot_glasses
|
||||
|
||||
/datum/gear/security
|
||||
display_name = "Security HUD"
|
||||
@@ -260,10 +303,10 @@ var/global/list/gear_datums = list()
|
||||
slot = slot_glasses
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden")
|
||||
|
||||
/datum/gear/prescription
|
||||
/datum/gear/prescriptionsun
|
||||
display_name = "sunglasses, presciption"
|
||||
path = /obj/item/clothing/glasses/sunglasses/prescription
|
||||
cost = 3
|
||||
cost = 2
|
||||
slot = slot_glasses
|
||||
|
||||
// Mask
|
||||
@@ -276,71 +319,184 @@ var/global/list/gear_datums = list()
|
||||
|
||||
// Uniform slot
|
||||
|
||||
/datum/gear/exec_suit
|
||||
display_name = "executive suit"
|
||||
path = /obj/item/clothing/under/suit_jacket/really_black
|
||||
slot = slot_w_uniform
|
||||
cost = 2
|
||||
|
||||
/datum/gear/blazer_blue
|
||||
display_name = "blazer, blue"
|
||||
path = /obj/item/clothing/under/blazer
|
||||
slot = slot_w_uniform
|
||||
cost = 2
|
||||
|
||||
/datum/gear/kilt
|
||||
display_name = "kilt"
|
||||
path = /obj/item/clothing/under/kilt
|
||||
slot = slot_w_uniform
|
||||
cost = 3
|
||||
|
||||
/datum/gear/blackjumpskirt
|
||||
display_name = "jumpskirt, black"
|
||||
path = /obj/item/clothing/under/blackjumpskirt
|
||||
slot = slot_w_uniform
|
||||
cost = 2
|
||||
|
||||
/datum/gear/skirt_blue
|
||||
display_name = "plaid skirt, blue"
|
||||
path = /obj/item/clothing/under/dress/plaid_blue
|
||||
slot = slot_w_uniform
|
||||
cost = 2
|
||||
|
||||
/datum/gear/skirt_purple
|
||||
display_name = "plaid skirt, purple"
|
||||
path = /obj/item/clothing/under/dress/plaid_purple
|
||||
slot = slot_w_uniform
|
||||
cost = 2
|
||||
|
||||
/datum/gear/skirt_red
|
||||
display_name = "plaid skirt, red"
|
||||
path = /obj/item/clothing/under/dress/plaid_red
|
||||
slot = slot_w_uniform
|
||||
cost = 2
|
||||
|
||||
/datum/gear/skirt_black
|
||||
display_name = "skirt, black"
|
||||
path = /obj/item/clothing/under/blackskirt
|
||||
slot = slot_w_uniform
|
||||
cost = 2
|
||||
|
||||
/datum/gear/sundress
|
||||
display_name = "sundress"
|
||||
path = /obj/item/clothing/under/sundress
|
||||
slot = slot_w_uniform
|
||||
cost = 3
|
||||
|
||||
/datum/gear/sundress_white
|
||||
display_name = "sundress, white"
|
||||
path = /obj/item/clothing/under/sundress_white
|
||||
slot = slot_w_uniform
|
||||
cost = 3
|
||||
cost = 1
|
||||
|
||||
/datum/gear/cheongsam
|
||||
display_name = "cheongsam, white"
|
||||
path = /obj/item/clothing/under/cheongsam
|
||||
slot = slot_w_uniform
|
||||
cost = 3
|
||||
cost = 1
|
||||
|
||||
/datum/gear/kilt
|
||||
display_name = "kilt"
|
||||
path = /obj/item/clothing/under/kilt
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/blackjumpskirt
|
||||
display_name = "jumpskirt, black"
|
||||
path = /obj/item/clothing/under/blackjumpskirt
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/blackfjumpsuit
|
||||
display_name = "jumpsuit, female-black"
|
||||
path = /obj/item/clothing/under/color/blackf
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
/datum/gear/blackfjumpsuit
|
||||
display_name = "jumpsuit, rainbow"
|
||||
path = /obj/item/clothing/under/rainbow
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/skirt_blue
|
||||
display_name = "plaid skirt, blue"
|
||||
path = /obj/item/clothing/under/dress/plaid_blue
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/skirt_purple
|
||||
display_name = "plaid skirt, purple"
|
||||
path = /obj/item/clothing/under/dress/plaid_purple
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/skirt_red
|
||||
display_name = "plaid skirt, red"
|
||||
path = /obj/item/clothing/under/dress/plaid_red
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/skirt_black
|
||||
display_name = "skirt, black"
|
||||
path = /obj/item/clothing/under/blackskirt
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/amishsuit
|
||||
display_name = "suit, amish"
|
||||
path = /obj/item/clothing/under/sl_suit
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/blacksuit
|
||||
display_name = "suit, black"
|
||||
path = /obj/item/clothing/under/suit_jacket
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/shinyblacksuit
|
||||
display_name = "suit, shiny-black"
|
||||
path = /obj/item/clothing/under/lawyer/black
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/bluesuit
|
||||
display_name = "suit, blue"
|
||||
path = /obj/item/clothing/under/lawyer/blue
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/burgundysuit
|
||||
display_name = "suit, burgundy"
|
||||
path = /obj/item/clothing/under/suit_jacket/burgundy
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/checkeredsuit
|
||||
display_name = "suit, checkered"
|
||||
path = /obj/item/clothing/under/suit_jacket/checkered
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/charcoalsuit
|
||||
display_name = "suit, charcoal"
|
||||
path = /obj/item/clothing/under/suit_jacket/charcoal
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/execsuit
|
||||
display_name = "suit, executive"
|
||||
path = /obj/item/clothing/under/suit_jacket/really_black
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/femaleexecsuit
|
||||
display_name = "suit, female-executive"
|
||||
path = /obj/item/clothing/under/suit_jacket/female
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/gentlesuit
|
||||
display_name = "suit, gentlemen"
|
||||
path = /obj/item/clothing/under/gentlesuit
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/navysuit
|
||||
display_name = "suit, navy"
|
||||
path = /obj/item/clothing/under/suit_jacket/navy
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/redsuit
|
||||
display_name = "suit, red"
|
||||
path = /obj/item/clothing/under/suit_jacket/red
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/redlawyer
|
||||
display_name = "suit, lawyer-red"
|
||||
path = /obj/item/clothing/under/lawyer/red
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/oldmansuit
|
||||
display_name = "suit, old-man"
|
||||
path = /obj/item/clothing/under/lawyer/oldman
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/purplesuit
|
||||
display_name = "suit, purple"
|
||||
path = /obj/item/clothing/under/lawyer/purpsuit
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/tansuit
|
||||
display_name = "suit, tan"
|
||||
path = /obj/item/clothing/under/suit_jacket/tan
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/whitesuit
|
||||
display_name = "suit, white"
|
||||
path = /obj/item/clothing/under/scratch
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/whitebluesuit
|
||||
display_name = "suit, white-blue"
|
||||
path = /obj/item/clothing/under/lawyer/bluesuit
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/sundress
|
||||
display_name = "sundress"
|
||||
path = /obj/item/clothing/under/sundress
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/sundress_white
|
||||
display_name = "sundress, white"
|
||||
path = /obj/item/clothing/under/sundress_white
|
||||
slot = slot_w_uniform
|
||||
cost = 1
|
||||
|
||||
/datum/gear/uniform_captain
|
||||
display_name = "uniform, captain's dress"
|
||||
@@ -352,7 +508,7 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear/corpsecsuit
|
||||
display_name = "uniform, corporate (Security)"
|
||||
path = /obj/item/clothing/under/rank/security/corp
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_w_uniform
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden")
|
||||
|
||||
@@ -373,7 +529,7 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear/navysecsuit
|
||||
display_name = "uniform, navyblue (Security)"
|
||||
path = /obj/item/clothing/under/rank/security/navyblue
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_w_uniform
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden")
|
||||
|
||||
@@ -389,7 +545,7 @@ var/global/list/gear_datums = list()
|
||||
display_name = "armband, EMT"
|
||||
path = /obj/item/clothing/accessory/armband/medgreen
|
||||
slot = slot_tie
|
||||
cost = 2
|
||||
cost = 1
|
||||
|
||||
/datum/gear/armband_engineering
|
||||
display_name = "armband, engineering"
|
||||
@@ -425,21 +581,21 @@ var/global/list/gear_datums = list()
|
||||
display_name = "holster, armpit"
|
||||
path = /obj/item/clothing/accessory/holster/armpit
|
||||
slot = slot_tie
|
||||
cost = 2
|
||||
cost = 1
|
||||
allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective")
|
||||
|
||||
/datum/gear/hip
|
||||
display_name = "holster, hip"
|
||||
path = /obj/item/clothing/accessory/holster/hip
|
||||
slot = slot_tie
|
||||
cost = 2
|
||||
cost = 1
|
||||
allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Warden", "Head of Security", "Detective")
|
||||
|
||||
/datum/gear/waist
|
||||
display_name = "holster, waist"
|
||||
path = /obj/item/clothing/accessory/holster/waist
|
||||
slot = slot_tie
|
||||
cost = 2
|
||||
cost = 1
|
||||
allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Warden", "Head of Security", "Detective")
|
||||
|
||||
/datum/gear/tie_blue
|
||||
@@ -464,14 +620,14 @@ var/global/list/gear_datums = list()
|
||||
display_name = "webbing, engineering"
|
||||
path = /obj/item/clothing/accessory/storage/brown_vest
|
||||
slot = slot_tie
|
||||
cost = 2
|
||||
cost = 1
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer")
|
||||
|
||||
/datum/gear/black_vest
|
||||
display_name = "webbing, security"
|
||||
path = /obj/item/clothing/accessory/storage/black_vest
|
||||
slot = slot_tie
|
||||
cost = 2
|
||||
cost = 1
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden")
|
||||
|
||||
/datum/gear/webbing
|
||||
@@ -491,37 +647,37 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear/bomber
|
||||
display_name = "bomber jacket"
|
||||
path = /obj/item/clothing/suit/storage/toggle/bomber
|
||||
cost = 4
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/leather_jacket
|
||||
display_name = "leather jacket, black"
|
||||
path = /obj/item/clothing/suit/storage/leather_jacket
|
||||
cost = 3
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/leather_jacket_nt
|
||||
display_name = "leather jacket, NanoTrasen, black"
|
||||
path = /obj/item/clothing/suit/storage/leather_jacket/nanotrasen
|
||||
cost = 3
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/brown_jacket
|
||||
display_name = "leather jacket, brown"
|
||||
path = /obj/item/clothing/suit/storage/toggle/brown_jacket
|
||||
cost = 3
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/brown_jacket_nt
|
||||
display_name = "leather jacket, NanoTrasen, brown"
|
||||
path = /obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen
|
||||
cost = 3
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/blue_lawyer_jacket
|
||||
display_name = "suit jacket, blue"
|
||||
path = /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket
|
||||
cost = 3
|
||||
/datum/gear/hazard_vest
|
||||
display_name = "hazard vest"
|
||||
path = /obj/item/clothing/suit/storage/hazardvest
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/hoodie
|
||||
@@ -533,79 +689,122 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear/hoodie/black
|
||||
display_name = "hoodie, black"
|
||||
path = /obj/item/clothing/suit/storage/toggle/hoodie/black
|
||||
cost = 2
|
||||
|
||||
/datum/gear/unathi_mantle
|
||||
display_name = "hide mantle (Unathi)"
|
||||
path = /obj/item/clothing/suit/unathi/mantle
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_wear_suit
|
||||
whitelisted = "Unathi"
|
||||
|
||||
/datum/gear/labcoat
|
||||
display_name = "labcoat"
|
||||
path = /obj/item/clothing/suit/storage/toggle/labcoat
|
||||
cost = 3
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/bluelabcoat
|
||||
display_name = "labcoat, blue"
|
||||
path = /obj/item/clothing/suit/storage/toggle/labcoat/blue
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/greenlabcoat
|
||||
display_name = "labcoat, green"
|
||||
path = /obj/item/clothing/suit/storage/toggle/labcoat/green
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/orangelabcoat
|
||||
display_name = "labcoat, orange"
|
||||
path = /obj/item/clothing/suit/storage/toggle/labcoat/orange
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/purplelabcoat
|
||||
display_name = "labcoat, purple"
|
||||
path = /obj/item/clothing/suit/storage/toggle/labcoat/purple
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/redlabcoat
|
||||
display_name = "labcoat, red"
|
||||
path = /obj/item/clothing/suit/storage/toggle/labcoat/red
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/overalls
|
||||
display_name = "overalls"
|
||||
path = /obj/item/clothing/suit/apron/overalls
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/bponcho
|
||||
display_name = "poncho, blue"
|
||||
path = /obj/item/clothing/suit/poncho/blue
|
||||
cost = 3
|
||||
cost = 1
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/gponcho
|
||||
display_name = "poncho, green"
|
||||
path = /obj/item/clothing/suit/poncho/green
|
||||
cost = 3
|
||||
cost = 1
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/pponcho
|
||||
display_name = "poncho, purple"
|
||||
path = /obj/item/clothing/suit/poncho/purple
|
||||
cost = 3
|
||||
cost = 1
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/rponcho
|
||||
display_name = "poncho, red"
|
||||
path = /obj/item/clothing/suit/poncho/red
|
||||
cost = 3
|
||||
cost = 1
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/poncho
|
||||
display_name = "poncho, tan"
|
||||
path = /obj/item/clothing/suit/poncho
|
||||
cost = 3
|
||||
cost = 1
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/unathi_robe
|
||||
display_name = "roughspun robe (Unathi)"
|
||||
path = /obj/item/clothing/suit/unathi/robe
|
||||
cost = 3
|
||||
cost = 1
|
||||
slot = slot_wear_suit
|
||||
// whitelisted = "Unathi" // You don't have a monopoly on a robe!
|
||||
|
||||
/datum/gear/blue_lawyer_jacket
|
||||
display_name = "suit jacket, blue"
|
||||
path = /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/purple_lawyer_jacket
|
||||
display_name = "suit jacket, purple"
|
||||
path = /obj/item/clothing/suit/storage/lawyer/purpjacket
|
||||
cost = 2
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/suspenders
|
||||
display_name = "suspenders"
|
||||
path = /obj/item/clothing/suit/suspenders
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/wcoat
|
||||
display_name = "waistcoat"
|
||||
path = /obj/item/clothing/suit/wcoat
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/zhan_furs
|
||||
display_name = "Zhan-Khazan furs (Tajaran)"
|
||||
path = /obj/item/clothing/suit/tajaran/furs
|
||||
cost = 3
|
||||
cost = 1
|
||||
slot = slot_wear_suit
|
||||
whitelisted = "Tajara" // You do have a monopoly on a fur suit tho
|
||||
|
||||
@@ -620,7 +819,7 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear/blue_gloves
|
||||
display_name = "gloves, blue"
|
||||
path = /obj/item/clothing/gloves/blue
|
||||
cost = 1
|
||||
cost = 2
|
||||
slot = slot_gloves
|
||||
|
||||
/datum/gear/brown_gloves
|
||||
@@ -629,22 +828,53 @@ var/global/list/gear_datums = list()
|
||||
cost = 2
|
||||
slot = slot_gloves
|
||||
|
||||
/datum/gear/light_brown_gloves
|
||||
display_name = "gloves, light-brown"
|
||||
path = /obj/item/clothing/gloves/light_brown
|
||||
cost = 2
|
||||
slot = slot_gloves
|
||||
|
||||
/datum/gear/green_gloves
|
||||
display_name = "gloves, green"
|
||||
path = /obj/item/clothing/gloves/green
|
||||
cost = 1
|
||||
cost = 2
|
||||
slot = slot_gloves
|
||||
|
||||
/datum/gear/grey_gloves
|
||||
display_name = "gloves, grey"
|
||||
path = /obj/item/clothing/gloves/grey
|
||||
cost = 2
|
||||
slot = slot_gloves
|
||||
|
||||
/datum/gear/latex_gloves
|
||||
display_name = "gloves, latex"
|
||||
path = /obj/item/clothing/gloves/latex
|
||||
cost = 2
|
||||
slot = slot_gloves
|
||||
|
||||
|
||||
/datum/gear/orange_gloves
|
||||
display_name = "gloves, orange"
|
||||
path = /obj/item/clothing/gloves/orange
|
||||
cost = 1
|
||||
cost = 2
|
||||
slot = slot_gloves
|
||||
|
||||
/datum/gear/purple_gloves
|
||||
display_name = "gloves, purple"
|
||||
path = /obj/item/clothing/gloves/purple
|
||||
cost = 2
|
||||
slot = slot_gloves
|
||||
|
||||
/datum/gear/rainbow_gloves
|
||||
display_name = "gloves, rainbow"
|
||||
path = /obj/item/clothing/gloves/rainbow
|
||||
cost = 2
|
||||
slot = slot_gloves
|
||||
|
||||
/datum/gear/red_gloves
|
||||
display_name = "gloves, red"
|
||||
path = /obj/item/clothing/gloves/red
|
||||
cost = 1
|
||||
cost = 2
|
||||
slot = slot_gloves
|
||||
|
||||
/datum/gear/white_gloves
|
||||
@@ -658,13 +888,13 @@ var/global/list/gear_datums = list()
|
||||
/datum/gear/jackboots
|
||||
display_name = "jackboots"
|
||||
path = /obj/item/clothing/shoes/jackboots
|
||||
cost = 2
|
||||
cost = 1
|
||||
slot = slot_shoes
|
||||
|
||||
/datum/gear/toeless_jackboots
|
||||
display_name = "toe-less jackboots"
|
||||
path = /obj/item/clothing/shoes/jackboots/fluff/kecer_eldraran //permisson of owner of custom item was granted
|
||||
cost = 2
|
||||
path = /obj/item/clothing/shoes/jackboots/fluff/kecer_eldraran
|
||||
cost = 1
|
||||
slot = slot_shoes
|
||||
|
||||
/datum/gear/sandal
|
||||
@@ -727,6 +957,12 @@ var/global/list/gear_datums = list()
|
||||
cost = 1
|
||||
slot = slot_shoes
|
||||
|
||||
/datum/gear/rainbow_shoes
|
||||
display_name = "shoes, rainbow"
|
||||
path = /obj/item/clothing/shoes/rainbow
|
||||
cost = 1
|
||||
slot = slot_shoes
|
||||
|
||||
/datum/gear/red_shoes
|
||||
display_name = "shoes, red"
|
||||
path = /obj/item/clothing/shoes/red
|
||||
@@ -807,7 +1043,7 @@ var/global/list/gear_datums = list()
|
||||
display_name = "cane"
|
||||
path = /obj/item/weapon/cane
|
||||
sort_category = "misc"
|
||||
cost = 2
|
||||
cost = 1
|
||||
|
||||
/datum/gear/dice
|
||||
display_name = "d20"
|
||||
@@ -821,6 +1057,17 @@ var/global/list/gear_datums = list()
|
||||
sort_category = "misc"
|
||||
cost = 1
|
||||
|
||||
/datum/gear/flask
|
||||
display_name = "flask"
|
||||
path = /obj/item/weapon/reagent_containers/food/drinks/flask/barflask
|
||||
sort_category = "misc"
|
||||
cost = 1
|
||||
|
||||
/datum/gear/vacflask
|
||||
display_name = "vacuum-flask"
|
||||
path = /obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask
|
||||
sort_category = "misc"
|
||||
cost = 1
|
||||
/datum/gear/blipstick
|
||||
display_name = "lipstick, black"
|
||||
path = /obj/item/weapon/lipstick/black
|
||||
@@ -845,17 +1092,35 @@ var/global/list/gear_datums = list()
|
||||
sort_category = "misc"
|
||||
cost = 1
|
||||
|
||||
/datum/gear/smokingpipe
|
||||
display_name = "pipe, smoking"
|
||||
path = /obj/item/clothing/mask/smokable/pipe
|
||||
sort_category = "misc"
|
||||
cost = 1
|
||||
|
||||
/datum/gear/cornpipe
|
||||
display_name = "pipe, corn"
|
||||
path = /obj/item/clothing/mask/smokable/pipe/cobpipe
|
||||
sort_category = "misc"
|
||||
cost = 1
|
||||
|
||||
/datum/gear/matchbook
|
||||
display_name = "matchbook"
|
||||
path = /obj/item/weapon/storage/box/matches
|
||||
sort_category = "misc"
|
||||
cost = 2
|
||||
cost = 1
|
||||
|
||||
/datum/gear/comb
|
||||
display_name = "purple comb"
|
||||
path = /obj/item/weapon/haircomb
|
||||
sort_category = "misc"
|
||||
cost = 2
|
||||
cost = 1
|
||||
|
||||
/datum/gear/zippo
|
||||
display_name = "zippo"
|
||||
path = /obj/item/weapon/flame/lighter/zippo
|
||||
sort_category = "misc"
|
||||
cost = 1
|
||||
|
||||
/*/datum/gear/combitool
|
||||
display_name = "combi-tool"
|
||||
@@ -864,30 +1129,36 @@ var/global/list/gear_datums = list()
|
||||
|
||||
// Stuff worn on the ears. Items here go in the "ears" sort_category but they must not use
|
||||
// the slot_r_ear or slot_l_ear as the slot, or else players will spawn with no headset.
|
||||
/datum/gear/earmuffs
|
||||
display_name = "earmuffs"
|
||||
path = /obj/item/clothing/ears/earmuffs
|
||||
cost = 1
|
||||
sort_category = "ears"
|
||||
|
||||
/datum/gear/skrell_chain
|
||||
display_name = "skrell headtail-wear, female, chain"
|
||||
path = /obj/item/clothing/ears/skrell/chain
|
||||
cost = 2
|
||||
cost = 1
|
||||
sort_category = "ears"
|
||||
whitelisted = "Skrell"
|
||||
|
||||
/datum/gear/skrell_plate
|
||||
display_name = "skrell headtail-wear, male, bands"
|
||||
path = /obj/item/clothing/ears/skrell/band
|
||||
cost = 2
|
||||
cost = 1
|
||||
sort_category = "ears"
|
||||
whitelisted = "Skrell"
|
||||
|
||||
/datum/gear/skrell_cloth_male
|
||||
display_name = "skrell headtail-wear, male, cloth"
|
||||
path = /obj/item/clothing/ears/skrell/cloth_male
|
||||
cost = 2
|
||||
cost = 1
|
||||
sort_category = "ears"
|
||||
whitelisted = "Skrell"
|
||||
|
||||
/datum/gear/skrell_cloth_female
|
||||
display_name = "skrell headtail-wear, female, cloth"
|
||||
path = /obj/item/clothing/ears/skrell/cloth_female
|
||||
cost = 2
|
||||
cost = 1
|
||||
sort_category = "ears"
|
||||
whitelisted = "Skrell"
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
body_parts_covered = FACE
|
||||
w_class = 2
|
||||
sprite_sheets = list(
|
||||
"Tajara" = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/mask.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/mask.dmi',
|
||||
)
|
||||
|
||||
/obj/item/clothing/mask/balaclava/tactical
|
||||
@@ -21,8 +21,8 @@
|
||||
flags_inv = HIDEFACE
|
||||
w_class = 2
|
||||
sprite_sheets = list(
|
||||
"Tajara" = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/mask.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/mask.dmi',
|
||||
)
|
||||
|
||||
/obj/item/clothing/mask/luchador
|
||||
|
||||
@@ -1131,6 +1131,8 @@
|
||||
icon_state = "parker_eliza_arms"
|
||||
item_state = "parker_eliza_arms"
|
||||
item_color = "parker_eliza_arms"
|
||||
body_parts_covered = 0 //technicially it's underneath everything
|
||||
canremove = 0
|
||||
|
||||
|
||||
////////////// Accessories /////
|
||||
|
||||
@@ -231,12 +231,15 @@
|
||||
S.remove_from_storage(O, src)
|
||||
|
||||
O.loc = src
|
||||
var/newID = 0
|
||||
|
||||
for (var/datum/seed_pile/N in piles)
|
||||
if (N.matches(O))
|
||||
++N.amount
|
||||
N.seeds += (O)
|
||||
return
|
||||
else if(N.ID >= newID)
|
||||
newID = N.ID + 1
|
||||
|
||||
piles += new /datum/seed_pile(O, piles.len)
|
||||
piles += new /datum/seed_pile(O, newID)
|
||||
return
|
||||
|
||||
@@ -523,4 +523,5 @@
|
||||
playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3)
|
||||
Stun(stun_duration)
|
||||
Weaken(Floor(stun_duration/2))
|
||||
return 1
|
||||
return 1
|
||||
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
// Override the current limb status and don't cause an explosion
|
||||
E.droplimb(1,1)
|
||||
|
||||
for(var/obj/item/I in src)
|
||||
drop_from_inventory(I)
|
||||
I.throw_at(get_edge_target_turf(src,pick(alldirs)), rand(1,3), round(30/I.w_class))
|
||||
|
||||
..(species.gibbed_anim)
|
||||
gibs(loc, viruses, dna, null, species.flesh_color, species.blood_color)
|
||||
|
||||
|
||||
@@ -384,14 +384,14 @@
|
||||
else if(is_bleeding["right foot"])
|
||||
display_shoes = 1
|
||||
if(display_chest)
|
||||
msg += "<span class='warning'><b>[src] has blood soaking through from under [t_his] clothing!</b></span>\n"
|
||||
msg += "<span class='danger'>[src] has blood soaking through from under [t_his] clothing!</span>\n"
|
||||
if(display_shoes)
|
||||
msg += "<span class='warning'><b>[src] has blood running from [t_his] shoes!</b></span>\n"
|
||||
msg += "<span class='danger'>[src] has blood running from [t_his] shoes!</span>\n"
|
||||
if(display_gloves)
|
||||
msg += "<span class='warning'><b>[src] has blood running from under [t_his] gloves!</b></span>\n"
|
||||
msg += "<span class='danger'>[src] has blood running from under [t_his] gloves!</span>\n"
|
||||
|
||||
for(var/implant in get_visible_implants(0))
|
||||
msg += "<span class='warning'><b>[src] has \a [implant] sticking out of [t_his] flesh!</span>\n"
|
||||
msg += "<span class='danger'>[src] has \a [implant] sticking out of [t_his] flesh!</span>\n"
|
||||
if(digitalcamo)
|
||||
msg += "[t_He] [t_is] repulsively uncanny!\n"
|
||||
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
|
||||
/mob/living/carbon/process_resist()
|
||||
|
||||
//drop && roll
|
||||
if(on_fire)
|
||||
fire_stacks -= 2 //reduced
|
||||
Weaken(3)
|
||||
spin(32,2)
|
||||
visible_message(
|
||||
"<span class='danger'>[src] rolls on the floor, trying to put themselves out!</span>",
|
||||
"<span class='notice'>You stop, drop, and roll!</span>"
|
||||
)
|
||||
sleep(30)
|
||||
if(fire_stacks <= 0)
|
||||
visible_message(
|
||||
"<span class='danger'>[src] has successfully extinguished themselves!</span>",
|
||||
"<span class='notice'>You extinguish yourself.</span>"
|
||||
)
|
||||
ExtinguishMob()
|
||||
return
|
||||
|
||||
if(handcuffed)
|
||||
spawn() escape_handcuffs()
|
||||
else if(legcuffed)
|
||||
spawn() escape_legcuffs()
|
||||
|
||||
..()
|
||||
|
||||
/mob/living/carbon/proc/escape_handcuffs()
|
||||
if(!(last_special <= world.time)) return
|
||||
|
||||
next_move = world.time + 100
|
||||
last_special = world.time + 100
|
||||
|
||||
if(can_break_cuffs()) //Don't want to do a lot of logic gating here.
|
||||
break_handcuffs()
|
||||
return
|
||||
|
||||
var/obj/item/weapon/handcuffs/HC = handcuffed
|
||||
|
||||
//A default in case you are somehow handcuffed with something that isn't an obj/item/weapon/handcuffs type
|
||||
var/breakouttime = 1200
|
||||
var/displaytime = 2 //Minutes to display in the "this will take X minutes."
|
||||
//If you are handcuffed with actual handcuffs... Well what do I know, maybe someone will want to handcuff you with toilet paper in the future...
|
||||
if(istype(HC))
|
||||
breakouttime = HC.breakouttime
|
||||
displaytime = breakouttime / 600 //Minutes
|
||||
|
||||
visible_message(
|
||||
"<span class='danger'>[src] attempts to remove \the [HC]!</span>",
|
||||
"<span class='warning'>You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)</span>"
|
||||
)
|
||||
|
||||
if(do_after(src, breakouttime))
|
||||
if(!handcuffed || buckled)
|
||||
return
|
||||
visible_message(
|
||||
"<span class='danger'>[src] manages to remove \the [handcuffed]!</span>",
|
||||
"<span class='notice'>You successfully remove \the [handcuffed].</span>"
|
||||
)
|
||||
drop_from_inventory(handcuffed)
|
||||
|
||||
/mob/living/carbon/proc/escape_legcuffs()
|
||||
if(!(last_special <= world.time)) return
|
||||
|
||||
next_move = world.time + 100
|
||||
last_special = world.time + 100
|
||||
|
||||
if(can_break_cuffs()) //Don't want to do a lot of logic gating here.
|
||||
break_legcuffs()
|
||||
return
|
||||
|
||||
var/obj/item/weapon/legcuffs/HC = legcuffed
|
||||
|
||||
//A default in case you are somehow legcuffed with something that isn't an obj/item/weapon/legcuffs type
|
||||
var/breakouttime = 1200
|
||||
var/displaytime = 2 //Minutes to display in the "this will take X minutes."
|
||||
//If you are legcuffed with actual legcuffs... Well what do I know, maybe someone will want to legcuff you with toilet paper in the future...
|
||||
if(istype(HC))
|
||||
breakouttime = HC.breakouttime
|
||||
displaytime = breakouttime / 600 //Minutes
|
||||
|
||||
visible_message(
|
||||
"<span class='danger'>[usr] attempts to remove \the [HC]!</span>",
|
||||
"<span class='warning'>You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)</span>"
|
||||
)
|
||||
|
||||
if(do_after(src, breakouttime))
|
||||
if(!legcuffed || buckled)
|
||||
return
|
||||
visible_message(
|
||||
"<span class='danger'>[src] manages to remove \the [legcuffed]!</span>",
|
||||
"<span class='notice'>You successfully remove \the [legcuffed].</span>"
|
||||
)
|
||||
|
||||
drop_from_inventory(legcuffed)
|
||||
legcuffed = null
|
||||
update_inv_legcuffed()
|
||||
|
||||
/mob/living/carbon/proc/can_break_cuffs()
|
||||
if(HULK in mutations)
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/proc/break_handcuffs()
|
||||
visible_message(
|
||||
"<span class='danger'>[src] is trying to break \the [handcuffed]!</span>",
|
||||
"<span class='warning'>You attempt to break your [handcuffed.name]. (This will take around 5 seconds and you need to stand still)</span>"
|
||||
)
|
||||
|
||||
if(do_after(src, 50))
|
||||
if(!handcuffed || buckled)
|
||||
return
|
||||
|
||||
visible_message(
|
||||
"<span class='danger'>[src] manages to break \the [handcuffed]!</span>",
|
||||
"<span class='warning'>You successfully break your [handcuffed.name].</span>"
|
||||
)
|
||||
|
||||
say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
|
||||
del(handcuffed)
|
||||
handcuffed = null
|
||||
if(buckled && buckled.buckle_require_restraints)
|
||||
buckled.unbuckle_mob()
|
||||
update_inv_handcuffed()
|
||||
|
||||
/mob/living/carbon/proc/break_legcuffs()
|
||||
src << "<span class='warning'>You attempt to break your legcuffs. (This will take around 5 seconds and you need to stand still)</span>"
|
||||
visible_message("<span class='danger'>[src] is trying to break the legcuffs!</span>")
|
||||
|
||||
if(do_after(src, 50))
|
||||
if(!legcuffed || buckled)
|
||||
return
|
||||
|
||||
visible_message(
|
||||
"<span class='danger'>[src] manages to break the legcuffs!</span>",
|
||||
"<span class='warning'>You successfully break your legcuffs.</span>"
|
||||
)
|
||||
|
||||
say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
|
||||
del(legcuffed)
|
||||
legcuffed = null
|
||||
update_inv_legcuffed()
|
||||
|
||||
/mob/living/carbon/human/can_break_cuffs()
|
||||
if(species.can_shred(src,1))
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/escape_buckle()
|
||||
if(!buckled) return
|
||||
if(!(last_special <= world.time)) return
|
||||
|
||||
if(!restrained())
|
||||
..()
|
||||
else
|
||||
next_move = world.time + 100
|
||||
last_special = world.time + 100
|
||||
visible_message(
|
||||
"<span class='danger'>[usr] attempts to unbuckle themself!</span>",
|
||||
"<span class='warning'>You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)</span>"
|
||||
)
|
||||
|
||||
if(do_after(usr, 1200))
|
||||
if(!buckled)
|
||||
return
|
||||
visible_message("<span class='danger'>[usr] manages to unbuckle themself!</span>",
|
||||
"<span class='notice'>You successfully unbuckle yourself.</span>")
|
||||
buckled.user_unbuckle_mob(src)
|
||||
@@ -460,284 +460,84 @@
|
||||
set name = "Resist"
|
||||
set category = "IC"
|
||||
|
||||
if(usr.stat || !isliving(usr) || usr.next_move > world.time)
|
||||
return
|
||||
if(can_resist())
|
||||
next_move = world.time + 20
|
||||
process_resist()
|
||||
|
||||
usr.next_move = world.time + 20
|
||||
|
||||
var/mob/living/L = usr
|
||||
/mob/living/proc/can_resist()
|
||||
//need to allow !canmove, or otherwise neck grabs can't be resisted
|
||||
//so just check weakened instead.
|
||||
if(stat || weakened)
|
||||
return 0
|
||||
if(next_move > world.time)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/mob/living/proc/process_resist()
|
||||
//Getting out of someone's inventory.
|
||||
if(istype(src.loc,/obj/item/weapon/holder))
|
||||
var/obj/item/weapon/holder/H = src.loc //Get our item holder.
|
||||
var/mob/M = H.loc //Get our mob holder (if any).
|
||||
|
||||
if(istype(M))
|
||||
M.drop_from_inventory(H)
|
||||
M << "[H] wriggles out of your grip!"
|
||||
src << "You wriggle out of [M]'s grip!"
|
||||
else if(istype(H.loc,/obj/item))
|
||||
src << "You struggle free of [H.loc]."
|
||||
H.loc = get_turf(H)
|
||||
|
||||
if(istype(M))
|
||||
for(var/atom/A in M.contents)
|
||||
if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder))
|
||||
return
|
||||
|
||||
M.status_flags &= ~PASSEMOTES
|
||||
if(istype(src.loc, /obj/item/weapon/holder))
|
||||
escape_inventory(src.loc)
|
||||
return
|
||||
|
||||
//Resisting control by an alien mind.
|
||||
if(istype(src.loc,/mob/living/simple_animal/borer))
|
||||
var/mob/living/simple_animal/borer/B = src.loc
|
||||
var/mob/living/captive_brain/H = src
|
||||
|
||||
H << "<span class='danger'>You begin doggedly resisting the parasite's control (this will take approximately sixty seconds).</span>"
|
||||
B.host << "<span class='danger'>You feel the captive mind of [src] begin to resist your control.</span>"
|
||||
|
||||
spawn(rand(200,250)+B.host.brainloss)
|
||||
|
||||
if(!B || !B.controlling)
|
||||
return
|
||||
|
||||
B.host.adjustBrainLoss(rand(5,10))
|
||||
H << "<span class='danger'>With an immense exertion of will, you regain control of your body!</span>"
|
||||
B.host << "<span class='danger'>You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you.</span>"
|
||||
|
||||
B.detatch()
|
||||
|
||||
verbs -= /mob/living/carbon/proc/release_control
|
||||
verbs -= /mob/living/carbon/proc/punish_host
|
||||
verbs -= /mob/living/carbon/proc/spawn_larvae
|
||||
|
||||
return
|
||||
|
||||
//resisting grabs (as if it helps anyone...)
|
||||
if ((!( L.stat ) && !( L.restrained() )))
|
||||
var/resisting = 0
|
||||
for(var/obj/O in L.requests)
|
||||
L.requests.Remove(O)
|
||||
del(O)
|
||||
resisting++
|
||||
for(var/obj/item/weapon/grab/G in usr.grabbed_by)
|
||||
resisting++
|
||||
switch(G.state)
|
||||
if(GRAB_PASSIVE)
|
||||
del(G)
|
||||
if(GRAB_AGGRESSIVE)
|
||||
if(prob(60)) //same chance of breaking the grab as disarm
|
||||
L.visible_message("<span class='warning'>[L] has broken free of [G.assailant]'s grip!</span>")
|
||||
del(G)
|
||||
if(GRAB_NECK)
|
||||
//If the you move when grabbing someone then it's easier for them to break free. Same if the affected mob is immune to stun.
|
||||
if (((world.time - G.assailant.l_move_time < 30 || !L.stunned) && prob(15)) || prob(3))
|
||||
L.visible_message("<span class='warning'>[L] has broken free of [G.assailant]'s headlock!</span>")
|
||||
del(G)
|
||||
if(resisting)
|
||||
L.visible_message("<span class='danger'>[L] resists!</span>")
|
||||
|
||||
if (!restrained())
|
||||
resist_grab()
|
||||
|
||||
//unbuckling yourself
|
||||
if(L.buckled && (L.last_special <= world.time) )
|
||||
if(iscarbon(L))
|
||||
var/mob/living/carbon/C = L
|
||||
if( C.handcuffed )
|
||||
C.next_move = world.time + 100
|
||||
C.last_special = world.time + 100
|
||||
C << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)"
|
||||
for(var/mob/O in viewers(L))
|
||||
O.show_message("\red <B>[usr] attempts to unbuckle themself!</B>", 1)
|
||||
spawn(0)
|
||||
if(do_after(usr, 1200))
|
||||
if(!C.buckled)
|
||||
return
|
||||
for(var/mob/O in viewers(C))
|
||||
O.show_message("\red <B>[usr] manages to unbuckle themself!</B>", 1)
|
||||
C << "\blue You successfully unbuckle yourself."
|
||||
C.buckled.user_unbuckle_mob(C)
|
||||
else
|
||||
L.buckled.user_unbuckle_mob(L)
|
||||
if(buckled)
|
||||
spawn() escape_buckle()
|
||||
|
||||
//Breaking out of a locker?
|
||||
else if( src.loc && (istype(src.loc, /obj/structure/closet)) )
|
||||
var/breakout_time = 2 //2 minutes by default
|
||||
if( src.loc && (istype(src.loc, /obj/structure/closet)) )
|
||||
var/obj/structure/closet/C = loc
|
||||
spawn() C.mob_breakout(src)
|
||||
|
||||
var/obj/structure/closet/C = L.loc
|
||||
if(C.opened)
|
||||
return //Door's open... wait, why are you in it's contents then?
|
||||
if(istype(L.loc, /obj/structure/closet/secure_closet))
|
||||
var/obj/structure/closet/secure_closet/SC = L.loc
|
||||
if(!SC.locked && !SC.welded)
|
||||
return //It's a secure closet, but isn't locked. Easily escapable from, no need to 'resist'
|
||||
else
|
||||
if(!C.welded)
|
||||
return //closed but not welded...
|
||||
// else Meh, lets just keep it at 2 minutes for now
|
||||
// breakout_time++ //Harder to get out of welded lockers than locked lockers
|
||||
/mob/living/proc/escape_inventory(obj/item/weapon/holder/H)
|
||||
if(H != src.loc) return
|
||||
|
||||
var/mob/M = H.loc //Get our mob holder (if any).
|
||||
|
||||
//okay, so the closet is either welded or locked... resist!!!
|
||||
usr.next_move = world.time + 100
|
||||
L.last_special = world.time + 100
|
||||
L << "\red You lean on the back of \the [C] and start pushing the door open. (this will take about [breakout_time] minutes)"
|
||||
for(var/mob/O in viewers(usr.loc))
|
||||
O.show_message("\red <B>The [L.loc] begins to shake violently!</B>", 1)
|
||||
if(istype(M))
|
||||
M.drop_from_inventory(H)
|
||||
M << "<span class='warning'>[H] wriggles out of your grip!</span>"
|
||||
src << "<span class='warning'>You wriggle out of [M]'s grip!</span>"
|
||||
else if(istype(H.loc,/obj/item))
|
||||
src << "<span class='warning'>You struggle free of [H.loc].</span>"
|
||||
H.loc = get_turf(H)
|
||||
|
||||
if(istype(M))
|
||||
for(var/atom/A in M.contents)
|
||||
if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder))
|
||||
return
|
||||
|
||||
spawn(0)
|
||||
if(do_after(usr,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds
|
||||
if(!C || !L || L.stat != CONSCIOUS || L.loc != C || C.opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened
|
||||
return
|
||||
M.status_flags &= ~PASSEMOTES
|
||||
|
||||
//Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'...
|
||||
if(istype(L.loc, /obj/structure/closet/secure_closet))
|
||||
var/obj/structure/closet/secure_closet/SC = L.loc
|
||||
if(!SC.locked && !SC.welded)
|
||||
return
|
||||
else
|
||||
if(!C.welded)
|
||||
return
|
||||
/mob/living/proc/escape_buckle()
|
||||
if(buckled)
|
||||
buckled.user_unbuckle_mob(src)
|
||||
|
||||
//Well then break it!
|
||||
if(istype(usr.loc, /obj/structure/closet/secure_closet))
|
||||
var/obj/structure/closet/secure_closet/SC = L.loc
|
||||
SC.desc = "It appears to be broken."
|
||||
SC.icon_state = SC.icon_off
|
||||
flick(SC.icon_broken, SC)
|
||||
sleep(10)
|
||||
flick(SC.icon_broken, SC)
|
||||
sleep(10)
|
||||
SC.broken = 1
|
||||
SC.locked = 0
|
||||
SC.update_icon()
|
||||
usr << "\red You successfully break out!"
|
||||
for(var/mob/O in viewers(L.loc))
|
||||
O.show_message("\red <B>\the [usr] successfully broke out of \the [SC]!</B>", 1)
|
||||
if(istype(SC.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace)
|
||||
var/obj/structure/bigDelivery/BD = SC.loc
|
||||
BD.attack_hand(usr)
|
||||
SC.open()
|
||||
else
|
||||
C.welded = 0
|
||||
C.update_icon()
|
||||
usr << "\red You successfully break out!"
|
||||
for(var/mob/O in viewers(L.loc))
|
||||
O.show_message("\red <B>\the [usr] successfully broke out of \the [C]!</B>", 1)
|
||||
if(istype(C.loc, /obj/structure/bigDelivery)) //nullspace ect.. read the comment above
|
||||
var/obj/structure/bigDelivery/BD = C.loc
|
||||
BD.attack_hand(usr)
|
||||
C.open()
|
||||
|
||||
//drop && roll or breaking out of handcuffs
|
||||
else if(iscarbon(L))
|
||||
var/mob/living/carbon/CM = L
|
||||
if(CM.on_fire && CM.canmove)
|
||||
CM.fire_stacks -= 5
|
||||
CM.Weaken(3)
|
||||
CM.spin(32,2)
|
||||
CM.visible_message("<span class='danger'>[CM] rolls on the floor, trying to put themselves out!</span>", \
|
||||
"<span class='notice'>You stop, drop, and roll!</span>")
|
||||
sleep(30)
|
||||
if(fire_stacks <= 0)
|
||||
CM.visible_message("<span class='danger'>[CM] has successfully extinguished themselves!</span>", \
|
||||
"<span class='notice'>You extinguish yourself.</span>")
|
||||
ExtinguishMob()
|
||||
return
|
||||
if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time))
|
||||
CM.next_move = world.time + 100
|
||||
CM.last_special = world.time + 100
|
||||
|
||||
var/can_break_cuffs
|
||||
if(HULK in usr.mutations)
|
||||
can_break_cuffs = 1
|
||||
else if(istype(CM,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = CM
|
||||
if(H.species.can_shred(H,1))
|
||||
can_break_cuffs = 1
|
||||
|
||||
if(can_break_cuffs) //Don't want to do a lot of logic gating here.
|
||||
usr << "\red You attempt to break your handcuffs. (This will take around 5 seconds and you need to stand still)"
|
||||
for(var/mob/O in viewers(CM))
|
||||
O.show_message(text("\red <B>[] is trying to break the handcuffs!</B>", CM), 1)
|
||||
spawn(0)
|
||||
if(do_after(CM, 50))
|
||||
if(!CM.handcuffed || CM.buckled)
|
||||
return
|
||||
for(var/mob/O in viewers(CM))
|
||||
O.show_message(text("\red <B>[] manages to break the handcuffs!</B>", CM), 1)
|
||||
CM << "\red You successfully break your handcuffs."
|
||||
CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
del(CM.handcuffed)
|
||||
CM.handcuffed = null
|
||||
if(buckled && buckled.buckle_require_restraints)
|
||||
buckled.unbuckle_mob()
|
||||
CM.update_inv_handcuffed()
|
||||
else
|
||||
var/obj/item/weapon/handcuffs/HC = CM.handcuffed
|
||||
var/breakouttime = 1200 //A default in case you are somehow handcuffed with something that isn't an obj/item/weapon/handcuffs type
|
||||
var/displaytime = 2 //Minutes to display in the "this will take X minutes."
|
||||
if(istype(HC)) //If you are handcuffed with actual handcuffs... Well what do I know, maybe someone will want to handcuff you with toilet paper in the future...
|
||||
breakouttime = HC.breakouttime
|
||||
displaytime = breakouttime / 600 //Minutes
|
||||
CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)"
|
||||
for(var/mob/O in viewers(CM))
|
||||
O.show_message( "\red <B>[usr] attempts to remove \the [HC]!</B>", 1)
|
||||
spawn(0)
|
||||
if(do_after(CM, breakouttime))
|
||||
if(!CM.handcuffed || CM.buckled)
|
||||
return // time leniency for lag which also might make this whole thing pointless but the server
|
||||
for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink
|
||||
O.show_message("\red <B>[CM] manages to remove the handcuffs!</B>", 1)
|
||||
CM << "\blue You successfully remove \the [CM.handcuffed]."
|
||||
CM.drop_from_inventory(CM.handcuffed)
|
||||
|
||||
else if(CM.legcuffed && CM.canmove && (CM.last_special <= world.time))
|
||||
CM.next_move = world.time + 100
|
||||
CM.last_special = world.time + 100
|
||||
|
||||
var/can_break_cuffs
|
||||
if(HULK in usr.mutations)
|
||||
can_break_cuffs = 1
|
||||
else if(istype(CM,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = CM
|
||||
if(H.species.can_shred(H,1))
|
||||
can_break_cuffs = 1
|
||||
|
||||
if(can_break_cuffs) //Don't want to do a lot of logic gating here.
|
||||
usr << "\red You attempt to break your legcuffs. (This will take around 5 seconds and you need to stand still)"
|
||||
for(var/mob/O in viewers(CM))
|
||||
O.show_message(text("\red <B>[] is trying to break the legcuffs!</B>", CM), 1)
|
||||
spawn(0)
|
||||
if(do_after(CM, 50))
|
||||
if(!CM.legcuffed || CM.buckled)
|
||||
return
|
||||
for(var/mob/O in viewers(CM))
|
||||
O.show_message(text("\red <B>[] manages to break the legcuffs!</B>", CM), 1)
|
||||
CM << "\red You successfully break your legcuffs."
|
||||
CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
del(CM.legcuffed)
|
||||
CM.legcuffed = null
|
||||
CM.update_inv_legcuffed()
|
||||
else
|
||||
var/obj/item/weapon/legcuffs/HC = CM.legcuffed
|
||||
var/breakouttime = 1200 //A default in case you are somehow legcuffed with something that isn't an obj/item/weapon/legcuffs type
|
||||
var/displaytime = 2 //Minutes to display in the "this will take X minutes."
|
||||
if(istype(HC)) //If you are legcuffed with actual legcuffs... Well what do I know, maybe someone will want to legcuff you with toilet paper in the future...
|
||||
breakouttime = HC.breakouttime
|
||||
displaytime = breakouttime / 600 //Minutes
|
||||
CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)"
|
||||
for(var/mob/O in viewers(CM))
|
||||
O.show_message( "\red <B>[usr] attempts to remove \the [HC]!</B>", 1)
|
||||
spawn(0)
|
||||
if(do_after(CM, breakouttime))
|
||||
if(!CM.legcuffed || CM.buckled)
|
||||
return // time leniency for lag which also might make this whole thing pointless but the server
|
||||
for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink
|
||||
O.show_message("\red <B>[CM] manages to remove the legcuffs!</B>", 1)
|
||||
CM << "\blue You successfully remove \the [CM.legcuffed]."
|
||||
CM.drop_from_inventory(CM.legcuffed)
|
||||
CM.legcuffed = null
|
||||
CM.update_inv_legcuffed()
|
||||
/mob/living/proc/resist_grab()
|
||||
var/resisting = 0
|
||||
for(var/obj/O in requests)
|
||||
requests.Remove(O)
|
||||
del(O)
|
||||
resisting++
|
||||
for(var/obj/item/weapon/grab/G in grabbed_by)
|
||||
resisting++
|
||||
switch(G.state)
|
||||
if(GRAB_PASSIVE)
|
||||
del(G)
|
||||
if(GRAB_AGGRESSIVE)
|
||||
if(prob(60)) //same chance of breaking the grab as disarm
|
||||
visible_message("<span class='warning'>[src] has broken free of [G.assailant]'s grip!</span>")
|
||||
del(G)
|
||||
if(GRAB_NECK)
|
||||
//If the you move when grabbing someone then it's easier for them to break free. Same if the affected mob is immune to stun.
|
||||
if (((world.time - G.assailant.l_move_time < 30 || !stunned) && prob(15)) || prob(3))
|
||||
visible_message("<span class='warning'>[src] has broken free of [G.assailant]'s headlock!</span>")
|
||||
del(G)
|
||||
if(resisting)
|
||||
visible_message("<span class='danger'>[src] resists!</span>")
|
||||
|
||||
/mob/living/verb/lay_down()
|
||||
set name = "Rest"
|
||||
|
||||
@@ -32,4 +32,31 @@
|
||||
M << "The captive mind of [src] whispers, \"[message]\""
|
||||
|
||||
/mob/living/captive_brain/emote(var/message)
|
||||
return
|
||||
return
|
||||
|
||||
/mob/living/captive_brain/can_resist()
|
||||
return !(stat || next_move > world.time)
|
||||
|
||||
/mob/living/captive_brain/process_resist()
|
||||
//Resisting control by an alien mind.
|
||||
if(istype(src.loc,/mob/living/simple_animal/borer))
|
||||
var/mob/living/simple_animal/borer/B = src.loc
|
||||
var/mob/living/captive_brain/H = src
|
||||
|
||||
H << "<span class='danger'>You begin doggedly resisting the parasite's control (this will take approximately sixty seconds).</span>"
|
||||
B.host << "<span class='danger'>You feel the captive mind of [src] begin to resist your control.</span>"
|
||||
|
||||
spawn(rand(200,250)+B.host.brainloss)
|
||||
if(!B || !B.controlling) return
|
||||
|
||||
B.host.adjustBrainLoss(rand(5,10))
|
||||
H << "<span class='danger'>With an immense exertion of will, you regain control of your body!</span>"
|
||||
B.host << "<span class='danger'>You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you.</span>"
|
||||
B.detatch()
|
||||
verbs -= /mob/living/carbon/proc/release_control
|
||||
verbs -= /mob/living/carbon/proc/punish_host
|
||||
verbs -= /mob/living/carbon/proc/spawn_larvae
|
||||
|
||||
return
|
||||
|
||||
..()
|
||||
|
||||
@@ -56,7 +56,10 @@
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
verbs += /mob/living/proc/hide
|
||||
|
||||
name = "[name] ([rand(1, 1000)])"
|
||||
if(name == initial(name))
|
||||
name = "[name] ([rand(1, 1000)])"
|
||||
real_name = name
|
||||
|
||||
if(!body_color)
|
||||
body_color = pick( list("brown","gray","white") )
|
||||
icon_state = "mouse_[body_color]"
|
||||
@@ -112,5 +115,10 @@
|
||||
name = "Tom"
|
||||
desc = "Jerry the cat is not amused."
|
||||
|
||||
/mob/living/simple_animal/mouse/brown/Tom/New()
|
||||
..()
|
||||
// Change my name back, don't want to be named Tom (666)
|
||||
name = initial(name)
|
||||
|
||||
/mob/living/simple_animal/mouse/can_use_vents()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
affecting.loc = assailant.loc
|
||||
|
||||
if(state >= GRAB_NECK)
|
||||
affecting.Stun(1)
|
||||
affecting.Stun(3)
|
||||
if(isliving(affecting))
|
||||
var/mob/living/L = affecting
|
||||
L.adjustOxyLoss(1)
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
var/info_links //A different version of the paper which includes html links at fields and EOF
|
||||
var/stamps //The (text for the) stamps on the paper.
|
||||
var/fields //Amount of user created fields
|
||||
var/free_space = MAX_PAPER_MESSAGE_LEN
|
||||
var/list/stamped
|
||||
var/list/ico[0] //Icons and
|
||||
var/list/offset_x[0] //offsets stored for later
|
||||
@@ -51,6 +52,7 @@
|
||||
|
||||
spawn(2)
|
||||
update_icon()
|
||||
update_space(info)
|
||||
updateinfolinks()
|
||||
return
|
||||
|
||||
@@ -62,6 +64,12 @@
|
||||
return
|
||||
icon_state = "paper"
|
||||
|
||||
/obj/item/weapon/paper/proc/update_space(var/new_text)
|
||||
if(!new_text)
|
||||
return
|
||||
|
||||
free_space -= length(strip_html_properly(new_text, 0))
|
||||
|
||||
/obj/item/weapon/paper/examine(mob/user)
|
||||
..()
|
||||
if(in_range(user, src) || istype(user, /mob/dead/observer))
|
||||
@@ -188,6 +196,7 @@
|
||||
/obj/item/weapon/paper/proc/clearpaper()
|
||||
info = null
|
||||
stamps = null
|
||||
free_space = MAX_PAPER_MESSAGE_LEN
|
||||
stamped = list()
|
||||
overlays.Cut()
|
||||
updateinfolinks()
|
||||
@@ -325,12 +334,11 @@
|
||||
var/id = href_list["write"]
|
||||
//var/t = strip_html_simple(input(usr, "What text do you wish to add to " + (id=="end" ? "the end of the paper" : "field "+id) + "?", "[name]", null),8192) as message
|
||||
|
||||
var/textlimit = MAX_PAPER_MESSAGE_LEN - length(info)
|
||||
if(textlimit <= 0)
|
||||
if(free_space <= 0)
|
||||
usr << "<span class='info'>You're trying to find a free place on paper, but can't!</span>"
|
||||
return
|
||||
|
||||
var/t = strip_html_simple(input("Enter what you want to write:", "Write", null, null) as message, textlimit)
|
||||
var/t = strip_html_simple(input("Enter what you want to write:", "Write", null, null) as message, free_space)
|
||||
|
||||
if(!t)
|
||||
return
|
||||
@@ -375,6 +383,8 @@
|
||||
info += t // Oh, he wants to edit to the end of the file, let him.
|
||||
updateinfolinks()
|
||||
|
||||
update_space(t)
|
||||
|
||||
usr << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[info_links][stamps]</BODY></HTML>", "window=[name]") // Update the window
|
||||
|
||||
update_icon()
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#define LIGHT_BROKEN 2
|
||||
#define LIGHT_BURNED 3
|
||||
|
||||
|
||||
#define LIGHT_BULB_TEMPERATURE 400 //K - used value for a 60W bulb
|
||||
|
||||
/obj/item/light_fixture_frame
|
||||
name = "light fixture frame"
|
||||
@@ -487,11 +487,13 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(istype(H))
|
||||
|
||||
if(H.gloves)
|
||||
if(H.species.heat_level_1 > LIGHT_BULB_TEMPERATURE)
|
||||
prot = 1
|
||||
else if(H.gloves)
|
||||
var/obj/item/clothing/gloves/G = H.gloves
|
||||
if(G.max_heat_protection_temperature)
|
||||
prot = (G.max_heat_protection_temperature > 360)
|
||||
if(G.max_heat_protection_temperature > LIGHT_BULB_TEMPERATURE)
|
||||
prot = 1
|
||||
else
|
||||
prot = 1
|
||||
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
|
||||
if (!ready_to_fire())
|
||||
if (world.time % 3) //to prevent spam
|
||||
user << "<span class='warning'>[src] is not ready to fire again!"
|
||||
user << "<span class='warning'>[src] is not ready to fire again!</span>"
|
||||
return
|
||||
|
||||
var/obj/projectile = consume_next_projectile(user)
|
||||
@@ -170,7 +170,7 @@
|
||||
|
||||
if(reflex)
|
||||
user.visible_message(
|
||||
"<span class='reflex_shoot'><b>[user] fires [src][pointblank ? " point blank at [target]":""] by reflex!<b></span>",
|
||||
"<span class='reflex_shoot'><b>[user] fires [src][pointblank ? " point blank at [target]":""] by reflex!</b></span>",
|
||||
"<span class='reflex_shoot'>You fire [src] by reflex]!</span>",
|
||||
"You hear a [fire_sound_text]!"
|
||||
)
|
||||
|
||||
@@ -15,13 +15,15 @@
|
||||
var/tag_x
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
unwrap()
|
||||
|
||||
proc/unwrap()
|
||||
if(wrapped) //sometimes items can disappear. For example, bombs. --rastaf0
|
||||
wrapped.loc = (get_turf(src.loc))
|
||||
if(istype(wrapped, /obj/structure/closet))
|
||||
var/obj/structure/closet/O = wrapped
|
||||
O.welded = 0
|
||||
del(src)
|
||||
return
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/device/destTagger))
|
||||
|
||||
Reference in New Issue
Block a user