[MIRROR] Robot Sprite Unit test, Robot Upports, Robot Sprite Fixes [MDB IGNORE] [IDB IGNORE] (#10241)

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-01 16:18:02 -07:00
committed by GitHub
parent 867d377c65
commit ede45bae10
132 changed files with 1505 additions and 1326 deletions

View File

@@ -144,7 +144,7 @@ SUBSYSTEM_DEF(robot_sprites)
// testing whitelist functionality ckey-...
if(findtext(icon, regex("ckey-")))
var/list/owner = splittext(icon, "-")
RS.whitelist_ckey = owner[3]
RS.whitelist_ckey = owner[2]
RS.is_whitelisted = TRUE
continue
// testing module types slots modules-...
@@ -153,6 +153,12 @@ SUBSYSTEM_DEF(robot_sprites)
jobs -= "modules"
RS.module_type = jobs
continue
// special overlays that also can be used as decals, as some names have - in them, seperated by _
if(findtext(icon, regex("^decals")))
var/list/decals = splittext(icon, "_")
decals -= "decals"
RS.sprite_decals |= decals
continue
// Check for all the possible overlays
if(findtext(icon, regex("-roll")))
RS.sprite_flags |= ROBOT_HAS_SPEED_SPRITE
@@ -191,7 +197,10 @@ SUBSYSTEM_DEF(robot_sprites)
RS.has_eye_light_sprites = TRUE
continue
if(findtext(icon, regex("-decals")))
RS.has_robotdecal_sprites = TRUE
RS.sprite_decals |= list("decals")
continue
if(findtext(icon, regex("-struggle")))
RS.has_vore_struggle_sprite = TRUE
continue
if(findtext(icon, regex("-openpanel_w")))
RS.has_custom_open_sprites = TRUE

View File

@@ -290,6 +290,38 @@
initial_sprite_stack = list("base-stamp-silver", "top-olive", "stamp-n", "pips-white")
rank = JOB_PATHFINDER
/obj/item/card/id/exploration/borg
var/mob/living/silicon/robot/R
var/last_robot_loc
name = "Robot Exploration ID"
rank = JOB_EXPLORER
/obj/item/card/id/exploration/borg/Initialize()
. = ..()
if(isrobot(loc?.loc))
R = loc.loc
registered_name = R.braintype
RegisterSignal(src, COMSIG_OBSERVER_MOVED, PROC_REF(check_loc))
/obj/item/card/id/exploration/borg/proc/check_loc(atom/movable/mover, atom/old_loc, atom/new_loc)
if(old_loc == R || old_loc == R.module)
last_robot_loc = old_loc
if(!istype(loc, /obj/machinery) && loc != R && loc != R.module)
if(last_robot_loc)
forceMove(last_robot_loc)
last_robot_loc = null
else
forceMove(R)
if(loc == R)
hud_layerise()
/obj/item/card/id/exploration/borg/Destroy()
if(R)
UnregisterSignal(src, COMSIG_OBSERVER_MOVED)
R = null
last_robot_loc = null
. = ..()
//Talon
/obj/item/card/id/talon

View File

@@ -1,7 +1,7 @@
/obj/item/taskmanager
name = "Task Manager"
desc = "A high-tech tool used to pull surplus items from offsite storage. Select a department to begin! Has a five minute cooldown between successful uses"
icon = 'modular_chomp/icons/mob/dogborg_ch.dmi'
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "taskmanager"
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi',

View File

@@ -127,9 +127,9 @@ var/global/list/alphabet_uppercase = list("A","B","C","D","E","F","G","H","I","J
// Used by robots and robot preferences for regular modules.
var/list/robot_module_types = list(
"Standard", "Engineering",/* "Surgeon",*/ "Crisis", //CHOMPedit: Combining Surgeon and Crisis.
"Miner", "Janitor", "Service", "Clerical", "Security",
"Research"
"Standard", "Engineering", /* "Surgeon",*/ "Crisis", "Miner",
"Janitor", "Service", "Clown", "Clerical", "Security",
"Research", "Command", "Exploration" //CHOMPedit: Enables Exploration borg.
)
// L
// List of modules added during code red
@@ -138,8 +138,9 @@ var/list/emergency_module_types = list(
)
// List of modules available to AI shells
var/list/shell_module_types = list(
"Standard", "Engineering", "Surgeon", "Crisis",
"Miner", "Janitor", "Service", "Clerical", "Security", "Research"
"Standard", "Engineering", "Surgeon", "Crisis", "Miner",
"Janitor", "Service", "Clown", "Clerical", "Security",
"Research", "Command", "Exploration"
)
// List of whitelisted modules
var/list/whitelisted_module_types = list(
@@ -165,10 +166,10 @@ var/static/list/scarySounds = list(
'sound/machines/door/old_airlock.ogg',
'sound/effects/clownstep1.ogg',
'sound/effects/clownstep2.ogg',
'sound/voice/teppi/roar.ogg', //VOREStation Add
'sound/voice/moth/scream_moth.ogg', //VOREStation Add
'sound/voice/nya.ogg', //VOREStation Add
'sound/voice/succlet_shriek.ogg' //VOREStation Add
'sound/voice/teppi/roar.ogg',
'sound/voice/moth/scream_moth.ogg',
'sound/voice/nya.ogg',
'sound/voice/succlet_shriek.ogg'
)
// Bomb cap!

View File

@@ -746,9 +746,8 @@
I.plane = PLANE_LIGHTING_ABOVE
add_overlay(I)
qdel(I)
// CHOMPEdit Start
if(S.blob_appearance == "dullahan")
icon = 'modular_chomp/icons/mob/dullahanborg/Dullahanprotean64x64.dmi'
icon = 'icons/mob/robot/dullahan/v1/Dullahanprotean64x64.dmi'
vis_height = 64
var/image/I = image(icon, "[S.dullahan_overlays[1]][resting? "-rest" : (vore_fullness? "-[vore_fullness]" : null)]", pixel_x = -16)
I.color = S.dullahan_overlays[S.dullahan_overlays[1]]
@@ -797,7 +796,7 @@
I.layer = MOB_LAYER
add_overlay(I)
qdel(I)
// CHOMPEdit End
//You know technically I could just put all the icons into the 128x64.dmi file and off-set them to fit..
if(S.blob_appearance in wide_icons)
icon = 'icons/mob/species/protean/protean64x32.dmi'
default_pixel_x = -16

View File

@@ -409,7 +409,7 @@
"panther" = image(icon = 'icons/mob/species/protean/protean64x64.dmi', icon_state = "panther", pixel_x = -16),
"robodrgn" = image(icon = 'icons/mob/species/protean/protean128x64.dmi', icon_state = "robodrgn", pixel_x = -48),
"Dragon" = image(icon = 'icons/mob/bigdragon_small.dmi', icon_state = "dragon_small"),
"dullahan" = image(icon = 'modular_chomp/icons/mob/dullahanborg/dullahanicon.dmi', icon_state = "proticon")
"dullahan" = image(icon = 'icons/mob/robot/dullahan/v1/dullahanicon.dmi', icon_state = "proticon")
//CHOMPEnable End
)
var/blobstyle = show_radial_menu(protie, protie, icon_choices, require_near = TRUE, tooltips = FALSE)
@@ -531,11 +531,10 @@
S.dragon_overlays[6] = choice
S.dragon_overlays[S.dragon_overlays[6]] = new_color
S.blob_appearance = "dragon"
// CHOMPEdit Start
if("dullahan")
if("dullahan") //START OF DULLAHAN PORT.
var/list/options = list("Metalshell","Eyes","Decals","Import","Export")
for(var/option in options)
LAZYSET(options, option, image('modular_chomp/icons/mob/dullahanborg/dullahansigns.dmi', option))
LAZYSET(options, option, image('icons/mob/robot/dullahan/v1/dullahansigns.dmi', option))
var/choice = show_radial_menu(protie, protie, options, radius = 60)
if(!choice || QDELETED(protie) || protie.incapacitated())
return FALSE
@@ -570,7 +569,7 @@
var/extraoff = "dullahanextendedoff"
options = dullahanmetal_styles
for(var/option in options)
var/image/I = image('modular_chomp/icons/mob/dullahanborg/Dullahanprotean64x64.dmi', option, dir = 2, pixel_x = -16)
var/image/I = image('icons/mob/robot/dullahan/v1/Dullahanprotean64x64.dmi', option, dir = 2, pixel_x = -16)
LAZYSET(options, option, I)
choice = show_radial_menu(protie, protie, options, radius = 90)
if(!choice || QDELETED(protie) || protie.incapacitated())
@@ -589,7 +588,7 @@
if("Eyes")
options = dullahaneyes_styles
for(var/option in options)
var/image/I = image('modular_chomp/icons/mob/dullahanborg/Dullahanprotean64x64.dmi', option, dir = 2, pixel_x = -16)
var/image/I = image('icons/mob/robot/dullahan/v1/Dullahanprotean64x64.dmi', option, dir = 2, pixel_x = -16)
LAZYSET(options, option, I)
choice = show_radial_menu(protie, protie, options, radius = 90)
if(!choice || QDELETED(protie) || protie.incapacitated())
@@ -602,7 +601,7 @@
if("Decals")
options = dullahandecals_styles
for(var/option in options)
var/image/I = image('modular_chomp/icons/mob/dullahanborg/Dullahanprotean64x64.dmi', option, dir = 2, pixel_x = -16, pixel_y = -16)
var/image/I = image('icons/mob/robot/dullahan/v1/Dullahanprotean64x64.dmi', option, dir = 2, pixel_x = -16, pixel_y = -16)
LAZYSET(options, option, I)
choice = show_radial_menu(protie, protie, options, radius = 90)
if(!choice || QDELETED(protie) || protie.incapacitated())
@@ -652,8 +651,7 @@
deyescolor = S.dullahan_overlays[S.dullahan_overlays[4]]
var/output_style = jointext(list(dmetal,dmetalcolor,ddecals,ddecalscolor,deyes,deyescolor), ";")
to_chat(protie, span_notice("Exported style string is \" [output_style] \". Use this to get the same style in the future with import style"))
S.blob_appearance = "dullahan"
// CHOMPEdit End
S.blob_appearance = "dullahan" //END OF DULLAHAN PORT.
if("Primary")
var/new_color = tgui_color_picker(protie, "Pick primary color:","Protean Primary", "#FF0000")
if(!new_color)

View File

@@ -130,7 +130,6 @@
"dragon_hornsPointy" = "#FFFFFF",
"dragon_eyesNormal" = "#FFFFFF"
)
// CHOMPEdit Start
var/list/dullahan_overlays = list(
"dullahanbody" = "#FFFFFF",
"dullahanhead" = "#FFFFFF",
@@ -140,7 +139,6 @@
"dullahanextended" = "#FFFFFF"
// loads the icons from the DMI file in that order on spawn. they are overlay 1-6.
)
// CHOMPEdit End
var/pseudodead = 0
/datum/species/protean/New()

View File

@@ -557,3 +557,166 @@
if(custom_range)
range = custom_range
to_chat(user, span_notice("Scanner will now look up to [range] tile(s) away."))
//CHOMPEDIT Enable
/obj/item/robot_tongue/examine(user)
. = ..()
if(Adjacent(user))
if(water.energy)
. += span_notice("[src] is wet. Just like it should be.")
if(water.energy < 5)
. += span_notice("[src] is dry.")
//CHOMPEDIT Enable
/obj/item/shield_projector/line/exploborg
name = "expirmental shield projector"
description_info = "This creates a shield in a straight line perpendicular to the direction where the user was facing when it was activated. \
The shield allows projectiles to leave from inside but blocks projectiles from outside. Everything else can pass through the shield freely, \
including other people and thrown objects. The shield also cannot block certain effects which take place over an area, such as flashbangs or explosions."
shield_health = 90
max_shield_health = 90
shield_regen_amount = 25
line_length = 7 // How long the line is. Recommended to be an odd number.
offset_from_center = 2 // How far from the projector will the line's center be.
// To repair a single module
/obj/item/self_repair_system
name = "plating repair system"
desc = "A nanite control system to repair damaged armour plating and wiring while not moving. Destroyed armour can't be restored."
icon = 'icons/obj/robot_component.dmi'
icon_state = "armor"
var/repair_time = 25
var/repair_amount = 2.5
var/power_tick = 25
var/disabled_icon = "armor"
var/active_icon = "armor_broken"
var/list/target_components = list("armour")
var/repairing = FALSE
/obj/item/self_repair_system/New()
..()
flags |= NOBLUDGEON
/obj/item/self_repair_system/attack_self(mob/user)
if(repairing)
return
var/mob/living/silicon/robot/R = user
var/destroyed_components = FALSE
var/list/repairable_components = list()
for(var/target_component in target_components)
var/datum/robot_component/C = R.components[target_component]
if(!C)
continue
if(istype(C.wrapped, /obj/item/broken_device))
destroyed_components = TRUE
else if (C.brute_damage != 0 || C.electronics_damage != 0)
repairable_components += C
if(!repairable_components.len && destroyed_components)
to_chat(R, span_warning("Repair system initialization failed. Can't repair destroyed [target_components.len == 1 ? "[R.components[target_components[1]]]'s" : "component's"] plating or wiring."))
return
if(!repairable_components.len)
to_chat(R, span_warning("No brute or burn damage detected [target_components.len == 1 ? "in [R.components[target_components[1]]]" : ""]."))
return
if(destroyed_components)
to_chat(R, span_warning("WARNING! Destroyed modules detected. Those can not be repaired!"))
icon_state = active_icon
update_icon()
repairing = TRUE
for(var/datum/robot_component/C in repairable_components)
to_chat(R, span_notice("Repair system initializated. Repairing plating and wiring of [C]."))
src.self_repair(R, C, repair_time, repair_amount)
repairing = FALSE
icon_state = disabled_icon
update_icon()
/obj/item/self_repair_system/proc/self_repair(mob/living/silicon/robot/R, datum/robot_component/C, var/tick_delay, var/heal_per_tick)
if(!C || !R.cell)
return
if(C.brute_damage == 0 && C.electronics_damage == 0)
to_chat(R, span_notice("Repair of [C] completed."))
return
if(!R.use_direct_power(power_tick, 500)) //We don't want to drain ourselves too far down during exploration
to_chat(R, span_warning("Not enough power to initialize the repair system."))
return
if(do_after(R, tick_delay))
if(!C)
return
C.brute_damage -= min(C.brute_damage, heal_per_tick)
C.electronics_damage -= min(C.electronics_damage, heal_per_tick)
R.updatehealth()
src.self_repair(R, C, tick_delay, heal_per_tick)
// To repair multiple modules
/obj/item/self_repair_system/advanced
name = "self repair system"
desc = "A nanite control system to repair damaged components while not moving. Destroyed components can't be restored."
target_components = list("actuator", "radio", "power cell", "diagnosis unit", "camera", "comms", "armour")
power_tick = 10
repair_time = 15
repair_amount = 3
// Robot Weapons
/obj/item/gun/energy/robotic/flare
name = "flare gun"
desc = "A flare-gun"
projectile_type = /obj/item/projectile/energy/flash/flare
fire_sound = 'sound/weapons/tablehit1.ogg'
icon = 'icons/obj/gun.dmi'
icon_state = "taser"
charge_cost = 480
borg_flags = COUNTS_AS_ROBOT_GUN | COUNTS_AS_ROBOT_TASER
/obj/item/gun/energy/robotic/smallmedigun
name = "borg directed restoration system"
desc = "An adapted version of the BL-3 'Phoenix, for expiremental useage in borgs."
projectile_type = /obj/item/projectile/beam/medical_cell/borg
accept_cell_type = /obj/item/cell/device
cell_type = /obj/item/cell/device/weapon
charge_cost = 600
fire_delay = 6
force = 5
icon_state = "medbeam"
icon = 'icons/obj/gun_vr.dmi'
accuracy = 100
fire_sound = 'sound/weapons/eluger.ogg'
self_recharge = 1
use_external_power = 1
/obj/item/projectile/beam/medical_cell/borg
range = 4
/obj/item/projectile/beam/medical_cell/borg/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
if(target.stat != DEAD)
target.adjustBruteLoss(-3.75)
target.adjustFireLoss(-3.75)
else
return 1
/obj/item/melee/robotic/blade/explotailspear
name = "energy tail"
desc = "A glowing tail spear with a moderate range. It appears to be extremely sharp."
force = 45
armor_penetration = 25 //30 to try and make it not useless against armored mobs but not fully nullify it.
reach = 3
projectile_parry_chance = 15.
/obj/item/melee/robotic/jaws/big/explojaws
name = "explo jaws"
desc = "Highly lethal jaws for close range combat."
force = 60
armor_penetration = 25 //To try and make it not useless against armored mobs but not fully nullify it
projectile_parry_chance = 15
/obj/item/gun/energy/robotic/phasegun
name = "EW26 Artemis Mounted"
desc = "The RayZar EW26 Artemis, also known as the 'phase carbine', is a downsized energy-based weapon specifically designed for use against wildlife. This one has a safety interlock that prevents firing while in proximity to the facility."
description_fluff = "RayZar is Ward-Takahashis main consumer weapons brand, known for producing and licensing a wide variety of specialist energy weapons of various types and quality primarily for the civilian market."
icon = 'icons/obj/gun.dmi'
icon_state = "phasecarbine"
charge_cost = 160
recharge_time = 16
projectile_type = /obj/item/projectile/energy/phase
use_external_power = 1
self_recharge = 1
borg_flags = COUNTS_AS_ROBOT_GUN | COUNTS_AS_ROBOT_LASER

View File

@@ -832,19 +832,6 @@
return
..() //CHOMPEdit End
//CHOMPAdd START
/obj/item/dogborg/sleeper/command //Command borg belly //CHOMP addition
name = "Bluespace Filing Belly"
desc = "A mounted bluespace storage unit for carrying paperwork"
icon = 'modular_chomp/icons/mob/dogborg_ch.dmi'
icon_state = "sleeperd"
injection_chems = null
compactor = TRUE
recycles = FALSE
max_item_count = 25
medsensor = FALSE
//CHOMP addition end
/obj/item/dogborg/sleeper/compactor/brewer
name = "Brew Belly"
desc = "A mounted drunk tank unit with fuel processor, for putting away particularly rowdy patrons."
@@ -876,13 +863,6 @@
var/units = round(patient.reagents.get_reagent_amount(chem))
to_chat(hound, span_notice("Injecting [units] unit\s into occupant.")) //If they were immersed, the reagents wouldn't leave with them.
/obj/item/dogborg/sleeper/compactor/honkborg
name = "Jiggles Von Hungertron"
desc = "You've heard of Giggles Von Honkerton for the back, now get ready for Jiggles Von Hungertron for the front."
icon = 'modular_chomp/icons/mob/dogborg_ch.dmi'
icon_state = "clowngut"
recycles = FALSE
//CHOMP Addition end
/obj/item/dogborg/sleeper/K9/ert
@@ -927,4 +907,30 @@
max_item_count = 35
digest_multiplier = 3
/obj/item/dogborg/sleeper/command //Command borg belly
name = "Bluespace Filing Belly"
desc = "A mounted bluespace storage unit for carrying paperwork"
icon_state = "sleeperd"
injection_chems = null
compactor = TRUE
recycles = FALSE
max_item_count = 25
medsensor = FALSE
/obj/item/dogborg/sleeper/compactor/honkborg
name = "Jiggles Von Hungertron"
desc = "You've heard of Giggles Von Honkerton for the back, now get ready for Jiggles Von Hungertron for the front."
icon_state = "clowngut"
recycles = FALSE
/obj/item/dogborg/sleeper/exploration
name = "Store-Belly"
desc = "Equipment for a ExploreHound unit. A mounted portable-storage device that holds supplies/person."
icon_state = "sleeperlost"
injection_chems = list(REAGENT_ID_INAPROVALINE) // Only to stabilize during extractions
compactor = TRUE
max_item_count = 4
medsensor = FALSE
recycles = TRUE
#undef SLEEPER_INJECT_COST

View File

@@ -26,7 +26,7 @@
var/crisis //Admin-settable for combat module use.
var/crisis_override = 0
var/integrated_light_power = 6
var/robotdecal_on = 0
var/list/robotdecal_on = list()
var/datum/wires/robot/wires
can_be_antagged = TRUE
@@ -457,8 +457,29 @@
/mob/living/silicon/robot/verb/toggle_robot_decals() // loads overlay UNDER lights.
set category = "Abilities.Silicon"
set name = "Toggle extras"
robotdecal_on = !robotdecal_on
to_chat(src, span_filter_notice("You [robotdecal_on ? "enable" : "disable"] your extra apperances."))
if(!sprite_datum)
return
if(!LAZYLEN(sprite_datum.sprite_decals))
to_chat(src, span_warning("This module does not support decals."))
return
var/extra_message = "Enabled decals:\n"
for(var/decal in robotdecal_on)
extra_message += decal + "\n"
var/decal_to_toggle = tgui_input_list(src, "Please select which decal you want to toggle\n[extra_message]", "Decal Toggle", sprite_datum.sprite_decals)
if(!decal_to_toggle)
return
decal_to_toggle = lowertext(decal_to_toggle)
if(robotdecal_on.Find(decal_to_toggle))
robotdecal_on -= decal_to_toggle
to_chat(src, span_filter_notice("You disable your \"[decal_to_toggle]\" extra apperances."))
else
robotdecal_on += decal_to_toggle
to_chat(src, span_filter_notice("You enable your \"[decal_to_toggle]\" extra apperances."))
update_icon()
/mob/living/silicon/robot/verb/spark_plug() //So you can still sparkle on demand without violence.
@@ -977,9 +998,10 @@
if(eyes_overlay)
add_overlay(eyes_overlay)
if(robotdecal_on && sprite_datum.has_robotdecal_sprites)
if(robotdecal_on.len && LAZYLEN(sprite_datum.sprite_decals))
if(!shell || deployed) // Shell borgs that are not deployed will have no eyes.
var/robotdecal_overlay = sprite_datum.get_robotdecal_overlay(src)
for(var/enabled_decal in robotdecal_on)
var/robotdecal_overlay = sprite_datum.get_robotdecal_overlay(src, enabled_decal)
if(robotdecal_overlay)
add_overlay(robotdecal_overlay)

View File

@@ -34,3 +34,29 @@
if(isliving(contents))
vore_light_states[b_class] = 1
return
/mob/living/silicon/robot/vs_animate(var/belly_class)
if(!sprite_datum.has_vore_struggle_sprite)
return
if(belly_class == "sleeper" && sleeper_state == 0 && vore_selected.silicon_belly_overlay_preference == "Sleeper")
return
var/vs_fullness = vore_fullness_ex[belly_class]
if(resting)
cut_overlay(sprite_datum.get_belly_resting_overlay(src, vs_fullness, belly_class))
add_overlay("[sprite_datum.get_belly_resting_overlay(src, vs_fullness, belly_class)]-struggle")
else
cut_overlay(sprite_datum.get_belly_overlay(src, vs_fullness, belly_class))
add_overlay("[sprite_datum.get_belly_overlay(src, vs_fullness, belly_class)]-struggle")
addtimer(CALLBACK(src, PROC_REF(end_vs_animate), belly_class), 1.2 SECONDS)
/mob/living/silicon/robot/proc/end_vs_animate(var/belly_class)
var/vs_fullness = vore_fullness_ex[belly_class]
if(resting)
cut_overlay("[sprite_datum.get_belly_resting_overlay(src, vs_fullness, belly_class)]-struggle")
else
cut_overlay("[sprite_datum.get_belly_overlay(src, vs_fullness, belly_class)]-struggle")
if(vs_fullness > 0)
if(resting)
add_overlay(sprite_datum.get_belly_resting_overlay(src, vs_fullness, belly_class))
else
add_overlay(sprite_datum.get_belly_overlay(src, vs_fullness, belly_class))

View File

@@ -1,45 +0,0 @@
//Modular honk borg
//This restructures how borg additions are done to make them sane/modular/maintainable
//Also makes it easier to make new borgs
//Add ourselves to the borg list
/hook/startup/proc/Modular_Borg_init_Honk()
robot_modules["Clown"] = /obj/item/robot_module/robot/clerical/honkborg
robot_module_types += "Clown" //Add ourselves to global
return 1
/obj/item/robot_module/robot/clerical/honkborg
name = "clown robot module"
channels = list("Service" = 1,
"Entertainment" = 1)
pto_type = PTO_CIVILIAN
can_be_pushed = 0
/obj/item/robot_module/robot/clerical/honkborg/create_equipment(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/gripper/service(src)
src.modules += new /obj/item/reagent_containers/glass/bucket(src)
src.modules += new /obj/item/material/minihoe(src)
src.modules += new /obj/item/analyzer/plant_analyzer(src)
src.modules += new /obj/item/storage/bag/serviceborg(src)
src.modules += new /obj/item/robot_harvester(src)
src.modules += new /obj/item/multitool(src)
src.modules += new /obj/item/dogborg/pounce(src)
src.modules += new /obj/item/bikehorn(src)
src.modules += new /obj/item/gun/launcher/confetti_cannon/robot(src)
var/obj/item/rsf/M = new /obj/item/rsf(src)
M.stored_matter = 30
src.modules += M
src.modules += new /obj/item/reagent_containers/dropper/industrial(src)
var/obj/item/flame/lighter/zippo/L = new /obj/item/flame/lighter/zippo(src)
L.lit = 1
src.modules += L
src.modules += new /obj/item/tray/robotray(src)
src.modules += new /obj/item/reagent_containers/borghypo/service(src)
var/obj/item/dogborg/sleeper/compactor/honkborg/B = new /obj/item/dogborg/sleeper/compactor/honkborg(src)
src.modules += B
..()

View File

@@ -1,63 +0,0 @@
//Modular command borg
//This restructures how borg additions are done to make them sane/modular/maintainable
//Also makes it easier to make new borgs
//Add ourselves to the borg list
/hook/startup/proc/Modular_Borg_init_Unity()
robot_modules["Command"] = /obj/item/robot_module/robot/chound //Add to module array
robot_module_types += "Command" //Add ourselves to global
return 1
//Create our list of known languages.
/obj/item/robot_module/robot/chound
languages = list(
LANGUAGE_SOL_COMMON = 1,
LANGUAGE_TRADEBAND = 1,
LANGUAGE_UNATHI = 1,
LANGUAGE_SIIK = 1,
LANGUAGE_SKRELLIAN = 1,
LANGUAGE_ROOTLOCAL = 0,
LANGUAGE_GUTTER = 0,
LANGUAGE_SCHECHI = 1,
LANGUAGE_EAL = 1,
LANGUAGE_SIGN = 0,
LANGUAGE_BIRDSONG = 1,
LANGUAGE_SAGARU = 1,
LANGUAGE_CANILUNZT = 1,
LANGUAGE_ECUREUILIAN= 1,
LANGUAGE_DAEMON = 1,
LANGUAGE_ENOCHIAN = 1,
LANGUAGE_DRUDAKAR = 1,
LANGUAGE_TAVAN = 1
)
//Build our Module
/obj/item/robot_module/robot/chound
name = "command robot module"
channels = list(
"Medical" = 1,
"Engineering" = 1,
"Security" = 1,
"Service" = 1,
"Supply" = 0,
"Science" = 1,
"Command" = 1,
"Explorer" = 0
)
pto_type = PTO_CIVILIAN
can_be_pushed = 0
/obj/item/robot_module/robot/chound/create_equipment(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/pen/robopen(src)
src.modules += new /obj/item/form_printer(src)
src.modules += new /obj/item/gripper/paperwork(src)
src.modules += new /obj/item/hand_labeler(src)
src.modules += new /obj/item/stamp(src)
src.modules += new /obj/item/stamp/denied(src)
src.modules += new /obj/item/taskmanager(src)
src.emag += new /obj/item/stamp/chameleon(src)
src.emag += new /obj/item/pen/chameleon(src)
src.modules += new /obj/item/dogborg/sleeper/command(src)
src.emag += new /obj/item/dogborg/pounce(src)
..()

View File

@@ -1,61 +0,0 @@
//Lets make this shit more sane-shark
//Modular Exploration borg
//This restructures how borg additions are done to make them sane/modular/maintainable
//Also makes it easier to make new borgs
//CHOMPedit: Moving this all to a modular file
/*
/hook/startup/proc/Modular_Borg_init_Exploration()
robot_modules["Exploration"] = /obj/item/robot_module/robot/exploration //add to array
robot_module_types += "Exploration" //Add to global list
return 1
//Explo doggos
/obj/item/robot_module/robot/exploration
name = "exploration robot module"
channels = list("Exploration" = 1)
languages = list(
LANGUAGE_SOL_COMMON = 1,
LANGUAGE_UNATHI = 1,
LANGUAGE_SIIK = 1,
LANGUAGE_AKHANI = 1,
LANGUAGE_SKRELLIAN = 1,
LANGUAGE_SKRELLIANFAR = 0,
LANGUAGE_ROOTLOCAL = 0,
LANGUAGE_TRADEBAND = 1,
LANGUAGE_GUTTER = 0,
LANGUAGE_SCHECHI = 1,
LANGUAGE_EAL = 1,
LANGUAGE_TERMINUS = 1,
LANGUAGE_SIGN = 0
)
/obj/item/robot_module/robot/exploration
can_be_pushed = 0
/obj/item/robot_module/robot/exploration/New(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/dogborg/sleeper/exploration(src)
src.modules += new /obj/item/gun/energy/robotic/phasegun(src)
src.modules += new /obj/item/cataloguer(src)
src.modules += new /obj/item/roller_holder(src)
src.modules += new /obj/item/gun/energy/taser/mounted/cyborg/flare(src)
src.emag += new /obj/item/dogborg/pounce(src)
..()
/obj/item/dogborg/sleeper/exploration //No need to inherit from the brig one, we cna direclty make a proper new one
name = "Store-Belly"
desc = "Equipment for a ExploreHound unit. A mounted portable-storage device that holds supplies/person."
icon_state = "sleeperlost"
injection_chems = null
stabilizer = TRUE
compactor = TRUE
max_item_count = 4
medsensor = FALSE
recycles = TRUE
/obj/item/gun/energy/taser/mounted/cyborg/flare
name = "flare gun"
desc = "A flare-gun"
projectile_type = /obj/item/projectile/energy/flash/flare
fire_sound = 'sound/weapons/tablehit1.ogg'
*/

View File

@@ -1,58 +0,0 @@
//Modular Standard borg hound edition
//This restructures how borg additions are done to make them sane/modular/maintainable
//Also makes it easier to make new borgs
//INCOMPLETE and not ready, no sprites other than tall and basically useless, also lacking a belly
//Add ourselves to the borg list
/hook/startup/proc/Modular_Borg_init_standardhound()
//robot_modules["Honk-Hound"] = /obj/item/robot_module/robot/clerical/honkborg - done in station_vr modular chomp for ordering reasons
robot_module_types += "Standard-Hound" //Add ourselves to global
return 1
/obj/item/robot_module/robot/standard/hound
name = "Standard-Hound"
sprites = list(
"MEKA" = list(SKIN_ICON_STATE = "mekastandard", SKIN_ICON = 'modular_chomp/icons/mob/tallborg/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64),
"NIKO" = list(SKIN_ICON_STATE = "mmekastandard", SKIN_ICON = 'modular_chomp/icons/mob/tallborg/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64),
"NIKA" = list(SKIN_ICON_STATE = "fmekastandard", SKIN_ICON = 'modular_chomp/icons/mob/tallborg/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64),
"K4T" = list(SKIN_ICON_STATE = "k4tclown", SKIN_ICON = 'modular_chomp/icons/mob/tallborg/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64)
)
can_be_pushed = 0
/obj/item/robot_module/robot/standard/hound/New(var/mob/living/silicon/robot/R)
..()
src.modules += new /obj/item/melee/baton/loaded(src)
src.modules += new /obj/item/tool/wrench/cyborg(src)
src.modules += new /obj/item/healthanalyzer(src)
src.emag += new /obj/item/melee/energy/sword(src)
var/datum/matter_synth/water = new /datum/matter_synth(500)
water.name = "Water reserves"
water.recharge_rate = 10
water.max_energy = 1000
R.water_res = water
synths += water
var/obj/item/dogborg/tongue/T = new /obj/item/dogborg/tongue(src)
T.water = water
src.modules += T
R.icon = 'modular_chomp/icons/mob/widerobot_ch.dmi'
R.wideborg_dept = 'modular_chomp/icons/mob/widerobot_ch.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.vore_capacity = 1
R.vore_capacity_ex = list("stomach" = 1)
R.wideborg = TRUE
add_verb(R,/mob/living/silicon/robot/proc/ex_reserve_refill) //CHOMPEdit TGPanel
add_verb(R,/mob/living/silicon/robot/proc/robot_mount) //CHOMPEdit TGPanel
add_verb(R,/mob/living/proc/toggle_rider_reins) //CHOMPEdit TGPanel
add_verb(R,/mob/living/proc/shred_limb) //CHOMPEdit TGPanel
add_verb(R,/mob/living/silicon/robot/proc/rest_style) //CHOMPEdit TGPanel
..()

View File

@@ -2,12 +2,15 @@ var/global/list/robot_modules = list(
"Standard" = /obj/item/robot_module/robot/standard,
"Service" = /obj/item/robot_module/robot/clerical/butler,
"Clerical" = /obj/item/robot_module/robot/clerical/general,
"Clown" = /obj/item/robot_module/robot/clerical/honkborg,
"Command" = /obj/item/robot_module/robot/chound,
"Research" = /obj/item/robot_module/robot/research,
"Miner" = /obj/item/robot_module/robot/miner,
"Crisis" = /obj/item/robot_module/robot/medical/crisis,
// "Surgeon" = /obj/item/robot_module/robot/medical/surgeon, // CHOMPedit: Surgeon module removal.
"Security" = /obj/item/robot_module/robot/security/general,
"Combat" = /obj/item/robot_module/robot/security/combat,
"Exploration" = /obj/item/robot_module/robot/exploration,
"Engineering" = /obj/item/robot_module/robot/engineering,
"Janitor" = /obj/item/robot_module/robot/janitor,
"Gravekeeper" = /obj/item/robot_module/robot/gravekeeper,
@@ -252,7 +255,10 @@ var/global/list/robot_modules = list(
supported_upgrades = list(/obj/item/borg/upgrade/restricted/bellycapupgrade)
/* CHOMPedit start: Removal of Surgeon module. *
//This is a constant back and forth debate. 11 years ago, the 'medical' borg was split into surgery and crisis.
//Two years ago(?), they were combined into Crisis elsewhere and the idea seems to be well appreciated.
//However, given this seems as though it will remain a hot topic for as long as SS13 exists, we are going to leave the surgeon module here in the event that we split them. Again.
//This also goes for the sprite datums. It's be a lot of work to 'clear' them of having surgery in their path just to have to split them again in 2-3 years.
/obj/item/robot_module/robot/medical/surgeon
name = "surgeon robot module"
@@ -340,7 +346,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/gripper/no_use/organ(src)
src.modules += new /obj/item/gripper/medical(src)
src.modules += new /obj/item/shockpaddles/robot(src)
// CHOMPedit start: Combining Surgeon and Crisis.
//Surgeon Modules below
src.modules += new /obj/item/autopsy_scanner(src)
src.modules += new /obj/item/surgical/scalpel/cyborg(src)
src.modules += new /obj/item/surgical/hemostat/cyborg(src)
@@ -352,26 +358,24 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/surgical/circular_saw/cyborg(src)
src.modules += new /obj/item/surgical/surgicaldrill/cyborg(src)
src.modules += new /obj/item/surgical/bioregen/cyborg(src)
// CHOMPedit end: Combining Surgeon and Crisis.
//Surgeon Modules End
src.modules += new /obj/item/inflatable_dispenser/robot(src)
src.modules += new /obj/item/holosign_creator/medical(src) //CHOMPAdd
src.modules += new /obj/item/holosign_creator/medical(src) //Re-enable after Guti's PR.
var/obj/item/reagent_containers/spray/PS = new /obj/item/reagent_containers/spray(src)
src.emag += PS
PS.reagents.add_reagent(REAGENT_ID_PACID, 250)
PS.name = "Polyacid spray"
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(30000) // CHOMPedit: Increased capacity.
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(30000)
synths += medicine
var/obj/item/stack/medical/advanced/clotting/C = new (src) // CHOMPedit: Clotting kit from medhound.
var/obj/item/stack/medical/advanced/clotting/C = new (src)
var/obj/item/stack/medical/advanced/ointment/O = new /obj/item/stack/medical/advanced/ointment(src)
var/obj/item/stack/medical/advanced/bruise_pack/B = new /obj/item/stack/medical/advanced/bruise_pack(src)
var/obj/item/stack/medical/splint/S = new /obj/item/stack/medical/splint(src)
// CHOMPedit start: Clotting kit from medhound.
C.uses_charge = 1
C.charge_costs = list(5000)
C.synths = list(medicine)
// CHOMPedit end: Clotting kit from medhound.
O.uses_charge = 1
O.charge_costs = list(1000)
O.synths = list(medicine)
@@ -384,7 +388,7 @@ var/global/list/robot_modules = list(
src.modules += O
src.modules += B
src.modules += S
src.modules += C //CHOMPEdit - AND ACTUALLY ADD IT TO THE MODULES LIST
src.modules += C
src.modules += new /obj/item/dogborg/sleeper(src)
src.emag += new /obj/item/dogborg/pounce(src) //Pounce
@@ -697,6 +701,42 @@ var/global/list/robot_modules = list(
if(PB)
PB.reagents.add_reagent(REAGENT_ID_BEER2, 2 * amount)
/obj/item/robot_module/robot/clerical/honkborg
name = "clown robot module"
channels = list("Service" = 1,
"Entertainment" = 1)
pto_type = PTO_CIVILIAN
can_be_pushed = 0
/obj/item/robot_module/robot/clerical/honkborg/create_equipment(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/gripper/service(src)
src.modules += new /obj/item/reagent_containers/glass/bucket(src)
src.modules += new /obj/item/material/minihoe(src)
src.modules += new /obj/item/analyzer/plant_analyzer(src)
src.modules += new /obj/item/storage/bag/serviceborg(src)
src.modules += new /obj/item/robot_harvester(src)
src.modules += new /obj/item/multitool(src)
src.modules += new /obj/item/dogborg/pounce(src)
src.modules += new /obj/item/bikehorn(src)
src.modules += new /obj/item/gun/launcher/confetti_cannon/robot(src)
var/obj/item/rsf/M = new /obj/item/rsf(src)
M.stored_matter = 30
src.modules += M
src.modules += new /obj/item/reagent_containers/dropper/industrial(src)
var/obj/item/flame/lighter/zippo/L = new /obj/item/flame/lighter/zippo(src)
L.lit = 1
src.modules += L
src.modules += new /obj/item/tray/robotray(src)
src.modules += new /obj/item/reagent_containers/borghypo/service(src)
var/obj/item/dogborg/sleeper/compactor/honkborg/B = new /obj/item/dogborg/sleeper/compactor/honkborg(src)
src.modules += B
..()
/obj/item/robot_module/robot/clerical/general
name = "clerical robot module"

View File

@@ -10,11 +10,11 @@
var/has_eye_sprites = TRUE
var/has_eye_light_sprites = FALSE
var/has_robotdecal_sprites = FALSE
var/has_custom_open_sprites = FALSE
var/has_vore_belly_sprites = FALSE
var/has_vore_belly_resting_sprites = FALSE
var/has_sleeper_light_indicator = FALSE //Moved here because there's no reason lights should be limited to just medical borgs. Or redefined every time they ARE used.
var/has_vore_struggle_sprite = FALSE
var/max_belly_size = 1 //If larger bellies are made, set this to the value of the largest size
var/has_rest_sprites = FALSE
var/list/rest_sprite_options
@@ -32,6 +32,7 @@
var/whitelist_charname
var/list/belly_light_list = list() // Support multiple sleepers with r/g light "sleeper"
var/list/belly_capacity_list = list() //Support multiple bellies with multiple sizes, default: "sleeper" = 1
var/list/sprite_decals = list() // Allow extra decals
/// Determines if the borg has the proper flags to show an overlay.
/datum/robot_sprite/proc/sprite_flag_check(var/flag_to_check)
@@ -132,11 +133,18 @@
else
return
/datum/robot_sprite/proc/get_robotdecal_overlay(var/mob/living/silicon/robot/ourborg)
if(!(ourborg.resting && has_robotdecal_sprites))
return "[sprite_icon_state]-decals"
/datum/robot_sprite/proc/get_robotdecal_overlay(var/mob/living/silicon/robot/ourborg, var/type)
if(LAZYLEN(sprite_decals))
if(!ourborg.resting)
return "[sprite_icon_state]-[type]"
switch(ourborg.rest_style)
if("Sit")
return "[sprite_icon_state]-[type]-sit"
if("Bellyup")
return "[sprite_icon_state]-[type]-bellyup"
else
return
return "[sprite_icon_state]-[type]-rest"
/datum/robot_sprite/proc/get_rest_sprite(var/mob/living/silicon/robot/ourborg)
if(!(ourborg.rest_style in rest_sprite_options))

View File

@@ -42,9 +42,10 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_cargo.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2, "throat" =2)
belly_capacity_list = list("sleeper" = 2)
sprite_flags = ROBOT_HAS_SHIELD_SPRITE | ROBOT_HAS_GUN_SPRITE
/// Engineering
@@ -56,6 +57,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_engi.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -71,6 +73,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_jani.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -85,6 +88,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_medicat.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -100,6 +104,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_sci.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -114,6 +119,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_sec.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -128,6 +134,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
sprite_icon = 'icons/mob/robot/catborgs/departmental/small/kittyborg_service.dmi'
rest_sprite_options = list("Default", "Bellyup", "Sit")
belly_capacity_list = list("sleeper" = 2)
@@ -228,7 +235,6 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_robotdecal_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)
@@ -252,7 +258,7 @@
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = FALSE
has_vore_belly_resting_sprites = TRUE
has_robotdecal_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.
// There is only one version of this borg, so it gets all the departments.

View File

@@ -68,13 +68,15 @@
sprite_icon_state = "noble"
has_custom_open_sprites = TRUE
/datum/robot_sprite/civilian/worm
name = "W02M"
sprite_icon_state = "worm-service" //CHOMPEdit
has_custom_open_sprites = TRUE
sprite_icon = 'modular_chomp/icons/mob/wormborg.dmi' //CHOMPEdit
has_vore_belly_sprites = TRUE //CHOMPEdit
has_dead_sprite = TRUE //CHOMPEdit
sprite_icon_state = "worm-service"
sprite_icon = 'icons/mob/robot/wormborg.dmi'
has_dead_sprite_overlay = FALSE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
has_dead_sprite = TRUE
/datum/robot_sprite/civilian/uptall
name = "Feminine Humanoid"
@@ -311,23 +313,30 @@
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/service/dullahanv3
sprite_icon = 'icons/mob/tallborg/dullahans64x64.dmi'
//named v3 to avoid conflicts with downstream
/datum/robot_sprite/dogborg/tall/service/dullahan
name = "Dullahan"
sprite_icon_state = "dullahanserv"
sprite_icon = 'icons/mob/robot/dullahan/v1/dullahan_serv.dmi'
rest_sprite_options = list("Default", "Sit")
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
pixel_x = 0
/datum/robot_sprite/dogborg/tall/service/dullahanv3/basic
name = "Dullahan service v3"
/datum/robot_sprite/dogborg/tall/service/dullahan/servicealt
name = "Dullahan v2"
sprite_icon_state = "dullahanserv_alt"
/datum/robot_sprite/dogborg/tall/service/dullahan/servicealt2
name = "Dullahan v3"
sprite_icon = 'icons/mob/robot/dullahan/v3/service.dmi'
sprite_icon_state = "dullahanservice"
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
sprite_decals = list("decals")
/datum/robot_sprite/dogborg/tall/service/dullahanv3/barista
name = "Dullahan matcha v3"
/datum/robot_sprite/dogborg/tall/service/dullahan/servicealt3
name = "Dullahan v4 matcha"
sprite_icon = 'icons/mob/robot/dullahan/v3/barista.dmi'
sprite_icon_state = "dullahanbarista"
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
sprite_decals = list("decals")
// Clerical
@@ -404,3 +413,76 @@
// None yet
*/
/datum/robot_sprite/dogborg/clown
module_type = "Clown"
sprite_icon = 'icons/mob/robot/widerobot/widerobot.dmi'
/datum/robot_sprite/dogborg/clown/vale
name = "Honkhound V2"
sprite_icon_state = "honkborg"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/tall/clown
module_type = "Clown"
sprite_icon = 'icons/mob/robot/tallrobot/tallrobots.dmi'
pixel_x = 0
/datum/robot_sprite/dogborg/tall/clown/k4t
name = "K4T"
sprite_icon_state = "k4tclown"
has_eye_light_sprites = TRUE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/clown/dullahan/clown
name = "Dullahan Clown"
sprite_icon = 'icons/mob/robot/dullahan/v1/dullahan_clown.dmi'
sprite_icon_state = "dullahanclown"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
pixel_x = 0
/datum/robot_sprite/dogborg/clown/stoat
name = "ST-04t"
sprite_icon = 'icons/mob/robot/stoatborg.dmi'
sprite_icon_state = "stoatclown"
has_eye_light_sprites = TRUE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/service/valech
name = "ServicehoundV2 - Alt"
sprite_icon = 'icons/mob/robot/widerobot/widerobot.dmi'
sprite_icon_state = "servborg"
rest_sprite_options = list("Default")
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/service/cat
name = "Cat"
sprite_icon = 'icons/mob/robot/catborg_variant.dmi'
sprite_icon_state = "vixserv"
has_vore_belly_resting_sprites = TRUE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/tall/service/mekaserve_alt
sprite_icon = 'icons/mob/robot/tallrobot/tallrobots.dmi'
name = "MEKA Alt"
pixel_x = 0
sprite_icon_state = "mekaserve_alt"
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/service/smolraptorservicesprite
sprite_icon = 'icons/mob/robot/smallraptors/smolraptor_serv.dmi'
/datum/robot_sprite/dogborg/service/smolraptorservicesprite/smolraptorserv
name = "Small Raptor"
sprite_icon_state = "smolraptor"
has_dead_sprite_overlay = FALSE
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")

View File

@@ -49,12 +49,15 @@
/datum/robot_sprite/combat/worm
name = "W02M"
sprite_icon_state = "worm-combat" //CHOMPEdit
sprite_icon_state = "worm-combat"
has_custom_open_sprites = TRUE
sprite_flags = ROBOT_HAS_SHIELD_SPRITE
sprite_icon = 'modular_chomp/icons/mob/wormborg.dmi' //CHOMPEdit
has_vore_belly_sprites = TRUE //CHOMPEdit
has_dead_sprite = TRUE //CHOMPEdit
sprite_icon = 'icons/mob/robot/wormborg.dmi'
has_dead_sprite_overlay = FALSE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
has_dead_sprite = TRUE
/datum/robot_sprite/combat/uptall
name = "Feminine Humanoid"
@@ -150,3 +153,59 @@
return
else
return ..()
/datum/robot_sprite/dogborg/tall/combat/tall
name = "MEKA"
sprite_icon_state = "mekasyndi"
module_type = "Combat"
sprite_icon = 'icons/mob/robot/tallrobot/tallrobots.dmi'
has_vore_belly_sprites = TRUE
pixel_x = 0
/datum/robot_sprite/dogborg/tall/combat/tall/mmeka
name = "NIKO"
sprite_icon_state = "mmekasyndi"
has_vore_belly_sprites = TRUE
/datum/robot_sprite/dogborg/tall/combat/tall/fmeka
name = "NIKA"
sprite_icon_state = "fmekasyndi"
has_vore_belly_sprites = TRUE
/datum/robot_sprite/dogborg/tall/combat/tall/k4t
name = "K4T"
sprite_icon_state = "k4tsyndi"
has_vore_belly_sprites = FALSE
//Using our own category wide here not to interfere with upstream in case they add wide sprites under just dogborg.
/datum/robot_sprite/dogborg/wide/combat
module_type = "Combat"
has_custom_equipment_sprites = TRUE
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"
CBB.desc = "A high frequency blade attached to the end of a cyborg's tail. It appears to be extremely sharp."
var/obj/item/melee/robotic/borg_combat_shocker/BCS = locate() in module.modules
if(BCS)
BCS.name = "combat jaws"
BCS.desc = "Shockingly chompy!"
BCS.icon_state = "ertjaws"
BCS.hitsound = 'sound/weapons/bite.ogg'
BCS.attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
BCS.dogborg = TRUE
/datum/robot_sprite/dogborg/wide/combat/blade
sprite_icon = 'icons/mob/robot/widerobot/widerobot.dmi'
name = "Blade"
sprite_icon_state = "blade"
sprite_hud_icon_state = "ert"
rest_sprite_options = list()
sprite_flags = ROBOT_HAS_LASER_SPRITE | ROBOT_HAS_DISABLER_SPRITE | ROBOT_HAS_DAGGER_SPRITE

View File

@@ -0,0 +1,113 @@
/obj/item/robot_module/robot/chound
languages = list(
LANGUAGE_SOL_COMMON = 1,
LANGUAGE_TRADEBAND = 1,
LANGUAGE_UNATHI = 1,
LANGUAGE_SIIK = 1,
LANGUAGE_SKRELLIAN = 1,
LANGUAGE_ROOTLOCAL = 0,
LANGUAGE_GUTTER = 0,
LANGUAGE_SCHECHI = 1,
LANGUAGE_EAL = 1,
LANGUAGE_SIGN = 0,
LANGUAGE_BIRDSONG = 1,
LANGUAGE_SAGARU = 1,
LANGUAGE_CANILUNZT = 1,
LANGUAGE_ECUREUILIAN= 1,
LANGUAGE_DAEMON = 1,
LANGUAGE_ENOCHIAN = 1,
LANGUAGE_DRUDAKAR = 1,
LANGUAGE_TAVAN = 1
)
//Build our Module
/obj/item/robot_module/robot/chound
name = "command robot module"
channels = list(
"Medical" = 1,
"Engineering" = 1,
"Security" = 1,
"Service" = 1,
"Supply" = 0,
"Science" = 1,
"Command" = 1,
"Explorer" = 0
)
pto_type = PTO_CIVILIAN
can_be_pushed = 0
/obj/item/robot_module/robot/chound/create_equipment(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/pen/robopen(src)
src.modules += new /obj/item/form_printer(src)
src.modules += new /obj/item/gripper/paperwork(src)
src.modules += new /obj/item/hand_labeler(src)
src.modules += new /obj/item/stamp(src)
src.modules += new /obj/item/stamp/denied(src)
src.modules += new /obj/item/taskmanager(src) //Needs to be ported over. //CHOMPEDIT ENABLE
src.emag += new /obj/item/stamp/chameleon(src)
src.emag += new /obj/item/pen/chameleon(src)
src.modules += new /obj/item/dogborg/sleeper/command(src)
src.emag += new /obj/item/dogborg/pounce(src)
..()
/datum/robot_sprite/dogborg/command
name = "Commandhound V2"
sprite_icon_state = "kcom"
has_eye_light_sprites = TRUE
module_type = "Command"
sprite_icon = 'icons/mob/robot/widerobot/widerobot.dmi'
/datum/robot_sprite/dogborg/command/borgi
name = "Borgi"
sprite_icon_state = "borgi"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/tall/command
module_type = "Command"
sprite_icon = 'icons/mob/robot/tallrobot/tallrobots.dmi'
pixel_x = 0
/datum/robot_sprite/dogborg/raptor/command
module_type = "Command"
sprite_icon = 'icons/mob/robot/raptor.dmi'
/datum/robot_sprite/dogborg/raptor/command/raptor
name = "Raptor"
sprite_icon_state = "chraptor"
has_dead_sprite_overlay = FALSE
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/command/meka
name = "MEKA"
sprite_icon_state = "mekaunity"
has_eye_light_sprites = TRUE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/command/mmeka
name = "NIKO"
sprite_icon_state = "mmekaunity"
has_eye_light_sprites = TRUE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/command/fmeka
name = "NIKA"
sprite_icon_state = "fmekaunity"
has_eye_light_sprites = TRUE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/command/smolraptorcommand
name = "Small Raptor"
sprite_icon = 'icons/mob/robot/smallraptors/smolraptor_cc.dmi'
sprite_icon_state = "smolraptor"
has_dead_sprite_overlay = FALSE
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")

View File

@@ -105,13 +105,16 @@
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
/datum/robot_sprite/engineering/worm
name = "W02M"
sprite_icon_state = "worm-engineering" //CHOMPEdit
has_custom_open_sprites = TRUE
sprite_icon = 'modular_chomp/icons/mob/wormborg.dmi' //CHOMPEdit
has_vore_belly_sprites = TRUE //CHOMPEdit
has_dead_sprite = TRUE //CHOMPEdit
sprite_icon_state = "worm-engineering"
sprite_icon = 'icons/mob/robot/wormborg.dmi'
has_dead_sprite_overlay = FALSE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
has_dead_sprite = TRUE
/datum/robot_sprite/engineering/uptall
name = "Feminine Humanoid"
@@ -217,13 +220,38 @@
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/engineering/dullahanv3
sprite_icon = 'icons/mob/tallborg/dullahans64x64.dmi'
//named v3 to avoid conflicts with downstream
/datum/robot_sprite/dogborg/tall/engineering/dullahanv3/engineerdully
name = "Dullahan engineer v3"
sprite_icon_state = "dullahanengineer"
/datum/robot_sprite/dogborg/tall/engineering/dullahan
name = "Dullahan v1"
sprite_icon_state = "dullahaneng"
sprite_icon = 'icons/mob/robot/dullahan/v1/dullahan_eng.dmi'
rest_sprite_options = list("Default", "Sit")
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
pixel_x = 0
/datum/robot_sprite/dogborg/tall/engineering/dullahan/engineerv2
name = "Dullahan v2"
sprite_icon_state = "dullahaneng_alt"
/datum/robot_sprite/dogborg/tall/engineering/dullahan/engineerv3
name = "Dullahan v3"
sprite_icon = 'icons/mob/robot/dullahan/v3/engineer.dmi'
sprite_icon_state = "dullahanengineer"
sprite_decals = list("decals")
/datum/robot_sprite/dogborg/engineering/cat
name = "Cat"
sprite_icon = 'icons/mob/robot/catborg_variant.dmi'
sprite_icon_state = "vixengi"
has_eye_light_sprites = TRUE
has_vore_belly_resting_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/engineering/smolraptorengineeringsprite
sprite_icon = 'icons/mob/robot/smallraptors/smolraptor_eng.dmi'
name = "Small Raptor"
sprite_icon_state = "smolraptor"
has_dead_sprite_overlay = FALSE
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")

View File

@@ -38,7 +38,7 @@
sprite_hud_icon_state = "medihound"
/datum/robot_sprite/fluff/argonne/surgical
module_type = "Surgeon"
module_type = "Crisis"
sprite_icon_state = "argonne-russ-surg"
sprite_hud_icon_state = "medihound"

View File

@@ -96,11 +96,13 @@
/datum/robot_sprite/janitor/worm
name = "W02M"
sprite_icon_state = "worm-janitor" //CHOMPEdit
has_custom_open_sprites = TRUE
sprite_icon = 'modular_chomp/icons/mob/wormborg.dmi' //CHOMPEdit
has_vore_belly_sprites = TRUE //CHOMPEdit
has_dead_sprite = TRUE //CHOMPEdit
sprite_icon_state = "worm-janitor"
sprite_icon = 'icons/mob/robot/wormborg.dmi'
has_dead_sprite_overlay = FALSE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
has_dead_sprite = TRUE
/datum/robot_sprite/janitor/uptall
name = "Feminine Humanoid"
@@ -202,13 +204,48 @@
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/janitor/dullahanv3
sprite_icon = 'icons/mob/tallborg/dullahans64x64.dmi'
//named v3 to avoid conflicts with downstream
/datum/robot_sprite/dogborg/tall/janitor/dullahanv3/janitordully
name = "Dullahan janitor v3"
sprite_icon_state = "dullahanjanitor"
/datum/robot_sprite/dogborg/tall/janitor/dullahan
name = "Dullahan v1"
sprite_icon_state = "dullahanjani"
module_type = "Janitor"
sprite_icon = 'icons/mob/robot/dullahan/v1/dullahan_jani.dmi'
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
rest_sprite_options = list("Default", "Sit")
pixel_x = 0
/datum/robot_sprite/dogborg/tall/janitor/dullahan/janitoralt
name = "Dullahan v2"
sprite_icon_state = "dullahanjani_alt"
/datum/robot_sprite/dogborg/tall/janitor/dullahan/janitoralt2
name = "Dullahan v3"
sprite_icon = 'icons/mob/robot/dullahan/v3/janitor.dmi'
sprite_icon_state = "dullahanjanitor"
sprite_decals = list("decals")
/datum/robot_sprite/dogborg/janitor/cat
name = "Cat"
sprite_icon = 'icons/mob/robot/catborg_variant.dmi'
sprite_icon_state = "vixjani"
has_vore_belly_resting_sprites = TRUE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/smolraptorjanitorsprite
sprite_icon = 'icons/mob/robot/smallraptors/smolraptor_jani.dmi'
module_type = "Janitor"
name = "Small Raptor"
sprite_icon_state = "smolraptor"
has_dead_sprite_overlay = FALSE
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/janitor/possum
name = "0-P0SSm"
sprite_icon = 'icons/mob/robot/possumborg.dmi'
sprite_icon_state = "possjani"
//has_vore_belly_resting_sprites = TRUE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE

View File

@@ -73,13 +73,14 @@
sprite_icon_state = "noble"
has_custom_open_sprites = TRUE
/datum/robot_sprite/medical/worm
name = "W02M - Crisis" //CHOMPEdit
sprite_icon_state = "worm-crisis" //CHOMPEdit
has_custom_open_sprites = TRUE
sprite_icon = 'modular_chomp/icons/mob/wormborg.dmi' //CHOMPEdit
has_vore_belly_sprites = TRUE //CHOMPEdit
has_dead_sprite = TRUE //CHOMPEdit
/datum/robot_sprite/surgical/worm
name = "W02M - Surgical"
sprite_icon_state = "worm-surgeon"
sprite_icon = 'icons/mob/robot/wormborg.dmi'
has_dead_sprite_overlay = FALSE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
has_dead_sprite = TRUE
// Wide/dogborg sprites
/*
@@ -140,76 +141,77 @@
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/medical/dullahanv3
sprite_icon = 'icons/mob/tallborg/dullahans64x64.dmi'
//named v3 to avoid conflicts with downstream
/datum/robot_sprite/dogborg/tall/medical/dullahanv3/medicaldully
name = "Dullahan medical v3"
sprite_icon_state = "dullahanmedical"
/datum/robot_sprite/dogborg/tall/crisis/dullahan
name = "Dullahan"
sprite_icon_state = "dullahanmed"
module_type = "Crisis"
sprite_icon = 'icons/mob/robot/dullahan/v1/dullahan_med.dmi'
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
rest_sprite_options = list("Default", "Sit")
pixel_x = 0
/datum/robot_sprite/dogborg/tall/crisis/dullahan/crisisalt
name = "Dullahan v2"
sprite_icon_state = "dullahanmed_alt"
/datum/robot_sprite/dogborg/tall/medical/dullahan/crisisalt2
name = "Dullahan medical v3"
sprite_decals = list("decals")
sprite_icon = 'icons/mob/robot/dullahan/v3/medical.dmi'
sprite_icon_state = "dullahanmedical"
// Surgeon
// Regular sprites
/datum/robot_sprite/surgical
module_type = "Surgeon"
module_type = "Crisis"
sprite_icon = 'icons/mob/robot/surgical.dmi'
/datum/robot_sprite/surgical/toiletbot
name = "Telemachus"
name = "Telemachus - Surgical"
sprite_icon_state = "toiletbot"
/datum/robot_sprite/surgical/sleek
name = "WTOperator"
name = "WTOperator - Surgical"
sprite_icon_state = "sleek"
/datum/robot_sprite/surgical/drone
name = "AG Model"
name = "AG Model - Surgical"
sprite_icon_state = "drone"
has_custom_open_sprites = TRUE
/datum/robot_sprite/surgical/glitterfly
name = "Pyralis"
name = "Pyralis - Surgical"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/surgical/decapod
name = "Decapod"
name = "Decapod - Surgical"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/surgical/pneuma
name = "Pneuma"
name = "Pneum - Surgical"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/surgical/zoomba
name = "ZOOM-BA"
name = "ZOOM-BA - Surgical"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
/datum/robot_sprite/surgical/uptall
name = "Feminine Humanoid"
name = "Feminine Humanoid - Surgical"
sprite_icon_state = "uptall"
// Wide/dogborg sprites
/datum/robot_sprite/dogborg/surgical
module_type = "Surgeon"
module_type = "Crisis"
sprite_icon = 'icons/mob/robot/surgical_wide.dmi'
/* //Handled by the normal belly code now.
/datum/robot_sprite/dogborg/surgical/get_belly_overlay(var/mob/living/silicon/robot/ourborg)
if(has_sleeper_light_indicator)
if(ourborg.sleeper_state == 2 && !(ourborg.vore_selected?.silicon_belly_overlay_preference == "Vorebelly")) return "[sprite_icon_state]-sleeper_g"
else return "[sprite_icon_state]-sleeper_r"
else
return ..()
*/
/datum/robot_sprite/dogborg/surgical/do_equipment_glamour(var/obj/item/robot_module/module)
if(!has_custom_equipment_sprites)
return
@@ -232,7 +234,7 @@
has_sleeper_light_indicator = TRUE
/datum/robot_sprite/dogborg/surgical/borgi
name = "Borgi"
name = "Borgi - Surgical"
sprite_icon_state = "borgi"
sprite_hud_icon_state = "medihound"
has_eye_sprites = FALSE
@@ -240,13 +242,13 @@
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/surgical/drake
name = "Drake"
name = "Drake - Surgical"
sprite_icon_state = "drake"
// Tall sprites
//CHOMPNote -- many of the lines in this is overriden in modular
/datum/robot_sprite/dogborg/tall/surgical
module_type = "Surgeon"
module_type = "Crisis"
sprite_icon = 'icons/mob/robot/surgical_large.dmi'
/datum/robot_sprite/dogborg/tall/surgical/do_equipment_glamour(var/obj/item/robot_module/module)
@@ -264,7 +266,7 @@
SP.attack_verb = list("batted", "pawed", "bopped", "whapped")
/datum/robot_sprite/dogborg/tall/surgical/raptor
name = "Raptor V-4"
name = "Raptor V-4 - Surgical"
sprite_icon_state = "raptor"
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")
@@ -279,11 +281,11 @@
sprite_icon = 'icons/mob/robot/crisis.dmi'
/datum/robot_sprite/crisis/toiletbot
name = "Telemachus"
name = "Telemachus - Crisis"
sprite_icon_state = "toiletbot"
/datum/robot_sprite/crisis/sleek
name = "WTOperator"
name = "WTOperator - Crisis"
sprite_icon_state = "sleek"
/datum/robot_sprite/crisis/drone
@@ -297,27 +299,27 @@
has_custom_open_sprites = TRUE
/datum/robot_sprite/crisis/glitterfly
name = "Pyralis"
name = "Pyralis - Crisis"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/crisis/decapod
name = "Decapod"
name = "Decapod - Crisis"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/crisis/pneuma
name = "Pneuma"
name = "Pneuma - Crisis"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/crisis/zoomba
name = "ZOOM-BA"
name = "ZOOM-BA - Crisis"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
/datum/robot_sprite/crisis/uptall
name = "Feminine Humanoid"
name = "Feminine Humanoid - Crisis"
sprite_icon_state = "uptall"
// Wide/dogborg sprites
@@ -370,7 +372,7 @@
has_sleeper_light_indicator = TRUE
/datum/robot_sprite/dogborg/crisis/borgi
name = "Borgi"
name = "Borgi - Crisis"
sprite_icon_state = "borgi"
sprite_hud_icon_state = "medihound"
has_eye_sprites = FALSE
@@ -378,7 +380,7 @@
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/crisis/drake
name = "Drake"
name = "Drake - Crisis"
sprite_icon_state = "drake"
// Tall sprites
@@ -402,7 +404,49 @@
SP.attack_verb = list("batted", "pawed", "bopped", "whapped")
/datum/robot_sprite/dogborg/tall/crisis/raptor
name = "Raptor V-4"
name = "Raptor V-4 - Crisis"
sprite_icon_state = "raptor"
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/crisis/cat
name = "Cat"
sprite_icon = 'icons/mob/robot/catborg_variant.dmi'
sprite_icon_state = "vixmed"
has_vore_belly_resting_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = TRUE
has_dead_sprite_overlay = FALSE
//Medical into Crisis type merge
/datum/robot_sprite/surgical
module_type = "Crisis"
/datum/robot_sprite/dogborg/surgical
module_type = "Crisis"
//Added sprites
/datum/robot_sprite/dogborg/crisis/vale2
name = "Mediborg Model V-3"
sprite_icon = 'icons/mob/robot/widerobot/widerobot.dmi'
sprite_icon_state = "vale2"
sprite_hud_icon_state = "medihound"
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = TRUE
/datum/robot_sprite/dogborg/crisis/cat
name = "Cat"
sprite_icon = 'icons/mob/robot/catborg_variant.dmi'
sprite_icon_state = "vixmed"
has_vore_belly_resting_sprites = TRUE
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = TRUE
/datum/robot_sprite/dogborg/crisis/smolraptor
sprite_icon = 'icons/mob/robot/smallraptors/smolraptor_med.dmi'
name = "Small Raptor"
sprite_icon_state = "smolraptor"
has_dead_sprite_overlay = FALSE
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")

View File

@@ -95,11 +95,12 @@
/datum/robot_sprite/mining/worm
name = "W02M"
sprite_icon_state = "worm-miner" //CHOMPEdit
has_custom_open_sprites = TRUE
sprite_icon = 'modular_chomp/icons/mob/wormborg.dmi' //CHOMPEdit
has_vore_belly_sprites = TRUE //CHOMPEdit
has_dead_sprite = TRUE //CHOMPEdit
sprite_icon_state = "worm-miner"
sprite_icon = 'icons/mob/robot/wormborg.dmi'
has_dead_sprite_overlay = FALSE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
has_dead_sprite = TRUE
/datum/robot_sprite/mining/uptall
name = "Feminine Humanoid"
@@ -187,13 +188,108 @@
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/mining/dullahanv3
sprite_icon = 'icons/mob/tallborg/dullahans64x64.dmi'
//named v3 to avoid conflicts with downstream
/datum/robot_sprite/dogborg/tall/mining/dullahanv3/miningdully
name = "Dullahan mining v3"
sprite_icon_state = "dullahanmining"
/datum/robot_sprite/dogborg/tall/mining/dullahan
name = "Dullahan Mining unit"
sprite_icon_state = "dullahanmine"
sprite_icon = 'icons/mob/robot/dullahan/v1/dullahan_mine.dmi'
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
has_custom_open_sprites = FALSE
has_eye_light_sprites = TRUE
rest_sprite_options = list("Default", "sit")
pixel_x = 0
/datum/robot_sprite/dogborg/tall/mining/dullahan/mineralt
name = "Dullahan Mining unit v2"
sprite_icon_state = "dullahanmine_alt"
/datum/robot_sprite/dogborg/tall/mining/dullahan/miningdully
name = "Dullahan mining v3"
sprite_icon = 'icons/mob/robot/dullahan/v3/mining.dmi'
sprite_icon_state = "dullahanmining"
sprite_decals = list("decals")
/datum/robot_sprite/dogborg/tall/mining/dullahancarg
name = "Dullahan Cargo"
sprite_icon_state = "dullahancargo"
sprite_icon = 'icons/mob/robot/dullahan/v1/dullahan_cargo.dmi'
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
pixel_x = 0
/datum/robot_sprite/dogborg/tall/mining/dullahancarg/cargoalt
name = "Dullahan Cargo v2"
sprite_icon_state = "dullahancargo_alt"
/datum/robot_sprite/dogborg/mining/cat
name = "Cat - Mining"
sprite_icon = 'icons/mob/robot/catborg_variant.dmi'
sprite_icon_state = "vixmine"
has_vore_belly_resting_sprites = TRUE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/mining/catcargo
name = "Cat - Cargo"
sprite_icon = 'icons/mob/robot/catborg_variant.dmi'
sprite_icon_state = "vixcargo"
has_vore_belly_resting_sprites = TRUE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/tall/mining/tall
sprite_icon = 'icons/mob/robot/tallrobot/tallrobots.dmi'
pixel_x = 0
/datum/robot_sprite/dogborg/tall/mining/tall/mekacargo
name = "MEKA - Cargo"
sprite_icon_state = "mekacargo"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/mining/tall/mmekacargo
name = "NIKO - Cargo"
sprite_icon_state = "mmekacargo"
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/mining/tall/fmekacargo
name = "NIKA - Cargo"
sprite_icon_state = "fmekacargo"
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/mining/tall/k4tcargo
name = "K4T - Cargo"
sprite_icon_state = "k4tcargo"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/mining/tall/k4t_alt1cargo
name = "K4Talt - Cargo"
sprite_icon_state = "k4tcargo_alt1"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/mining/smolraptorminer
sprite_icon = 'icons/mob/robot/smallraptors/smolraptor_min.dmi'
name = "Small Raptor Miner"
sprite_icon_state = "smolraptor"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
has_dead_sprite_overlay = FALSE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/mining/smolraptorcargo
sprite_icon = 'icons/mob/robot/smallraptors/smolraptor_car.dmi'
name = "Small Raptor Cargo"
sprite_icon_state = "smolraptor"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
has_dead_sprite_overlay = FALSE
rest_sprite_options = list("Default", "Sit")

View File

@@ -83,13 +83,15 @@
name = "XI-GUS"
sprite_icon_state = "spider"
/datum/robot_sprite/science/worm
name = "W02M"
sprite_icon_state = "worm-science" //CHOMPEdit
has_custom_open_sprites = TRUE
sprite_icon = 'modular_chomp/icons/mob/wormborg.dmi' //CHOMPEdit
has_vore_belly_sprites = TRUE //CHOMPEdit
has_dead_sprite = TRUE //CHOMPEdit
sprite_icon_state = "worm-science"
sprite_icon = 'icons/mob/robot/wormborg.dmi'
has_dead_sprite_overlay = FALSE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
has_dead_sprite = TRUE
/datum/robot_sprite/science/uptall
name = "Feminine Humanoid"
@@ -208,13 +210,42 @@
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/science/dullahanv3
sprite_icon = 'icons/mob/tallborg/dullahans64x64.dmi'
//named v3 to avoid conflicts with downstream
/datum/robot_sprite/dogborg/tall/science/dullahanv3/sciencedully
name = "Dullahan science v3"
sprite_icon_state = "dullahanscience"
/datum/robot_sprite/dogborg/tall/science/dullahan
name = "Dullahan"
sprite_icon_state = "dullahansci"
sprite_icon = 'icons/mob/robot/dullahan/v1/dullahan_sci.dmi'
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
has_eye_light_sprites = TRUE
sprite_hud_icon_state = "sci-borg"
pixel_x = 0
/datum/robot_sprite/dogborg/tall/science/dullahan/scialt
name = "Dullahan v2"
sprite_icon_state = "dullahansci_alt"
/datum/robot_sprite/dogborg/tall/science/dullahan/scialt2
name = "Dullahan v3"
sprite_icon = 'icons/mob/robot/dullahan/v3/science.dmi'
sprite_icon_state = "dullahanscience"
rest_sprite_options = list("Default", "sit")
sprite_decals = list("decals")
/datum/robot_sprite/dogborg/science/cat
name = "Cat"
sprite_icon = 'icons/mob/robot/catborg_variant.dmi'
sprite_icon_state = "vixsci"
sprite_hud_icon_state = "sci-borg"
has_vore_belly_resting_sprites = TRUE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/science/smolraptor
sprite_icon = 'icons/mob/robot/smallraptors/smolraptor_sci.dmi'
name = "Small Raptor"
sprite_icon_state = "smolraptor"
has_dead_sprite_overlay = FALSE
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")

View File

@@ -108,11 +108,12 @@
/datum/robot_sprite/security/worm
name = "W02M"
sprite_icon_state = "worm-security" //CHOMPEdit
has_custom_open_sprites = TRUE
sprite_icon = 'modular_chomp/icons/mob/wormborg.dmi' //CHOMPEdit
has_vore_belly_sprites = TRUE //CHOMPEdit
has_dead_sprite = TRUE //CHOMPEdit
sprite_icon_state = "worm-security"
sprite_icon = 'icons/mob/robot/wormborg.dmi'
has_dead_sprite_overlay = FALSE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
has_dead_sprite = TRUE
/datum/robot_sprite/security/uptall
name = "Feminine Humanoid"
@@ -216,13 +217,47 @@
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/security/dullahanv3
sprite_icon = 'icons/mob/tallborg/dullahans64x64.dmi'
//named v3 to avoid conflicts with downstream
/datum/robot_sprite/dogborg/tall/security/dullahan
name = "Dullahan"
sprite_icon_state = "dullahansec"
sprite_icon = 'icons/mob/robot/dullahan/v1/dullahan_sec.dmi'
pixel_x = 0
sprite_hud_icon_state = "k9"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "sit")
/datum/robot_sprite/dogborg/tall/security/dullahanv3/securitydully
/datum/robot_sprite/dogborg/tall/security/dullahan/secalt
name = "Dullahan v2"
sprite_icon_state = "dullahansec_alt"
/datum/robot_sprite/dogborg/tall/security/dullahan/securitydully
name = "Dullahan security v3"
sprite_icon = 'icons/mob/robot/dullahan/v3/security.dmi'
sprite_icon_state = "dullahansecurity"
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
sprite_decals = list("decals")
/datum/robot_sprite/dogborg/security/vale2
name = "Secborg model V-3"
sprite_icon = 'icons/mob/robot/widerobot/widerobot.dmi'
sprite_icon_state = "secvale"
sprite_hud_icon_state = "k9"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/security/cat
name = "Cat"
sprite_icon = 'icons/mob/robot/catborg_variant.dmi'
sprite_icon_state = "vixsec"
sprite_hud_icon_state = "k9"
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/security/smolraptor
sprite_icon = 'icons/mob/robot/smallraptors/smolraptor_pk.dmi'
name = "Small Raptor"
sprite_icon_state = "smolraptor"
has_dead_sprite_overlay = FALSE
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")

View File

@@ -100,11 +100,12 @@
/datum/robot_sprite/standard/worm
name = "W02M"
sprite_icon_state = "worm-standard" //CHOMPEdit
has_custom_open_sprites = TRUE
sprite_icon = 'modular_chomp/icons/mob/wormborg.dmi' //CHOMPEdit
has_vore_belly_sprites = TRUE //CHOMPEdit
has_dead_sprite = TRUE //CHOMPEdit
sprite_icon_state = "worm-standard"
sprite_icon = 'icons/mob/robot/wormborg.dmi'
has_dead_sprite_overlay = FALSE
has_custom_open_sprites = FALSE
has_vore_belly_sprites = TRUE
has_dead_sprite = TRUE
/datum/robot_sprite/standard/uptall
name = "Feminine Humanoid"
@@ -135,13 +136,72 @@
module_type = "Standard"
//sprite_icon = 'icons/mob/robot/standard_large.dmi' NOT USED YET
/datum/robot_sprite/dogborg/tall/standard/dullahanv3
sprite_icon = 'icons/mob/tallborg/dullahans64x64.dmi'
//named v3 to avoid conflicts with downstream
/datum/robot_sprite/dogborg/tall/standard/dullahanv3/standarddully
name = "Dullahan standard v3"
sprite_icon = 'icons/mob/robot/dullahan/v3/standard.dmi'
sprite_icon_state = "dullahanstandard"
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
sprite_decals = list("decals")
rest_sprite_options = list("Default", "sit")
/* //This used to be Widerobot_Standard_ch.dm. It was unticked, so it shall be put here instead.
//Modular Standard borg hound edition
//This restructures how borg additions are done to make them sane/modular/maintainable
//Also makes it easier to make new borgs
//INCOMPLETE and not ready, no sprites other than tall and basically useless, also lacking a belly
//Add ourselves to the borg list
/hook/startup/proc/Modular_Borg_init_standardhound()
//robot_modules["Honk-Hound"] = /obj/item/robot_module/robot/clerical/honkborg - done in station_vr modular chomp for ordering reasons
robot_module_types += "Standard-Hound" //Add ourselves to global
return 1
/obj/item/robot_module/robot/standard/hound
name = "Standard-Hound"
sprites = list(
"MEKA" = list(SKIN_ICON_STATE = "mekastandard", SKIN_ICON = 'icons/mob/robot/tallrobot/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64),
"NIKO" = list(SKIN_ICON_STATE = "mmekastandard", SKIN_ICON = 'icons/mob/robot/tallrobot/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64),
"NIKA" = list(SKIN_ICON_STATE = "fmekastandard", SKIN_ICON = 'icons/mob/robot/tallrobot/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64),
"K4T" = list(SKIN_ICON_STATE = "k4tclown", SKIN_ICON = 'icons/mob/robot/tallrobot/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64)
)
can_be_pushed = 0
/obj/item/robot_module/robot/standard/hound/New(var/mob/living/silicon/robot/R)
..()
src.modules += new /obj/item/melee/baton/loaded(src)
src.modules += new /obj/item/tool/wrench/cyborg(src)
src.modules += new /obj/item/healthanalyzer(src)
src.emag += new /obj/item/melee/energy/sword(src)
var/datum/matter_synth/water = new /datum/matter_synth(500)
water.name = "Water reserves"
water.recharge_rate = 10
water.max_energy = 1000
R.water_res = water
synths += water
var/obj/item/dogborg/tongue/T = new /obj/item/dogborg/tongue(src)
T.water = water
src.modules += T
R.icon = 'modular_chomp/icons/mob/widerobot_ch.dmi'
R.wideborg_dept = 'modular_chomp/icons/mob/widerobot_ch.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.vore_capacity = 1
R.vore_capacity_ex = list("stomach" = 1)
R.wideborg = TRUE
add_verb(R,/mob/living/silicon/robot/proc/ex_reserve_refill)
add_verb(R,/mob/living/silicon/robot/proc/robot_mount)
add_verb(R,/mob/living/proc/toggle_rider_reins)
add_verb(R,/mob/living/proc/shred_limb)
add_verb(R,/mob/living/silicon/robot/proc/rest_style)
..()
*/

View File

@@ -69,14 +69,23 @@
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/combat_medic/dullahancombatmedic
name = "Dullahan Combat Medic"
sprite_icon = 'icons/mob/robot/dullahan/v1/dullahan_syndie.dmi'
sprite_icon_state = "dullahansyndi"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
pixel_x = 0
/datum/robot_sprite/dogborg/tall/syndie/dullahanv3syndi
sprite_icon = 'icons/mob/tallborg/dullahans64x64.dmi'
sprite_icon = 'icons/mob/robot/dullahan/v3/syndi.dmi'
sprite_icon_state = "dullahansyndi"
name = "Dullahan syndie v3"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
sprite_decals = list("decals")
rest_sprite_options = list("Default", "sit")
// Protector
@@ -168,13 +177,13 @@
sprite_hud_icon_state = "malf"
/datum/robot_sprite/dogborg/tall/mechanist/dullahanv3mech
sprite_icon = 'icons/mob/tallborg/dullahans64x64.dmi'
sprite_icon = 'icons/mob/robot/dullahan/v3/mechanist.dmi'
sprite_icon_state = "dullahanmechanist"
name = "Dullahan mechanist v3"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
sprite_decals = list("decals")
rest_sprite_options = list("Default", "sit")
/datum/robot_sprite/dogborg/tall/mechanist/syndimechraptor

View File

@@ -0,0 +1,180 @@
//Attempted unify style implementation of boozeborgs. To lower peoples needed code diving to both understand this module and make new ones.
//Dropping my usual _unify for _ch this time. Commenting it here for github search.
// code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm //tag so it shows up in gitsearch
/*
What Borgs are available is sadly handled in the above file in the proc
/hook/startup/proc/robot_modules_vr()
robot_modules["Medihound"] = /obj/item/robot_module/robot/medihound
robot_modules["K9"] = /obj/item/robot_module/robot/knine
robot_modules["ERT"] = /obj/item/robot_module/robot/ert
robot_modules["Janihound"] = /obj/item/robot_module/robot/scrubpup
robot_modules["Sci-borg"] = /obj/item/robot_module/robot/science
robot_modules["Pupdozer"] = /obj/item/robot_module/robot/engiedog
return 1
*/
/obj/item/robot_module/robot/booze
name = "BoozeHound robot module"
channels = list("Service" = 1)
languages = list(
LANGUAGE_SOL_COMMON = 1,
LANGUAGE_UNATHI = 1,
LANGUAGE_SIIK = 1,
LANGUAGE_AKHANI = 1,
LANGUAGE_SKRELLIAN = 1,
LANGUAGE_SKRELLIANFAR = 0,
LANGUAGE_ROOTLOCAL = 0,
LANGUAGE_TRADEBAND = 1,
LANGUAGE_GUTTER = 0,
LANGUAGE_SCHECHI = 1,
LANGUAGE_EAL = 1,
LANGUAGE_TERMINUS = 1,
LANGUAGE_SIGN = 0
)
/obj/item/robot_module/robot/booze
sprites = list(
"Beer Buddy" = "boozeborg",
"Brilliant Blue" = "boozeborg(blue)",
"Caffine Dispenser" = "boozeborg(coffee)",
"Gamer Juice Maker" = "boozeborg(green)",
"Liqour Licker" = "boozeborg(orange)",
"The Grapist" = "boozeborg(purple)",
"Vampire's Aid" = "boozeborg(red)",
"Vodka Komrade" = "boozeborg(vodka)"
)
/obj/item/robot_module/robot/booze/New(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/gripper/service(src)
//src.modules += new /obj/item/reagent_containers/glass/bucket(src)
//src.modules += new /obj/item/material/minihoe(src)
//src.modules += new /obj/item/analyzer/plant_analyzer(src)
//src.modules += new /obj/item/storage/bag/plants(src)
//src.modules += new /obj/item/robot_harvester(src)
src.modules += new /obj/item/material/knife(src)
src.modules += new /obj/item/material/kitchen/rollingpin(src)
src.modules += new /obj/item/multitool(src) //to freeze trays
src.modules += new /obj/item/dogborg/jaws/small(src)
src.modules += new /obj/item/dogborg/boop_module(src)
src.modules += new /obj/item/dogborg/sleeper/compactor/brewer(src)
src.modules += new /obj/item/reagent_containers/glass/beaker(src)//For holding the ALCOHOL
src.emag = new /obj/item/dogborg/pounce(src)
add_verb(R,/mob/living/silicon/robot/proc/reskin_booze)
var/obj/item/rsf/M = new /obj/item/rsf(src)
M.stored_matter = 30
src.modules += M
src.modules += new /obj/item/reagent_containers/dropper/industrial(src)
/* Remembered this causes the dogs to catch on fire lol.
var/obj/item/flame/lighter/zippo/L = new /obj/item/flame/lighter/zippo(src)
L.lit = 1
src.modules += L
*/
var/datum/matter_synth/water = new /datum/matter_synth()
water.name = "Water reserves"
water.recharge_rate = 0.1 // Recharging water for plants - hehe drooly borg
water.max_energy = 1000
water.energy = 0
R.water_res = water
synths += water
var/obj/item/dogborg/tongue/T = new /obj/item/dogborg/tongue(src)
T.water = water
src.modules += T
src.modules += new /obj/item/tray/robotray(src)
src.modules += new /obj/item/reagent_containers/borghypo/service/booze(src)
src.emag = new /obj/item/reagent_containers/food/drinks/bottle/small/beer(src)
var/datum/reagents/N = new/datum/reagents(50)
src.emag.reagents = N
N.my_atom = src.emag
N.add_reagent("beer2", 50)
src.emag.name = "Mickey Finn's Special Brew"
R.can_buckle = 1
R.icon = 'icons/mob/widerobot_colors_ch.dmi'
R.wideborg_dept = 'icons/mob/widerobot_colors_ch.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.vore_capacity = 1
R.vore_capacity_ex = list("stomach" = 1)
R.wideborg = TRUE
add_verb(R,/mob/living/silicon/robot/proc/ex_reserve_refill) //TGPanel
..()
/obj/item/robot_module/robot/booze/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/reagent_containers/food/condiment/enzyme/E = locate() in src.modules
E.reagents.add_reagent("enzyme", 2 * amount)
if(src.emag)
var/obj/item/reagent_containers/food/drinks/bottle/small/beer/B = src.emag
B.reagents.add_reagent("beer2", 2 * amount)
//BORGHYPO
/obj/item/reagent_containers/borghypo/service/booze
name = "cyborg drink synthesizer"
desc = "A portable drink dispencer."
icon = 'icons/obj/drinks.dmi'
icon_state = "shaker"
charge_cost = 20
recharge_time = 3
volume = 120
possible_transfer_amounts = list(1 ,5, 10, 20, 30)
//Resking proc for boozos
/mob/living/silicon/robot/proc/reskin_booze()
set name = "Change Drink Color"
set category = "Abilities.Silicon" //TGPanel
set desc = "Choose the color of drink displayed inside you."
var/mob/M = usr
var/list/options = list()
options["Beer"] = "Beer Buddy"
options["Curacao"] = "Brilliant Blue"
options["Coffee"] = "Caffine Dispenser"
options["Space Mountain Wind"] = "Gamer Juice Maker"
options["Whiskey Soda"] = "Liqour Licker"
options["Grape Soda"] = "The Grapist"
options["Demon's Blood"] = "Vampire's Aid"
options["Slav Vodka"] = "Vodka Komrade"
var/choice = input(M,"Choose your drink!") in options
if(src && choice && !M.stat && in_range(M,src))
icontype = options[choice]
var/active_sound = 'sound/effects/bubbles.ogg'
playsound(src.loc, "[active_sound]", 100, 0, 4)
M << "Your Tank now displays [choice]. Drink up and enjoy!"
updateicon()
return 1
//SLEEPER "Brewer"
/obj/item/dogborg/sleeper/compactor/brewer //Boozehound gut.
name = "Brew Belly"
desc = "A mounted drunk tank unit with fuel processor."
icon_state = "brewer"
injection_chems = list(REAGENT_ID_VODKA,REAGENT_ID_BEER,REAGENT_ID_GIN) //Injected alcohol is 3 times as strong
max_item_count = 1
/obj/item/dogborg/sleeper/compactor/brewer/inject_chem(mob/user, chem)
if(patient && patient.reagents)
if(chem in injection_chems + REAGENT_ID_INAPROVALINE)
if(hound.cell.charge < 200) //This is so borgs don't kill themselves with it.
to_chat(hound, span_notice("You don't have enough power to synthesize fluids."))
return
else if(patient.reagents.get_reagent_amount(chem) + 10 >= 50) //Preventing people from accidentally killing themselves by trying to inject too many chemicals!
to_chat(hound, span_notice("Your stomach is currently too full of fluids to secrete more fluids of this kind."))
else if(patient.reagents.get_reagent_amount(chem) + 10 <= 50) //No overdoses for you
patient.reagents.add_reagent(chem, inject_amount)
drain(100) //-100 charge per injection
var/units = round(patient.reagents.get_reagent_amount(chem))
to_chat(hound, span_notice("Injecting [units] unit\s into occupant.")) //If they were immersed, the reagents wouldn't leave with them.

View File

@@ -1,8 +1,9 @@
/* //Uncomment the exploration modules in code\global.dm
/hook/startup/proc/Modular_Borg_init_Exploration()
robot_modules["Exploration"] = /obj/item/robot_module/robot/exploration //add to array
robot_module_types += "Exploration" //Add to global list
return 1
*/
//Explo doggos
/obj/item/robot_module/robot/exploration
name = "exploration robot module"

View File

@@ -1,6 +1,6 @@
/datum/robot_sprite/dogborg/explorer
module_type = "Exploration"
sprite_icon = 'modular_chomp/icons/mob/widerobot_exp_ch.dmi'
sprite_icon = 'icons/mob/robot/widerobot/widerobot_exp.dmi'
sprite_hud_icon_state = "platform"
/datum/robot_sprite/dogborg/explorer/vale2
@@ -15,7 +15,7 @@
/datum/robot_sprite/dogborg/tall/explorer/dullahan
module_type = "Exploration"
sprite_icon = 'modular_chomp/icons/mob/dullahanborg/dullahan_explorer.dmi'
sprite_icon = 'icons/mob/robot/dullahan/v1/dullahan_explorer.dmi'
pixel_x = 0
/datum/robot_sprite/dogborg/tall/explorer/dullahan/explorer
@@ -35,12 +35,12 @@
/* placeholder
/datum/robot_sprite/dogborg/tall/explorer
module_type = "Exploration"
sprite_icon = 'modular_chomp/icons/mob/tallborg/tallrobots.dmi'
sprite_icon = 'icons/mob/robot/tallrobot/tallrobots.dmi'
pixel_x = 0
/datum/robot_sprite/dogborg/raptor/explorer
module_type = "Exploration"
sprite_icon = 'modular_chomp/icons/mob/raptorborg/raptor_ch.dmi'
sprite_icon = 'icons/mob/robot/raptor.dmi'
/datum/robot_sprite/dogborg/raptor/explorer/raptor
name = "Raptor"

View File

@@ -70,6 +70,10 @@
name = "Party Cannon"
desc = "Confetti, pies, banana peels, chaos!"
/obj/item/gun/launcher/confetti_cannon/robot
name = "Party Cannon"
desc = "Confetti, pies, banana peels, chaos!"
/obj/item/gun/launcher/confetti_cannon/robot/pump(mob/user)
playsound(user, 'sound/weapons/shotgunpump.ogg', 60, 1)
if(!chambered)

View File

@@ -0,0 +1,189 @@
/datum/unit_test/all_robot_sprites_must_be_valid
name = "ROBOTS: Robot sprites must be valid"
var/signal_failed = FALSE
/datum/unit_test/all_robot_sprites_must_be_valid/start_test()
var/failed = 0
for(var/sprite in subtypesof(/datum/robot_sprite))
var/datum/robot_sprite/RS = new sprite()
if(!RS.name) // Parent type, ignore me
continue
var/list/checks = list(
"[ROBOT_HAS_SPEED_SPRITE]" = "-roll",
"[ROBOT_HAS_SHIELD_SPRITE]" = "-shield",
"[ROBOT_HAS_SHIELD_SPEED_SPRITE]" = "-speed_shield",
"[ROBOT_HAS_MELEE_SPRITE]" = "-melee",
"[ROBOT_HAS_DAGGER_SPRITE]" = "-dagger",
"[ROBOT_HAS_BLADE_SPRITE]" = "-blade",
"[ROBOT_HAS_GUN_SPRITE]" = "-gun",
"[ROBOT_HAS_LASER_SPRITE]" = "-laser",
"[ROBOT_HAS_TASER_SPRITE]" = "-taser",
"[ROBOT_HAS_DISABLER_SPRITE]" = "-disabler"
)
for(var/C in checks)
if(RS.sprite_flag_check(text2num(C)))
if(check_state(RS,checks[C]))
failed = TRUE
// eyes, lights, markings
if(RS.has_eye_sprites)
if(check_state(RS,"-eyes"))
failed = TRUE
if(RS.has_eye_light_sprites)
if(check_state(RS,"-lights"))
failed = TRUE
if(LAZYLEN(RS.sprite_decals))
for(var/decal in RS.sprite_decals)
if(check_state(RS,"-[decal]"))
failed = TRUE
// Control panel
if(RS.has_custom_open_sprites)
if(check_state(RS,"-openpanel_nc"))
failed = TRUE
if(check_state(RS,"-openpanel_c"))
failed = TRUE
if(check_state(RS,"-openpanel_w"))
failed = TRUE
// Bellies
if(RS.has_vore_belly_sprites && !RS.belly_capacity_list)
if(RS.has_sleeper_light_indicator)
// belly r/g light
if(check_state(RS,"-sleeper-r"))
failed = TRUE
if(check_state(RS,"-sleeper-g"))
failed = TRUE
if(RS.has_vore_belly_resting_sprites)
for(var/rest_style in RS.rest_sprite_options)
rest_style = lowertext(rest_style)
if(rest_style == "Default")
rest_style = "rest"
if(check_state(RS,"-sleeper-r-[rest_style]"))
failed = TRUE
if(check_state(RS,"-sleeper-g-[rest_style]"))
failed = TRUE
// struggling
if(RS.has_vore_struggle_sprite)
if(check_state(RS,"-sleeper-r-struggle"))
failed = TRUE
if(check_state(RS,"-sleeper-g-struggle"))
failed = TRUE
if(RS.has_vore_belly_resting_sprites)
for(var/rest_style in RS.rest_sprite_options)
rest_style = lowertext(rest_style)
if(rest_style == "Default")
rest_style = "rest"
if(check_state(RS,"-sleeper-r-[rest_style]-struggle"))
failed = TRUE
if(check_state(RS,"-sleeper-g-[rest_style]-struggle"))
failed = TRUE
else
// belly
if(check_state(RS,"-sleeper"))
failed = TRUE
if(RS.has_vore_belly_resting_sprites)
for(var/rest_style in RS.rest_sprite_options)
rest_style = lowertext(rest_style)
if(rest_style == "Default")
rest_style = "rest"
if(check_state(RS,"-sleeper-[rest_style]"))
failed = TRUE
// struggling
if(RS.has_vore_struggle_sprite)
if(check_state(RS,"-sleeper-struggle"))
failed = TRUE
if(RS.has_vore_belly_resting_sprites)
for(var/rest_style in RS.rest_sprite_options)
rest_style = lowertext(rest_style)
if(rest_style == "Default")
rest_style = "rest"
if(check_state(RS,"-sleeper-[rest_style]-struggle"))
failed = TRUE
else if (RS.belly_capacity_list)
for(var/belly in RS.belly_capacity_list)
for(var/num = 1 to RS.belly_capacity_list[belly])
// big belly
if(check_state(RS,"-[belly]-[num]"))
failed = TRUE
if(RS.has_vore_belly_resting_sprites)
for(var/rest_style in RS.rest_sprite_options)
rest_style = lowertext(rest_style)
if(rest_style == "Default")
rest_style = "rest"
if(check_state(RS,"-[belly]-[num]-[rest_style]"))
failed = TRUE
// struggling
if(RS.has_vore_struggle_sprite)
if(check_state(RS,"-[belly]-[num]-struggle"))
failed = TRUE
if(RS.has_vore_belly_resting_sprites)
for(var/rest_style in RS.rest_sprite_options)
rest_style = lowertext(rest_style)
if(rest_style == "Default")
rest_style = "rest"
if(check_state(RS,"-[belly]-[num]-[rest_style]-struggle"))
failed = TRUE
if(RS.belly_light_list)
for(var/belly in RS.belly_light_list)
for(var/num = 1 to RS.belly_light_list[belly])
// multi belly r/g light
if(check_state(RS,"-[belly]-[num]-r"))
failed = TRUE
if(check_state(RS,"-[belly]-[num]-g"))
failed = TRUE
if(RS.has_vore_belly_resting_sprites)
for(var/rest_style in RS.rest_sprite_options)
rest_style = lowertext(rest_style)
if(rest_style == "Default")
rest_style = "rest"
if(check_state(RS,"-[belly]-[num]-r-[rest_style]"))
failed = TRUE
if(check_state(RS,"-[belly]-[num]-g-[rest_style]"))
failed = TRUE
// struggling
if(RS.has_vore_struggle_sprite)
if(check_state(RS,"-[belly]-[num]-r-struggle"))
failed = TRUE
if(check_state(RS,"-[belly]-[num]-g-struggle"))
failed = TRUE
if(RS.has_vore_belly_resting_sprites)
for(var/rest_style in RS.rest_sprite_options)
rest_style = lowertext(rest_style)
if(rest_style == "Default")
rest_style = "rest"
if(check_state(RS,"-[belly]-[num]-r-[rest_style]-struggle"))
failed = TRUE
if(check_state(RS,"-[belly]-[num]-g-[rest_style]-struggle"))
failed = TRUE
// reseting
if(RS.rest_sprite_options in list("Sit"))
if(check_state(RS,"-sit"))
failed = TRUE
if(RS.rest_sprite_options in list("Default"))
if(check_state(RS,"-rest"))
failed = TRUE
if(RS.rest_sprite_options in list("Bellyup"))
if(check_state(RS,"-bellyup"))
failed = TRUE
// death
if(RS.has_dead_sprite)
if(check_state(RS,"-wreck"))
failed = TRUE
if(RS.has_dead_sprite_overlay) // Only one per dmi
if(!("wreck-overlay" in cached_icon_states(RS.sprite_icon)))
log_unit_test("[RS.type]: Robots - Robot sprite \"[RS.name]\", had wreck-overlay state enabled, but was missing icon_state wreck-overlay, in dmi \"[RS.sprite_icon]\".")
failed = TRUE
qdel(RS)
if(failed)
fail("One or more /datum/robot_sprite items had invalid flags or icons")
else
pass("All /datum/robot_sprite are valid.")
return 1
/datum/unit_test/all_robot_sprites_must_be_valid/proc/check_state(var/datum/robot_sprite/RS,var/append)
var/check_state = "[RS.sprite_icon_state][append]"
if(!(check_state in cached_icon_states(RS.sprite_icon)))
log_unit_test("[RS.type]: Robots - Robot sprite \"[RS.name]\", had [append] state enabled, but was missing icon_state \"[check_state]\", in dmi \"[RS.sprite_icon]\".")
return TRUE
return FALSE

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 342 KiB

After

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

Before

Width:  |  Height:  |  Size: 296 B

After

Width:  |  Height:  |  Size: 296 B

View File

Before

Width:  |  Height:  |  Size: 428 B

After

Width:  |  Height:  |  Size: 428 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 KiB

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Some files were not shown because too many files have changed in this diff Show More