[MIRROR] Adds Gooborgs & Toggleable Stomach Glowing for Borgs (#10418)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-03-14 17:43:00 -07:00
committed by GitHub
parent 4a4293a9e4
commit 2cd485cbba
50 changed files with 546 additions and 92 deletions

View File

@@ -104,3 +104,9 @@
**Creator / Copyright:** Toriate<br>
**License Holders:** Matica, Cameron The Raven, Spotteh<br>
**License:** [CC BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/)<br>
<br>
**Folder:** `icons/mob/robot/gooborgs`<br>
**Title:** Gooborgs<br>
**Creator / Copyright:** Toriate<br>
**License Holders:** Matica<br>
**License:** [CC BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/)<br>

View File

@@ -205,6 +205,9 @@ SUBSYSTEM_DEF(robot_sprites)
if(findtext(icon, regex("-openpanel_w")))
RS.has_custom_open_sprites = TRUE
continue
if(findtext(icon, regex("-glow")))
RS.has_glow_sprites = TRUE
continue
if(findtext(icon, regex("-\\d-rest")))
RS.has_vore_belly_resting_sprites = TRUE
continue

View File

@@ -51,11 +51,6 @@
if(!C.battery_module)
to_chat(user, span_notice("\The [C] does not have a battery installed."))
return
if(istype(G, /obj/item/melee/baton))
var/obj/item/melee/baton/B = G
if(B.use_external_power)
to_chat(user, span_notice("\The [B] has no recharge port."))
return
if(istype(G, /obj/item/flash))
var/obj/item/flash/F = G
if(F.use_external_power)

View File

@@ -5,20 +5,6 @@
***********************************************************************/
//Might want to move this into several files later but for now it works here
/obj/item/melee/baton/robot/arm
name = "electrified arm"
icon = 'icons/obj/decals.dmi'
icon_state = "shock"
hitcost = 750
agonyforce = 70
/obj/item/melee/baton/robot/arm/update_icon()
if(status)
set_light(1.5, 1, lightcolor)
else
set_light(0)
/obj/item/borg/overdrive
name = "overdrive"
icon = 'icons/obj/decals.dmi'

View File

@@ -21,7 +21,6 @@
var/status = 0 //whether the thing is on or not
var/obj/item/cell/bcell = null
var/hitcost = 240
var/use_external_power = FALSE //only used to determine if it's a cyborg baton
var/grip_safety = TRUE
var/taped_safety = FALSE
@@ -118,8 +117,6 @@
. += span_warning("The baton does not have a power source installed.")
/obj/item/melee/baton/attackby(obj/item/W, mob/user)
if(use_external_power)
return
if(istype(W, /obj/item/cell))
if(istype(W, /obj/item/cell/device))
if(!bcell)
@@ -159,11 +156,6 @@
return ..()
/obj/item/melee/baton/attack_self(mob/user)
if(use_external_power)
//try to find our power cell
var/mob/living/silicon/robot/R = loc
if (istype(R))
bcell = R.cell
if(bcell && bcell.charge >= hitcost)
status = !status
to_chat(user, span_notice("[src] is now [status ? "on" : "off"]."))
@@ -229,11 +221,6 @@
bcell.emp_act(severity) //let's not duplicate code everywhere if we don't have to please.
..()
//secborg stun baton module
/obj/item/melee/baton/robot
hitcost = 500
use_external_power = TRUE
//Makeshift stun baton. Replacement for stun gloves.
/obj/item/melee/baton/cattleprod
name = "stunprod"
@@ -291,7 +278,3 @@
..(target, user, hit_zone)
if(status && target.has_AI())
target.taunt(user)
// Borg version, for the lost module.
/obj/item/melee/baton/shocker/robot
use_external_power = TRUE

View File

@@ -30,6 +30,8 @@
var/excavation_amount = 200
var/destroy_artefacts = FALSE // some mining tools will destroy artefacts completely while avoiding side-effects.
var/borg_flags = COUNTS_AS_ROBOTIC_MELEE //The ONLY reason this gets this here is because pickaxes are SO hardcoded that it's easier to add it here than everywhere else. Please do not attach this to everything that you desire. Only VERY SPECIFIC THINGS under CERTAIN CIRCUMSTANCES, PLEASE. 99% of things can be added to code\modules\projectiles\guns\energy\cyborg.dm
/obj/item/pickaxe/silver
name = "silver pickaxe"

View File

@@ -27,6 +27,7 @@
var/crisis_override = 0
var/integrated_light_power = 6
var/list/robotdecal_on = list()
var/glowy_enabled = FALSE
var/datum/wires/robot/wires
can_be_antagged = TRUE
@@ -455,8 +456,8 @@
update_icon()
/mob/living/silicon/robot/verb/toggle_robot_decals() // loads overlay UNDER lights.
set category = "Abilities.Silicon"
set name = "Toggle extras"
set category = "Abilities.Settings"
set name = "Toggle Extra Decals"
if(!sprite_datum)
return
@@ -482,6 +483,17 @@
to_chat(src, span_filter_notice("You enable your \"[decal_to_toggle]\" extra apperances."))
update_icon()
/mob/living/silicon/robot/verb/toggle_glowy_stomach()
set category = "Abilities.Settings"
set name = "Toggle Glowing Stomach & Accents"
glowy_enabled = !glowy_enabled
if(glowy_enabled)
to_chat(src, span_filter_notice("Your stomach will now glow and any naturally glowing accents you have will now appear!"))
else
to_chat(src, span_filter_notice("Your stomach will no longer glow, and any naturally glowing accents you have will be hidden!"))
update_icon()
/mob/living/silicon/robot/verb/spark_plug() //So you can still sparkle on demand without violence.
set category = "Abilities.Silicon"
set name = "Emit Sparks"
@@ -967,31 +979,52 @@
pixel_x = sprite_datum.pixel_x
old_x = sprite_datum.pixel_x
//Want to know how to make an overlay appear in darkness? Look at the below. Add a mutable and then emissive overlay.
//These get applied first and foremost, as things will get applied overtop of them.
//Only borgs that have specialty glow sprites get this.
if(sprite_datum.has_glow_sprites && glowy_enabled)
add_overlay(mutable_appearance(sprite_datum.sprite_icon, sprite_datum.get_glow_overlay(src)))
add_overlay(emissive_appearance(sprite_datum.sprite_icon, sprite_datum.get_glow_overlay(src)))
if(stat == CONSCIOUS)
update_fullness()
for(var/belly_class in vore_fullness_ex)
reset_belly_lights(belly_class)
var/vs_fullness = vore_fullness_ex[belly_class]
if(belly_class == "sleeper" && sleeper_state == 0 && vore_selected.silicon_belly_overlay_preference == "Sleeper") continue
if(belly_class == "sleeper" && sleeper_state != 0 && !(vs_fullness + 1 > vore_capacity_ex[belly_class]))
if(vore_selected.silicon_belly_overlay_preference == "Sleeper")
vs_fullness = vore_capacity_ex[belly_class]
else if(vore_selected.silicon_belly_overlay_preference == "Both")
vs_fullness += 1
if(belly_class == "sleeper")
if(sleeper_state == 0 && vore_selected.silicon_belly_overlay_preference == "Sleeper") continue
if(sleeper_state != 0 && !(vs_fullness + 1 > vore_capacity_ex[belly_class]))
if(vore_selected.silicon_belly_overlay_preference == "Sleeper")
vs_fullness = vore_capacity_ex[belly_class]
else if(vore_selected.silicon_belly_overlay_preference == "Both")
vs_fullness += 1
if(!vs_fullness > 0) continue
if(resting)
if(!sprite_datum.has_vore_belly_resting_sprites)
continue
add_overlay(sprite_datum.get_belly_resting_overlay(src, vs_fullness, belly_class))
//If we have glowy stomach sprites.
if(glowy_enabled)
var/mutable_appearance/MA = mutable_appearance(sprite_datum.sprite_icon, sprite_datum.get_belly_resting_overlay(src, vs_fullness, belly_class))
MA.appearance_flags = KEEP_APART
add_overlay(MA)
add_overlay(emissive_appearance(sprite_datum.sprite_icon, sprite_datum.get_belly_resting_overlay(src, vs_fullness, belly_class)))
else
add_overlay(sprite_datum.get_belly_resting_overlay(src, vs_fullness, belly_class))
else
update_belly_lights(belly_class)
add_overlay(sprite_datum.get_belly_overlay(src, vs_fullness, belly_class))
//If we have glowy stomach sprites.
if(glowy_enabled)
var/mutable_appearance/MA = mutable_appearance(sprite_datum.sprite_icon, sprite_datum.get_belly_overlay(src, vs_fullness, belly_class))
MA.appearance_flags = KEEP_APART
add_overlay(MA)
add_overlay(emissive_appearance(sprite_datum.sprite_icon, sprite_datum.get_belly_overlay(src, vs_fullness, belly_class)))
else
add_overlay(sprite_datum.get_belly_overlay(src, vs_fullness, belly_class))
sprite_datum.handle_extra_icon_updates(src) // Various equipment-based sprites go here.
if(resting && sprite_datum.has_rest_sprites)
icon_state = sprite_datum.get_rest_sprite(src)
if(sprite_datum.has_eye_sprites)
if(!shell || deployed) // Shell borgs that are not deployed will have no eyes.
var/eyes_overlay = sprite_datum.get_eyes_overlay(src)

View File

@@ -9,7 +9,7 @@
/obj/item/robot_module/robot/lost/create_equipment(var/mob/living/silicon/robot/robot)
..()
// Sec
src.modules += new /obj/item/melee/baton/shocker/robot(src)
src.modules += new /obj/item/melee/robotic/baton/shocker(src)
src.modules += new /obj/item/handcuffs/cyborg(src)
src.modules += new /obj/item/borg/combat/shield(src)
@@ -48,7 +48,7 @@
/obj/item/robot_module/robot/gravekeeper/create_equipment(var/mob/living/silicon/robot/robot)
..()
// For fending off animals and looters
src.modules += new /obj/item/melee/baton/shocker/robot(src)
src.modules += new /obj/item/melee/robotic/baton/shocker(src)
src.modules += new /obj/item/borg/combat/shield(src)
// For repairing gravemarkers

View File

@@ -435,7 +435,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/floor_painter(src)
src.modules += new /obj/item/rms(src)
src.modules += new /obj/item/inflatable_dispenser/robot(src)
src.emag += new /obj/item/melee/baton/robot/arm(src)
src.emag += new /obj/item/melee/robotic/baton/arm(src)
src.modules += new /obj/item/rcd/electric/mounted/borg(src)
src.modules += new /obj/item/pickaxe/plasmacutter/borg(src)
src.modules += new /obj/item/gripper/no_use/loader(src)
@@ -528,7 +528,7 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/robot/security/general/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/handcuffs/cyborg(src)
src.modules += new /obj/item/melee/baton/robot(src)
src.modules += new /obj/item/melee/robotic/baton(src)
src.modules += new /obj/item/gun/energy/robotic/taser(src)
src.modules += new /obj/item/taperoll/police(src)
src.modules += new /obj/item/reagent_containers/spray/pepper(src)
@@ -807,7 +807,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/reagent_containers/glass/beaker/large/borg(src)
src.modules += new /obj/item/storage/part_replacer(src)
src.modules += new /obj/item/shockpaddles/robot/jumper(src)
src.modules += new /obj/item/melee/baton/slime/robot(src)
src.modules += new /obj/item/melee/robotic/baton/slime(src)
src.modules += new /obj/item/gun/energy/robotic/taser/xeno(src)
src.modules += new /obj/item/xenoarch_multi_tool(src)
src.modules += new /obj/item/pickaxe/excavationdrill(src)

View File

@@ -11,7 +11,7 @@
src.modules += new /obj/item/rcd/electric/mounted/borg/swarm(src)
src.modules += new /obj/item/flash/robot(src)
src.modules += new /obj/item/handcuffs/cable/tape/cyborg(src)
src.modules += new /obj/item/melee/baton/robot(src)
src.modules += new /obj/item/melee/robotic/baton(src)
src.modules += new /obj/item/gun/energy/robotic/taser/swarm(src)
src.modules += new /obj/item/matter_decompiler/swarm(src)
@@ -26,7 +26,7 @@
/obj/item/robot_module/drone/swarm/melee/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/melee/energy/sword/ionic_rapier/lance(src)
src.modules += new /obj/item/melee/robotic/blade/ionic/lance(src)
//Swarm Disabler Module
/obj/item/gun/energy/taser/mounted/cyborg/swarm

View File

@@ -24,7 +24,7 @@
/obj/item/robot_module/robot/syndicate/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/pinpointer/shuttle/merc(src)
src.modules += new /obj/item/melee/energy/sword(src)
src.modules += new /obj/item/melee/robotic/blade(src)
var/datum/matter_synth/cloth = new /datum/matter_synth/cloth(40000)
synths += cloth
@@ -55,7 +55,7 @@
src.modules += new /obj/item/shield_projector/rectangle/weak(src)
src.modules += new /obj/item/gun/energy/robotic/laser/dakkalaser(src)
src.modules += new /obj/item/handcuffs/cyborg(src)
src.modules += new /obj/item/melee/baton/robot(src)
src.modules += new /obj/item/melee/robotic/baton(src)
src.modules += new /obj/item/dogborg/sleeper/K9/syndie(src)
src.modules += new /obj/item/dogborg/pounce(src)
@@ -75,7 +75,7 @@
src.modules += new /obj/item/multitool/ai_detector(src)
src.modules += new /obj/item/pickaxe/plasmacutter(src)
src.modules += new /obj/item/rcd/electric/mounted/borg/lesser(src) // Can't eat rwalls to prevent AI core cheese.
src.modules += new /obj/item/melee/energy/sword/ionic_rapier(src)
src.modules += new /obj/item/melee/robotic/blade/ionic(src)
// FBP repair.
src.modules += new /obj/item/robotanalyzer(src)

View File

@@ -22,6 +22,7 @@
var/has_dead_sprite_overlay = FALSE
var/has_extra_customization = FALSE
var/has_custom_equipment_sprites = FALSE
var/has_glow_sprites = FALSE
var/vis_height = 32
var/pixel_x = 0
var/icon_x = 32
@@ -87,6 +88,14 @@
if(sprite_flag_check(ROBOT_HAS_DISABLER_SPRITE) && gun.gun_flag_check(COUNTS_AS_ROBOT_DISABLER))
ourborg.add_overlay("[sprite_icon_state]-disabler")
continue
//These are outliers that don't fit the normal sprite flags. These should not be expanded unless absolutely neccessary.
if(ourborg.activated_module_type_list(list(/obj/item/pickaxe)))
for(var/thing_to_check in ourborg.get_active_modules()) //We look at our active modules. Let's peep!
if(istype(thing_to_check, /obj/item/pickaxe))
var/obj/item/pickaxe/melee = thing_to_check
if(sprite_flag_check(ROBOT_HAS_MELEE_SPRITE) && melee.weapon_flag_check(COUNTS_AS_ROBOTIC_MELEE))
ourborg.add_overlay("[sprite_icon_state]-melee")
continue
/datum/robot_sprite/proc/get_belly_overlay(var/mob/living/silicon/robot/ourborg, var/size = 1, var/b_class)
//Size
@@ -121,6 +130,11 @@
else
return "[get_belly_overlay(ourborg, size, b_class)]-rest"
/datum/robot_sprite/proc/get_glow_overlay(var/mob/living/silicon/robot/ourborg)
if(!ourborg.resting)
return "[sprite_icon_state]-glow"
return "[get_rest_sprite(ourborg.rest_style)]-glow"
/datum/robot_sprite/proc/get_eyes_overlay(var/mob/living/silicon/robot/ourborg)
if(!(ourborg.resting && has_rest_sprites))
return "[sprite_icon_state]-eyes"

View File

@@ -43,6 +43,7 @@
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_cargo.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -58,6 +59,7 @@
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_engi.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -74,6 +76,7 @@
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_jani.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -89,6 +92,7 @@
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_medicat.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -105,6 +109,7 @@
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_sci.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -120,6 +125,7 @@
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_sec.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -135,6 +141,7 @@
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_service.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -162,6 +169,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/large/catborg_cargo.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
@@ -176,6 +184,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/large/catborg_engineering.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
@@ -190,6 +199,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/large/catborg_medical.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
@@ -206,6 +216,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/large/catborg_science.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
@@ -220,6 +231,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/large/catborg_security.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
@@ -235,6 +247,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/large/catborg_service.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
@@ -249,6 +262,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/catborgs/departmental/large/catborg_combatmed.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
@@ -272,6 +286,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_glow_sprites = TRUE
sprite_decals = list("decals")
is_whitelisted = FALSE //Putting this here as a declaration that it is NOT whitelisted.
// whitelist_ckey = "cameron653" //The owner of the character.

View File

@@ -0,0 +1,229 @@
/// EXAMPLE.
/*
/datum/robot_sprite/dogborg/DEPARTMENT/gooborg
name = "Gooborg - DEPARTMENTL"
sprite_icon_state = "engi"
sprite_hud_icon_state = "engi"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/departmental/XXXX.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
module_type = list("Standard", "Engineering", "Crisis", "Miner", "Janitor", "Service", "Clerical", "Security", "Research") //Select whichever ones they apply to.
*/
/// Cargo
/datum/robot_sprite/dogborg/mining/gooborg
name = "Gooborg - Cargo"
sprite_icon_state = "base"
//sprite_hud_icon_state = "catgo"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_vore_struggle_sprite = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/departmental/gooborg_cargo.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
sprite_flags = ROBOT_HAS_MELEE_SPRITE //Hammer
/datum/robot_sprite/dogborg/mining/gooborg/miner
name = "Gooborg - Miner"
sprite_icon_state = "base"
//sprite_hud_icon_state = "catgo"
sprite_icon = 'icons/mob/robot/gooborgs/departmental/gooborg_miner.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
sprite_flags = ROBOT_HAS_MELEE_SPRITE | ROBOT_HAS_GUN_SPRITE //Hammer & PKA
/// Engineering
/datum/robot_sprite/dogborg/engineering/gooborg
name = "Gooborg"
sprite_icon_state = "base"
//sprite_hud_icon_state = "engi"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_vore_struggle_sprite = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/departmental/gooborg_engi.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
/// Crisis
/datum/robot_sprite/dogborg/crisis/gooborg
name = "Gooborg"
sprite_icon_state = "base"
//sprite_hud_icon_state = "meowdical"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_vore_struggle_sprite = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/departmental/gooborg_med.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
module_type = list("Crisis", "Surgeon")
/// Science
/datum/robot_sprite/dogborg/science/gooborg
name = "Gooborg"
sprite_icon_state = "base"
//sprite_hud_icon_state = "sci"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_vore_struggle_sprite = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/departmental/gooborg_sci.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
/// Security
/datum/robot_sprite/dogborg/security/gooborg
name = "Gooborg"
sprite_icon_state = "base"
//sprite_hud_icon_state = "sec"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_vore_struggle_sprite = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/departmental/gooborg_sec.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
sprite_flags = ROBOT_HAS_SPEED_SPRITE | ROBOT_HAS_SHIELD_SPRITE | ROBOT_HAS_DISABLER_SPRITE | ROBOT_HAS_TASER_SPRITE | ROBOT_HAS_LASER_SPRITE | ROBOT_HAS_MELEE_SPRITE //Melee is baton.
/datum/robot_sprite/dogborg/security/gooborg/get_eyes_overlay(var/mob/living/silicon/robot/ourborg)
if(ourborg.has_active_type(/obj/item/borg/combat/mobility))
return
else
return ..()
/// Service
/datum/robot_sprite/dogborg/service/gooborg
name = "Gooborg"
sprite_icon_state = "base"
//sprite_hud_icon_state = "service"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_vore_struggle_sprite = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/departmental/gooborg_service.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
module_type = list("Service", "Clerical")
/datum/robot_sprite/dogborg/janitor/gooborg
name = "Gooborg"
sprite_icon_state = "base"
//sprite_hud_icon_state = "service"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_vore_struggle_sprite = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/departmental/gooborg_jani.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
/datum/robot_sprite/dogborg/combat_gooborg
name = "Gooborg"
sprite_icon_state = "base"
//sprite_hud_icon_state = "malf"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_vore_struggle_sprite = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/departmental/gooborg_peacekeeper.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
sprite_flags = ROBOT_HAS_SPEED_SPRITE | ROBOT_HAS_DISABLER_SPRITE | ROBOT_HAS_TASER_SPRITE | ROBOT_HAS_LASER_SPRITE | ROBOT_HAS_MELEE_SPRITE //Baton
module_type = "Combat"
/datum/robot_sprite/dogborg/combat_gooborg/get_eyes_overlay(var/mob/living/silicon/robot/ourborg)
if(ourborg.has_active_type(/obj/item/borg/combat/mobility))
return
return ..()
/datum/robot_sprite/dogborg/clown/gooborg
name = "Gooborg"
sprite_icon_state = "base"
//sprite_hud_icon_state = "syndicat"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_vore_struggle_sprite = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/departmental/gooborg_jester.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
//Exploration.
/datum/robot_sprite/dogborg/explo_gooborg
name = "Gooborg"
sprite_icon_state = "base"
//sprite_hud_icon_state = "syndicat"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_vore_struggle_sprite = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/custom/gooborg_ninja.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
module_type = "Exploration"
/datum/robot_sprite/dogborg/explo_gooborg/get_eyes_overlay(var/mob/living/silicon/robot/ourborg)
if(ourborg.has_active_type(/obj/item/borg/combat/mobility))
return
else
return ..()
//Syndicate
/datum/robot_sprite/dogborg/combat_medic/gooborg
name = "Gooborg"
sprite_icon_state = "base"
//sprite_hud_icon_state = "malf"
has_eye_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_vore_struggle_sprite = TRUE
has_dead_sprite_overlay = FALSE
has_glow_sprites = TRUE
sprite_icon = 'icons/mob/robot/gooborgs/custom/gooborg_syndi.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
sprite_flags = ROBOT_HAS_SPEED_SPRITE | ROBOT_HAS_GUN_SPRITE | ROBOT_HAS_BLADE_SPRITE //esword
module_type = list("Combat Medic", "Mechanist", "Protector") //You get all three modules.
/datum/robot_sprite/dogborg/combat_medic/gooborg/get_eyes_overlay(var/mob/living/silicon/robot/ourborg)
if(ourborg.has_active_type(/obj/item/borg/combat/mobility))
return
else
return ..()

View File

@@ -135,7 +135,7 @@ What Borgs are available is sadly handled in the above file in the proc
/mob/living/silicon/robot/proc/reskin_booze()
set name = "Change Drink Color"
set category = "Abilities.Silicon" //TGPanel
set category = "Abilities.Settings"
set desc = "Choose the color of drink displayed inside you."
var/mob/M = usr

View File

@@ -8,6 +8,12 @@
/obj/item/melee/robotic/proc/weapon_flag_check(var/flag_to_check) //Checks for the flag of the gun.
return (borg_flags & flag_to_check)
// THESE ARE OUTLIERS THAT SHOULD BE INCLUDED IN /MELEE BUT ARE SO HARDCODED THAT DOING SUCH WOULD BE A NIGHTMARE.
// THIS LIST SHOULD BE SHORT AND ONLY INCLUDE THINGS THAT ARE ABSOLUTELY NECESSARY.
/obj/item/pickaxe/proc/weapon_flag_check(var/flag_to_check) //Checks for the flag of the gun.
return (borg_flags & flag_to_check)
/// The base gun types. Build off these four.
/obj/item/gun/energy/robotic
name = "Cybernetic Gun"
@@ -190,7 +196,7 @@
update_icon()
/obj/item/melee/robotic/borg_combat_shocker
/obj/item/melee/robotic/borg_combat_shocker //Like a baton, but is always on.
name = "combat shocker"
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "combatshocker"
@@ -203,12 +209,26 @@
var/charge_cost = 15
var/dogborg = FALSE
/obj/item/melee/robotic/borg_combat_shocker/proc/deductcharge()
var/mob/living/silicon/robot/R = loc
var/obj/item/cell/bcell
if(istype(R))
bcell = R.cell
if(!bcell)
return FALSE
if(bcell.checked_use(600))
return TRUE
return null
/obj/item/melee/robotic/borg_combat_shocker/attack(mob/M, mob/user)
deductcharge(600)
return ..()
/obj/item/melee/robotic/borg_combat_shocker/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
if(isrobot(target))
return ..()
var/agony = 60 // Copied from stun batons
var/stun = 0 // ... same
var/agony = 60
var/obj/item/organ/external/affecting = null
if(ishuman(target))
@@ -216,11 +236,8 @@
affecting = H.get_organ(hit_zone)
if(user.a_intent == I_HURT)
// Parent handles messages
. = ..()
//whacking someone causes a much poorer electrical contact than deliberately prodding them.
agony *= 0.5
stun *= 0.5
else
if(affecting)
if(dogborg)
@@ -232,21 +249,13 @@
target.visible_message(span_danger("[target] has been zap-chomped with [src] by [user]!"))
else
target.visible_message(span_danger("[target] has been zapped with [src] by [user]!"))
playsound(src, 'sound/weapons/Egloves.ogg', 50, 1, -1)
// Try to use power
var/stunning = FALSE
if(isrobot(loc))
var/mob/living/silicon/robot/R = loc
if(R.cell?.use(charge_cost) == charge_cost)
stunning = TRUE
if(stunning)
target.stun_effect_act(stun, agony, hit_zone, src)
msg_admin_attack("[key_name(user)] stunned [key_name(target)] with the [src].")
if(ishuman(target))
var/mob/living/carbon/human/H = target
H.forcesay(hit_appends)
playsound(src, 'sound/weapons/Egloves.ogg', 50, 1, -1)
target.stun_effect_act(0, agony, hit_zone, src)
msg_admin_attack("[key_name(user)] stunned [key_name(target)] with the [src].")
if(ishuman(target))
var/mob/living/carbon/human/H = target
H.forcesay(hit_appends)
/obj/item/melee/robotic/blade //For downstreams that use blade
name = "Robotic Blade"
@@ -277,3 +286,183 @@
hitsound = 'sound/weapons/blade1.ogg'
attack_verb = list("slashed", "stabbed", "jabbed", "mauled", "sliced")
w_class = ITEMSIZE_NORMAL
/obj/item/melee/robotic/blade/ionic
name = "ionic rapier"
desc = "Designed specifically for disrupting electronics at close range, it is extremely deadly against synthetics, but almost harmless to pure organic targets."
description_info = "This is a dangerous melee weapon that will deliver a moderately powerful electromagnetic pulse to whatever it strikes. \
Striking a lesser robotic entity will compel it to attack you, as well. It also does extra burn damage to robotic entities, but it does \
very little damage to purely organic targets."
/obj/item/melee/robotic/blade/ionic/afterattack(var/atom/movable/AM, var/mob/living/user, var/proximity)
if(istype(AM, /obj) && proximity)
// EMP stuff.
var/obj/O = AM
O.emp_act(3) // A weaker severity is used because this has infinite uses.
playsound(O, 'sound/effects/EMPulse.ogg', 100, 1)
user.setClickCooldown(user.get_attack_speed(src)) // A lot of objects don't set click delay.
return ..()
/obj/item/melee/robotic/blade/ionic/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
. = ..()
if(target.isSynthetic())
// Do some extra damage. Not a whole lot more since emp_act() is pretty nasty on FBPs already.
target.emp_act(3) // A weaker severity is used because this has infinite uses.
playsound(target, 'sound/effects/EMPulse.ogg', 100, 1)
target.adjustFireLoss(force * 3) // 15 Burn, for 20 total.
playsound(target, 'sound/weapons/blade1.ogg', 100, 1)
// Make lesser robots really mad at us.
if(target.mob_class & MOB_CLASS_SYNTHETIC)
if(target.has_AI())
target.taunt(user)
target.adjustFireLoss(force * 6) // 30 Burn, for 50 total.
/obj/item/melee/robotic/blade/ionic/lance
name = "zero-point lance"
desc = "Designed specifically for disrupting electronics at relatively close range, however it is still capable of dealing some damage to living beings."
force = 20
armor_penetration = 15
reach = 2
/obj/item/melee/robotic/baton
name = "stunbaton"
desc = "A stun baton for incapacitating people with."
icon = 'icons/obj/weapons.dmi'
icon_state = "stunbaton_active"
item_state = "baton"
slot_flags = SLOT_BELT
force = 15
sharp = FALSE
edge = FALSE
flags = NOCONDUCT
w_class = ITEMSIZE_NORMAL
drop_sound = 'sound/items/drop/metalweapon.ogg'
pickup_sound = 'sound/items/pickup/metalweapon.ogg'
origin_tech = list(TECH_COMBAT = 2)
attack_verb = list("beaten")
var/stunforce = 0
var/agonyforce = 60
var/hitcost = 500
var/status = 1 //On by default.
var/lightcolor = "#FF6A00"
borg_flags = COUNTS_AS_ROBOTIC_MELEE
/obj/item/melee/robotic/baton/update_icon()
if(status)
icon_state = "[initial(name)]_active"
else
icon_state = "[initial(name)]"
if(icon_state == "[initial(name)]_active")
set_light(2, 1, lightcolor)
else
set_light(0)
/obj/item/melee/robotic/baton/attack_hand(mob/user as mob)
return
/obj/item/melee/robotic/baton/attack_self(mob/user)
status = !status
to_chat(user, span_notice("[src] is now [status ? "on" : "off"]."))
playsound(src, "sparks", 75, 1, -1)
update_icon()
/obj/item/melee/robotic/baton/attackby(obj/item/W, mob/user)
return
/obj/item/melee/robotic/baton/proc/deductcharge()
var/mob/living/silicon/robot/R = loc
var/obj/item/cell/bcell
if(istype(R))
bcell = R.cell
if(!bcell)
return FALSE
if(bcell.checked_use(hitcost))
return TRUE
return null
/obj/item/melee/robotic/baton/attack(mob/M, mob/user)
if(status)
deductcharge(hitcost)
return ..()
/obj/item/melee/robotic/baton/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
if(isrobot(target))
return ..()
var/agony = agonyforce
var/stun = stunforce
var/obj/item/organ/external/affecting = null
if(ishuman(target))
var/mob/living/carbon/human/H = target
affecting = H.get_organ(hit_zone)
if(user.a_intent == I_HURT)
. = ..()
//whacking someone causes a much poorer electrical contact than deliberately prodding them.
agony *= 0.5
stun *= 0.5
//We are off!
if(!status)
if(affecting)
target.visible_message(span_warning("[target] has been prodded in the [affecting.name] with [src] by [user]. Luckily it was off."))
else
target.visible_message(span_warning("[target] has been prodded with [src] by [user]. Luckily it was off."))
return
//We are on!
if(affecting)
target.visible_message(span_danger("[target] has been prodded in the [affecting.name] with [src] by [user]!"))
else
target.visible_message(span_danger("[target] has been prodded with [src] by [user]!"))
playsound(src, 'sound/weapons/Egloves.ogg', 50, 1, -1)
target.stun_effect_act(stun, agony, hit_zone, src)
msg_admin_attack("[key_name(user)] stunned [key_name(target)] with the [src].")
if(ishuman(target))
var/mob/living/carbon/human/H = target
H.forcesay(hit_appends)
/obj/item/melee/robotic/baton/arm
name = "electrified arm"
icon = 'icons/obj/decals.dmi'
icon_state = "shock"
hitcost = 750
agonyforce = 70
/obj/item/melee/robotic/baton/shocker
name = "shocker"
desc = "A device that appears to arc electricity into a target to incapacitate or otherwise hurt them, similar to a stun baton. It looks inefficent."
description_info = "Hitting a lesser lifeform with this while it is on will compel them to attack you above other nearby targets. Otherwise \
it works like a regular stun baton, just less effectively."
icon_state = "shocker_active"
force = 10
agonyforce = 25 // Less efficent than a regular baton.
attack_verb = list("poked")
/obj/item/melee/robotic/baton/shocker/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
..(target, user, hit_zone)
if(target.has_AI())
target.taunt(user)
/obj/item/melee/robotic/baton/slime
hitcost = 200
/obj/item/melee/robotic/baton/slime/attack(mob/living/L, mob/user, hit_zone)
if(!istype(L))
return ..()
if(L.mob_class & MOB_CLASS_SLIME) // Are they some kind of slime? (Prommies might pass this check someday).
if(isslime(L))
var/mob/living/simple_mob/slime/S = L
S.slimebatoned(user, 5) // Feral and xenobio slimes will react differently to this.
else
L.Weaken(5)
// Now for prommies.
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(H.species && H.species.name == SPECIES_PROMETHEAN)
H.apply_damage(35, HALLOSS)
..()

View File

@@ -663,6 +663,10 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
var/obj/belly/NB = new(host)
NB.name = new_name
host.vore_selected = NB
//Ensures that new stomachs that are made have the same silicon overlay pref as the first stomach.
if(LAZYLEN(host.vore_organs))
var/obj/belly/belly_to_check = host.vore_organs[1]
NB.silicon_belly_overlay_preference = belly_to_check.silicon_belly_overlay_preference
unsaved_changes = TRUE
return TRUE
if("importpanel")

View File

@@ -33,11 +33,6 @@
update_icon()
return ..()
// Research borg's version
/obj/item/melee/baton/slime/robot
hitcost = 200
use_external_power = TRUE
// Xeno stun gun + projectile
/obj/item/gun/energy/taser/xeno
name = "xeno taser gun"
@@ -54,10 +49,6 @@
ineffective at stunning non-slimy lifeforms such as humanoids."
recoil_mode = 0
/obj/item/gun/energy/taser/xeno/robot // Borg version
self_recharge = 1
use_external_power = 1
recharge_time = 3
/*
VORESTATION REMOVAL
/obj/item/gun/energy/taser/xeno/sec //NT's corner-cutting option for their on-station security.

View File

@@ -45,6 +45,10 @@
failed = TRUE
if(check_state(RS,"-openpanel_w"))
failed = TRUE
// Glow State
if(RS.has_glow_sprites)
if(check_state(RS,"-glow"))
failed = TRUE
// Bellies
if(RS.has_vore_belly_sprites && !RS.belly_capacity_list)
if(RS.has_sleeper_light_indicator)
@@ -162,6 +166,9 @@
rest_style = "rest"
if(check_state(RS,"-[rest_style]"))
failed = TRUE
if(RS.has_glow_sprites)
if(check_state(RS,"-[rest_style]-glow"))
failed = TRUE
// death
if(RS.has_dead_sprite)
if(check_state(RS,"-wreck"))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -0,0 +1 @@
Gooborg Art Assets by Toriate

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

View File

@@ -1943,12 +1943,7 @@
/area/awaymission/snow_outpost/outside)
"gD" = (
/obj/structure/cable{
<<<<<<< HEAD
icon_state = "0-2";
=======
icon_state = "0-2"
>>>>>>> 0114e94239 (Map adjustments [MDB IGNORE] (#17342))
},
/obj/machinery/porta_turret/alien/destroyed,
/turf/simulated/shuttle/floor/alienplating,

View File

@@ -3437,6 +3437,7 @@
#include "code\modules\mob\living\silicon\robot\sprites\engineering.dm"
#include "code\modules\mob\living\silicon\robot\sprites\event.dm"
#include "code\modules\mob\living\silicon\robot\sprites\fluff.dm"
#include "code\modules\mob\living\silicon\robot\sprites\gooborgs.dm"
#include "code\modules\mob\living\silicon\robot\sprites\janitor.dm"
#include "code\modules\mob\living\silicon\robot\sprites\medical.dm"
#include "code\modules\mob\living\silicon\robot\sprites\mining.dm"