Merge branch 'pr/21'

This commit is contained in:
Fermi
2019-07-29 22:57:40 +01:00
56 changed files with 930 additions and 367 deletions
+94 -94
View File
@@ -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
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -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))
+4
View File
@@ -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.
+7 -7
View File
@@ -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)
+2 -2
View File
@@ -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)
+10 -3
View File
@@ -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
+2 -2
View File
@@ -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)
+12 -4
View File
@@ -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))
+8 -1
View File
@@ -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 -6
View File
@@ -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
-3
View File
@@ -1,6 +1,3 @@
/obj/mecha/working
internal_damage_threshold = 60
/obj/mecha/working/Initialize()
. = ..()
trackers += new /obj/item/mecha_parts/mecha_tracking(src)
+9 -3
View File
@@ -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)
..()
+44 -17
View File
@@ -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)
+5 -1
View File
@@ -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()
+32 -35
View File
@@ -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 ..()
+1 -1
View File
@@ -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
+3 -3
View File
@@ -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)
+1 -1
View File
@@ -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"
Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

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
Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 KiB

After

Width:  |  Height:  |  Size: 367 KiB