diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 954e741bdd6..e72fbf04aaa 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -118,7 +118,6 @@
trigger_aiming(TARGET_CAN_CLICK)
return 1
- // VOREStation Addition Start: inbelly item interaction
if(!currently_restrained && isbelly(loc) && (loc == A.loc))
if(W)
var/resolved = W.resolve_attackby(A,src)
@@ -129,7 +128,6 @@
setClickCooldown(get_attack_speed())
UnarmedAttack(A, 1)
return
- // VOREStation Addition End
if(!isturf(loc)) // This is going to stop you from telekinesing from inside a closet, but I don't shed many tears for that
return
diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm
index 6718eb171bc..c72af9e2328 100644
--- a/code/game/objects/items/weapons/tools/weldingtool.dm
+++ b/code/game/objects/items/weapons/tools/weldingtool.dm
@@ -38,6 +38,7 @@
var/eye_safety_modifier = 0 // Increasing this will make less eye protection needed to stop eye damage. IE at 1, sunglasses will fully protect.
var/burned_fuel_for = 0 // Keeps track of how long the welder's been on, used to gradually empty the welder if left one, without RNG.
var/always_process = FALSE // If true, keeps the welder on the process list even if it's off. Used for when it needs to regenerate fuel.
+ var/no_passive_burn = FALSE // If true, the welder will not passively burn fuel. Used for things like electric welders.
toolspeed = 1
drop_sound = 'sound/items/drop/weldingtool.ogg'
pickup_sound = 'sound/items/pickup/weldingtool.ogg'
@@ -127,9 +128,10 @@
/obj/item/weldingtool/process()
if(welding)
- ++burned_fuel_for
- if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL)
- remove_fuel(1)
+ if(!no_passive_burn)
+ ++burned_fuel_for
+ if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL)
+ remove_fuel(1)
if(get_fuel() < 1)
setWelding(0)
else //Only start fires when its on and has enough fuel to actually keep working
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index a09bd7c779d..7cf70b9996a 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -514,6 +514,22 @@
to_chat(src, span_filter_notice("You harmlessly spark."))
spark_system.start()
+///Essentially, a Activate Held Object mode for borgs that acts just like pressing Z in hotkey mode but also works well with multibelts.
+/mob/living/silicon/robot/verb/alt_mode()
+ set name = "Robot Activate Held Object"
+ set category = "Object"
+ set src = usr
+
+ if(!checkClickCooldown())
+ return
+
+ setClickCooldown(1)
+
+ var/obj/item/W = module_active
+ if(module_active)
+ W.attack_self(src)
+ return
+
/mob/living/silicon/robot/verb/toggle_grabbability() // Grisp the preyborgs with consent (and allows for your borg to still be pet).
set category = "Abilities.Silicon"
set name = "Toggle Pickup"
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
index 729cc4c980c..87d5f0ca1e4 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
@@ -200,15 +200,6 @@ var/global/list/robot_modules = list(
CHANNEL_EXPLORATION = 1
)
-/obj/item/robot_module/robot/Initialize(mapload)
- . = ..()
-
- if(!isrobot(loc))
- return
- var/mob/living/silicon/robot/R = loc
- if(R.sprite_datum)
- R.sprite_datum.do_equipment_glamour(src)
-
// Cyborgs (non-drones), default loadout. This will be given to every module.
/obj/item/robot_module/robot/create_equipment(var/mob/living/silicon/robot/robot)
..()
@@ -218,6 +209,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/flash/robot(src)
src.modules += new /obj/item/extinguisher(src)
src.modules += new /obj/item/tool/crowbar/cyborg(src)
+ src.modules += new /obj/item/melee/robotic/jaws/small(src)
src.modules += new /obj/item/gripper/scene(src)
/obj/item/robot_module/robot/standard
diff --git a/code/modules/mob/living/silicon/robot/robot_simple_items.dm b/code/modules/mob/living/silicon/robot/robot_simple_items.dm
index 21005ee2969..9917d5868ba 100644
--- a/code/modules/mob/living/silicon/robot/robot_simple_items.dm
+++ b/code/modules/mob/living/silicon/robot/robot_simple_items.dm
@@ -1,13 +1,15 @@
// Robot toolbelts, such as screwdrivers and the like. All contained in one neat little package.
-// The code for actually 'how these use the item inside of them instead of the item itself' can be found in _onclick/cyborg.dm (yes, click code, gross, I know.)
+// The code for actually 'how these use the item inside of them instead of the item itself' can be found in code\modules\mob\living\silicon\robot\inventory.dm (yes, click code, gross, I know.)
/*
* Engineering Tools
*/
/obj/item/robotic_multibelt
name = "Robotic multitool"
- desc = "An integrated toolbelt. Use CTRL-CLICK to interact with the selected item!"
-
+ desc = "An integrated toolbelt that holds various tools."
+ description_info = "Pressing Z will interact with the item the multibelt has selected.
\
+ Pressing Ctrl+Z will open the radial menu to allow item swapping!
\
+ Clicking on the selected object will also open the radial menu."
icon = 'icons/obj/tools_robot.dmi'
icon_state = "toolkit_engiborg"
w_class = ITEMSIZE_HUGE
@@ -139,6 +141,15 @@
force = 10
toolspeed = 0.5
+/obj/item/tool/crowbar/cyborg/jaws
+ name = "puppy jaws"
+ desc = "The jaws of a small dog. Still strong enough to pry things."
+ icon = 'icons/mob/dogborg_vr.dmi'
+ icon_state = "smalljaws_textless"
+ hitsound = 'sound/weapons/bite.ogg'
+ attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
+ force = 15
+
/obj/item/weldingtool/electric/mounted/cyborg
name = "integrated electric welding tool"
desc = "An advanced welder designed to be used in robotic systems."
@@ -147,6 +158,7 @@
usesound = 'sound/items/Welder2.ogg'
toolspeed = 0.5
welding = TRUE
+ no_passive_burn = TRUE
/obj/item/tool/wirecutters/cyborg
name = "wirecutters"
@@ -180,12 +192,15 @@
uses_charge = 1
charge_costs = list(1)
-/obj/item/stack/cable_coil/cyborg/verb/set_colour()
+/obj/item/stack/cable_coil/cyborg/attack_self(mob/user)
+ set_colour(user)
+
+/obj/item/stack/cable_coil/cyborg/proc/set_colour(mob/user)
set name = "Change Colour"
set category = "Object"
- var/selected_type = tgui_input_list(usr, "Pick new colour.", "Cable Colour", GLOB.possible_cable_coil_colours)
- set_cable_color(selected_type, usr)
+ var/selected_type = tgui_input_list(user, "Pick new colour.", "Cable Colour", GLOB.possible_cable_coil_colours)
+ set_cable_color(selected_type, user)
/*
* Surgical Tools
@@ -442,6 +457,16 @@
. = ..()
+///Allows the material fabricator to pick up materials if they hit an appropriate stack.
+/obj/item/robotic_multibelt/materials/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ if(istype(target, /obj/item/stack)) //We are targeting a stack.
+ if(!selected_item)
+ to_chat(user, span_warning("You need to select a material first!"))
+ return
+ var/obj/item/stack/target_stack = target
+ if(istype(selected_item, /obj/item/stack))
+ target_stack.attackby(selected_item, user)
+
/*
* Grippers
*/
@@ -490,7 +515,7 @@
var/obj/new_pocket = new /obj/item/storage/internal/gripper(src)
new_pocket.name = "Pocket [i]"
pockets += new_pocket
- current_pocket = pick(pockets) //Pick a random pocket!
+ current_pocket = peek(pockets)
/obj/item/gripper/Destroy()
current_pocket = null
@@ -531,7 +556,13 @@
continue
var/obj/item/pocket_content = pocket_to_check.contents[1]
pockets_by_name["[pocket_to_check.name]" + "[pocket_content.name]"] = pocket_content
- photo_images["[pocket_to_check.name]" + "[pocket_content.name]"] = image(icon = pocket_content.icon, icon_state = pocket_content.icon_state)
+ var/image/pocket_image = image(icon = pocket_content.icon, icon_state = pocket_content.icon_state)
+ if(pocket_content.color)
+ pocket_image.color = pocket_content.color
+ if(pocket_content.overlays)
+ for(var/overlay in pocket_content.overlays)
+ pocket_image.overlays += overlay
+ photo_images["[pocket_to_check.name]" + "[pocket_content.name]"] = pocket_image
/obj/item/gripper/attack_self(mob/user as mob)
generate_icons()
@@ -587,6 +618,9 @@
drop_item()
/obj/item/gripper/proc/drop_item()
+ if(!wrapped)
+ to_chat(src, span_warning("You have nothing to drop!"))
+ return
if((wrapped == current_pocket && !istype(wrapped.loc, /obj/item/storage/internal/gripper))) //We have wrapped selected as our current_pocket AND wrapped is not in a gripper storage
wrapped = null
current_pocket = pick(pockets)
@@ -668,6 +702,10 @@
else
wrapped = null
return
+ if((QDELETED(wrapped) || (wrapped.loc != current_pocket))) //We put our wrapped thing INTO something!
+ wrapped = null
+ current_pocket = pick(pockets)
+ return
else if(current_pocket_full) //Pocket is full. No grabbing more things.
to_chat(user, "Your gripper is currently full! You can't pick anything else up!")
return
@@ -732,7 +770,6 @@
user.visible_message(span_danger("[user] removes the power cell from [A]!"), "You remove the power cell.")
-
//Different types of grippers!
/obj/item/gripper/engineering
diff --git a/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm b/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm
index 3393a0d7cee..439740eff12 100644
--- a/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm
@@ -29,6 +29,7 @@
var/pixel_x = 0
var/icon_x = 32
var/icon_y = 32
+ var/dogborg_sprites = FALSE //If we have dogborg sprites or not. Used for puppyjaws.
var/is_whitelisted = FALSE
var/whitelist_ckey
@@ -205,6 +206,23 @@
return
/datum/robot_sprite/proc/do_equipment_glamour(var/obj/item/robot_module/module)
+ if(!dogborg_sprites)
+ var/obj/item/melee/robotic/jaws/small/small_jaws = locate() in module.modules
+ if(small_jaws)
+ small_jaws.name = "self defense knife"
+ small_jaws.icon = 'icons/obj/tools_robot.dmi'
+ small_jaws.icon_state = "knife_cyborg"
+ small_jaws.hitsound = 'sound/weapons/slash.ogg'
+ small_jaws.desc = "A sharp knife used for defending crew against hostile threats. Not effective for non-defense use. If emagged, can be upgraded to a claymore."
+ small_jaws.attack_verb = list("sliced", "slashed", "jabbed", "stabbed")
+ var/obj/item/melee/robotic/jaws/big/big_jaws = locate() in module.modules
+ if(big_jaws)
+ big_jaws.name = "claymore"
+ big_jaws.desc = "Now this is a knife!"
+ big_jaws.icon = 'icons/obj/tools_robot.dmi'
+ big_jaws.icon_state = "claymore_cyborg"
+ big_jaws.hitsound = 'sound/weapons/slice.ogg'
+ big_jaws.attack_verb = list("sliced", "slashed", "jabbed", "stabbed")
return
// Dogborgs and not-dogborgs that use dogborg stuff. Oh no.
@@ -221,20 +239,7 @@
pixel_x = -16
icon_x = 64
icon_y = 32
-
-/datum/robot_sprite/dogborg/do_equipment_glamour(var/obj/item/robot_module/module)
- if(!has_custom_equipment_sprites)
- return
-
- var/obj/item/tool/crowbar/cyborg/C = locate() in module.modules
- if(C)
- C.name = "puppy jaws"
- C.desc = "The jaws of a small dog. Still strong enough to pry things."
- C.icon = 'icons/mob/dogborg_vr.dmi'
- C.icon_state = "smalljaws_textless"
- C.hitsound = 'sound/weapons/bite.ogg'
- C.attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
-
+ dogborg_sprites = TRUE
/datum/robot_sprite/dogborg/tall
has_dead_sprite_overlay = FALSE
@@ -242,7 +247,7 @@
vis_height = 64
icon_x = 64
icon_y = 64
-
+ dogborg_sprites = FALSE
// Default module sprite
diff --git a/code/modules/mob/living/silicon/robot/sprites/combat.dm b/code/modules/mob/living/silicon/robot/sprites/combat.dm
index 97592ca5db4..70537ad0e91 100644
--- a/code/modules/mob/living/silicon/robot/sprites/combat.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/combat.dm
@@ -89,11 +89,11 @@
has_custom_equipment_sprites = TRUE
/datum/robot_sprite/dogborg/tall/combat/do_equipment_glamour(var/obj/item/robot_module/module)
+ ..()
+
if(!has_custom_equipment_sprites)
return
- ..()
-
var/obj/item/melee/robotic/blade/dagger/CBB = locate() in module.modules
if(CBB)
CBB.name = "sword tail"
@@ -202,11 +202,11 @@
has_eye_sprites = FALSE
/datum/robot_sprite/dogborg/wide/combat/blade/do_equipment_glamour(var/obj/item/robot_module/module)
+ ..()
+
if(!has_custom_equipment_sprites)
return
- ..()
-
var/obj/item/melee/robotic/blade/CBB = locate() in module.modules
if(CBB)
CBB.name = "combat saw"
diff --git a/code/modules/mob/living/silicon/robot/sprites/event.dm b/code/modules/mob/living/silicon/robot/sprites/event.dm
index 9e5755b26d4..b4b495f07da 100644
--- a/code/modules/mob/living/silicon/robot/sprites/event.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/event.dm
@@ -20,11 +20,11 @@
sprite_icon = 'icons/mob/robot/lost_wide.dmi'
/datum/robot_sprite/dogborg/lost/do_equipment_glamour(var/obj/item/robot_module/module)
+ ..()
+
if(!has_custom_equipment_sprites)
return
- ..()
-
var/obj/item/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
diff --git a/code/modules/mob/living/silicon/robot/sprites/fluff.dm b/code/modules/mob/living/silicon/robot/sprites/fluff.dm
index 9f3093913eb..54523f6e38c 100644
--- a/code/modules/mob/living/silicon/robot/sprites/fluff.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/fluff.dm
@@ -138,17 +138,4 @@
module_type = list("Standard", "Engineering", "Surgeon", "Crisis", "Miner", "Janitor", "Service", "Clerical", "Security", "Research")
sprite_flags = ROBOT_HAS_SHIELD_SPRITE | ROBOT_HAS_DISABLER_SPRITE | ROBOT_HAS_TASER_SPRITE | ROBOT_HAS_LASER_SPRITE
-/datum/robot_sprite/fluff/catborg/do_equipment_glamour(var/obj/item/robot_module/module)
- if(!has_custom_equipment_sprites)
- return
-
- var/obj/item/tool/crowbar/cyborg/C = locate() in module.modules
- if(C)
- C.name = "puppy jaws"
- C.desc = "The jaws of a small dog. Still strong enough to pry things."
- C.icon = 'icons/mob/dogborg_vr.dmi'
- C.icon_state = "smalljaws_textless"
- C.hitsound = 'sound/weapons/bite.ogg'
- C.attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
-
#undef CUSTOM_BORGSPRITE
diff --git a/code/modules/mob/living/silicon/robot/sprites/medical.dm b/code/modules/mob/living/silicon/robot/sprites/medical.dm
index 10f7a12efd7..54ccb7de311 100644
--- a/code/modules/mob/living/silicon/robot/sprites/medical.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/medical.dm
@@ -236,11 +236,11 @@
sprite_icon = 'icons/mob/robot/surgical_wide.dmi'
/datum/robot_sprite/dogborg/surgical/do_equipment_glamour(var/obj/item/robot_module/module)
+ ..()
+
if(!has_custom_equipment_sprites)
return
- ..()
-
var/obj/item/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
@@ -275,11 +275,11 @@
sprite_icon = 'icons/mob/robot/surgical_large.dmi'
/datum/robot_sprite/dogborg/tall/surgical/do_equipment_glamour(var/obj/item/robot_module/module)
+ ..()
+
if(!has_custom_equipment_sprites)
return
- ..()
-
var/obj/item/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
@@ -360,11 +360,11 @@
return ..()
*/
/datum/robot_sprite/dogborg/crisis/do_equipment_glamour(var/obj/item/robot_module/module)
+ ..()
+
if(!has_custom_equipment_sprites)
return
- ..()
-
var/obj/item/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
@@ -413,11 +413,10 @@
sprite_icon = 'icons/mob/robot/crisis_large.dmi'
/datum/robot_sprite/dogborg/tall/crisis/do_equipment_glamour(var/obj/item/robot_module/module)
- if(!has_custom_equipment_sprites)
- return
-
..()
+ if(!has_custom_equipment_sprites)
+ return
var/obj/item/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
diff --git a/code/modules/mob/living/silicon/robot/sprites/science.dm b/code/modules/mob/living/silicon/robot/sprites/science.dm
index 4503fa454a1..2d1b47e72f6 100644
--- a/code/modules/mob/living/silicon/robot/sprites/science.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/science.dm
@@ -104,11 +104,11 @@
sprite_icon = 'icons/mob/robot/science_wide.dmi'
/datum/robot_sprite/dogborg/science/do_equipment_glamour(var/obj/item/robot_module/module)
+ ..()
+
if(!has_custom_equipment_sprites)
return
- ..()
-
var/obj/item/shockpaddles/robot/jumper/J = locate() in module.modules
if(J)
J.name = "jumper paws"
@@ -154,11 +154,11 @@
sprite_icon = 'icons/mob/robot/science_large.dmi'
/datum/robot_sprite/dogborg/tall/science/do_equipment_glamour(var/obj/item/robot_module/module)
+ ..()
+
if(!has_custom_equipment_sprites)
return
- ..()
-
var/obj/item/shockpaddles/robot/jumper/J = locate() in module.modules
if(J)
J.name = "jumper paws"
diff --git a/code/modules/mob/living/silicon/robot/sprites/syndicate.dm b/code/modules/mob/living/silicon/robot/sprites/syndicate.dm
index 7efca831d1b..c188fe73edc 100644
--- a/code/modules/mob/living/silicon/robot/sprites/syndicate.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/syndicate.dm
@@ -228,11 +228,11 @@
sprite_hud_icon_state = "malf"
/datum/robot_sprite/dogborg/combat_medic/do_equipment_glamour(var/obj/item/robot_module/module)
+ ..()
+
if(!has_custom_equipment_sprites)
return
- ..()
-
var/obj/item/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 989b4f39a24..1c4f0c4078a 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -5,7 +5,7 @@
// status values shared between lighting fixtures and items
#define LIGHT_BULB_TEMPERATURE 400 //K - used value for a 60W bulb
-#define LIGHTING_POWER_FACTOR 2 //5W per luminosity * range //VOREStation Edit: why the fuck are lights eating so much power, 2W per thing
+#define LIGHTING_POWER_FACTOR 2 //2W per luminosity * range
#define LIGHT_EMERGENCY_POWER_USE 0.2 //How much power emergency lights will consume per tick
var/global/list/light_type_cache = list()
@@ -200,7 +200,7 @@ var/global/list/light_type_cache = list()
// the standard tube light fixture
/obj/machinery/light
name = "light fixture"
- icon = 'icons/obj/lighting_vr.dmi' //VOREStation Edit
+ icon = 'icons/obj/lighting_vr.dmi'
var/base_state = "tube" // base description and icon_state
icon_state = "tube1"
desc = "A lighting fixture."
@@ -224,11 +224,9 @@ var/global/list/light_type_cache = list()
// this is used to calc the probability the light burns out
var/rigged = 0 // true if rigged to explode
- //VOREStation Edit Start
var/needsound = FALSE // Flag to prevent playing turn-on sound multiple times, and from playing at roundstart
var/shows_alerts = TRUE // Flag for if this fixture should show alerts. Make sure icon states exist!
var/current_alert = null // Which alert are we showing right now?
- //VOREStation Edit End
var/auto_flicker = FALSE // If true, will constantly flicker, so long as someone is around to see it (otherwise its a waste of CPU).
@@ -265,7 +263,7 @@ var/global/list/light_type_cache = list()
desc = "A small lighting fixture."
light_type = /obj/item/light/bulb
construct_type = /obj/machinery/light_construct/small
- shows_alerts = FALSE //VOREStation Edit
+ shows_alerts = FALSE
overlay_color = LIGHT_COLOR_INCANDESCENT_BULB
/obj/machinery/light/small/flicker
@@ -278,7 +276,7 @@ var/global/list/light_type_cache = list()
start_with_cell = FALSE
/obj/machinery/light/flamp
- icon = 'icons/obj/lighting.dmi' //VOREStation Edit
+ icon = 'icons/obj/lighting.dmi'
icon_state = "flamp1"
base_state = "flamp"
plane = OBJ_PLANE
@@ -286,7 +284,7 @@ var/global/list/light_type_cache = list()
desc = "A floor lamp."
light_type = /obj/item/light/bulb/large
construct_type = /obj/machinery/light_construct/flamp
- shows_alerts = FALSE //VOREStation Edit
+ shows_alerts = FALSE
var/lamp_shade = 1
overlay_color = LIGHT_COLOR_INCANDESCENT_BULB
@@ -313,15 +311,13 @@ var/global/list/light_type_cache = list()
/obj/machinery/light/spot
name = "spotlight"
light_type = /obj/item/light/tube/large
- shows_alerts = FALSE //VOREStation Edit
+ shows_alerts = FALSE
/obj/machinery/light/spot/flicker
auto_flicker = TRUE
-//VOREStation Add - Shadeless!
/obj/machinery/light/flamp/noshade
lamp_shade = 0
-//VOREStation Add End
// create a new lighting fixture
/obj/machinery/light/Initialize(mapload, obj/machinery/light_construct/construct = null)
@@ -357,7 +353,6 @@ var/global/list/light_type_cache = list()
switch(status) // set icon_states
if(LIGHT_OK)
- //VOREStation Edit Start
if(shows_alerts && current_alert && on)
icon_state = "[base_state]-alert-[current_alert]"
add_light_overlay(FALSE, icon_state)
@@ -367,19 +362,18 @@ var/global/list/light_type_cache = list()
add_light_overlay()
else
remove_light_overlay()
- //VOREStation Edit End
if(LIGHT_EMPTY)
icon_state = "[base_state]-empty"
on = 0
- remove_light_overlay() //VOREStation add
+ remove_light_overlay()
if(LIGHT_BURNED)
icon_state = "[base_state]-burned"
on = 0
- remove_light_overlay() //VOREStation add
+ remove_light_overlay()
if(LIGHT_BROKEN)
icon_state = "[base_state]-broken"
on = 0
- remove_light_overlay() //VOREStation add
+ remove_light_overlay()
return
/obj/machinery/light/flamp/update_icon()
@@ -388,27 +382,26 @@ var/global/list/light_type_cache = list()
switch(status) // set icon_states
if(LIGHT_OK)
icon_state = "[base_state][on]"
- if(on) //VOREStation add
- add_light_overlay() //VOREStation add
- else //VOREStation add
- remove_light_overlay() //VOREStation add
+ if(on)
+ add_light_overlay()
+ else
+ remove_light_overlay()
if(LIGHT_EMPTY)
on = 0
icon_state = "[base_state][on]"
- remove_light_overlay() //VOREStation add
+ remove_light_overlay()
if(LIGHT_BURNED)
on = 0
icon_state = "[base_state][on]"
- remove_light_overlay() //VOREStation add
+ remove_light_overlay()
if(LIGHT_BROKEN)
on = 0
icon_state = "[base_state][on]"
- remove_light_overlay() //VOREStation add
+ remove_light_overlay()
return
else
base_state = "flamp"
..()
-//VOREStation Edit Start
/obj/machinery/light/proc/set_alert_atmos()
if(!shows_alerts)
return
@@ -439,17 +432,14 @@ var/global/list/light_type_cache = list()
update()
-//VOREstation Edit End
// update lighting
/obj/machinery/light/proc/update(var/trigger = 1)
update_icon()
- //VOREStation Edit Start
if(!on)
needsound = TRUE // Play sound next time we turn on
else if(needsound)
playsound(src, 'sound/effects/lighton.ogg', 65, 1)
needsound = FALSE // Don't play sound again until we've been turned off
- //VOREStation Edit End
if(on)
var/correct_range = nightshift_enabled ? brightness_range_ns : brightness_range
@@ -489,7 +479,7 @@ var/global/list/light_type_cache = list()
else
update_use_power(USE_POWER_IDLE)
set_light(0)
- update_light() //VOREStation Edit - Makes lights update when their color is changed.
+ update_light()
update_active_power_usage((light_range * light_power) * LIGHTING_POWER_FACTOR)
/obj/machinery/light/proc/nightshift_mode(var/state)
@@ -623,9 +613,11 @@ var/global/list/light_type_cache = list()
//If xenos decide they want to smash a light bulb with a toolbox, who am I to stop them? /N
else if(status != LIGHT_BROKEN && status != LIGHT_EMPTY)
+ if(istype(W, /obj/item/multitool)) //Allow us to swap the light color.
+ installed_light.attackby(W, user)
+ return
-
- if(prob(1+W.force * 5))
+ else if(prob(1+W.force * 5))
to_chat(user, "You hit the light, and it smashes!")
for(var/mob/M in viewers(src))
@@ -978,12 +970,10 @@ var/global/list/light_type_cache = list()
drop_sound = 'sound/items/drop/glass.ogg'
pickup_sound = 'sound/items/pickup/glass.ogg'
- //VOREStation Edit Start - Modifiable Lighting
var/init_brightness_range = 8
var/init_brightness_power = 1
var/init_nightshift_range = 8
var/init_nightshift_power = 0.45
- //VOREStation Edit End - Modifiable Lighting
/obj/item/light/tube
name = "light tube"
@@ -1095,8 +1085,9 @@ var/global/list/light_type_cache = list()
// if a syringe, can inject phoron to make it explode
/obj/item/light/attackby(var/obj/item/I, var/mob/user)
..()
+ if(isrobot(user))
+ I = user.get_active_hand()
- //VOREStation Edit Start - Multitool Lighting!
if(istype(I,/obj/item/multitool))
var/list/menu_list = list(
"Normal Range",
@@ -1143,6 +1134,11 @@ var/global/list/light_type_cache = list()
else //Should never happen.
return
+ if(istype(src.loc, /obj/machinery/light))
+ var/obj/machinery/light/L = src.loc
+ L.update_from_bulb(src)
+ L.update()
+ L.update() //Yes it has to double update...Don't ask me why. I think it's stupid.
else if(istype(I, /obj/item/reagent_containers/syringe))
var/obj/item/reagent_containers/syringe/S = I
diff --git a/code/modules/projectiles/guns/energy/cyborg.dm b/code/modules/projectiles/guns/energy/cyborg.dm
index 79ce718755b..1fd61738ecb 100644
--- a/code/modules/projectiles/guns/energy/cyborg.dm
+++ b/code/modules/projectiles/guns/energy/cyborg.dm
@@ -169,7 +169,7 @@
name = "puppy jaws"
icon_state = "smalljaws"
desc = "The jaws of a small dog."
- force = 10
+ force = 15
defend_chance = 5
attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
var/emagged = 0
@@ -177,22 +177,38 @@
var/mob/living/silicon/robot/R = user
if(R.emagged || R.emag_items)
emagged = !emagged
- if(emagged)
- name = "combat jaws"
- icon_state = "jaws"
- desc = "The jaws of the law."
- force = 25
- armor_penetration = 25
- defend_chance = 15
- attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
+ if(R.sprite_datum.dogborg_sprites)
+ if(emagged)
+ name = "combat jaws"
+ icon_state = "jaws"
+ desc = "The jaws of the law."
+ force = 30
+ armor_penetration = 25
+ defend_chance = 15
+ attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
+ else
+ name = "puppy jaws"
+ icon_state = "smalljaws"
+ desc = "The jaws of a small dog."
+ force = 15
+ armor_penetration = 0
+ defend_chance = 5
+ attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
else
- name = "puppy jaws"
- icon_state = "smalljaws"
- desc = "The jaws of a small dog."
- force = 10
- armor_penetration = 0
- defend_chance = 5
- attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
+ if(emagged)
+ name = "claymore"
+ desc = "Now this is a knife!"
+ icon = 'icons/obj/tools_robot.dmi'
+ icon_state = "claymore_cyborg"
+ hitsound = 'sound/weapons/slice.ogg'
+ attack_verb = list("sliced", "slashed", "jabbed", "stabbed")
+ else
+ name = "self defense knife"
+ icon = 'icons/obj/tools_robot.dmi'
+ icon_state = "knife_cyborg"
+ hitsound = 'sound/weapons/slash.ogg'
+ desc = "A sharp knife used for defending crew against hostile threats. Not effective for non-defense use."
+ attack_verb = list("sliced", "slashed", "jabbed", "stabbed")
update_icon()
diff --git a/interface/skin.dmf b/interface/skin.dmf
index 5ed01c48bf1..76be82d7764 100644
--- a/interface/skin.dmf
+++ b/interface/skin.dmf
@@ -202,7 +202,7 @@ macro "borghotkeymode"
command = "Activate-Held-Object"
elem
name = "CTRL+Z"
- command = "Activate-Held-Object"
+ command = "Robot-Activate-Held-Object"
elem
name = "U"
command = "Rest"
@@ -955,7 +955,7 @@ macro "borgmacro"
command = "Activate-Held-Object"
elem
name = "CTRL+Z"
- command = "Activate-Held-Object"
+ command = "Robot-Activate-Held-Object"
elem
name = "CTRL+U"
command = "Rest"