Merge branch 'pr/21'
@@ -40,6 +40,88 @@
|
||||
/obj/effect/spawner/lootdrop/bedsheet,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/crew_quarters/dorms)
|
||||
"aaf" = (
|
||||
/obj/machinery/conveyor{
|
||||
dir = 1;
|
||||
id = "garbage"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"aag" = (
|
||||
/obj/machinery/mineral/stacking_unit_console{
|
||||
dir = 2;
|
||||
machinedir = 8;
|
||||
pixel_x = -32;
|
||||
pixel_y = 32
|
||||
},
|
||||
/obj/machinery/conveyor{
|
||||
dir = 4;
|
||||
id = "garbagestacked"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"aah" = (
|
||||
/obj/machinery/conveyor{
|
||||
dir = 4;
|
||||
id = "garbagestacked"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"aai" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/conveyor{
|
||||
dir = 1;
|
||||
id = "garbage"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"aaj" = (
|
||||
/obj/machinery/conveyor{
|
||||
dir = 8;
|
||||
id = "garbage"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"aak" = (
|
||||
/obj/machinery/recycler,
|
||||
/obj/machinery/conveyor{
|
||||
dir = 4;
|
||||
id = "garbage"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"aal" = (
|
||||
/obj/structure/chair/comfy/black,
|
||||
/obj/structure/sign/plaques/kiddie{
|
||||
desc = "An embossed piece of paper from the Third University of Harvard.";
|
||||
name = "\improper 'Diploma' frame";
|
||||
pixel_y = 32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1;
|
||||
light_color = "#ffc1c1"
|
||||
},
|
||||
/obj/effect/landmark/start/lawyer,
|
||||
/turf/open/floor/wood,
|
||||
/area/lawoffice)
|
||||
"aam" = (
|
||||
/obj/machinery/conveyor{
|
||||
dir = 4;
|
||||
id = "garbage"
|
||||
},
|
||||
/obj/structure/disposaloutlet{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"abf" = (
|
||||
/obj/structure/bed,
|
||||
/turf/open/floor/plating,
|
||||
@@ -16687,13 +16769,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"aNV" = (
|
||||
/obj/machinery/conveyor{
|
||||
dir = 8;
|
||||
id = "EngLoad"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"aNX" = (
|
||||
/obj/machinery/disposal/deliveryChute{
|
||||
dir = 8
|
||||
@@ -17180,22 +17255,6 @@
|
||||
/obj/item/shard,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/cargo)
|
||||
"aPg" = (
|
||||
/obj/machinery/conveyor{
|
||||
dir = 8;
|
||||
id = "garbage"
|
||||
},
|
||||
/obj/structure/disposaloutlet{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"aPi" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
@@ -17561,16 +17620,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"aQo" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/conveyor{
|
||||
dir = 2;
|
||||
id = "garbage"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"aQp" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -51263,14 +51312,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/chapel/main/monastery)
|
||||
"cvf" = (
|
||||
/obj/machinery/conveyor{
|
||||
dir = 8;
|
||||
id = "garbage"
|
||||
},
|
||||
/obj/machinery/recycler,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"cvg" = (
|
||||
/obj/structure/flora/ausbushes/ywflowers,
|
||||
/obj/structure/flora/ausbushes/brflowers,
|
||||
@@ -53693,19 +53734,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/sleeper)
|
||||
"eFG" = (
|
||||
/obj/machinery/mineral/stacking_unit_console{
|
||||
dir = 2;
|
||||
machinedir = 8;
|
||||
pixel_x = -32;
|
||||
pixel_y = 32
|
||||
},
|
||||
/obj/machinery/conveyor{
|
||||
dir = 8;
|
||||
id = "EngLoad"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"eHI" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -59043,14 +59071,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/sleeper)
|
||||
"rax" = (
|
||||
/obj/machinery/conveyor{
|
||||
icon_state = "conveyor_map";
|
||||
dir = 1;
|
||||
id = "EngLoad"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"reH" = (
|
||||
/obj/item/reagent_containers/food/drinks/bottle/vodka,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
@@ -61508,13 +61528,6 @@
|
||||
/obj/structure/sign/warning/vacuum/external,
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"xer" = (
|
||||
/obj/machinery/conveyor{
|
||||
dir = 2;
|
||||
id = "garbage"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"xeB" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
@@ -61768,19 +61781,6 @@
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/mixing)
|
||||
"xJy" = (
|
||||
/obj/structure/chair/comfy/black,
|
||||
/obj/structure/sign/plaques/kiddie{
|
||||
desc = "An embossed piece of paper from the Third University of Harvard.";
|
||||
name = "\improper 'Diploma' frame";
|
||||
pixel_y = 32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1;
|
||||
light_color = "#ffc1c1"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/lawoffice)
|
||||
"xKc" = (
|
||||
/obj/structure/sign/warning/biohazard,
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -81803,7 +81803,7 @@ ajM
|
||||
aiu
|
||||
aiu
|
||||
gSH
|
||||
xJy
|
||||
aal
|
||||
sJr
|
||||
sJr
|
||||
sJr
|
||||
@@ -107513,9 +107513,9 @@ aaa
|
||||
aaa
|
||||
aLn
|
||||
aNT
|
||||
xer
|
||||
aQo
|
||||
aPg
|
||||
aaf
|
||||
aai
|
||||
aam
|
||||
aRu
|
||||
srZ
|
||||
aLm
|
||||
@@ -107771,7 +107771,7 @@ aaa
|
||||
aLm
|
||||
aLm
|
||||
aNU
|
||||
aNV
|
||||
aaj
|
||||
dqY
|
||||
aRv
|
||||
sZh
|
||||
@@ -108027,8 +108027,8 @@ aaa
|
||||
aaa
|
||||
aLm
|
||||
aME
|
||||
eFG
|
||||
aNV
|
||||
aag
|
||||
aaj
|
||||
dqY
|
||||
aRw
|
||||
sqQ
|
||||
@@ -108284,9 +108284,9 @@ aaa
|
||||
aaa
|
||||
aLo
|
||||
aMF
|
||||
aNV
|
||||
aNV
|
||||
cvf
|
||||
aah
|
||||
aaj
|
||||
aak
|
||||
aQn
|
||||
sqQ
|
||||
aSm
|
||||
@@ -108542,8 +108542,8 @@ aaa
|
||||
aLo
|
||||
aMG
|
||||
aNX
|
||||
aNV
|
||||
rax
|
||||
aaj
|
||||
aaf
|
||||
aRy
|
||||
aSn
|
||||
aSn
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
//for convenience
|
||||
#define ENABLE_BITFIELD(variable, flag) (variable |= (flag))
|
||||
#define DISABLE_BITFIELD(variable, flag) (variable &= ~(flag))
|
||||
#define CHECK_BITFIELD(variable, flag) (variable & flag)
|
||||
#define CHECK_BITFIELD(variable, flag) (variable & (flag))
|
||||
#define TOGGLE_BITFIELD(variable, flag) (variable ^= (flag))
|
||||
|
||||
GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768))
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#define ITEM_SLOT_POCKET (1<<11) // this is to allow items with a w_class of WEIGHT_CLASS_NORMAL or WEIGHT_CLASS_BULKY to fit in pockets.
|
||||
#define ITEM_SLOT_DENYPOCKET (1<<12) // this is to deny items with a w_class of WEIGHT_CLASS_SMALL or WEIGHT_CLASS_TINY to fit in pockets.
|
||||
#define ITEM_SLOT_NECK (1<<13)
|
||||
#define ITEM_SLOT_SUITSTORE (1<<14)
|
||||
|
||||
//SLOTS
|
||||
#define SLOT_BACK 1
|
||||
@@ -52,6 +53,7 @@
|
||||
#define SLOT_LEGCUFFED 19
|
||||
#define SLOT_GENERC_DEXTROUS_STORAGE 20
|
||||
|
||||
|
||||
#define SLOTS_AMT 20 // Keep this up to date!
|
||||
|
||||
//I hate that this has to exist
|
||||
@@ -84,6 +86,8 @@
|
||||
. = ITEM_SLOT_ICLOTHING
|
||||
if(SLOT_L_STORE, SLOT_R_STORE)
|
||||
. = ITEM_SLOT_POCKET
|
||||
if(SLOT_S_STORE)
|
||||
. = ITEM_SLOT_SUITSTORE
|
||||
|
||||
|
||||
//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses.
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
name = "the chief engineer's advanced magnetic boots."
|
||||
targetitem = /obj/item/clothing/shoes/magboots/advance
|
||||
difficulty = 5
|
||||
excludefromjob = list("Chief Engineer")
|
||||
excludefromjob = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
|
||||
|
||||
/datum/objective_item/steal/capmedal
|
||||
name = "the medal of captaincy."
|
||||
@@ -62,10 +62,10 @@
|
||||
excludefromjob = list("Captain")
|
||||
|
||||
/datum/objective_item/steal/hypo
|
||||
name = "the hypospray."
|
||||
name = "the Chief Medical Officer's MKII hypospray."
|
||||
targetitem = /obj/item/hypospray/mkii/CMO //CITADEL EDIT, changing theft objective for the Hypo MK II
|
||||
difficulty = 5
|
||||
excludefromjob = list("Chief Medical Officer")
|
||||
excludefromjob = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Virologist", "Geneticist")
|
||||
|
||||
/datum/objective_item/steal/nukedisc
|
||||
name = "the nuclear authentication disk."
|
||||
@@ -83,10 +83,10 @@
|
||||
excludefromjob = list("Head of Security", "Warden")
|
||||
|
||||
/datum/objective_item/steal/reactive
|
||||
name = "the reactive teleport armor."
|
||||
name = "a reactive teleport armor."
|
||||
targetitem = /obj/item/clothing/suit/armor/reactive
|
||||
difficulty = 5
|
||||
excludefromjob = list("Research Director")
|
||||
excludefromjob = list("Research Director","Scientist", "Roboticist")
|
||||
|
||||
/datum/objective_item/steal/documents
|
||||
name = "any set of secret documents of any organization."
|
||||
@@ -143,7 +143,7 @@
|
||||
name = "the station blueprints."
|
||||
targetitem = /obj/item/areaeditor/blueprints
|
||||
difficulty = 10
|
||||
excludefromjob = list("Chief Engineer")
|
||||
excludefromjob = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
|
||||
altitems = list(/obj/item/photo)
|
||||
|
||||
/datum/objective_item/steal/blueprints/check_special_completion(obj/item/I)
|
||||
@@ -159,7 +159,7 @@
|
||||
name = "an unused sample of slime extract."
|
||||
targetitem = /obj/item/slime_extract
|
||||
difficulty = 3
|
||||
excludefromjob = list("Research Director","Scientist")
|
||||
excludefromjob = list("Research Director","Scientist", "Roboticist")
|
||||
|
||||
/datum/objective_item/steal/slime/check_special_completion(obj/item/slime_extract/E)
|
||||
if(E.Uses > 0)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
obj_flags |= EMAGGED
|
||||
|
||||
/obj/machinery/gulag_item_reclaimer/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/card/id/prisoner))
|
||||
if(istype(I, /obj/item/card/id))
|
||||
if(!inserted_id)
|
||||
if(!user.transferItemToLoc(I, src))
|
||||
return
|
||||
@@ -83,7 +83,7 @@
|
||||
usr.put_in_hands(inserted_id)
|
||||
inserted_id = null
|
||||
else
|
||||
var/obj/item/I = usr.is_holding_item_of_type(/obj/item/card/id/prisoner)
|
||||
var/obj/item/I = usr.is_holding_item_of_type(/obj/item/card/id)
|
||||
if(I)
|
||||
if(!usr.transferItemToLoc(I, src))
|
||||
return
|
||||
|
||||
@@ -76,6 +76,9 @@
|
||||
return 0
|
||||
if(energy_drain && !chassis.has_charge(energy_drain))
|
||||
return 0
|
||||
if(chassis.equipment_disabled)
|
||||
to_chat(chassis.occupant, "<span=warn>Error -- Equipment control unit is unresponsive.</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/proc/action(atom/target)
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
var/last_message = 0
|
||||
var/add_req_access = 1
|
||||
var/maint_access = 0
|
||||
var/equipment_disabled = 0 //disabled due to EMP
|
||||
var/dna_lock //dna-locking the mech
|
||||
var/list/proc_res = list() //stores proc owners, like proc_res["functionname"] = owner reference
|
||||
var/datum/effect_system/spark_spread/spark_system = new
|
||||
@@ -143,7 +144,6 @@
|
||||
diag_hud_set_mechhealth()
|
||||
diag_hud_set_mechcell()
|
||||
diag_hud_set_mechstat()
|
||||
diag_hud_set_mechtracking()
|
||||
|
||||
/obj/mecha/get_cell()
|
||||
return cell
|
||||
@@ -205,6 +205,15 @@
|
||||
GLOB.mechas_list -= src //global mech list
|
||||
return ..()
|
||||
|
||||
/obj/mecha/proc/restore_equipment()
|
||||
equipment_disabled = 0
|
||||
if(istype(src, /obj/mecha/combat))
|
||||
mouse_pointer = 'icons/mecha/mecha_mouse.dmi'
|
||||
if(occupant)
|
||||
SEND_SOUND(occupant, sound('sound/items/timer.ogg', volume=50))
|
||||
to_chat(occupant, "<span=notice>Equipment control unit has been rebooted successfuly.</span>")
|
||||
occupant.update_mouse_pointer()
|
||||
|
||||
/obj/mecha/CheckParts(list/parts_list)
|
||||
..()
|
||||
cell = locate(/obj/item/stock_parts/cell) in contents
|
||||
@@ -394,8 +403,6 @@
|
||||
diag_hud_set_mechhealth()
|
||||
diag_hud_set_mechcell()
|
||||
diag_hud_set_mechstat()
|
||||
diag_hud_set_mechtracking()
|
||||
|
||||
|
||||
/obj/mecha/proc/drop_item()//Derpfix, but may be useful in future for engineering exosuits.
|
||||
return
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
var/obj/mecha/M = new result(drop_location())
|
||||
QDEL_NULL(M.cell)
|
||||
|
||||
var/atom/parent_atom = parent
|
||||
M.CheckParts(parent_atom.contents)
|
||||
var/obj/item/mecha_parts/chassis/parent_chassis = parent
|
||||
M.CheckParts(parent_chassis.contents)
|
||||
|
||||
SSblackbox.record_feedback("tally", "mechas_created", 1, M.name)
|
||||
QDEL_NULL(parent)
|
||||
|
||||
@@ -21,8 +21,9 @@
|
||||
var/answer = TR.get_mecha_info()
|
||||
if(answer)
|
||||
dat += {"<hr>[answer]<br/>
|
||||
<a href='?src=[REF(src)];send_message=[REF(TR)]'>Send message</a><br/>
|
||||
<a href='?src=[REF(src)];get_log=[REF(TR)]'>Show exosuit log</a> | <a style='color: #f00;' href='?src=[REF(src)];shock=[REF(TR)]'>(EMP pulse)</a><br>"}
|
||||
<a href='?src=[REF(src)];send_message=[REF(TR)]'>Send message</a><br/>
|
||||
<a href='?src=[REF(src)];get_log=[REF(TR)]'>Show exosuit log</a><br/>
|
||||
[TR.recharging?"Recharging EMP Pulse...<br>":"<a style='color: #f00;' href='?src=[REF(src)];shock=[REF(TR)]'>(EMP Pulse)</a><br>"]"}
|
||||
|
||||
if(screen==1)
|
||||
dat += "<h3>Log contents</h3>"
|
||||
@@ -65,6 +66,7 @@
|
||||
icon_state = "motion2"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/ai_beacon = FALSE //If this beacon allows for AI control. Exists to avoid using istype() on checking.
|
||||
var/recharging = 0
|
||||
|
||||
/obj/item/mecha_parts/mecha_tracking/proc/get_mecha_info()
|
||||
if(!in_mecha())
|
||||
@@ -102,10 +104,16 @@
|
||||
return 0
|
||||
|
||||
/obj/item/mecha_parts/mecha_tracking/proc/shock()
|
||||
if(recharging)
|
||||
return
|
||||
var/obj/mecha/M = in_mecha()
|
||||
if(M)
|
||||
M.emp_act(EMP_LIGHT)
|
||||
qdel(src)
|
||||
M.emp_act(EMP_HEAVY)
|
||||
addtimer(CALLBACK(src, /obj/item/mecha_parts/mecha_tracking/proc/recharge), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
recharging = 1
|
||||
|
||||
/obj/item/mecha_parts/mecha_tracking/proc/recharge()
|
||||
recharging = 0
|
||||
|
||||
/obj/item/mecha_parts/mecha_tracking/proc/get_mecha_log()
|
||||
if(!ismecha(loc))
|
||||
|
||||
@@ -149,7 +149,14 @@
|
||||
use_power((cell.charge/3)/(severity*2))
|
||||
take_damage(30 / severity, BURN, "energy", 1)
|
||||
log_message("EMP detected", color="red")
|
||||
check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1)
|
||||
|
||||
if(istype(src, /obj/mecha/combat))
|
||||
mouse_pointer = 'icons/mecha/mecha_mouse-disable.dmi'
|
||||
occupant?.update_mouse_pointer()
|
||||
if(!equipment_disabled && occupant) //prevent spamming this message with back-to-back EMPs
|
||||
to_chat(occupant, "<span=danger>Error -- Connection to equipment control unit has been lost.</span>")
|
||||
addtimer(CALLBACK(src, /obj/mecha/proc/restore_equipment), 3 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
equipment_disabled = 1
|
||||
|
||||
/obj/mecha/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
if(exposed_temperature>max_temperature)
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
/obj/mecha/medical/Initialize()
|
||||
. = ..()
|
||||
trackers += new /obj/item/mecha_parts/mecha_tracking(src)
|
||||
|
||||
|
||||
/obj/mecha/medical/mechturn(direction)
|
||||
setDir(direction)
|
||||
playsound(src,'sound/mecha/mechmove01.ogg',40,1)
|
||||
@@ -18,4 +13,4 @@
|
||||
var/result = step_rand(src)
|
||||
if(result)
|
||||
playsound(src,'sound/mecha/mechstep.ogg',25,1)
|
||||
return result
|
||||
return result
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
/obj/mecha/working
|
||||
internal_damage_threshold = 60
|
||||
|
||||
/obj/mecha/working/Initialize()
|
||||
. = ..()
|
||||
trackers += new /obj/item/mecha_parts/mecha_tracking(src)
|
||||
|
||||
@@ -616,7 +616,7 @@ RLD
|
||||
name = "rapid-light-device (RLD)"
|
||||
desc = "A device used to rapidly provide lighting sources to an area. Reload with metal, plasteel, glass or compressed matter cartridges."
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "rld-5"
|
||||
icon_state = "rld"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
|
||||
matter = 500
|
||||
@@ -625,6 +625,7 @@ RLD
|
||||
var/mode = LIGHT_MODE
|
||||
actions_types = list(/datum/action/item_action/pick_color)
|
||||
ammo_sections = 5
|
||||
has_ammobar = TRUE
|
||||
|
||||
var/wallcost = 10
|
||||
var/floorcost = 15
|
||||
@@ -638,6 +639,10 @@ RLD
|
||||
var/color_choice = null
|
||||
|
||||
|
||||
/obj/item/construction/rld/Initialize()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/construction/rld/ui_action_click(mob/user, var/datum/action/A)
|
||||
if(istype(A, /datum/action/item_action/pick_color))
|
||||
color_choice = input(user,"","Choose Color",color_choice) as color
|
||||
@@ -645,9 +650,10 @@ RLD
|
||||
..()
|
||||
|
||||
/obj/item/construction/rld/update_icon()
|
||||
icon_state = "rld-[round((matter/max_matter) * 5, 1)]"
|
||||
..()
|
||||
|
||||
var/ratio = CEILING((matter / max_matter) * ammo_sections, 1)
|
||||
cut_overlays() //To prevent infinite stacking of overlays
|
||||
add_overlay("rld_light[ratio]")
|
||||
|
||||
/obj/item/construction/rld/attack_self(mob/user)
|
||||
..()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "rapid cable layer"
|
||||
desc = "A device used to rapidly deploy cables. It has screws on the side which can be removed to slide off the cables. Do not use without insulation!"
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "rcl-0"
|
||||
icon_state = "rcl-empty"
|
||||
item_state = "rcl-0"
|
||||
var/obj/structure/cable/last
|
||||
var/obj/item/stack/cable_coil/loaded
|
||||
@@ -92,22 +92,32 @@
|
||||
|
||||
/obj/item/twohanded/rcl/update_icon()
|
||||
if(!loaded)
|
||||
icon_state = "rcl-0"
|
||||
item_state = "rcl-0"
|
||||
icon_state = "rcl-empty"
|
||||
item_state = "rcl-empty"
|
||||
return
|
||||
cut_overlays()
|
||||
var/cable_amount = 0
|
||||
switch(loaded.amount)
|
||||
if(61 to INFINITY)
|
||||
icon_state = "rcl-30"
|
||||
item_state = "rcl"
|
||||
cable_amount = 3
|
||||
if(31 to 60)
|
||||
icon_state = "rcl-20"
|
||||
item_state = "rcl"
|
||||
cable_amount = 2
|
||||
if(1 to 30)
|
||||
icon_state = "rcl-10"
|
||||
item_state = "rcl"
|
||||
cable_amount = 1
|
||||
else
|
||||
icon_state = "rcl-0"
|
||||
item_state = "rcl-0"
|
||||
cable_amount = 0
|
||||
|
||||
var/mutable_appearance/cable_overlay = mutable_appearance(icon, "rcl-[cable_amount]")
|
||||
cable_overlay.color = GLOB.cable_colors[colors[current_color_index]]
|
||||
if(cable_amount >= 1)
|
||||
icon_state = "rcl"
|
||||
item_state = "rcl"
|
||||
add_overlay(cable_overlay)
|
||||
else
|
||||
icon_state = "rcl-empty"
|
||||
item_state = "rcl-0"
|
||||
add_overlay(cable_overlay)
|
||||
|
||||
|
||||
/obj/item/twohanded/rcl/proc/is_empty(mob/user, loud = 1)
|
||||
update_icon()
|
||||
@@ -302,6 +312,7 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
|
||||
to_chat(user, "Color changed to [cwname]!")
|
||||
if(loaded)
|
||||
loaded.item_color= colors[current_color_index]
|
||||
update_icon()
|
||||
if(wiring_gui_menu)
|
||||
wiringGuiUpdate(user)
|
||||
else if(istype(action, /datum/action/item_action/rcl_gui))
|
||||
@@ -318,13 +329,29 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
|
||||
|
||||
/obj/item/twohanded/rcl/ghetto/update_icon()
|
||||
if(!loaded)
|
||||
icon_state = "rclg-0"
|
||||
icon_state = "rclg-empty"
|
||||
item_state = "rclg-0"
|
||||
return
|
||||
cut_overlays()
|
||||
var/cable_amount = 0
|
||||
switch(loaded.amount)
|
||||
if(1 to INFINITY)
|
||||
icon_state = "rclg-1"
|
||||
item_state = "rcl"
|
||||
if(20 to INFINITY)
|
||||
cable_amount = 3
|
||||
if(10 to 19)
|
||||
cable_amount = 2
|
||||
if(1 to 9)
|
||||
cable_amount = 1
|
||||
else
|
||||
icon_state = "rclg-1"
|
||||
item_state = "rclg-1"
|
||||
cable_amount = 0
|
||||
|
||||
var/mutable_appearance/cable_overlay = mutable_appearance(icon, "rcl-[cable_amount]")
|
||||
cable_overlay.color = GLOB.cable_colors[colors[current_color_index]]
|
||||
if(cable_amount >= 1)
|
||||
icon_state = "rclg"
|
||||
item_state = "rclg"
|
||||
add_overlay(cable_overlay)
|
||||
else
|
||||
icon_state = "rclg-empty"
|
||||
item_state = "rclg-0"
|
||||
add_overlay(cable_overlay)
|
||||
|
||||
|
||||
@@ -174,6 +174,7 @@
|
||||
/obj/item/his_grace/proc/consume(mob/living/meal) //Here's your dinner, Mr. Grace.
|
||||
if(!meal)
|
||||
return
|
||||
var/victims = 0
|
||||
meal.visible_message("<span class='warning'>[src] swings open and devours [meal]!</span>", "<span class='his_grace big bold'>[src] consumes you!</span>")
|
||||
meal.adjustBruteLoss(200)
|
||||
playsound(meal, 'sound/misc/desceration-02.ogg', 75, 1)
|
||||
@@ -185,7 +186,10 @@
|
||||
bloodthirst = max(LAZYLEN(contents), 1) //Never fully sated, and His hunger will only grow.
|
||||
else
|
||||
bloodthirst = HIS_GRACE_CONSUME_OWNER
|
||||
if(LAZYLEN(contents) >= victims_needed)
|
||||
for(var/mob/living/C in contents)
|
||||
if(C.mind)
|
||||
victims++
|
||||
if(victims >= victims_needed)
|
||||
ascend()
|
||||
update_stats()
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
name = "inconspicious box"
|
||||
desc = "It's so normal that you didn't notice it before."
|
||||
icon_state = "agentbox"
|
||||
max_integrity = 1
|
||||
use_mob_movespeed = TRUE
|
||||
|
||||
/obj/structure/closet/cardboard/agent/proc/go_invisible()
|
||||
|
||||
@@ -653,6 +653,9 @@
|
||||
icon_state = "sheath"
|
||||
item_state = "sheath"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
var/list/fitting_swords = list(/obj/item/melee/sabre, /obj/item/melee/baton/stunsword)
|
||||
var/starting_sword = /obj/item/melee/sabre
|
||||
var/sword_overlay
|
||||
|
||||
/obj/item/storage/belt/sabre/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -660,35 +663,7 @@
|
||||
STR.max_items = 1
|
||||
STR.rustle_sound = FALSE
|
||||
STR.max_w_class = WEIGHT_CLASS_BULKY
|
||||
STR.can_hold = typecacheof(list(
|
||||
/obj/item/melee/sabre
|
||||
))
|
||||
|
||||
/obj/item/storage/belt/sabre/rapier
|
||||
name = "rapier sheath"
|
||||
desc = "A black, thin sheath that looks to house only a long thin blade. Feels like its made of metal."
|
||||
icon_state = "rsheath"
|
||||
item_state = "rsheath"
|
||||
force = 5
|
||||
throwforce = 15
|
||||
block_chance = 30
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
attack_verb = list("bashed", "slashes", "prods", "pokes")
|
||||
|
||||
/obj/item/storage/belt/sabre/rapier/ComponentInitialize()
|
||||
. = ..()
|
||||
GET_COMPONENT(STR, /datum/component/storage)
|
||||
STR.max_items = 1
|
||||
STR.rustle_sound = FALSE
|
||||
STR.max_w_class = WEIGHT_CLASS_BULKY
|
||||
STR.can_hold = typecacheof(list(
|
||||
/obj/item/melee/rapier
|
||||
))
|
||||
|
||||
/obj/item/storage/belt/sabre/rapier/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
if(attack_type == PROJECTILE_ATTACK)
|
||||
final_block_chance = 0 //To thin to block bullets
|
||||
return ..()
|
||||
STR.can_hold = typecacheof(fitting_swords)
|
||||
|
||||
/obj/item/storage/belt/sabre/examine(mob/user)
|
||||
..()
|
||||
@@ -709,18 +684,40 @@
|
||||
/obj/item/storage/belt/sabre/update_icon()
|
||||
icon_state = initial(icon_state)
|
||||
item_state = initial(item_state)
|
||||
sword_overlay = null
|
||||
if(contents.len)
|
||||
icon_state += "-sabre"
|
||||
item_state += "-sabre"
|
||||
var/obj/item/I = contents[1]
|
||||
sword_overlay = initial(I.icon_state)
|
||||
add_overlay("-[sword_overlay]")
|
||||
item_state += "-[I.icon_state]"
|
||||
if(loc && isliving(loc))
|
||||
var/mob/living/L = loc
|
||||
L.regenerate_icons()
|
||||
..()
|
||||
|
||||
/obj/item/storage/belt/sabre/worn_overlays(isinhands, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += mutable_appearance(icon_file, "-[sword_overlay]")
|
||||
|
||||
/obj/item/storage/belt/sabre/PopulateContents()
|
||||
new /obj/item/melee/sabre(src)
|
||||
new starting_sword(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/storage/belt/sabre/rapier/PopulateContents()
|
||||
new /obj/item/melee/rapier(src)
|
||||
update_icon()
|
||||
/obj/item/storage/belt/sabre/rapier
|
||||
name = "rapier sheath"
|
||||
desc = "A black, thin sheath that looks to house only a long thin blade. Feels like its made of metal."
|
||||
icon_state = "rsheath"
|
||||
item_state = "rsheath"
|
||||
force = 5
|
||||
throwforce = 15
|
||||
block_chance = 30
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
attack_verb = list("bashed", "slashes", "prods", "pokes")
|
||||
fitting_swords = list(/obj/item/melee/rapier)
|
||||
starting_sword = /obj/item/melee/rapier
|
||||
|
||||
/obj/item/storage/belt/sabre/rapier/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
if(attack_type == PROJECTILE_ATTACK)
|
||||
final_block_chance = 0 //To thin to block bullets
|
||||
return ..()
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
AddComponent(component_type)
|
||||
|
||||
/obj/item/storage/AllowDrop()
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/storage/contents_explosion(severity, target)
|
||||
for(var/atom/A in contents)
|
||||
|
||||
@@ -244,6 +244,7 @@
|
||||
lefthand_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi'
|
||||
item_flags = NEEDS_PERMIT | ABSTRACT | DROPDEL | NOBLUDGEON
|
||||
slot_flags = NONE
|
||||
flags_1 = NONE
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
ammo_type = /obj/item/ammo_casing/magic/tentacle
|
||||
|
||||
@@ -88,9 +88,9 @@ Shaft Miner
|
||||
gloves = /obj/item/clothing/gloves/color/black
|
||||
uniform = /obj/item/clothing/under/rank/miner/lavaland
|
||||
l_pocket = /obj/item/reagent_containers/hypospray/medipen/survival
|
||||
r_pocket = /obj/item/flashlight/seclite
|
||||
r_pocket = /obj/item/storage/bag/ore //causes issues if spawned in backpack
|
||||
backpack_contents = list(
|
||||
/obj/item/storage/bag/ore=1,\
|
||||
/obj/item/flashlight/seclite=1,\
|
||||
/obj/item/kitchen/knife/combat/survival=1,\
|
||||
/obj/item/mining_voucher=1,\
|
||||
/obj/item/suit_voucher=1,\
|
||||
@@ -116,7 +116,7 @@ Shaft Miner
|
||||
suit_store = /obj/item/tank/internals/oxygen
|
||||
internals_slot = SLOT_S_STORE
|
||||
backpack_contents = list(
|
||||
/obj/item/storage/bag/ore=1,
|
||||
/obj/item/flashlight/seclite=1,\
|
||||
/obj/item/kitchen/knife/combat/survival=1,
|
||||
/obj/item/mining_voucher=1,
|
||||
/obj/item/t_scanner/adv_mining_scanner/lesser=1,
|
||||
|
||||
@@ -899,12 +899,9 @@
|
||||
stop_pulling()
|
||||
|
||||
/mob/living/carbon/human/proc/is_shove_knockdown_blocked() //If you want to add more things that block shove knockdown, extend this
|
||||
var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, back, gloves, shoes, belt, s_store, glasses, ears, wear_id) //Everything but pockets. Pockets are l_store and r_store. (if pockets were allowed, putting something armored, gloves or hats for example, would double up on the armor)
|
||||
for(var/bp in body_parts)
|
||||
if(istype(bp, /obj/item/clothing))
|
||||
var/obj/item/clothing/C = bp
|
||||
if(C.blocks_shove_knockdown)
|
||||
return TRUE
|
||||
for(var/obj/item/clothing/C in get_equipped_items()) //doesn't include pockets
|
||||
if(C.blocks_shove_knockdown)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/mob/living/carbon/human/proc/clear_shove_slowdown()
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
damage_overlay_type = ""
|
||||
var/datum/action/innate/regenerate_limbs/regenerate_limbs
|
||||
var/datum/action/innate/slime_change/slime_change //CIT CHANGE
|
||||
liked_food = MEAT
|
||||
liked_food = TOXIC | MEAT
|
||||
toxic_food = null
|
||||
coldmod = 6 // = 3x cold damage
|
||||
heatmod = 0.5 // = 1/4x heat damage
|
||||
burnmod = 0.5 // = 1/2x generic burn damage
|
||||
|
||||
@@ -102,12 +102,9 @@
|
||||
updateUsrDialog()
|
||||
update_icon()
|
||||
else if(!condi && istype(I, /obj/item/storage/pill_bottle))
|
||||
if(bottle)
|
||||
to_chat(user, "<span class='warning'>A pill bottle is already loaded into [src]!</span>")
|
||||
return
|
||||
if(!user.transferItemToLoc(I, src))
|
||||
return
|
||||
bottle = I
|
||||
replace_pillbottle(user, I)
|
||||
to_chat(user, "<span class='notice'>You add [I] into the dispenser slot.</span>")
|
||||
updateUsrDialog()
|
||||
else
|
||||
@@ -131,12 +128,23 @@
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/chem_master/on_deconstruction()
|
||||
replace_beaker(usr)
|
||||
/obj/machinery/chem_master/proc/replace_pillbottle(mob/living/user, obj/item/storage/pill_bottle/new_bottle)
|
||||
if(bottle)
|
||||
bottle.forceMove(drop_location())
|
||||
adjust_item_drop_location(bottle)
|
||||
if(user && Adjacent(user) && !issiliconoradminghost(user))
|
||||
user.put_in_hands(beaker)
|
||||
else
|
||||
adjust_item_drop_location(bottle)
|
||||
if(new_bottle)
|
||||
bottle = new_bottle
|
||||
else
|
||||
bottle = null
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/chem_master/on_deconstruction()
|
||||
replace_beaker(usr)
|
||||
replace_pillbottle(usr)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/chem_master/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
|
||||
@@ -195,11 +203,8 @@
|
||||
. = TRUE
|
||||
|
||||
if("ejectp")
|
||||
if(bottle)
|
||||
bottle.forceMove(drop_location())
|
||||
adjust_item_drop_location(bottle)
|
||||
bottle = null
|
||||
. = TRUE
|
||||
replace_pillbottle(usr)
|
||||
. = TRUE
|
||||
|
||||
if("transferToBuffer")
|
||||
if(beaker)
|
||||
@@ -247,14 +252,14 @@
|
||||
if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr)))
|
||||
return
|
||||
var/obj/item/reagent_containers/pill/P
|
||||
var/target_loc = drop_location()
|
||||
var/target_loc = bottle ? bottle : drop_location()
|
||||
var/drop_threshold = INFINITY
|
||||
if(bottle)
|
||||
GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle)
|
||||
if(STRB)
|
||||
drop_threshold = STRB.max_items - bottle.contents.len
|
||||
|
||||
for(var/i = 0; i < amount; i++)
|
||||
for(var/i in 1 to amount)
|
||||
if(i < drop_threshold)
|
||||
P = new(target_loc)
|
||||
else
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
/obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if((!proximity) || !spillable || !check_allowed_items(target,target_self=1))
|
||||
if((!proximity) || !check_allowed_items(target,target_self=1))
|
||||
return
|
||||
|
||||
if(target.is_refillable()) //Something like a glass. Player probably wants to transfer TO it.
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
/obj/item/reagent_containers/rag/pre_altattackby(mob/living/M, mob/living/user, params)
|
||||
if(istype(M) && user.a_intent == INTENT_HELP)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
if(user.on_fire)
|
||||
if(M.on_fire)
|
||||
user.visible_message("<span class='warning'>\The [user] uses \the [src] to pat out [M == user ? "[user.p_their()]" : "\the [M]'s"] flames!</span>")
|
||||
if(hitsound)
|
||||
playsound(M, hitsound, 25, 1)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
|
||||
item_flags = ABSTRACT | DROPDEL
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
slot_flags = NONE
|
||||
force = 5
|
||||
max_charges = 1 //Recharging costs blood.
|
||||
recharge_rate = 1
|
||||
@@ -46,4 +47,4 @@
|
||||
/obj/item/projectile/magic/bloodchill/on_hit(mob/living/target)
|
||||
. = ..()
|
||||
if(isliving(target))
|
||||
target.apply_status_effect(/datum/status_effect/bloodchill)
|
||||
target.apply_status_effect(/datum/status_effect/bloodchill)
|
||||
|
||||
@@ -497,6 +497,6 @@
|
||||
|
||||
/obj/item/organ/lungs/slime/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
if (breath.gases[/datum/gas/plasma])
|
||||
if (breath && breath.gases[/datum/gas/plasma])
|
||||
var/plasma_pp = breath.get_breath_partial_pressure(breath.gases[/datum/gas/plasma])
|
||||
owner.blood_volume += (0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you.
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
author: "Sishen1542, original by @zxaber"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Utility mechs no longer automatically get beacons."
|
||||
- balance: "Tracking beacons no longer delete themselves when EMPing a mech, and instead have a ten-second cooldown in-between EMPs. They also now do heavy EMP damage rather than light."
|
||||
- balance: "Mechs that take EMP damage lose the use of their weapons and equipment temporarily. Movement and abilities are not effected."
|
||||
- balance: "Mechs taking EMP damage no longer roll for a random malfunction."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- admin: "Bugtesting zone upgrades for easy bug/game testing"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Ghommie"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixes Pubby's disposal conveyor belts and lack of a second lawyer spawner."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Not my work not my credit"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "CameronWoof"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Altered the icons for inventory backplates. Sleek! Stylish! New!"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "suit storage nulling anti magic item protection"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "rebalanced steal goals restrictions"
|
||||
- spellcheck: "fixed a few misleading goals"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "ports a fix"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Poojawa"
|
||||
delete-after: True
|
||||
changes:
|
||||
- imageadd: "RCL now show what color is currently in use"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Linzolle"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "slime people now enjoy eating toxic food and it will not disgust them"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "EgoSumStultus"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixed blood chiller's inhand"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Ghommie"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "combat pushes will now properly stop targets from using firearms, and will disarm the firearm if performed a second time, and also slow down people by 15%, and won't push people on tables blocked by shutters or other dense object anymore."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Yakumo Chen"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Made stealth implant boxes flimsier"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Ghommie"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixes CHECK_BITFIELD macro."
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Ghommie"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixes hypovials being unable to transfer out liquids or be refilled by large dispensers like water tanks."
|
||||
- bugfix: "Fixes chem-masters machineries not dispensing newly made pills inside loaded in pill bottles."
|
||||
@@ -0,0 +1,6 @@
|
||||
author: "Ghommie (original PR by Skoglol)"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Mining bags will no longer drop ore into backpack."
|
||||
- bugfix: "Mining bags in backpack no longer interferes with other mining bags."
|
||||
- bugfix: "Fixes some storage size circumventions."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Ghommie"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Stunswords now fit in the captain's sabre sheat."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Linzolle"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "hos trenchcloak now properly has a sprite on digi characters"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "ports a fix"
|
||||
|
After Width: | Height: | Size: 580 B |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 22 KiB |
@@ -80,10 +80,21 @@
|
||||
else
|
||||
target.Move(target_shove_turf, shove_dir)
|
||||
if(get_turf(target) == target_oldturf)
|
||||
target_table = locate(/obj/structure/table) in target_shove_turf.contents
|
||||
shove_blocked = TRUE
|
||||
var/thoushallnotpass = FALSE
|
||||
for(var/obj/O in target_shove_turf)
|
||||
if(O.density)
|
||||
shove_blocked = TRUE
|
||||
if(istype(O, /obj/structure/table))
|
||||
target_table = O
|
||||
else
|
||||
thoushallnotpass = TRUE
|
||||
if(thoushallnotpass)
|
||||
target_table = null
|
||||
|
||||
if(shove_blocked && !target.is_shove_knockdown_blocked())
|
||||
if(target.is_shove_knockdown_blocked())
|
||||
return
|
||||
|
||||
if(shove_blocked)
|
||||
var/directional_blocked = FALSE
|
||||
if(shove_dir in GLOB.cardinals) //Directional checks to make sure that we're not shoving through a windoor or something like that
|
||||
var/target_turf = get_turf(target)
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
say_mod = "says"
|
||||
hair_color = "mutcolor"
|
||||
hair_alpha = 160 //a notch brighter so it blends better.
|
||||
liked_food = MEAT
|
||||
coldmod = 3
|
||||
heatmod = 1
|
||||
burnmod = 1
|
||||
|
||||
|
Before Width: | Height: | Size: 366 KiB After Width: | Height: | Size: 367 KiB |