[MIRROR] [READY] Removes Dogborgs (#6763)

Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com>
Co-authored-by: Raeschen <rycoop29@gmail.com>
Co-authored-by: kcin2001 <rnlb2001@gmail.com>
This commit is contained in:
CHOMPStation2
2023-08-13 23:01:48 -07:00
committed by GitHub
parent b7094b7a39
commit 51b73e8042
170 changed files with 4152 additions and 5116 deletions

View File

@@ -52,44 +52,45 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
// Subsystem init_order, from highest priority to lowest priority
// Subsystems shutdown in the reverse of the order they initialize in
// The numbers just define the ordering, they are meaningless otherwise.
#define INIT_ORDER_WEBHOOKS 50
#define INIT_ORDER_DBCORE 41 //CHOMPEdit
#define INIT_ORDER_SQLITE 40
#define INIT_ORDER_GARBAGE 39
#define INIT_ORDER_MEDIA_TRACKS 38 // Gotta get that lobby music up, yo
#define INIT_ORDER_INPUT 37
#define INIT_ORDER_CHEMISTRY 35
#define INIT_ORDER_VIS 32
#define INIT_ORDER_MAPPING 25
#define INIT_ORDER_SOUNDS 23
#define INIT_ORDER_INSTRUMENTS 22
#define INIT_ORDER_DECALS 20
#define INIT_ORDER_PLANTS 19 // Must initialize before atoms.
#define INIT_ORDER_PLANETS 18
#define INIT_ORDER_JOB 17
#define INIT_ORDER_ALARM 16 // Must initialize before atoms.
#define INIT_ORDER_TRANSCORE 15 // VOREStation Edit
#define INIT_ORDER_ATOMS 14 // VOREStation Edit
#define INIT_ORDER_MACHINES 10
#define INIT_ORDER_SHUTTLES 3
#define INIT_ORDER_TIMER 1
#define INIT_ORDER_DEFAULT 0
#define INIT_ORDER_LIGHTING 0
#define INIT_ORDER_AIR -1
#define INIT_ORDER_ASSETS -3
#define INIT_ORDER_HOLOMAPS -5
#define INIT_ORDER_NIGHTSHIFT -6
#define INIT_ORDER_OVERLAY -7
#define INIT_ORDER_XENOARCH -20
#define INIT_ORDER_CIRCUIT -21
#define INIT_ORDER_AI -22
#define INIT_ORDER_AI_FAST -23
#define INIT_ORDER_GAME_MASTER -24
#define INIT_ORDER_PERSISTENCE -25
#define INIT_ORDER_SKYBOX -30 //Visual only, irrelevant to gameplay, but needs to be late enough to have overmap populated fully
#define INIT_ORDER_TICKER -50
#define INIT_ORDER_MAPRENAME -60 //Initiating after Ticker to ensure everything is loaded and everything we rely on us working
#define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init.
#define INIT_ORDER_WEBHOOKS 50
#define INIT_ORDER_DBCORE 41 //CHOMPEdit
#define INIT_ORDER_SQLITE 40
#define INIT_ORDER_GARBAGE 39
#define INIT_ORDER_MEDIA_TRACKS 38 // Gotta get that lobby music up, yo
#define INIT_ORDER_INPUT 37
#define INIT_ORDER_CHEMISTRY 35
#define INIT_ORDER_ROBOT_SPRITES 34
#define INIT_ORDER_VIS 32
#define INIT_ORDER_MAPPING 25
#define INIT_ORDER_SOUNDS 23
#define INIT_ORDER_INSTRUMENTS 22
#define INIT_ORDER_DECALS 20
#define INIT_ORDER_PLANTS 19 // Must initialize before atoms.
#define INIT_ORDER_PLANETS 18
#define INIT_ORDER_JOB 17
#define INIT_ORDER_ALARM 16 // Must initialize before atoms.
#define INIT_ORDER_TRANSCORE 15
#define INIT_ORDER_ATOMS 14
#define INIT_ORDER_MACHINES 10
#define INIT_ORDER_SHUTTLES 3
#define INIT_ORDER_TIMER 1
#define INIT_ORDER_DEFAULT 0
#define INIT_ORDER_LIGHTING 0
#define INIT_ORDER_AIR -1
#define INIT_ORDER_ASSETS -3
#define INIT_ORDER_HOLOMAPS -5
#define INIT_ORDER_NIGHTSHIFT -6
#define INIT_ORDER_OVERLAY -7
#define INIT_ORDER_XENOARCH -20
#define INIT_ORDER_CIRCUIT -21
#define INIT_ORDER_AI -22
#define INIT_ORDER_AI_FAST -23
#define INIT_ORDER_GAME_MASTER -24
#define INIT_ORDER_PERSISTENCE -25
#define INIT_ORDER_SKYBOX -30 //Visual only, irrelevant to gameplay, but needs to be late enough to have overmap populated fully
#define INIT_ORDER_TICKER -50
#define INIT_ORDER_MAPRENAME -60 //Initiating after Ticker to ensure everything is loaded and everything we rely on us working
#define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init.

View File

@@ -282,5 +282,12 @@ var/obj/screen/robot_inventory
/mob/living/silicon/robot/update_hud()
if(modtype)
hands.icon_state = lowertext(modtype)
hands.icon_state = get_hud_module_icon()
..()
/mob/living/silicon/robot/proc/get_hud_module_icon()
if(sprite_datum && sprite_datum.sprite_hud_icon_state)
return sprite_datum.sprite_hud_icon_state
if(modtype)
return lowertext(modtype)
return "nomod"

View File

@@ -1,6 +1,4 @@
/mob/living/silicon/robot/update_hud()
if(ui_style_vr)
hands.icon = 'icons/mob/screen1_robot_vr.dmi'
if(modtype)
hands.icon_state = lowertext(modtype)
hands.icon_state = get_hud_module_icon()
..()

View File

@@ -0,0 +1,115 @@
#define DEFAULT_ROBOT_SPRITE_NAME "M-USE NanoTrasen"
SUBSYSTEM_DEF(robot_sprites)
name = "Robot Sprites"
init_order = INIT_ORDER_ROBOT_SPRITES
flags = SS_NO_FIRE
var/list/all_cyborg_sprites = list()
var/list/cyborg_sprites_by_module = list()
var/list/whitelisted_sprites_by_module = list()
/datum/controller/subsystem/robot_sprites/Initialize()
initialize_borg_sprites()
..()
/datum/controller/subsystem/robot_sprites/proc/initialize_borg_sprites()
var/list/all_paths = typesof(/datum/robot_sprite)
//Let's sort this a little
var/list/dogborg_paths = typesof(/datum/robot_sprite/dogborg)
var/list/tallborg_paths = typesof(/datum/robot_sprite/dogborg/tall)
all_paths -= dogborg_paths
dogborg_paths -= tallborg_paths
all_paths |= dogborg_paths
all_paths |= tallborg_paths
for(var/spath in all_paths)
var/datum/robot_sprite/RS = new spath()
if(!RS.name || !RS.module_type) // We're a technical kinda datum
qdel(RS)
continue
all_cyborg_sprites |= src
if(islist(RS.module_type))
for(var/M in RS.module_type)
if(RS.is_whitelisted)
if(!(M in whitelisted_sprites_by_module))
whitelisted_sprites_by_module += M
whitelisted_sprites_by_module[M] = list()
whitelisted_sprites_by_module[M] |= RS
else
if(!(M in cyborg_sprites_by_module))
cyborg_sprites_by_module += M
cyborg_sprites_by_module[M] = list()
cyborg_sprites_by_module[M] |= RS
else
if(RS.is_whitelisted)
if(!(RS.module_type in whitelisted_sprites_by_module))
whitelisted_sprites_by_module += RS.module_type
whitelisted_sprites_by_module[RS.module_type] = list()
whitelisted_sprites_by_module[RS.module_type] |= RS
else
if(!(RS.module_type in cyborg_sprites_by_module))
cyborg_sprites_by_module += RS.module_type
cyborg_sprites_by_module[RS.module_type] = list()
cyborg_sprites_by_module[RS.module_type] |= RS
/datum/controller/subsystem/robot_sprites/proc/get_module_sprites(var/module, var/mob/living/silicon/robot/wlcheck)
. = list()
if(!module || !(module in cyborg_sprites_by_module))
return
if(wlcheck && istype(wlcheck))
. |= get_whitelisted_sprites(wlcheck.ckey, wlcheck.sprite_name, module)
. |= cyborg_sprites_by_module[module]
return
/datum/controller/subsystem/robot_sprites/proc/get_module_sprites_len(var/module, var/mob/living/silicon/robot/wlcheck)
if(!module || (!(module in cyborg_sprites_by_module) && !(module in whitelisted_sprites_by_module)))
return 0
var/list/sprite_list = cyborg_sprites_by_module[module]
if(wlcheck && istype(wlcheck))
sprite_list |= get_whitelisted_sprites(wlcheck.ckey, wlcheck.sprite_name, module)
if(!islist(sprite_list))
return 0
return sprite_list.len
/datum/controller/subsystem/robot_sprites/proc/get_default_module_sprite(var/module)
var/list/module_sprites = get_module_sprites(module)
if(!module_sprites || !module_sprites.len)
return
var/chosen_sprite
for(var/datum/robot_sprite/sprite in module_sprites)
if(sprite.default_sprite)
chosen_sprite = sprite
break
if(!chosen_sprite)
chosen_sprite = module_sprites[1]
return chosen_sprite
/datum/controller/subsystem/robot_sprites/proc/get_whitelisted_sprites(var/ckey, var/spritename, var/module)
. = list()
if(!ckey || !spritename || !module || !(module in whitelisted_sprites_by_module))
return
for(var/datum/robot_sprite/RS in whitelisted_sprites_by_module[module])
if(RS.whitelist_ckey == ckey && RS.whitelist_charname == spritename)
. |= RS
return

View File

@@ -203,42 +203,42 @@
/area/proc/fire_alert()
if(!fire)
fire = 1 //used for firedoor checks
updateicon()
update_icon()
firedoors_update()
/area/proc/fire_reset()
if (fire)
fire = 0 //used for firedoor checks
updateicon()
update_icon()
firedoors_update()
/area/proc/readyalert()
if(!eject)
eject = 1
updateicon()
update_icon()
return
/area/proc/readyreset()
if(eject)
eject = 0
updateicon()
update_icon()
return
/area/proc/partyalert()
if (!( party ))
party = 1
updateicon()
update_icon()
firedoors_update()
return
/area/proc/partyreset()
if (party)
party = 0
updateicon()
update_icon()
firedoors_update()
return
/area/proc/updateicon()
/area/update_icon()
if ((fire || eject || party) && (!requires_power||power_environ) && !istype(src, /area/space))//If it doesn't require power, can still activate this proc.
if(fire && !eject && !party)
icon_state = null // Let lights take care of it
@@ -282,7 +282,7 @@
for(var/obj/machinery/M in src) // for each machine in the area
M.power_change() // reverify power status (to update icons etc.)
if (fire || eject || party)
updateicon()
update_icon()
/area/proc/usage(var/chan, var/include_static = TRUE)
var/used = 0

View File

@@ -58,7 +58,7 @@ In short:
if(!istype(A,/area) || istype(A, /area/space))
continue
A.updateicon()
A.update_icon()
/datum/universal_state/hell/OverlayAndAmbientSet()
spawn(0)

View File

@@ -88,7 +88,7 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked
if(!istype(A,/area) || istype(A, /area/space) || istype(A,/area/beach))
continue
A.updateicon()
A.update_icon()
/datum/universal_state/supermatter_cascade/OverlayAndAmbientSet()
return

View File

@@ -27,10 +27,10 @@
// update the invisibility and icon
/obj/machinery/bluespace_beacon/hide(var/intact)
invisibility = intact ? 101 : 0
updateicon()
update_icon()
// update the icon_state
/obj/machinery/bluespace_beacon/proc/updateicon()
/obj/machinery/bluespace_beacon/update_icon()
var/state="floor_beacon"
if(invisibility)
@@ -48,4 +48,4 @@
if(Beacon.loc != src.loc)
Beacon.loc = src.loc
updateicon()
update_icon()

View File

@@ -30,14 +30,14 @@
name = "light switch ([area.name])"
on = area.lightswitch
updateicon()
update_icon()
/obj/machinery/light_switch/Destroy()
area = null
overlay = null
return ..()
/obj/machinery/light_switch/proc/updateicon()
/obj/machinery/light_switch/update_icon()
cut_overlays()
if(stat & NOPOWER)
icon_state = "light-p"
@@ -47,9 +47,9 @@
set_light(2, 0.1, on ? "#82FF4C" : "#F86060")
. = list()
. += emissive_appearance(icon, "light[on]-overlay")
return add_overlay(.)
/obj/machinery/light_switch/examine(mob/user)
. = ..()
@@ -61,12 +61,12 @@
on = !on
area.lightswitch = on
area.updateicon()
area.update_icon()
playsound(src, 'sound/machines/button.ogg', 100, 1, 0) // VOREStation Edit
for(var/obj/machinery/light_switch/L in area)
L.on = on
L.updateicon()
L.update_icon()
area.power_change()
GLOB.lights_switched_on_roundstat++
@@ -79,7 +79,7 @@
else
stat |= NOPOWER
updateicon()
update_icon()
/obj/machinery/light_switch/emp_act(severity)
if(stat & (BROKEN|NOPOWER))

View File

@@ -43,10 +43,10 @@
// update the invisibility and icon
/obj/machinery/magnetic_module/hide(var/intact)
invisibility = intact ? 101 : 0
updateicon()
update_icon()
// update the icon_state
/obj/machinery/magnetic_module/proc/updateicon()
/obj/machinery/magnetic_module/update_icon()
var/state="floor_magnet"
var/onstate=""
if(!on)
@@ -157,7 +157,7 @@
qdel(src)
*/
updateicon()
update_icon()
/obj/machinery/magnetic_module/proc/magnetic_process() // proc that actually does the pulling
if(pulling) return

View File

@@ -55,10 +55,10 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w
// hide the object if turf is intact
/obj/machinery/navbeacon/hide(var/intact)
invisibility = intact ? 101 : 0
updateicon()
update_icon()
// update the icon_state
/obj/machinery/navbeacon/proc/updateicon()
/obj/machinery/navbeacon/update_icon()
var/state="navbeacon[open]"
if(invisibility)
@@ -77,7 +77,7 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w
playsound(src, I.usesound, 50, 1)
user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.")
updateicon()
update_icon()
else if(I.GetID())
if(open)

View File

@@ -38,7 +38,7 @@
if(metal)
var/obj/structure/foamedmetal/M = new(src.loc)
M.metal = metal
M.updateicon()
M.update_icon()
flick("[icon_state]-disolve", src)
QDEL_IN(src, 5)
@@ -151,7 +151,7 @@
update_nearby_tiles(1)
return ..()
/obj/structure/foamedmetal/proc/updateicon()
/obj/structure/foamedmetal/update_icon()
if(metal == 1)
icon_state = "metalfoam"
else

View File

@@ -113,13 +113,13 @@
on = 1
START_PROCESSING(SSobj, src)
updateicon()
update_icon()
/obj/item/device/suit_cooling_unit/proc/turn_off(var/failed)
if(failed) visible_message("\The [src] clicks and whines as it powers down.")
on = 0
STOP_PROCESSING(SSobj, src)
updateicon()
update_icon()
/obj/item/device/suit_cooling_unit/attack_self(var/mob/user)
if(cover_open && cell)
@@ -133,7 +133,7 @@
to_chat(user, "You remove \the [src.cell].")
src.cell = null
updateicon()
update_icon()
return
toggle(user)
@@ -154,7 +154,7 @@
cover_open = 1
to_chat(user, "You unscrew the panel.")
playsound(src, W.usesound, 50, 1)
updateicon()
update_icon()
return
if (istype(W, /obj/item/weapon/cell))
@@ -166,12 +166,12 @@
W.loc = src
cell = W
to_chat(user, "You insert the [cell].")
updateicon()
update_icon()
return
return ..()
/obj/item/device/suit_cooling_unit/proc/updateicon()
/obj/item/device/suit_cooling_unit/update_icon()
cut_overlays()
if(cover_open)
if(cell)
@@ -228,7 +228,7 @@
cell = /obj/item/weapon/cell
w_class = ITEMSIZE_NORMAL
/obj/item/device/suit_cooling_unit/emergency/updateicon()
/obj/item/device/suit_cooling_unit/emergency/update_icon()
return
/obj/item/device/suit_cooling_unit/emergency/get_cell()

View File

@@ -73,9 +73,9 @@
/obj/item/robot_parts/robot_suit/New()
..()
src.updateicon()
src.update_icon()
/obj/item/robot_parts/robot_suit/proc/updateicon()
/obj/item/robot_parts/robot_suit/update_icon()
cut_overlays()
if(src.l_arm)
add_overlay("l_arm+o")
@@ -117,28 +117,28 @@
user.drop_item()
W.loc = src
src.l_leg = W
src.updateicon()
src.update_icon()
if(istype(W, /obj/item/robot_parts/r_leg))
if(src.r_leg) return
user.drop_item()
W.loc = src
src.r_leg = W
src.updateicon()
src.update_icon()
if(istype(W, /obj/item/robot_parts/l_arm))
if(src.l_arm) return
user.drop_item()
W.loc = src
src.l_arm = W
src.updateicon()
src.update_icon()
if(istype(W, /obj/item/robot_parts/r_arm))
if(src.r_arm) return
user.drop_item()
W.loc = src
src.r_arm = W
src.updateicon()
src.update_icon()
if(istype(W, /obj/item/robot_parts/chest))
if(src.chest) return
@@ -146,7 +146,7 @@
user.drop_item()
W.loc = src
src.chest = W
src.updateicon()
src.update_icon()
else if(!W:wires)
to_chat(user, "<span class='warning'>You need to attach wires to it first!</span>")
else
@@ -158,7 +158,7 @@
user.drop_item()
W.loc = src
src.head = W
src.updateicon()
src.update_icon()
else
to_chat(user, "<span class='warning'>You need to attach a flash to it first!</span>")
@@ -222,7 +222,7 @@
feedback_inc("cyborg_birth",1)
callHook("borgify", list(O))
O.Namepick()
O.namepick()
qdel(src)
else

View File

@@ -65,9 +65,9 @@
/obj/item/borg/upgrade/bellysizeupgrade/action(var/mob/living/silicon/robot/R)
if(..()) return 0
if(!R.module || R.dogborg == FALSE)//can work
if(!R.module)//can work
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
to_chat(usr, "There's no mounting point for the module! Try upgrading another model.")
to_chat(usr, "There's no mounting point for the module!")
return 0
var/obj/item/device/dogborg/sleeper/T = locate() in R.module

View File

@@ -140,10 +140,10 @@
var/mob/living/carbon/human/H = M
H.resize(chaos/100)
H.show_message("<font color='#6F6FE2'> The beam fires into your body, changing your size!</font>")
H.updateicon()
H.update_icon()
else if (istype(target, /mob/living/))
var/mob/living/H = M
H.resize(chaos/100)
H.updateicon()
H.update_icon()
else
return 1

View File

@@ -12,7 +12,7 @@
if(isrobot(M))
var/mob/living/silicon/robot/R = M
if(R.module.type == /obj/item/weapon/robot_module/robot/janitor/scrubpup) // You can now feed the trash borg yay.
if(R.module.type == /obj/item/weapon/robot_module/robot/janitor) // You can now feed the trash borg yay.
playsound(src,'sound/items/eatfood.ogg', rand(10,50), 1)
user.drop_item()
forceMove(R.vore_selected)

View File

@@ -469,8 +469,8 @@
// -----------------------------
// Food Bag (Service Hound)
// -----------------------------
/obj/item/weapon/storage/bag/dogborg
name = "dog bag"
/obj/item/weapon/storage/bag/serviceborg
name = "service bag"
icon = 'icons/obj/storage_vr.dmi'
icon_state = "foodbag"
desc = "An intergrated bag for storing things of all kinds."

View File

@@ -162,7 +162,7 @@
/obj/structure/door_assembly/attack_robot(mob/living/silicon/robot/user)
if(Adjacent(user) && (user.module && (istype(user.module,/obj/item/weapon/robot_module/robot/engineering)) \
|| istype(user.module,/obj/item/weapon/robot_module/drone))) //Only dron (and engiborg) needs this.
|| istype(user.module,/obj/item/weapon/robot_module/drone))) //Only drone (and engiborg) needs this.
rename_door(user)
/obj/structure/door_assembly/attackby(obj/item/W as obj, mob/user as mob)

View File

@@ -58,7 +58,7 @@
return
A.use_power_oneoff(5000, EQUIP)
var/light = A.power_light
A.updateicon()
A.update_icon()
flick("echair1", src)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
@@ -74,5 +74,5 @@
visible_message("<span class='danger'>The electric chair went off!</span>", "<span class='danger'>You hear a deep sharp shock!</span>")
A.power_light = light
A.updateicon()
A.update_icon()
return

View File

@@ -31,7 +31,7 @@
from the pod is not a crewmember.</span>")
R.ckey = M.ckey
visible_message("<span class='warning'>As \the [src] opens, the eyes of the robot flicker as it is activated.</span>")
R.Namepick()
R.namepick()
log_and_message_admins("successfully opened \a [src] and got a Lost Drone.")
..()
@@ -57,7 +57,7 @@
definiton of 'your gravesite' is where your pod is.</span>")
R.ckey = M.ckey
visible_message("<span class='warning'>As \the [src] opens, the eyes of the robot flicker as it is activated.</span>")
R.Namepick()
R.namepick()
..()
/obj/structure/ghost_pod/ghost_activated/swarm_drone

View File

@@ -1,19 +1,19 @@
/obj/structure/ghost_pod/manual/lost_drone/dogborg
/obj/structure/ghost_pod/manual/lost_drone/dogborg // name is just legacy now
remains_active = TRUE
/obj/structure/ghost_pod/manual/lost_drone/dogborg/create_occupant(var/mob/M)
var/response = tgui_alert(M, "What type of lost drone are you? Do note, that dogborgs may have experienced different type of corruption ((High potential for having vore-related laws))", "Drone Type", list("Regular", "Dogborg"))
if(!(response == "Dogborg")) // No response somehow or Regular
var/response = tgui_alert(M, "What sort of laws do you wish to have as Lost Drone (they will still be random)", "Drone Type", list("Regular", "Vore"))
if(!(response == "Vore")) // No response somehow or Regular
return ..()
else
density = FALSE
var/mob/living/silicon/robot/stray/randomlaws/R = new(get_turf(src))
var/mob/living/silicon/robot/lost/randomlaws/vore/R = new(get_turf(src))
R.adjustBruteLoss(rand(5, 30))
R.adjustFireLoss(rand(5, 10))
if(M.mind)
M.mind.transfer_to(R)
// Put this text here before ckey change so that their laws are shown below it, since borg login() shows it.
to_chat(M, "<span class='notice'>You are a <b>Stray Drone</b>, discovered inside the wreckage of your previous home. \
to_chat(M, "<span class='notice'>You are a <b>Lost Drone</b>, discovered inside the wreckage of your previous home. \
Something has reactivated you, with their intentions unknown to you, and yours unknown to them. They are a foreign entity, \
however they did free you from your pod...</span>")
to_chat(M, "<span class='notice'><b>Be sure to examine your currently loaded lawset closely.</b> Remember, your \
@@ -21,7 +21,7 @@
from the pod is not a crewmember.</span>")
R.ckey = M.ckey
visible_message("<span class='warning'>As \the [src] opens, the eyes of the robot flicker as it is activated.</span>")
R.Namepick()
log_and_message_admins("successfully opened \a [src] and got a Stray Drone.")
R.namepick()
log_and_message_admins("successfully opened \a [src] and got a Lost Drone.")
used = TRUE
return TRUE

View File

@@ -77,7 +77,7 @@
/obj/structure/windoor_assembly/attack_robot(mob/living/silicon/robot/user)
if(Adjacent(user) && (user.module && (istype(user.module,/obj/item/weapon/robot_module/robot/engineering)) \
|| istype(user.module,/obj/item/weapon/robot_module/drone))) //Only dron (and engiborg) needs this.
|| istype(user.module,/obj/item/weapon/robot_module/drone))) //Only drone (and engiborg) needs this.
rename_door(user)
/obj/structure/windoor_assembly/attackby(obj/item/W as obj, mob/user as mob)

View File

@@ -144,20 +144,20 @@ var/global/list/alphabet_uppercase = list("A","B","C","D","E","F","G","H","I","J
var/list/robot_module_types = list(
"Standard", "Engineering",/* "Surgeon",*/ "Crisis", //CHOMPedit: Combining Surgeon and Crisis.
"Miner", "Janitor", "Service", "Clerical", "Security",
"Research", "Medihound", "K9", "Janihound", "Sci-borg", "Pupdozer",
"Service-Hound", "BoozeHound", "KMine"//, "TraumaHound" // CHOMPedit: Combining Medihound and Traumahound.
"Research"
)
// L
// List of modules added during code red
var/list/emergency_module_types = list(
"Combat", "ERT"
"Combat"
)
// List of modules available to AI shells
var/list/shell_module_types = list(
"Standard", "Service", "Clerical", "Service-Hound", "BoozeHound"
"Standard", "Service", "Clerical"
)
// List of whitelisted modules
var/list/whitelisted_module_types = list(
"Lost", "Stray"
"Lost"
)
// Some scary sounds.

View File

@@ -104,7 +104,7 @@
dead_mob_list |= src
set_respawn_timer()
updateicon()
update_icon()
handle_regular_hud_updates()
handle_vision()

View File

@@ -7,7 +7,7 @@
H.put_in_hands(hat)
H.visible_message("<span class='danger'>\The [H] removes \the [src]'s [hat].</span>")
hat = null
updateicon()
update_icon()
else
return ..()

View File

@@ -1366,11 +1366,11 @@
var/mob/living/F = firer
if(F.appendage_alt_setting == 1)
F.throw_at(M, throw_range, firer.throw_speed, F) //Firer thrown at target.
F.updateicon()
F.update_icon()
return
if(istype(M))
M.throw_at(firer, throw_range, M.throw_speed, firer) //Fun fact: living things have a throw_speed of 2.
M.updateicon()
M.update_icon()
return
else //Anything that isn't a /living
return

View File

@@ -278,7 +278,7 @@ var/list/ai_verbs_default = list(
selected_sprite = new/datum/ai_icon("Custom", "[src.ckey]-ai", "4", "[ckey]-ai-crash", "#FFFFFF", "#FFFFFF", "#FFFFFF")
else
selected_sprite = default_ai_icon
updateicon()
update_icon()
/mob/living/silicon/ai/pointed(atom/A as mob|obj|turf in view())
set popup_menu = 0
@@ -353,7 +353,7 @@ var/list/ai_verbs_default = list(
if (!custom_sprite)
var/new_sprite = tgui_input_list(usr, "Select an icon!", "AI", ai_icons)
if(new_sprite) selected_sprite = new_sprite
updateicon()
update_icon()
/mob/living/silicon/ai/var/message_cooldown = 0
/mob/living/silicon/ai/proc/ai_announcement()
@@ -895,7 +895,7 @@ var/list/ai_verbs_default = list(
return
..()
/mob/living/silicon/ai/updateicon()
/mob/living/silicon/ai/update_icon()
if(!selected_sprite) selected_sprite = default_ai_icon
if(stat == DEAD)

View File

@@ -58,18 +58,18 @@
to_chat(src, "Alert cancelled. Power has been restored without our assistance.")
aiRestorePowerRoutine = 0
clear_fullscreen("blind")
updateicon()
update_icon()
return
else if (aiRestorePowerRoutine==3)
to_chat(src, "Alert cancelled. Power has been restored.")
aiRestorePowerRoutine = 0
clear_fullscreen("blind")
updateicon()
update_icon()
return
else if (APU_power)
aiRestorePowerRoutine = 0
clear_fullscreen("blind")
updateicon()
update_icon()
return
else
var/area/current_area = get_area(src)
@@ -79,7 +79,7 @@
aiRestorePowerRoutine = 1
//Blind the AI
updateicon()
update_icon()
overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
src.sight = src.sight&~SEE_TURFS
src.sight = src.sight&~SEE_MOBS
@@ -122,9 +122,9 @@
break
if (!theAPC)
switch(PRP)
if (1)
if (1)
to_chat(src, "Unable to locate APC!")
else
else
to_chat(src, "Lost connection with the APC!")
src:aiRestorePowerRoutine = 2
return
@@ -135,11 +135,11 @@
clear_fullscreen("blind") //This, too, is a fix to issue 603
return
switch(PRP)
if (1)
if (1)
to_chat(src, "APC located. Optimizing route to APC to avoid needless power waste.")
if (2)
if (2)
to_chat(src, "Best route identified. Hacking offline APC power port.")
if (3)
if (3)
to_chat(src, "Power port upload access confirmed. Loading control program into APC power port software.")
if (4)
to_chat(src, "Transfer complete. Forcing APC to execute program.")
@@ -152,7 +152,7 @@
aiRestorePowerRoutine = 3
to_chat(src, "Here are your current laws:")
show_laws()
updateicon()
update_icon()
sleep(50)
theAPC = null

View File

@@ -1,3 +1,4 @@
// Deprecated as of the sprite datumization, kept only for ai custom icons (even though we dont yet have any)
//list(ckey = real_name,)
//Since the ckey is used as the icon_state, the current system will only permit a single custom robot sprite per ckey.
@@ -24,7 +25,7 @@ GLOBAL_LIST_EMPTY(robot_custom_icons)
return 1
/mob/living/silicon/robot/proc/set_custom_sprite()
if(!sprite_name)
if(!sprite_name || !(sprite_name in GLOB.robot_custom_icons))
return
var/sprite_owner = GLOB.robot_custom_icons[sprite_name]
if(sprite_owner && sprite_owner == ckey)

View File

@@ -48,19 +48,20 @@
update_icon()
// Baton chompers
/obj/item/weapon/dogborg/jaws/ert
name = "ert jaws"
/obj/item/weapon/borg_combat_shocker
name = "combat shocker"
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "ertjaws"
desc = "Shockingly chompy!"
icon_state = "combatshocker"
desc = "Shocking!"
force = 15
throwforce = 0
hitsound = 'sound/weapons/bite.ogg'
attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
hitsound = 'sound/weapons/genhit1.ogg'
attack_verb = list("hit")
w_class = ITEMSIZE_NORMAL
var/charge_cost = 15
var/dogborg = FALSE
/obj/item/weapon/dogborg/jaws/ert/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
/obj/item/weapon/borg_combat_shocker/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
if(isrobot(target))
return ..()
@@ -80,9 +81,15 @@
stun *= 0.5
else
if(affecting)
target.visible_message("<span class='danger'>[target] has been zap-chomped in the [affecting.name] with [src] by [user]!</span>")
if(dogborg)
target.visible_message("<span class='danger'>[target] has been zap-chomped in the [affecting.name] with [src] by [user]!</span>")
else
target.visible_message("<span class='danger'>[target] has been zapped in the [affecting.name] with [src] by [user]!</span>")
else
target.visible_message("<span class='danger'>[target] has been zap-chomped with [src] by [user]!</span>")
if(dogborg)
target.visible_message("<span class='danger'>[target] has been zap-chomped with [src] by [user]!</span>")
else
target.visible_message("<span class='danger'>[target] has been zapped with [src] by [user]!</span>")
playsound(src, 'sound/weapons/Egloves.ogg', 50, 1, -1)
// Try to use power
@@ -100,21 +107,21 @@
H.forcesay(hit_appends)
//Boop //New and improved, now a simple reagent sniffer.
/obj/item/device/dogborg/boop_module
/obj/item/device/boop_module
name = "boop module"
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "nose"
desc = "The BOOP module, a simple reagent and atmosphere sniffer."
desc = "The BOOP module, a simple reagent and atmosphere scanner."
force = 0
throwforce = 0
attack_verb = list("nuzzled", "nosed", "booped")
w_class = ITEMSIZE_TINY
/obj/item/device/dogborg/boop_module/New()
/obj/item/device/boop_module/New()
..()
flags |= NOBLUDGEON //No more attack messages
/obj/item/device/dogborg/boop_module/attack_self(mob/user)
/obj/item/device/boop_module/attack_self(mob/user)
if (!( istype(user.loc, /turf) ))
return
@@ -124,9 +131,9 @@
var/total_moles = environment.total_moles
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
user.visible_message("<span class='notice'>[user] sniffs the air.</span>", "<span class='notice'>You sniff the air...</span>")
user.visible_message("<span class='notice'>[user] scans the air.</span>", "<span class='notice'>You scan the air...</span>")
to_chat(user, "<span class='notice'><B>Smells like:</B></span>")
to_chat(user, "<span class='notice'><B>Scan results:</B></span>")
if(abs(pressure - ONE_ATMOSPHERE) < 10)
to_chat(user, "<span class='notice'>Pressure: [round(pressure,0.1)] kPa</span>")
else
@@ -136,7 +143,7 @@
to_chat(user, "<span class='notice'>[gas_data.name[g]]: [round((environment.gas[g] / total_moles) * 100)]%</span>")
to_chat(user, "<span class='notice'>Temperature: [round(environment.temperature-T0C,0.1)]&deg;C ([round(environment.temperature,0.1)]K)</span>")
/obj/item/device/dogborg/boop_module/afterattack(obj/O, mob/user as mob, proximity)
/obj/item/device/boop_module/afterattack(obj/O, mob/user as mob, proximity)
if(!proximity)
return
if (user.stat)
@@ -145,7 +152,7 @@
return
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
user.visible_message("<span class='notice'>[user] sniffs at \the [O.name].</span>", "<span class='notice'>You sniff \the [O.name]...</span>")
user.visible_message("<span class='notice'>[user] scan at \the [O.name].</span>", "<span class='notice'>You scan \the [O.name]...</span>")
if(!isnull(O.reagents))
var/dat = ""
@@ -156,9 +163,9 @@
if(dat)
to_chat(user, "<span class='notice'>Your BOOP module indicates: [dat]</span>")
else
to_chat(user, "<span class='notice'>No active chemical agents smelled in [O].</span>")
to_chat(user, "<span class='notice'>No active chemical agents detected in [O].</span>")
else
to_chat(user, "<span class='notice'>No significant chemical agents smelled in [O].</span>")
to_chat(user, "<span class='notice'>No significant chemical agents detected in [O].</span>")
return
@@ -227,28 +234,19 @@
//Tongue stuff
/obj/item/device/dogborg/tongue
/obj/item/device/robot_tongue
name = "synthetic tongue"
desc = "Useful for slurping mess off the floor before affectionately licking the crew members in the face."
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "synthtongue"
hitsound = 'sound/effects/attackblob.ogg'
var/emagged = 0
var/datum/matter_synth/water = null
/obj/item/device/dogborg/tongue/New()
/obj/item/device/robot_tongue/New()
..()
flags |= NOBLUDGEON //No more attack messages
/obj/item/device/dogborg/tongue/examine(user)
. = ..()
if(Adjacent(user))
if(water.energy)
. += "<span class='notice'>[src] is wet. Just like it should be.</span>"
if(water.energy < 5)
. += "<span class='notice'>[src] is dry.</span>"
/obj/item/device/dogborg/tongue/attack_self(mob/user)
/obj/item/device/robot_tongue/attack_self(mob/user)
var/mob/living/silicon/robot/R = user
if(R.emagged || R.emag_items)
emagged = !emagged
@@ -264,29 +262,14 @@
icon_state = "synthtongue"
update_icon()
/obj/item/device/dogborg/tongue/afterattack(atom/target, mob/user, proximity)
/obj/item/device/robot_tongue/afterattack(atom/target, mob/user, proximity)
if(!proximity)
return
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
if(user.client && (target in user.client.screen))
to_chat(user, "<span class='warning'>You need to take \the [target.name] off before cleaning it!</span>")
if(istype(target, /obj/structure/sink) || istype(target, /obj/structure/toilet)) //Dog vibes.
user.visible_message("<span class='filter_notice'>[user] begins to lap up water from [target.name].</span>", "<span class='notice'>You begin to lap up water from [target.name].</span>")
if(do_after (user, 50))
water.add_charge(50)
to_chat(src, "<span class='filter_notice'>You refill some of your water reserves.</span>")
else if(water.energy < 5)
to_chat(user, "<span class='notice'>Your mouth feels dry. You should drink up some water .</span>")
return
else if(istype(target,/obj/effect/decal/cleanable))
user.visible_message("<span class='filter_notice'>[user] begins to lick off \the [target.name].</span>", "<span class='notice'>You begin to lick off \the [target.name]...</span>")
if(do_after (user, 50))
to_chat(user, "<span class='notice'>You finish licking off \the [target.name].</span>")
water.use_charge(5)
qdel(target)
var/mob/living/silicon/robot/R = user
R.cell.charge += 50
else if(istype(target,/obj/item))
if(istype(target,/obj/item/trash))
user.visible_message("<span class='filter_notice'>[user] nibbles away at \the [target.name].</span>", "<span class='notice'>You begin to nibble away at \the [target.name]...</span>")
@@ -296,7 +279,6 @@
qdel(target)
var/mob/living/silicon/robot/R = user
R.cell.charge += 250
water.use_charge(5)
return
if(istype(target,/obj/item/weapon/reagent_containers/food))
user.visible_message("[user] nibbles away at \the [target.name].", "<span class='notice'>You begin to nibble away at \the [target.name]...</span>")
@@ -315,16 +297,8 @@
var/mob/living/silicon/robot/R = user
var/obj/item/weapon/cell/C = target
R.cell.charge += C.charge / 3
water.use_charge(5)
qdel(target)
return
user.visible_message("<span class='filter_notice'>[user] begins to lick \the [target.name] clean...</span>", "<span class='notice'>You begin to lick \the [target.name] clean...</span>")
if(do_after (user, 50))
to_chat(user, "<span class='notice'>You clean \the [target.name].</span>")
water.use_charge(5)
var/obj/effect/decal/cleanable/C = locate() in target
qdel(C)
target.clean_blood()
else if(ishuman(target))
if(src.emagged)
var/mob/living/silicon/robot/R = user
@@ -341,21 +315,9 @@
else
user.visible_message("<span class='notice'>\The [user] affectionately licks all over \the [target]'s face!</span>", "<span class='notice'>You affectionately lick all over \the [target]'s face!</span>")
playsound(src, 'sound/effects/attackblob.ogg', 50, 1)
water.use_charge(5)
var/mob/living/carbon/human/H = target
if(H.species.lightweight == 1)
H.Weaken(3)
else
user.visible_message("<span class='filter_notice'>[user] begins to lick \the [target.name] clean...</span>", "<span class='notice'>You begin to lick \the [target.name] clean...</span>")
if(do_after (user, 50))
to_chat(user, "<span class='notice'>You clean \the [target.name].</span>")
var/obj/effect/decal/cleanable/C = locate() in target
qdel(C)
target.clean_blood()
water.use_charge(5)
if(istype(target, /turf/simulated))
var/turf/simulated/T = target
T.dirt = 0
return
/obj/item/pupscrubber
@@ -391,11 +353,11 @@
recharge_time = 1 //Takes ten ticks to recharge a laser, so don't waste them all!
//cell_type = null //Same cell as a taser until edits are made.
/obj/item/weapon/dogborg/swordtail
name = "sword tail"
/obj/item/weapon/combat_borgblade
name = "energy blade"
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "swordtail"
desc = "A glowing pink dagger normally attached to the end of a cyborg's tail. It appears to be extremely sharp."
desc = "A glowing dagger. It appears to be extremely sharp."
force = 20 //Takes 5 hits to 100-0
sharp = TRUE
edge = TRUE
@@ -518,29 +480,3 @@
T.apply_damage(20, HALLOSS,, armor_block, armor_soak)
if(prob(75)) //75% chance to stun for 5 seconds, really only going to be 4 bcus click cooldown+animation.
T.apply_effect(5, WEAKEN, armor_block)
/mob/living/silicon/robot/proc/reskin_booze()
set name = "Change Drink Color"
set category = "Robot Commands"
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 = tgui_input_list(M, "Choose your drink!", "Drink Choice", options)
if(src && choice && !M.stat && in_range(M,src))
icontype = options[choice]
selected_icon = module_sprites[icontype][SKIN_ICON_STATE] //CHOMPEdit - sprite selection refactor
var/active_sound = 'sound/effects/bubbles.ogg'
playsound(src.loc, "[active_sound]", 100, 0, 4)
to_chat(M, "<span class='filter_notice'>Your Tank now displays [choice]. Drink up and enjoy!</span>")
updateicon()
return 1

View File

@@ -2,8 +2,8 @@
//Sleeper
/obj/item/device/dogborg/sleeper
name = "Medbelly"
desc = "Equipment for medical hound. A mounted sleeper that stabilizes patients and can inject reagents in the borg's reserves."
name = "Sleeper Belly"
desc = "A mounted sleeper that stabilizes patients and can inject reagents in the borg's reserves."
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "sleeper"
w_class = ITEMSIZE_TINY
@@ -13,10 +13,11 @@
var/min_health = -100
var/cleaning = 0
var/patient_laststat = null
var/list/injection_chems = list("inaprovaline", "dexalin", "bicaridine", "kelotane", "anti_toxin", "spaceacillin", "paracetamol") //The borg is able to heal every damage type. As a nerf, they use 750 charge per injection.
var/list/injection_chems = list("inaprovaline", "bicaridine", "kelotane", "anti_toxin", "dexalin", "tricordrazine", "spaceacillin", "tramadol") //The borg is able to heal every damage type. As a nerf, they use 750 charge per injection.
var/eject_port = "ingestion"
var/list/items_preserved = list()
var/UI_open = FALSE
var/stabilizer = TRUE
var/compactor = FALSE
var/analyzer = FALSE
var/decompiler = FALSE
@@ -36,7 +37,6 @@
var/datum/matter_synth/glass = null
var/datum/matter_synth/wood = null
var/datum/matter_synth/plastic = null
var/datum/matter_synth/water = null
var/digest_brute = 2
var/digest_burn = 3
var/digest_multiplier = 1
@@ -135,7 +135,7 @@
trashman.reset_view(src)
START_PROCESSING(SSobj, src)
user.visible_message("<span class='warning'>[hound.name]'s [src.name] groans lightly as [trashman] slips inside.</span>", "<span class='notice'>Your [src.name] groans lightly as [trashman] slips inside.</span>")
log_attack("[key_name(hound)] has eaten [key_name(patient)] as a dogborg. ([hound ? "<a href='?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[hound.x];Y=[hound.y];Z=[hound.z]'>JMP</a>" : "null"])")//CHOMPEdit from message_admins
log_attack("[key_name(hound)] has eaten [key_name(patient)] with a cyborg belly. ([hound ? "<a href='?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[hound.x];Y=[hound.y];Z=[hound.z]'>JMP</a>" : "null"])")
playsound(src, gulpsound, vol = 100, vary = 1, falloff = 0.1, preference = /datum/client_preference/eating_noises)
if(delivery)
if(islist(deliverylists[delivery_tag]))
@@ -166,7 +166,7 @@
update_patient()
START_PROCESSING(SSobj, src)
user.visible_message("<span class='warning'>[hound.name]'s [src.name] lights up as [H.name] slips inside.</span>", "<span class='notice'>Your [src] lights up as [H] slips inside. Life support functions engaged.</span>")
message_admins("[key_name(hound)] has eaten [key_name(patient)] as a dogborg. ([hound ? "<a href='?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[hound.x];Y=[hound.y];Z=[hound.z]'>JMP</a>" : "null"])")
log_admin("[key_name(hound)] has eaten [key_name(patient)] with a cyborg belly. ([hound ? "<a href='?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[hound.x];Y=[hound.y];Z=[hound.z]'>JMP</a>" : "null"])")
playsound(src, gulpsound, vol = 100, vary = 1, falloff = 0.1, preference = /datum/client_preference/eating_noises)
/obj/item/device/dogborg/sleeper/proc/ingest_atom(var/atom/ingesting)
@@ -485,32 +485,25 @@
//Cleaning looks better with red on, even with nobody in it
if(cleaning || (length(contents) > 10) || (decompiler && (length(contents) > 5)) || (analyzer && (length(contents) > 1)))
hound.sleeper_r = TRUE
hound.sleeper_g = FALSE
hound.updateicon()
hound.sleeper_state = 1
hound.update_icon()
return
//Well, we HAD one, what happened to them?
if(patient in contents)
if(medsensor)
if(patient_laststat != patient.stat)
if(cleaning)
hound.sleeper_r = TRUE
hound.sleeper_g = FALSE
patient_laststat = patient.stat
else if(patient.stat & DEAD)
hound.sleeper_r = TRUE
hound.sleeper_g = FALSE
if(cleaning || (patient.stat & DEAD))
hound.sleeper_state = 1
patient_laststat = patient.stat
else
hound.sleeper_r = FALSE
hound.sleeper_g = TRUE
hound.sleeper_state = 2
patient_laststat = patient.stat
else
hound.sleeper_r = TRUE
hound.sleeper_state = 1
patient_laststat = patient.stat
//Update icon
hound.updateicon()
hound.update_icon()
//Return original patient
return(patient)
@@ -519,33 +512,26 @@
for(var/mob/living/carbon/human/C in contents)
patient = C
if(medsensor)
if(cleaning)
hound.sleeper_r = TRUE
hound.sleeper_g = FALSE
patient_laststat = patient.stat
else if(patient.stat & DEAD)
hound.sleeper_r = TRUE
hound.sleeper_g = FALSE
if(cleaning || (patient.stat & DEAD))
hound.sleeper_state = 1
patient_laststat = patient.stat
else
hound.sleeper_r = FALSE
hound.sleeper_g = TRUE
hound.sleeper_state = 2
patient_laststat = patient.stat
else
hound.sleeper_r = TRUE
hound.sleeper_state = 1
patient_laststat = patient.stat
//Update icon and return new patient
hound.updateicon()
hound.update_icon()
return(C)
//Couldn't find anyone, and not cleaning
if(!cleaning && !patient)
hound.sleeper_r = FALSE
hound.sleeper_g = FALSE
hound.sleeper_state = 0
patient_laststat = null
patient = null
hound.updateicon()
hound.update_icon()
return
//Gurgleborg process
@@ -597,7 +583,6 @@
if(air_master.current_cycle%3==1 && length(touchable_items))
//Burn all the mobs or add them to the exclusion list
var/volume = 0
for(var/mob/living/T in (touchable_items))
touchable_items -= T //Exclude mobs from loose item picking.
if((T.status_flags & GODMODE) || !T.digestable)
@@ -611,11 +596,9 @@
var/actual_burn = T.getFireLoss() - old_burn
var/damage_gain = actual_brute + actual_burn
hound.nutrition += 2.5 * damage_gain //drain(-25 * damage_gain) //25*total loss as with voreorgan stats.//CHOMPEdit
if(water)
water.add_charge(damage_gain)
if(T.stat == DEAD)
if(ishuman(T))
message_admins("[key_name(hound)] has digested [key_name(T)] as a dogborg. ([hound ? "<a href='?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[hound.x];Y=[hound.y];Z=[hound.z]'>JMP</a>" : "null"])")
log_admin("[key_name(hound)] has digested [key_name(T)] with a cyborg belly. ([hound ? "<a href='?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[hound.x];Y=[hound.y];Z=[hound.z]'>JMP</a>" : "null"])")
to_chat(hound, "<span class='notice'>You feel your belly slowly churn around [T], breaking them down into a soft slurry to be used as power for your systems.</span>")
to_chat(T, "<span class='notice'>You feel [hound]'s belly slowly churn around your form, breaking you down into a soft slurry to be used as power for [hound]'s systems.</span>")
var/deathsound = pick(
@@ -646,15 +629,6 @@
items_preserved |= brain
else
T.drop_from_inventory(I, src)
if(ishuman(T))
var/mob/living/carbon/human/Prey = T
volume = (Prey.bloodstr.total_volume + Prey.ingested.total_volume + Prey.touching.total_volume + Prey.weight) * Prey.size_multiplier
if(water)
water.add_charge(volume)
if(T.reagents)
volume = T.reagents.total_volume
if(water)
water.add_charge(volume)
if(T.ckey)
GLOB.prey_digested_roundstat++
if(patient == T)
@@ -670,8 +644,6 @@
//Handle the target being anything but a /mob/living
var/obj/item/T = target
if(istype(T))
if(T.reagents)
volume = T.reagents.total_volume
var/digested = T.digest_act(item_storage = src)
if(!digested)
items_preserved |= T
@@ -681,8 +653,6 @@
for(var/tech in tech_item.origin_tech)
files.UpdateTech(tech, tech_item.origin_tech[tech])
synced = FALSE
if(volume && water)
water.add_charge(volume)
if(recycles && T.matter)
for(var/material in T.matter)
var/total_material = T.matter[material]
@@ -715,7 +685,7 @@
clean_cycle()
return
if(patient && !compactor) //We're caring for the patient. Medical emergency! Or endo scene.
if(patient && stabilizer) //We're caring for the patient. Medical emergency! Or endo scene.
update_patient()
if(patient.health < 0)
patient.adjustOxyLoss(-1) //Heal some oxygen damage if they're in critical condition
@@ -733,24 +703,26 @@
/obj/item/device/dogborg/sleeper/K9 //The K9 portabrig
name = "Brig-Belly"
desc = "Equipment for a K9 unit. A mounted portable-brig that holds criminals."
desc = "A mounted portable-brig that holds criminals for processing or 'processing'."
icon_state = "sleeperb"
injection_chems = null //So they don't have all the same chems as the medihound!
stabilizer = TRUE
medsensor = FALSE
/obj/item/device/dogborg/sleeper/compactor //Janihound gut.
name = "Garbage Processor"
desc = "A mounted garbage compactor unit with fuel processor."
desc = "A mounted garbage compactor unit with fuel processor, capable of processing any kind of contaminant."
icon_state = "compactor"
injection_chems = null //So they don't have all the same chems as the medihound!
compactor = TRUE
recycles = TRUE
max_item_count = 25
stabilizer = FALSE
medsensor = FALSE
/obj/item/device/dogborg/sleeper/compactor/analyzer //sci-borg gut.
name = "Digestive Analyzer"
desc = "A mounted destructive analyzer unit with fuel processor."
desc = "A mounted destructive analyzer unit with fuel processor, for 'deep scientific analysis'."
icon_state = "analyzer"
max_item_count = 10
startdrain = 100
@@ -759,12 +731,12 @@
/obj/item/device/dogborg/sleeper/compactor/decompiler
name = "Matter Decompiler"
desc = "A mounted matter decompiling unit with fuel processor."
desc = "A mounted matter decompiling unit with fuel processor, for recycling anything and everyone."
icon_state = "decompiler"
max_item_count = 10
decompiler = TRUE
recycles = TRUE
/*
/obj/item/device/dogborg/sleeper/compactor/delivery //Unfinished and unimplemented, still testing.
name = "Cargo Belly"
desc = "A mounted cargo bay unit for tagged deliveries."
@@ -772,10 +744,10 @@
max_item_count = 20
delivery = TRUE
recycles = FALSE
*/
/obj/item/device/dogborg/sleeper/compactor/supply //Miner borg belly
name = "Supply Satchel"
desc = "A mounted survival unit with fuel processor and ore storage." //CHOMPEdit Start
name = "Supply Storage"
desc = "A mounted survival unit with fuel processor, helpful with both deliveries and assisting injured miners."
icon_state = "sleeperc"
injection_chems = list("glucose","inaprovaline","tricordrazine")
max_item_count = 20
@@ -801,6 +773,7 @@
"mhydrogen" = 0,
"verdantium" = 0,
"rutile" = 0)
medsensor = FALSE
/obj/item/device/dogborg/sleeper/compactor/supply/Entered(atom/movable/thing, atom/OldLoc)
. = ..()
@@ -823,6 +796,7 @@
return
..() //CHOMPEdit End
//CHOMPAdd START
/obj/item/device/dogborg/sleeper/command //Command borg belly //CHOMP addition
name = "Bluespace Filing Belly"
desc = "A mounted bluespace storage unit for carrying paperwork"
@@ -832,13 +806,25 @@
compactor = TRUE
recycles = FALSE
max_item_count = 25
//CHOMP addition end
medsensor = FALSE
//CHOMP addition end
/obj/item/device/dogborg/sleeper/compactor/brewer
name = "Brew Belly"
desc = "A mounted drunk tank unit with fuel processor."
desc = "A mounted drunk tank unit with fuel processor, for putting away particularly rowdy patrons."
icon_state = "brewer"
injection_chems = null
injection_chems = null //So they don't have all the same chems as the medihound!
max_item_count = 10
recycles = FALSE
stabilizer = TRUE
medsensor = FALSE
/obj/item/device/dogborg/sleeper/compactor/generic
name = "Internal Cache"
desc = "An internal storage of no particularly specific purpose.."
icon_state = "sleeperd"
max_item_count = 10
recycles = FALSE
/obj/item/device/dogborg/sleeper/compactor/brewer/inject_chem(mob/user, chem) //CHOMP Addition Start
if(patient && patient.reagents)
@@ -864,16 +850,45 @@
//CHOMP Addition end
/obj/item/device/dogborg/sleeper/K9/ert
name = "ERT Belly"
name = "Emergency Storage"
desc = "A mounted 'emergency containment cell'."
icon_state = "sleeperert"
injection_chems = list("inaprovaline", "paracetamol") // short list
injection_chems = list("inaprovaline", "tramadol") // short list
/obj/item/device/dogborg/sleeper/compactor/trauma //Trauma borg belly
/obj/item/device/dogborg/sleeper/trauma //Trauma borg belly
name = "Recovery Belly"
desc = "A downgraded model of the medihound sleeper."
desc = "A downgraded model of the sleeper belly, intended primarily for post-surgery recovery."
icon_state = "sleeper"
injection_chems = list("inaprovaline", "dexalin", "bicaridine", "anti_toxin", "spaceacillin", "paracetamol")
max_item_count = 1
injection_chems = list("inaprovaline", "dexalin", "tricordrazine", "spaceacillin", "oxycodone")
/obj/item/device/dogborg/sleeper/lost
name = "Multipurpose Belly"
desc = "A multipurpose belly, capable of functioning as both sleeper and processor."
icon_state = "sleeperlost"
injection_chems = list("tricordrazine", "bicaridine", "dexalin", "anti_toxin", "tramadol", "spaceacillin")
compactor = TRUE
max_item_count = 25
stabilizer = TRUE
medsensor = TRUE
/obj/item/device/dogborg/sleeper/syndie
name = "Combat Triage Belly"
desc = "A mounted sleeper that stabilizes patients and can inject reagents in the borg's reserves. This one is for more extreme combat scenarios."
icon_state = "sleepersyndiemed"
injection_chems = list("healing_nanites", "hyperzine", "tramadol", "oxycodone", "spaceacillin", "peridaxon", "osteodaxon", "myelamine", "synthblood")
digest_multiplier = 2
/obj/item/device/dogborg/sleeper/K9/syndie
name = "Cell-Belly"
desc = "A mounted portable cell that holds anyone you wish for processing or 'processing'."
icon_state = "sleepersyndiebrig"
digest_multiplier = 3
/obj/item/device/dogborg/sleeper/compactor/syndie
name = "Advanced Matter Decompiler"
desc = "A mounted matter decompiling unit with fuel processor, for recycling anything and everyone in your way."
icon_state = "sleepersyndieeng"
max_item_count = 35
digest_multiplier = 3
#undef SLEEPER_INJECT_COST

View File

@@ -123,14 +123,14 @@ var/list/mob_hat_cache = list()
var/datum/robot_component/C = components[V]
C.max_damage = 10
verbs -= /mob/living/silicon/robot/verb/Namepick
verbs -= /mob/living/silicon/robot/verb/namepick
if(can_pick_shell)
var/random = pick(shell_types)
icon_state = shell_types[random]
shell_accessories = list("[icon_state]-eyes-blue")
updateicon()
update_icon()
updatename()
/mob/living/silicon/robot/drone/init()
@@ -161,7 +161,7 @@ var/list/mob_hat_cache = list()
real_name = "[initial(name)] ([serial_number])"
name = real_name
/mob/living/silicon/robot/drone/updateicon()
/mob/living/silicon/robot/drone/update_icon()
cut_overlays()
if(islist(shell_accessories))
@@ -177,9 +177,9 @@ var/list/mob_hat_cache = list()
if(!can_pick_shell)
to_chat(src, "<span class='warning'>You already selected a shell or this drone type isn't customizable.</span>")
return
var/list/choices = shell_types.Copy()
if(can_blitz)
choices["Blitz"] = "blitzshell"
@@ -199,9 +199,9 @@ var/list/mob_hat_cache = list()
var/armor_color = tgui_input_list(src, "Select plating color:", "Eye Color", list("blue", "red", "orange", "green", "brown"))
if(armor_color)
LAZYADD(shell_accessories, "[icon_state]-shell-[armor_color]")
can_pick_shell = FALSE
updateicon()
update_icon()
/mob/living/silicon/robot/drone/choose_icon()
return
@@ -214,7 +214,7 @@ var/list/mob_hat_cache = list()
return
hat = new_hat
new_hat.loc = src
updateicon()
update_icon()
//Drones cannot be upgraded with borg modules so we need to catch some items before they get used in ..().
/mob/living/silicon/robot/drone/attackby(var/obj/item/weapon/W, var/mob/user)

View File

@@ -29,7 +29,7 @@
H.put_in_hands(hat)
H.visible_message("<span class='danger'>\The [H] removes \the [src]'s [hat].</span>")
hat = null
updateicon()
update_icon()
return
else
return ..()

View File

@@ -403,7 +403,7 @@
A.cell.add_fingerprint(user)
A.cell.update_icon()
A.updateicon()
A.update_icon()
A.cell.loc = src
A.cell = null
@@ -582,15 +582,24 @@
else
resources += module_string
dat += tools
if (emagged)
if (!module.emag)
dat += text("<B>Resource depleted</B><BR>")
else if(activated(module.emag))
dat += text("[module.emag]: <B>Activated</B><BR>")
else
dat += text("[module.emag]: <A HREF=?src=\ref[src];act=\ref[module.emag]>Activate</A><BR>")
for (var/O in module.emag)
var/module_string = ""
if (!O)
module_string += text("<B>Resource depleted</B><BR>")
else if(activated(O))
module_string += text("[O]: <B>Activated</B><BR>")
else
module_string += text("[O]: <A HREF=?src=\ref[src];act=\ref[O]>Activate</A><BR>")
if((istype(O,/obj/item/weapon) || istype(O,/obj/item/device)) && !(istype(O,/obj/item/stack/cable_coil)))
tools += module_string
else
resources += module_string
dat += tools
dat += resources

View File

@@ -51,7 +51,7 @@
module_state_3:loc = module
module_state_3 = null
inv3.icon_state = "inv3"
updateicon()
update_icon()
hud_used.update_robot_modules_display()
/mob/living/silicon/robot/proc/uneq_all()
@@ -84,7 +84,7 @@
module_state_3:loc = module
module_state_3 = null
inv3.icon_state = "inv3"
updateicon()
update_icon()
/mob/living/silicon/robot/proc/activated(obj/item/O)
if(module_state_1 == O)
@@ -224,7 +224,7 @@
return
/mob/living/silicon/robot/proc/activate_module(var/obj/item/O)
if(!(locate(O) in src.module.modules) && O != src.module.emag)
if(!(locate(O) in src.module.modules) && !(locate(O) in src.module.emag))
return
if(activated(O))
to_chat(src, "<span class='notice'>Already activated</span>")

View File

@@ -334,7 +334,7 @@
module_state_2:screen_loc = ui_inv2
if(module_state_3)
module_state_3:screen_loc = ui_inv3
updateicon()
update_icon()
/mob/living/silicon/robot/proc/process_killswitch()
if(killswitch)

View File

@@ -10,5 +10,10 @@
// Forces synths to select an icon relevant to their module
if(!icon_selected)
choose_icon(icon_selection_tries, module_sprites)
plane_holder.set_vis(VIS_AUGMENTED, TRUE) //VOREStation Add - ROBOT VISION IS AUGMENTED
icon_selection_tries = SSrobot_sprites.get_module_sprites_len(modtype, src) + 1
choose_icon(icon_selection_tries)
if(sprite_datum && module)
sprite_datum.do_equipment_glamour(module)
plane_holder.set_vis(VIS_AUGMENTED, TRUE)

View File

@@ -1,12 +1,5 @@
#define CYBORG_POWER_USAGE_MULTIPLIER 2 // Multiplier for amount of power cyborgs use.
#define SKIN_ICON "skin_icon" //CHOMPAdd start - the variables for the borg icon lists
#define SKIN_ICON_STATE "skin_icon_state"
#define SKIN_OFFSET "skin_offset"
#define SKIN_HEIGHT "skin_height"
#define SKIN_REST "skin_rest"
#define SKIN_REST_BELLY "skin_rest_belly"
#define SKIN_BELLY_SIZE "skin_rest_belly" //CHOMPAdd end
/mob/living/silicon/robot
name = "Cyborg"
@@ -37,11 +30,13 @@
//Icon stuff
var/icontype //Persistent icontype tracking allows for cleaner icon updates
var/module_sprites[0] //Used to store the associations between sprite names and sprite index.
var/selected_icon //CHOMPAdd - for storing the iconstate now that it isnt as direct
var/icon_selected = 1 //If icon selection has been completed yet
var/icon_selection_tries = 0//Remaining attempts to select icon before a selection is forced
var/datum/robot_sprite/sprite_datum // Sprite datum, holding all our sprite data
var/icon_selected = 1 // If icon selection has been completed yet
var/icon_selection_tries = 0 // Remaining attempts to select icon before a selection is forced
var/list/sprite_extra_customization = list()
var/rest_style = "Default"
var/notransform
does_spin = FALSE
//Hud stuff
@@ -67,6 +62,9 @@
var/cell_emp_mult = 2
var/sleeper_state = 0 // 0 for empty, 1 for normal, 2 for mediborg-healthy
var/scrubbing = FALSE //Floor cleaning enabled
// Components are basically robot organs.
var/list/components = list()
@@ -106,7 +104,10 @@
var/list/robot_verbs_default = list(
/mob/living/silicon/robot/proc/sensor_mode,
/mob/living/silicon/robot/proc/robot_checklaws
/mob/living/silicon/robot/proc/robot_checklaws,
/mob/living/silicon/robot/proc/robot_mount,
/mob/living/proc/toggle_rider_reins,
/mob/living/proc/shred_limb
)
/mob/living/silicon/robot/New(loc, var/unfinished = 0)
@@ -123,11 +124,7 @@
robot_modules_background = new()
robot_modules_background.icon_state = "block"
ident = rand(1, 999)
module_sprites["Basic"] = list(SKIN_ICON_STATE = "robot", SKIN_ICON = 'icons/mob/robots.dmi') //CHOMPEdit - Spriteselector
selected_icon = "robot" //CHOMPEdit - Spriteselector
icontype = "Basic"
updatename(modtype)
updateicon()
radio = new /obj/item/device/radio/borg(src)
// communicator = new /obj/item/device/communicator/integrated(src)
@@ -176,6 +173,10 @@
hud_list[IMPTRACK_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPTRACK)
hud_list[SPECIALROLE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_SPECIAL)
/mob/living/silicon/robot/LateInitialize()
. = ..()
update_icon()
/mob/living/silicon/robot/proc/init()
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
laws = new /datum/ai_laws/nanotrasen()
@@ -257,6 +258,8 @@
wires = null
return ..()
// CONTINUE CODING HERE
/*
/mob/living/silicon/robot/proc/set_module_sprites(var/list/new_sprites)
if(new_sprites && new_sprites.len)
module_sprites = new_sprites.Copy()
@@ -266,19 +269,10 @@
icontype = "Custom"
else
icontype = module_sprites[1]
selected_icon = module_sprites[icontype][SKIN_ICON_STATE]//CHOMPEdit Start- Spriteselector
icon_state = module_sprites[icontype][SKIN_ICON_STATE]
if (isnull(module_sprites[icontype][SKIN_OFFSET]))
pixel_x = 0
old_x = 0
default_pixel_x = 0
else
pixel_x = module_sprites[icontype][SKIN_OFFSET]
old_x = module_sprites[icontype][SKIN_OFFSET]
default_pixel_x = module_sprites[icontype][SKIN_OFFSET]//CHOMPEdit End
updateicon()
icon_state = module_sprites[icontype]
update_icon()
return module_sprites
*/
/mob/living/silicon/robot/proc/pick_module()
if(module)
return
@@ -297,10 +291,10 @@
modules.Add(robot_module_types)
if(crisis || security_level == SEC_LEVEL_RED || crisis_override)
to_chat(src, "<font color='red'>Crisis mode active. Combat module available.</font>")
modules += emergency_module_types
modules |= emergency_module_types
for(var/module_name in whitelisted_module_types)
if(is_borg_whitelisted(src, module_name))
modules += module_name
modules |= module_name
//VOREStatation Edit End: shell restrictions
modtype = tgui_input_list(usr, "Please, select a module!", "Robot module", modules)
@@ -313,7 +307,7 @@
transform_with_anim() //VOREStation edit: sprite animation
new module_type(src)
hands.icon_state = lowertext(modtype)
hands.icon_state = get_hud_module_icon()
feedback_inc("cyborg_[lowertext(modtype)]",1)
updatename()
notify_ai(ROBOT_NOTIFICATION_NEW_MODULE, module.name)
@@ -354,9 +348,6 @@
if (camera)
camera.c_tag = changed_name
if(!custom_sprite) //Check for custom sprite
set_custom_sprite()
//Flavour text.
if(client)
var/module_flavour = client.prefs.flavour_texts_robot[modtype]
@@ -372,8 +363,10 @@
ooc_notes_dislikes = client.prefs.metadata_dislikes
custom_link = client.prefs.custom_link
/mob/living/silicon/robot/verb/Namepick()
/mob/living/silicon/robot/verb/namepick()
set name = "Pick Name"
set category = "Robot Commands"
if(custom_name)
to_chat(usr, "You can't pick another custom name. Go ask for a name change.")
return 0
@@ -386,7 +379,18 @@
sprite_name = newname
updatename()
updateicon()
update_icon()
/mob/living/silicon/robot/verb/extra_customization()
set name = "Customize Appearance"
set category = "Robot Commands"
set desc = "Customize your appearance (assuming your chosen sprite allows)."
if(!sprite_datum || !sprite_datum.has_extra_customization)
to_chat(src, "<span class='warning'>Your sprite cannot be customized.</span>")
return
sprite_datum.handle_extra_customization(src)
/mob/living/silicon/robot/proc/self_diagnosis()
if(!is_component_functioning("diagnosis unit"))
@@ -406,7 +410,7 @@
lights_on = !lights_on
to_chat(usr, "<span class='filter_notice'>You [lights_on ? "enable" : "disable"] your integrated light.</span>")
handle_light()
updateicon() //VOREStation Add - Since dogborgs have sprites for this
update_icon()
/mob/living/silicon/robot/verb/self_diagnosis_verb()
set category = "Robot Commands"
@@ -584,7 +588,7 @@
if(cell)
to_chat(user, "<span class='filter_notice'>You close the cover.</span>")
opened = 0
updateicon()
update_icon()
else if(wiresexposed && wires.is_all_cut())
//Cell is out, wires are exposed, remove MMI, produce damaged chassis, baleet original mob.
if(!mmi)
@@ -599,7 +603,7 @@
C.r_leg = new/obj/item/robot_parts/r_leg(C)
C.l_arm = new/obj/item/robot_parts/l_arm(C)
C.r_arm = new/obj/item/robot_parts/r_arm(C)
C.updateicon()
C.update_icon()
new/obj/item/robot_parts/chest(loc)
qdel(src)
else
@@ -633,7 +637,7 @@
else
to_chat(user, "<span class='filter_notice'>You open the cover.</span>")
opened = 1
updateicon()
update_icon()
else if (istype(W, /obj/item/weapon/cell) && opened) // trying to put a cell inside
var/datum/robot_component/C = components["power cell"]
@@ -666,14 +670,14 @@
wiresexposed = !wiresexposed
to_chat(user, "<span class='filter_notice'>The wires have been [wiresexposed ? "exposed" : "unexposed"]</span>")
playsound(src, W.usesound, 50, 1)
updateicon()
update_icon()
else if(W.is_screwdriver() && opened && cell) // radio
if(radio)
radio.attackby(W,user)//Push it to the radio to let it handle everything
else
to_chat(user, "<span class='filter_notice'>Unable to locate a radio.</span>")
updateicon()
update_icon()
else if(W.is_wrench() && opened && !cell)
if(bolt)
@@ -705,7 +709,7 @@
if(allowed(usr))
locked = !locked
to_chat(user, "<span class='filter_notice'>You [ locked ? "lock" : "unlock"] [src]'s interface.</span>")
updateicon()
update_icon()
else
to_chat(user, "<span class='filter_notice'><font color='red'>Access denied.</font></span>")
@@ -760,7 +764,7 @@
transform_with_anim() //VOREStation edit: sprite animation
uneq_all()
modtype = initial(modtype)
hands.icon_state = initial(hands.icon_state)
hands.icon_state = get_hud_module_icon()
notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, module.name)
module.Reset(src)
@@ -782,7 +786,7 @@
cell = null
cell_component.wrapped = null
cell_component.installed = 0
updateicon()
update_icon()
else if(cell_component.installed == -1)
cell_component.installed = 0
var/obj/item/broken_device = cell_component.wrapped
@@ -865,31 +869,78 @@
return 1
return 0
/mob/living/silicon/robot/updateicon()
/mob/living/silicon/robot/update_icon()
if(!sprite_datum)
if(SSrobot_sprites) // Grab default if subsystem is ready
sprite_datum = SSrobot_sprites.get_default_module_sprite(modtype)
if(!sprite_datum) // If its not ready or fails to get us a sprite, use the default of our own
sprite_datum = new /datum/robot_sprite/default(src)
return
cut_overlays()
icon = sprite_datum.sprite_icon
icon_state = sprite_datum.sprite_icon_state
vis_height = sprite_datum.vis_height
if(default_pixel_x != sprite_datum.pixel_x)
default_pixel_x = sprite_datum.pixel_x
pixel_x = sprite_datum.pixel_x
old_x = sprite_datum.pixel_x
if(stat == CONSCIOUS)
if(!shell || deployed) // Shell borgs that are not deployed will have no eyes.
add_overlay("eyes-[selected_icon]")//CHOMPEdit - Spriteselector
var/show_belly = FALSE
if(sprite_datum.has_vore_belly_sprites)
if(vore_selected.silicon_belly_overlay_preference == "Sleeper")
if(sleeper_state)
show_belly = TRUE
else if(vore_selected.silicon_belly_overlay_preference == "Vorebelly")
if(LAZYLEN(vore_selected.contents) >= vore_selected.visible_belly_minimum_prey)
if(vore_selected.overlay_min_prey_size == 0) //if min size is 0, we dont check for size
show_belly = TRUE
else
if(vore_selected.override_min_prey_size && (LAZYLEN(vore_selected.contents) > vore_selected.override_min_prey_num))
show_belly = TRUE //Override regardless of content size
else
for(var/content in vore_selected.contents) //If ANY in belly are big enough, we set to true
if(!istype(content, /mob/living)) continue
var/mob/living/prey = content
if(prey.size_multiplier >= vore_selected.overlay_min_prey_size)
show_belly = TRUE
break
if(show_belly)
add_overlay(sprite_datum.get_belly_overlay(src))
sprite_datum.handle_extra_icon_updates(src) // Various equipment-based sprites go here.
if(resting && sprite_datum.has_rest_sprites)
cut_overlays() // Hide that gut for it has no ground sprite yo.
icon_state = sprite_datum.get_rest_sprite(src)
if(show_belly && sprite_datum.has_vore_belly_sprites && sprite_datum.has_vore_belly_resting_sprites) // Or DOES IT?
add_overlay(sprite_datum.get_belly_resting_overlay(src))
if(sprite_datum.has_eye_sprites)
if(!shell || deployed) // Shell borgs that are not deployed will have no eyes.
var/eyes_overlay = sprite_datum.get_eyes_overlay(src)
if(eyes_overlay)
add_overlay(eyes_overlay)
if(lights_on && sprite_datum.has_eye_light_sprites)
if(!shell || deployed) // Shell borgs that are not deployed will have no eyes.
var/eyes_overlay = sprite_datum.get_eye_light_overlay(src)
if(eyes_overlay)
add_overlay(eyes_overlay)
if(stat == DEAD && sprite_datum.has_dead_sprite)
cut_overlays()
icon_state = sprite_datum.get_dead_sprite(src)
if(sprite_datum.has_dead_sprite_overlay)
add_overlay(sprite_datum.get_dead_sprite_overlay(src))
if(opened)
var/panelprefix = custom_sprite ? "[src.ckey]-[src.sprite_name]" : "ov"
if(wiresexposed)
add_overlay("[panelprefix]-openpanel +w")
else if(cell)
add_overlay("[panelprefix]-openpanel +c")
else
add_overlay("[panelprefix]-openpanel -c")
if(has_active_type(/obj/item/borg/combat/shield))
var/obj/item/borg/combat/shield/shield = locate() in src
if(shield && shield.active)
add_overlay("[selected_icon]-shield")//CHOMPEdit - Spriteselector
if(modtype == "Combat")
if(module_active && istype(module_active,/obj/item/borg/combat/mobility))
icon_state = "[selected_icon]-roll"//CHOMPEdit - Spriteselector
else
icon_state = selected_icon//CHOMPEdit - Spriteselector
var/open_overlay = sprite_datum.get_open_sprite(src)
if(open_overlay)
add_overlay(open_overlay)
/mob/living/silicon/robot/proc/installed_modules()
if(weapon_lock)
@@ -918,16 +969,14 @@
else
dat += text("[obj]: <A HREF=?src=\ref[src];act=\ref[obj]>Activate</A><BR>")
if (emagged || emag_items)
if(activated(module.emag))
dat += text("[module.emag]: <B>Activated</B><BR>")
else
dat += text("[module.emag]: <A HREF=?src=\ref[src];act=\ref[module.emag]>Activate</A><BR>")
/*
if(activated(obj))
dat += text("[obj]: \[<B>Activated</B> | <A HREF=?src=\ref[src];deact=\ref[obj]>Deactivate</A>\]<BR>")
else
dat += text("[obj]: \[<A HREF=?src=\ref[src];act=\ref[obj]>Activate</A> | <B>Deactivated</B>\]<BR>")
*/
for (var/obj in module.emag)
if (!obj)
dat += text("<B>Resource depleted</B><BR>")
else if(activated(obj))
dat += text("[obj]: <B>Activated</B><BR>")
else
dat += text("[obj]: <A HREF=?src=\ref[src];act=\ref[obj]>Activate</A><BR>")
src << browse(dat, "window=robotmod")
@@ -954,7 +1003,7 @@
if (!istype(O))
return 1
if(!((O in src.module.modules) || (O == src.module.emag)))
if(!((O in src.module.modules) || (O in src.module.emag)))
return 1
if(activated(O))
@@ -1061,74 +1110,59 @@
return
/mob/living/silicon/robot/proc/choose_icon(var/triesleft, var/list/module_sprites)
if(!module_sprites.len)
to_chat(src, "Something is badly wrong with the sprite selection. Harass a coder.")
/mob/living/silicon/robot/proc/choose_icon(var/triesleft)
if(!SSrobot_sprites)
to_chat(src, "Robot Sprites have not been initialized yet. How are you choosing a sprite? Harass a coder.")
return
var/list/module_sprites = SSrobot_sprites.get_module_sprites(modtype, src)
if(!module_sprites || !module_sprites.len)
to_chat(src, "Your module appears to have no sprite options. Harass a coder.")
return
icon_selected = 0
src.icon_selection_tries = triesleft
icon_selection_tries = triesleft
if(module_sprites.len == 1 || !client)
if(!(icontype in module_sprites))
icontype = module_sprites[1]
if(!(sprite_datum in module_sprites))
sprite_datum = module_sprites[1]
else
icontype = tgui_input_list(usr, "Select an icon! [triesleft ? "You have [triesleft] more chance\s." : "This is your last try."]", "Robot Icon", module_sprites)
if(!icontype)
icontype = module_sprites[1]
if(!islist(module_sprites[icontype]))//CHOMPEdit Start - Spriteselector
to_chat(src, "Something is wrong with the sprite definition. Harass a coder.")
icontype = module_sprites[1]
if(isnull(module_sprites[icontype][SKIN_ICON])|isnull(module_sprites[icontype][SKIN_ICON_STATE]))
to_chat(src, "Something is wrong with the sprite definition. Harass a coder.")
icontype = module_sprites[1]//CHOMPEdit END
if(notransform) //VOREStation edit start: sprite animation
var/selection = tgui_input_list(src, "Select an icon! [triesleft ? "You have [triesleft] more chance\s." : "This is your last try."]", "Robot Icon", module_sprites)
sprite_datum = selection
if(notransform)
to_chat(src, "Your current transformation has not finished yet!")
icontype = module_sprites[1]//CHOMPEdit - Spriteselector
choose_icon(icon_selection_tries, module_sprites)
choose_icon(icon_selection_tries)
return
else
transform_with_anim() //VOREStation edit end: sprite animation
transform_with_anim()
var/tempheight = vis_height
update_icon()
// This is bad but I dunno other way to 'reset' our resize offset based on vis_height changes other than resizing to normal and back.
if(tempheight != vis_height)
var/tempsize = size_multiplier
resize(1)
resize(tempsize)
selected_icon = module_sprites[icontype][SKIN_ICON_STATE]//CHOMPEdit Start - Spriteselector
icon_state = module_sprites[icontype][SKIN_ICON_STATE]
if (isnull(module_sprites[icontype][SKIN_OFFSET]))
pixel_x = 0
old_x = 0
default_pixel_x = 0
else
pixel_x = module_sprites[icontype][SKIN_OFFSET]
old_x = module_sprites[icontype][SKIN_OFFSET]
default_pixel_x = module_sprites[icontype][SKIN_OFFSET]//CHOMPEdit End
updateicon()
if (module_sprites.len > 1 && triesleft >= 1 && client)
icon_selection_tries--
var/choice = tgui_alert(usr, "Look at your icon - is this what you want?", "Icon Choice", list("Yes","No"))
if(choice == "No")
choose_icon(icon_selection_tries, module_sprites)
choose_icon(icon_selection_tries)
return
//CHOMPEdit Begin - Allow multiple sizes of vore sprites and/or resting vore sprites
if(dogborg && module_sprites[icontype][SKIN_REST_BELLY])//CHOMPEdit - Spriteselector
sleeper_resting = TRUE
else
sleeper_resting = FALSE
//And then for multiple belly sizes...
if(dogborg && module_sprites[icontype][SKIN_BELLY_SIZE])//CHOMPEdit - Spriteselector
vore_capacity = 2
vore_capacity_ex["stomach"] = 2
else if(dogborg)
vore_capacity = 1
vore_capacity_ex["stomach"] = 1
else
vore_capacity = 0
vore_capacity_ex["stomach"] = 0
//CHOMPEdit End
icon_selected = 1
icon_selection_tries = 0
to_chat(src, "<span class='filter_notice'>Your icon has been set. You now require a module reset to change it.</span>")
/mob/living/silicon/robot/proc/set_default_module_icon()
if(!SSrobot_sprites)
return
sprite_datum = SSrobot_sprites.get_default_module_sprite(modtype)
update_icon()
/mob/living/silicon/robot/proc/sensor_mode() //Medical/Security HUD controller for borgs
set name = "Toggle Sensor Augmentation" //VOREStation Add
set category = "Robot Commands"
@@ -1273,7 +1307,7 @@
to_chat(src, "<b>Obey these laws:</b>")
laws.show_laws(src)
to_chat(src, "<span class='danger'>ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands.</span>")
updateicon()
update_icon()
else
to_chat(user, "<span class='filter_warning'>You fail to hack [src]'s interface.</span>")
to_chat(src, "<span class='filter_warning'>Hack attempt detected.</span>")
@@ -1307,3 +1341,26 @@
/mob/living/silicon/robot/get_cell()
return cell
/mob/living/silicon/robot/lay_down()
. = ..()
update_icon()
/mob/living/silicon/robot/verb/rest_style()
set name = "Switch Rest Style"
set desc = "Select your resting pose."
set category = "IC"
if(!sprite_datum || !sprite_datum.has_rest_sprites || sprite_datum.rest_sprite_options.len < 1)
to_chat(src, "<span class='notice'>Your current appearance doesn't have any resting styles!</span>")
rest_style = "Default"
return
if(sprite_datum.rest_sprite_options.len == 1)
to_chat(src, "<span class='notice'>Your current appearance only has a single resting style!</span>")
rest_style = "Default"
return
rest_style = tgui_alert(src, "Select resting pose", "Resting Pose", sprite_datum.rest_sprite_options)
if(!rest_style)
rest_style = "Default"

View File

@@ -4,46 +4,31 @@
//Add ourselves to the borg list
/hook/startup/proc/Modular_Borg_init_Honk()
robot_modules["Honk-Hound"] = /obj/item/weapon/robot_module/robot/clerical/honkborg
robot_module_types += "Honk-Hound" //Add ourselves to global
robot_modules["Clown"] = /obj/item/weapon/robot_module/robot/clerical/honkborg
robot_module_types += "Clown" //Add ourselves to global
return 1
/obj/item/weapon/robot_module/robot/clerical/honkborg
name = "honk-hound module"
sprites = list(
"Honkborg" = list(SKIN_ICON_STATE = "honkborg", SKIN_ICON = 'modular_chomp/icons/mob/widerobot_ch.dmi', SKIN_OFFSET = -16, SKIN_HEIGHT = 32),
"K4T" = list(SKIN_ICON_STATE = "k4tclown", SKIN_ICON = 'modular_chomp/icons/mob/tallborg/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64) //CHOMPEdit - Tallborgs
)
name = "clown robot module"
channels = list("Service" = 1,
"Entertainment" = 1)
pto_type = PTO_CIVILIAN
can_be_pushed = 0
/obj/item/weapon/robot_module/robot/clerical/honkborg/New(var/mob/living/silicon/robot/R)
/obj/item/weapon/robot_module/robot/clerical/honkborg/create_equipment(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/weapon/gripper/service(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src)
src.modules += new /obj/item/weapon/material/minihoe(src)
src.modules += new /obj/item/device/analyzer/plant_analyzer(src)
src.modules += new /obj/item/weapon/storage/bag/dogborg(src)
src.modules += new /obj/item/weapon/storage/bag/serviceborg(src)
src.modules += new /obj/item/weapon/robot_harvester(src)
src.modules += new /obj/item/device/multitool(src)
src.modules += new /obj/item/weapon/dogborg/jaws/small(src)
src.modules += new /obj/item/device/dogborg/boop_module(src)
src.modules += new /obj/item/device/boop_module(src)
src.modules += new /obj/item/weapon/dogborg/pounce(src)
src.modules += new /obj/item/weapon/bikehorn(src)
src.modules += new /obj/item/weapon/gun/launcher/confetti_cannon/honkborg(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/device/dogborg/tongue/T = new /obj/item/device/dogborg/tongue(src)
T.water = water
src.modules += T
var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src)
M.stored_matter = 30
src.modules += M
@@ -58,23 +43,6 @@
src.modules += new /obj/item/weapon/reagent_containers/borghypo/service(src)
var/obj/item/device/dogborg/sleeper/compactor/honkborg/B = new /obj/item/device/dogborg/sleeper/compactor/honkborg(src)
B.water = water
src.modules += B
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
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
R.verbs |= /mob/living/silicon/robot/proc/rest_style
..()

View File

@@ -4,8 +4,8 @@
//Add ourselves to the borg list
/hook/startup/proc/Modular_Borg_init_Unity()
robot_modules["UnityHound"] = /obj/item/weapon/robot_module/robot/chound //Add to module array
robot_module_types += "UnityHound" //Add ourselves to global
robot_modules["Command"] = /obj/item/weapon/robot_module/robot/chound //Add to module array
robot_module_types += "Command" //Add ourselves to global
return 1
//Create our list of known languages.
@@ -33,15 +33,7 @@
//Build our Module
/obj/item/weapon/robot_module/robot/chound
name = "Unity Hound Module"
sprites = list(
"Kcom" = list(SKIN_ICON_STATE = "kcom", SKIN_ICON = 'modular_chomp/icons/mob/widerobot_ch.dmi', SKIN_OFFSET = -16, SKIN_HEIGHT = 32),
"Raptor V-4.1" = list(SKIN_ICON_STATE = "chraptor", SKIN_ICON = 'modular_chomp/icons/mob/raptorborg/raptor_ch.dmi', SKIN_OFFSET = -16, SKIN_HEIGHT = 45),
"Borgi" = list(SKIN_ICON_STATE = "borgi", SKIN_ICON = 'modular_chomp/icons/mob/widerobot_ch.dmi', SKIN_OFFSET = -16, SKIN_HEIGHT = 32),
"MEKA" = list(SKIN_ICON_STATE = "mekaunity", SKIN_ICON = 'modular_chomp/icons/mob/tallborg/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64),
"NIKO" = list(SKIN_ICON_STATE = "mmekaunity", SKIN_ICON = 'modular_chomp/icons/mob/tallborg/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64),
"NIKA" = list(SKIN_ICON_STATE = "fmekaunity", SKIN_ICON = 'modular_chomp/icons/mob/tallborg/tallrobots.dmi', SKIN_OFFSET = 0, SKIN_HEIGHT = 64)
)
name = "command robot module"
channels = list(
"Medical" = 1,
"Engineering" = 1,
@@ -55,7 +47,7 @@
pto_type = PTO_CIVILIAN
can_be_pushed = 0
/obj/item/weapon/robot_module/robot/chound/New(var/mob/living/silicon/robot/R)
/obj/item/weapon/robot_module/robot/chound/create_equipment(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/weapon/pen/robopen(src)
src.modules += new /obj/item/weapon/form_printer(src)
src.modules += new /obj/item/weapon/gripper/paperwork(src)
@@ -66,35 +58,5 @@
src.emag = new /obj/item/weapon/stamp/chameleon(src)
//src.emag = new /obj/item/weapon/pen/chameleon(src)
var/datum/matter_synth/water = new /datum/matter_synth(500)
water.name = "Water reserves"
water.recharge_rate = 0
R.water_res = water
synths += water
var/obj/item/device/dogborg/tongue/T = new /obj/item/device/dogborg/tongue(src)
T.water = water
src.modules += T
var/obj/item/device/dogborg/sleeper/B = new /obj/item/device/dogborg/sleeper/command(src)
B.water = water
src.modules += B
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
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
R.verbs |= /mob/living/silicon/robot/proc/rest_style
src.modules += new /obj/item/device/dogborg/sleeper/command(src)
..()

View File

@@ -3,13 +3,13 @@
//This restructures how borg additions are done to make them sane/modular/maintainable
//Also makes it easier to make new borgs
/hook/startup/proc/Modular_Borg_init_Exploration()
robot_modules["ExploreHound"] = /obj/item/weapon/robot_module/robot/exploration //add to array
robot_module_types += "ExploreHound" //Add to global list
robot_modules["Exploration"] = /obj/item/weapon/robot_module/robot/exploration //add to array
robot_module_types += "Exploration" //Add to global list
return 1
//Explo doggos
/obj/item/weapon/robot_module/robot/exploration
name = "ExploreHound"
name = "exploration robot module"
channels = list("Exploration" = 1)
languages = list(
LANGUAGE_SOL_COMMON = 1,
@@ -28,15 +28,12 @@
)
/obj/item/weapon/robot_module/robot/exploration
sprites = list(
"ExploreHound" = list(SKIN_ICON_STATE = "exploration", SKIN_ICON = 'modular_chomp/icons/mob/widerobot_exp_ch.dmi', SKIN_OFFSET = -16, SKIN_HEIGHT = 32),
"ExploreHound V2" = list(SKIN_ICON_STATE = "exploration-v2", SKIN_ICON = 'modular_chomp/icons/mob/widerobot_exp_ch.dmi', SKIN_OFFSET = -16, SKIN_HEIGHT = 32),
)
can_be_pushed = 0
/obj/item/weapon/robot_module/robot/exploration/New(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/weapon/dogborg/jaws/small(src)
src.modules += new /obj/item/device/dogborg/boop_module(src)
src.modules += new /obj/item/device/boop_module(src)
src.modules += new /obj/item/device/dogborg/sleeper/K9/exploration(src)
src.modules += new /obj/item/device/dogborg/sleeper/command(src)
src.modules += new /obj/item/weapon/gun/energy/locked/phasegun/unlocked/mounted/cyborg(src)
src.modules += new /obj/item/device/cataloguer(src)
src.modules += new /obj/item/roller_holder(src)
@@ -44,33 +41,6 @@
src.emag = new /obj/item/weapon/dogborg/pounce(src)
var/datum/matter_synth/water = new /datum/matter_synth(500)
water.name = "Water reserves"
water.recharge_rate = 0
R.water_res = water
synths += water
var/obj/item/device/dogborg/tongue/T = new /obj/item/device/dogborg/tongue(src)
T.water = water
src.modules += T
var/obj/item/device/dogborg/sleeper/B = new /obj/item/device/dogborg/sleeper/command(src)
B.water = water
src.modules += B
R.can_buckle = 1
R.icon = 'modular_chomp/icons/mob/widerobot_exp_ch.dmi'
R.wideborg_dept = R.icon
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
R.verbs |= /mob/living/silicon/robot/proc/rest_style
..()
/obj/item/device/dogborg/sleeper/K9/exploration //The K9 portabrig

View File

@@ -2,29 +2,7 @@
//as an example, Medihound has some new additions from us but upstream defines its additions
//This file is offset in compilation to run before any of the station files.
/obj/item/weapon/robot_module/robot/medihound/New()
..()
src.modules += new /obj/item/weapon/autopsy_scanner(src)
src.modules += new /obj/item/weapon/surgical/scalpel/cyborg(src)
src.modules += new /obj/item/weapon/surgical/hemostat/cyborg(src)
src.modules += new /obj/item/weapon/surgical/retractor/cyborg(src)
src.modules += new /obj/item/weapon/surgical/cautery/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bonegel/cyborg(src)
src.modules += new /obj/item/weapon/surgical/FixOVein/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bonesetter/cyborg(src)
src.modules += new /obj/item/weapon/surgical/circular_saw/cyborg(src)
src.modules += new /obj/item/weapon/surgical/surgicaldrill/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bioregen(src)
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
src.modules += new /obj/item/weapon/reagent_containers/dropper(src)
src.modules += new /obj/item/roller_holder(src) //So we can save people without voring them
//TFF 5/1/20 - Add Ore Scanner for mining drones
/obj/item/weapon/robot_module/drone/mining/New()
/obj/item/weapon/robot_module/drone/mining/create_equipment()
..()
src.modules += new /obj/item/weapon/mining_scanner(src)
/obj/item/weapon/robot_module/robot/engineering/New()
..()
src.modules += new /obj/item/weapon/pipe_dispenser(src)
src.modules |= new /obj/item/weapon/mining_scanner(src)

View File

@@ -6,11 +6,7 @@
name = "lost robot module"
hide_on_manifest = TRUE
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"Drone" = "drone-lost"
)*/ //CHOMPEdit end
/obj/item/weapon/robot_module/robot/lost/New(var/mob/living/silicon/robot/R)
/obj/item/weapon/robot_module/robot/lost/create_equipment(var/mob/living/silicon/robot/robot)
..()
// Sec
src.modules += new /obj/item/weapon/melee/baton/shocker/robot(src)
@@ -19,6 +15,7 @@
// Med
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/weapon/shockpaddles/robot(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/lost(src)
// Engi
@@ -32,7 +29,7 @@
src.modules += new /obj/item/device/robotanalyzer(src)
// Potato
src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src)
src.emag += new /obj/item/weapon/gun/energy/retro/mounted(src)
var/datum/matter_synth/wire = new /datum/matter_synth/wire()
synths += wire
@@ -41,15 +38,14 @@
C.synths = list(wire)
src.modules += C
src.modules += new /obj/item/device/dogborg/sleeper/lost(src)
src.modules += new /obj/item/weapon/dogborg/pounce(src)
/obj/item/weapon/robot_module/robot/gravekeeper
name = "gravekeeper robot module"
hide_on_manifest = TRUE
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"Drone" = "drone-gravekeeper",
"Sleek" = "sleek-gravekeeper"
)*/ //CHOMPEdit end
/obj/item/weapon/robot_module/robot/gravekeeper/New(var/mob/living/silicon/robot/R)
/obj/item/weapon/robot_module/robot/gravekeeper/create_equipment(var/mob/living/silicon/robot/robot)
..()
// For fending off animals and looters
src.modules += new /obj/item/weapon/melee/baton/shocker/robot(src)
@@ -72,7 +68,7 @@
src.modules += new /obj/item/weapon/gripper/gravekeeper(src)
// For really persistent looters
src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src)
src.emag += new /obj/item/weapon/gun/energy/retro/mounted(src)
var/datum/matter_synth/wood = new /datum/matter_synth/wood(50000) //CHOMPEdit - "Buffing this to 50k on account of broken code not letting us pick up more stacks. Wee."
synths += wood
@@ -80,7 +76,11 @@
var/obj/item/stack/material/cyborg/wood/W = new (src)
W.synths = list(wood)
src.modules += W
// For uwu
src.modules += new /obj/item/device/dogborg/sleeper/compactor/generic(src)
src.emag += new /obj/item/weapon/dogborg/pounce(src)
//CHOMPEdit - "Giving the gravekeeper drone more modules to allow it to actually do it's job."
src.modules += new /obj/item/weapon/tool/wirecutters/cyborg(src) //Gotta clear those pesky landmines somehow. Also allows for deconstruction of things in the way!
src.modules += new /obj/item/device/multitool(src)

View File

@@ -1,67 +0,0 @@
//CHOMPNOTE - if upstream edits the sprite lists it will have to be manually copied into our station_vr file, anything else is just read from here
/obj/item/weapon/robot_module/robot/stray
name = "stray robot module"
hide_on_manifest = 1
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"Stray" = "stray"
)*/ //CHOMPEdit end
/obj/item/weapon/robot_module/robot/stray/New(var/mob/living/silicon/robot/R)
..()
// General
src.modules += new /obj/item/device/dogborg/boop_module(src)
// Sec
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
src.modules += new /obj/item/weapon/dogborg/jaws/big(src)
src.modules += new /obj/item/weapon/melee/baton/robot(src)
src.modules += new /obj/item/weapon/dogborg/pounce(src)
// Med
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/weapon/shockpaddles/robot/hound(src)
// Engi
src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src)
src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
src.modules += new /obj/item/weapon/tool/wirecutters/cyborg(src)
src.modules += new /obj/item/device/multitool(src)
// Boof
src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src)
var/datum/matter_synth/water = new /datum/matter_synth(500) //Starts full and has a max of 500
water.name = "Water reserves"
water.recharge_rate = 0
R.water_res = water
synths += water
var/obj/item/weapon/reagent_containers/borghypo/hound/lost/H = new /obj/item/weapon/reagent_containers/borghypo/hound/lost(src)
H.water = water
src.modules += H
var/obj/item/device/dogborg/tongue/T = new /obj/item/device/dogborg/tongue(src)
T.water = water
src.modules += T
var/obj/item/device/dogborg/sleeper/B = new /obj/item/device/dogborg/sleeper(src)
B.water = water
src.modules += B
R.icon = 'icons/mob/widerobot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
//CHOMPEdit - Add vore capacity
R.vore_capacity = 1
R.vore_capacity_ex = list("stomach" = 1)
//CHOMPEdit End
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
R.verbs |= /mob/living/silicon/robot/proc/rest_style

View File

@@ -1,16 +1,15 @@
//CHOMPNOTE - if upstream edits the sprite lists it will have to be manually copied into our station_vr file, anything else is just read from here
var/global/list/robot_modules = list(
"Standard" = /obj/item/weapon/robot_module/robot/standard,
"Service" = /obj/item/weapon/robot_module/robot/clerical/butler/general,
"Service" = /obj/item/weapon/robot_module/robot/clerical/butler,
"Clerical" = /obj/item/weapon/robot_module/robot/clerical/general,
"Research" = /obj/item/weapon/robot_module/robot/research/general,
"Miner" = /obj/item/weapon/robot_module/robot/miner/general,
"Research" = /obj/item/weapon/robot_module/robot/research,
"Miner" = /obj/item/weapon/robot_module/robot/miner,
"Crisis" = /obj/item/weapon/robot_module/robot/medical/crisis,
// "Surgeon" = /obj/item/weapon/robot_module/robot/medical/surgeon, // CHOMPedit: Surgeon module removal.
"Security" = /obj/item/weapon/robot_module/robot/security/general,
"Combat" = /obj/item/weapon/robot_module/robot/security/combat,
"Engineering" = /obj/item/weapon/robot_module/robot/engineering/general,
"Janitor" = /obj/item/weapon/robot_module/robot/janitor/general,
"Engineering" = /obj/item/weapon/robot_module/robot/engineering,
"Janitor" = /obj/item/weapon/robot_module/robot/janitor,
"Gravekeeper" = /obj/item/weapon/robot_module/robot/gravekeeper,
"Lost" = /obj/item/weapon/robot_module/robot/lost,
"Protector" = /obj/item/weapon/robot_module/robot/syndicate/protector,
@@ -24,17 +23,30 @@ var/global/list/robot_modules = list(
icon_state = "std_module"
w_class = ITEMSIZE_NO_CONTAINER
item_state = "std_mod"
var/pto_type = null
var/hide_on_manifest = FALSE
var/channels = list()
var/networks = list()
var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_AKHANI = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0, LANGUAGE_SIGN = 0, LANGUAGE_TERMINUS = 1, LANGUAGE_ZADDAT = 0)
var/defaults = list() //CHOMPAdd - Default values for sprites table entries, once i can figure out how to do this...
var/sprites = list()
var/can_be_pushed = 1
var/languages = list(LANGUAGE_SOL_COMMON= 1,
LANGUAGE_TRADEBAND = 1,
LANGUAGE_UNATHI = 0,
LANGUAGE_SIIK = 0,
LANGUAGE_SKRELLIAN = 0,
LANGUAGE_GUTTER = 0,
LANGUAGE_SCHECHI = 0,
LANGUAGE_SIGN = 0,
LANGUAGE_BIRDSONG = 0,
LANGUAGE_SAGARU = 0,
LANGUAGE_CANILUNZT = 0,
LANGUAGE_ECUREUILIAN= 0,
LANGUAGE_DAEMON = 0,
LANGUAGE_ENOCHIAN = 0,
LANGUAGE_DRUDAKAR = 0)
var/can_be_pushed = 0
var/no_slip = 0
var/list/modules = list()
var/list/datum/matter_synth/synths = list()
var/obj/item/emag = null
var/list/emag = list()
var/obj/item/borg/upgrade/jetpack = null
var/obj/item/borg/upgrade/advhealth = null
var/list/subsystems = list()
@@ -63,14 +75,19 @@ var/global/list/robot_modules = list(
channels = R.mainframe.aiRadio.channels
R.radio.recalculateChannels()
vr_add_sprites() //Vorestation Edit: For vorestation only sprites
R.set_default_module_icon()
R.choose_icon(SSrobot_sprites.get_module_sprites_len(R.modtype, R) + 1)
if(!R.client)
R.icon_selected = FALSE // It wasnt a player selecting icon? Let them do it later!
R.set_module_sprites(sprites)
R.choose_icon(R.module_sprites.len + 1, R.module_sprites)
create_equipment()
for(var/obj/item/I in modules)
I.canremove = FALSE
/obj/item/weapon/robot_module/proc/create_equipment(var/mob/living/silicon/robot/robot)
return
/obj/item/weapon/robot_module/proc/Reset(var/mob/living/silicon/robot/R)
remove_camera_networks(R)
remove_languages(R)
@@ -79,7 +96,9 @@ var/global/list/robot_modules = list(
if(R.radio)
R.radio.recalculateChannels()
R.choose_icon(0, R.set_module_sprites(list("Default" = list(SKIN_ICON_STATE = "robot", SKIN_ICON = 'icons/mob/robots.dmi'))))//CHOMPEdit - Sprite selector
R.choose_icon(0)
R.scrubbing = FALSE
/obj/item/weapon/robot_module/Destroy()
for(var/module in modules)
@@ -88,9 +107,8 @@ var/global/list/robot_modules = list(
qdel(synth)
modules.Cut()
synths.Cut()
qdel(emag)
emag.Cut()
qdel(jetpack)
emag = null
jetpack = null
return ..()
@@ -99,7 +117,8 @@ var/global/list/robot_modules = list(
for(var/obj/O in modules)
O.emp_act(severity)
if(emag)
emag.emp_act(severity)
for(var/obj/O in emag)
O.emp_act(severity)
if(synths)
for(var/datum/matter_synth/S in synths)
S.emp_act(severity)
@@ -177,85 +196,54 @@ var/global/list/robot_modules = list(
"Explorer" = 1 //CHOMP keep explo
)
// Cyborgs (non-drones), default loadout. This will be given to every module.
/obj/item/weapon/robot_module/robot/New()
/obj/item/weapon/robot_module/robot/New(var/mob/living/silicon/robot/R)
..()
if(R.sprite_datum)
R.sprite_datum.do_equipment_glamour(src)
// Cyborgs (non-drones), default loadout. This will be given to every module.
/obj/item/weapon/robot_module/robot/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/device/flash/robot(src)
src.modules += new /obj/item/weapon/tool/crowbar/cyborg(src)
src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/device/gps/robot(src)
src.modules += new /obj/item/device/boop_module(src)
src.modules += new /obj/item/device/robot_tongue(src)
src.modules += new /obj/item/device/flash/robot(src)
src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/weapon/gripper/scene(src) //CHOMPEdit - Give all borgs a scene gripper
vr_new() // Vorestation Edit: For modules in robot_modules_vr.dm
src.modules += new /obj/item/weapon/tool/crowbar/cyborg(src)
/obj/item/weapon/robot_module/robot/standard
name = "standard robot module"
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"M-USE NanoTrasen" = "robot",
"Cabeiri" = "eyebot-standard",
"Haruka" = "marinaSD",
"Usagi" = "tallflower",
"Telemachus" = "toiletbot",
"WTOperator" = "sleekstandard",
"WTOmni" = "omoikane",
"XI-GUS" = "spider",
"XI-ALP" = "heavyStandard",
"Basic" = "robot_old",
"Android" = "droid",
"Drone" = "drone-standard",
"Insekt" = "insekt-Default",
"Usagi-II" = "tall2standard",
"Pyralis" = "Glitterfly-Standard",
"Miss M" = "miss-standard", // YW change, Added Miss M
"Decapod" = "decapod-Standard",
"Pneuma" = "pneuma-Standard",
"Tower" = "drider-Standard"
)*/ //CHOMPEdit end
pto_type = PTO_CIVILIAN
/obj/item/weapon/robot_module/robot/standard/New()
/obj/item/weapon/robot_module/robot/standard/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/weapon/melee/baton/loaded(src)
src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.emag = new /obj/item/weapon/melee/energy/sword(src)
src.modules += new /obj/item/weapon/melee/baton/loaded(src)
src.emag += new /obj/item/weapon/melee/energy/sword(src)
src.modules += new /obj/item/device/dogborg/sleeper/compactor/generic(src)
src.emag += new /obj/item/weapon/dogborg/pounce(src)
/obj/item/weapon/robot_module/robot/medical
name = "medical robot module"
channels = list("Medical" = 1)
networks = list(NETWORK_MEDICAL)
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) //Give the surgeon ability to watch Crew monitor
can_be_pushed = 0
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
pto_type = PTO_MEDICAL
/* CHOMPedit start: Removal of Surgeon module. *
/obj/item/weapon/robot_module/robot/medical/surgeon
name = "surgeon robot module"
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"M-USE NanoTrasen" = "robotMedi",
"Cabeiri" = "eyebot-medical",
"Haruka" = "marinaMD",
"Minako" = "arachne",
"Usagi" = "tallwhite",
"Telemachus" = "toiletbotsurgeon",
"WTOperator" = "sleekcmo",
"XI-ALP" = "heavyMed",
"Basic" = "Medbot",
"Advanced Droid" = "droid-medical",
"Needles" = "medicalrobot",
"Drone" = "drone-surgery",
"Handy" = "handy-med",
"Insekt" = "insekt-Med",
"Usagi-II" = "tall2medical",
"Pyralis" = "Glitterfly-Surgeon",
"Miss M" = "miss-medical", // YW change, Added Miss M
"Decapod" = "decapod-Surgeon",
"Pneuma" = "pneuma-Surgeon",
"Tower" = "drider-Surgeon"
)*/ //CHOMPEdit end
/obj/item/weapon/robot_module/robot/medical/surgeon/New()
/obj/item/weapon/robot_module/robot/medical/surgeon/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/device/sleevemate(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/surgeon(src)
src.modules += new /obj/item/weapon/autopsy_scanner(src)
src.modules += new /obj/item/weapon/surgical/scalpel/cyborg(src)
@@ -267,17 +255,18 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/surgical/bonesetter/cyborg(src)
src.modules += new /obj/item/weapon/surgical/circular_saw/cyborg(src)
src.modules += new /obj/item/weapon/surgical/surgicaldrill/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bioregen/cyborg(src) //VoreStation Edit: LET ME SUCC
src.modules += new /obj/item/weapon/surgical/bioregen/cyborg(src)
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
src.modules += new /obj/item/weapon/gripper/medical(src)
src.modules += new /obj/item/weapon/shockpaddles/robot(src)
src.modules += new /obj/item/weapon/reagent_containers/dropper(src) // Allows surgeon borg to fix necrosis
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
src.modules += new /obj/item/device/sleevemate(src)
src.modules += new /obj/item/weapon/surgical/bioregen(src) //chompstation addition
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("pacid", 250)
src.emag.name = "Polyacid spray"
var/obj/item/weapon/reagent_containers/spray/PS = new /obj/item/weapon/reagent_containers/spray(src)
src.emag += PS
PS.reagents.add_reagent("pacid", 250)
PS.name = "Polyacid spray"
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(10000)
synths += medicine
@@ -298,6 +287,9 @@ var/global/list/robot_modules = list(
src.modules += B
src.modules += O
src.modules += new /obj/item/device/dogborg/sleeper/trauma(src)
src.emag += new /obj/item/weapon/dogborg/pounce(src)
/obj/item/weapon/robot_module/robot/medical/surgeon/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
@@ -307,8 +299,8 @@ var/global/list/robot_modules = list(
S.desc = initial(S.desc)
S.update_icon()
if(src.emag)
var/obj/item/weapon/reagent_containers/spray/PS = src.emag
var/obj/item/weapon/reagent_containers/spray/PS = locate() in src.emag
if(PS)
PS.reagents.add_reagent("pacid", 2 * amount)
..()
@@ -317,44 +309,20 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/robot/medical/crisis
name = "crisis robot module"
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) //Give the medical Crisis ability to watch Crew monitor
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"M-USE NanoTrasen" = "robotMedi",
"Cabeiri" = "eyebot-medical",
"Haruka" = "marinaMD",
"Minako" = "arachne",
"Usagi" = "tallwhite",
"Telemachus" = "toiletbotmedical",
"WTOperator" = "sleekmedic",
"XI-ALP" = "heavyMed",
"Basic" = "Medbot",
"Advanced Droid" = "droid-medical",
"Needles" = "medicalrobot",
"Drone - Medical" = "drone-medical",
"Drone - Chemistry" = "drone-chemistry",
"Insekt" = "insekt-Med",
"Usagi-II" = "tall2medical",
"Pyralis" = "Glitterfly-Crisis",
"Miss M" = "miss-medical", // YW change, Added Miss M
"Decapod" = "decapod-Crisis",
"Pneuma" = "pneuma-Crisis",
"Tower" = "drider-Crisis"
)*/ //CHOMPEdit end
/obj/item/weapon/robot_module/robot/medical/crisis/New()
/obj/item/weapon/robot_module/robot/medical/crisis/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/device/sleevemate(src)
src.modules += new /obj/item/device/reagent_scanner/adv(src)
src.modules += new /obj/item/roller_holder(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/crisis(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
src.modules += new /obj/item/weapon/reagent_containers/dropper/industrial(src)
src.modules += new /obj/item/device/sleevemate(src) // CHOMPedit: Lets them scan people.
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
src.modules += new /obj/item/weapon/gripper/medical(src)
src.modules += new /obj/item/weapon/shockpaddles/robot(src)
src.modules += new /obj/item/weapon/inflatable_dispenser/robot(src) //VOREStation Add - This is kinda important for rescuing people without making it worse for everyone
// CHOMPedit start: Combining Surgeon and Crisis.
src.modules += new /obj/item/weapon/autopsy_scanner(src)
src.modules += new /obj/item/weapon/surgical/scalpel/cyborg(src)
@@ -368,9 +336,11 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/surgical/surgicaldrill/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bioregen/cyborg(src)
// CHOMPedit end: Combining Surgeon and Crisis.
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("pacid", 250)
src.emag.name = "Polyacid spray"
src.modules += new /obj/item/weapon/inflatable_dispenser/robot(src)
var/obj/item/weapon/reagent_containers/spray/PS = new /obj/item/weapon/reagent_containers/spray(src)
src.emag += PS
PS.reagents.add_reagent("pacid", 250)
PS.name = "Polyacid spray"
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(30000) // CHOMPedit: Increased capacity.
synths += medicine
@@ -396,6 +366,10 @@ 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 += new /obj/item/device/dogborg/sleeper(src)
src.emag += new /obj/item/weapon/dogborg/pounce(src) //Pounce
/obj/item/weapon/robot_module/robot/medical/crisis/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
@@ -406,8 +380,8 @@ var/global/list/robot_modules = list(
S.desc = initial(S.desc)
S.update_icon()
if(src.emag)
var/obj/item/weapon/reagent_containers/spray/PS = src.emag
var/obj/item/weapon/reagent_containers/spray/PS = locate() in src.emag
if(PS)
PS.reagents.add_reagent("pacid", 2 * amount)
..()
@@ -418,30 +392,9 @@ var/global/list/robot_modules = list(
channels = list("Engineering" = 1)
networks = list(NETWORK_ENGINEERING)
subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor)
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"M-USE NanoTrasen" = "robotEngi",
"Cabeiri" = "eyebot-engineering",
"Haruka" = "marinaENG",
"Usagi" = "tallyellow",
"Telemachus" = "toiletbotengineering",
"WTOperator" = "sleekce",
"XI-GUS" = "spidereng",
"XI-ALP" = "heavyEng",
"Basic" = "Engineering",
"Antique" = "engineerrobot",
"Landmate" = "landmate",
"Landmate - Treaded" = "engiborg+tread",
"Drone" = "drone-engineer",
"Treadwell" = "treadwell",
"Handy" = "handy-engineer",
"Usagi-II" = "tall2engineer",
"Pyralis" = "Glitterfly-Engineering",
"Decapod" = "decapod-Engineering",
"Pneuma" = "pneuma-Engineering",
"Tower" = "drider-Engineering"
)*/ //CHOMPEdit end
pto_type = PTO_ENGINEERING
/obj/item/weapon/robot_module/robot/engineering/general/New()
/obj/item/weapon/robot_module/robot/engineering/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
@@ -451,17 +404,16 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/device/multitool(src)
src.modules += new /obj/item/device/t_scanner(src)
src.modules += new /obj/item/device/analyzer(src)
src.modules += new /obj/item/device/geiger(src)
src.modules += new /obj/item/taperoll/engineering(src)
src.modules += new /obj/item/weapon/gripper(src)
src.modules += new /obj/item/weapon/gripper/circuit(src)
src.modules += new /obj/item/device/lightreplacer(src)
// RPDs do this already
//src.modules += new /obj/item/device/pipe_painter(src)
src.modules += new /obj/item/weapon/pipe_dispenser(src)
src.modules += new /obj/item/device/floor_painter(src)
src.modules += new /obj/item/weapon/rms(src)
src.modules += new /obj/item/weapon/inflatable_dispenser/robot(src)
src.emag = new /obj/item/weapon/melee/baton/robot/arm(src)
src.modules += new /obj/item/device/geiger(src)
src.emag += new /obj/item/weapon/melee/baton/robot/arm(src)
src.modules += new /obj/item/weapon/rcd/electric/mounted/borg(src)
src.modules += new /obj/item/weapon/pickaxe/plasmacutter/borg(src)
src.modules += new /obj/item/weapon/gripper/no_use/loader(src)
@@ -529,50 +481,40 @@ var/global/list/robot_modules = list(
PL.synths = list(plastic)
src.modules += PL
var/obj/item/device/dogborg/sleeper/compactor/decompiler/BD = new /obj/item/device/dogborg/sleeper/compactor/decompiler(src)
BD.metal = metal
BD.glass = glass
BD.wood = wood
BD.plastic = plastic
src.modules += BD
src.emag += new /obj/item/weapon/dogborg/pounce(src)
/obj/item/weapon/robot_module/robot/security
name = "security robot module"
channels = list("Security" = 1)
networks = list(NETWORK_SECURITY)
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
can_be_pushed = 0
supported_upgrades = list(/obj/item/borg/upgrade/tasercooler)
pto_type = PTO_SECURITY
/obj/item/weapon/robot_module/robot/security/general
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"M-USE NanoTrasen" = "robotSecy",
"Cabeiri" = "eyebot-security",
"Cerberus" = "bloodhound",
"Cerberus - Treaded" = "treadhound",
"Haruka" = "marinaSC",
"Usagi" = "tallred",
"Telemachus" = "toiletbotsecurity",
"WTOperator" = "sleeksecurity",
"XI-GUS" = "spidersec",
"XI-ALP" = "heavySec",
"Basic" = "secborg",
"Black Knight" = "securityrobot",
"Drone" = "drone-sec",
"Insekt" = "insekt-Sec",
"Usagi-II" = "tall2security",
"Pyralis" = "Glitterfly-Security",
"Miss M" = "miss-security", // YW change, Added Miss M
"Decapod" = "decapod-Security",
"Pneuma" = "pneuma-Security",
"Tower" = "drider-Security"
)*/ //CHOMPEdit end
name = "security robot module"
/obj/item/weapon/robot_module/robot/security/general/New()
/obj/item/weapon/robot_module/robot/security/general/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
src.modules += new /obj/item/weapon/melee/baton/robot(src)
src.modules += new /obj/item/weapon/gun/energy/taser/mounted/cyborg(src)
// src.modules += new /obj/item/weapon/gun/energy/taser/xeno/sec/robot(src) // VOREStation Edit - We don't need these
src.modules += new /obj/item/taperoll/police(src)
src.modules += new /obj/item/weapon/reagent_containers/spray/pepper(src)
src.modules += new /obj/item/weapon/gripper/security(src)
src.modules += new /obj/item/device/ticket_printer(src) //VOREStation Add
src.modules += new /obj/item/weapon/gun/energy/locked/phasegun/unlocked/mounted/cyborg(src) // CHOMPedit: Phasegun for regular sec cyborg.
src.emag = new /obj/item/weapon/gun/energy/laser/mounted(src)
src.emag += new /obj/item/weapon/gun/energy/laser/mounted(src)
src.modules += new /obj/item/device/dogborg/sleeper/K9(src) //Eat criminals. Bring them to the brig.
src.modules += new /obj/item/weapon/dogborg/pounce(src) //Pounce
/obj/item/weapon/robot_module/robot/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/device/flash/F = locate() in src.modules
@@ -592,27 +534,9 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/robot/janitor
name = "janitorial robot module"
channels = list("Service" = 1)
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"M-USE NanoTrasen" = "robotJani",
"Arachne" = "crawler",
"Cabeiri" = "eyebot-janitor",
"Haruka" = "marinaJN",
"Telemachus" = "toiletbotjanitor",
"WTOperator" = "sleekjanitor",
"XI-ALP" = "heavyRes",
"Basic" = "JanBot2",
"Mopbot" = "janitorrobot",
"Mop Gear Rex" = "mopgearrex",
"Drone" = "drone-janitor",
"Usagi-II" = "tall2janitor",
"Pyralis" = "Glitterfly-Janitor",
"Miss M" = "miss-janitor", // YW change, Added Miss M
"Decapod" = "decapod-Janitor",
"Pneuma" = "pneuma-Janitor",
"Tower" = "drider-Janitor"
)*/ //CHOMPEdit end
pto_type = PTO_CIVILIAN
/obj/item/weapon/robot_module/robot/janitor/general/New()
/obj/item/weapon/robot_module/robot/janitor/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/weapon/soap/nanotrasen(src)
src.modules += new /obj/item/weapon/storage/bag/trash(src)
@@ -620,16 +544,58 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/pupscrubber(src)
src.modules += new /obj/item/device/lightreplacer(src)
src.modules += new /obj/item/device/vac_attachment(src) //CHOMPAdd
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("lube", 250)
src.emag.name = "Lube spray"
var/obj/item/weapon/reagent_containers/spray/LS = new /obj/item/weapon/reagent_containers/spray(src)
src.emag += LS
LS.reagents.add_reagent("lube", 250)
LS.name = "Lube spray"
/obj/item/weapon/robot_module/robot/janitor/general/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
//Starts empty. Can only recharge with recycled material.
var/datum/matter_synth/metal = new /datum/matter_synth/metal()
metal.name = "Steel reserves"
metal.recharge_rate = 0
metal.max_energy = 50000
metal.energy = 0
var/datum/matter_synth/glass = new /datum/matter_synth/glass()
glass.name = "Glass reserves"
glass.recharge_rate = 0
glass.max_energy = 50000
glass.energy = 0
synths += metal
synths += glass
//Sheet refiners can only produce raw sheets.
var/obj/item/stack/material/cyborg/steel/M = new (src)
M.name = "steel recycler"
M.desc = "A device that refines recycled steel into sheets."
M.synths = list(metal)
M.recipes = list()
M.recipes += new/datum/stack_recipe("steel sheet", /obj/item/stack/material/steel, 1, 1, 20)
src.modules += M
var/obj/item/stack/material/cyborg/glass/G = new (src)
G.name = "glass recycler"
G.desc = "A device that refines recycled glass into sheets."
G.material = get_material_by_name("placeholder") //Hacky shit but we want sheets, not windows.
G.synths = list(glass)
G.recipes = list()
G.recipes += new/datum/stack_recipe("glass sheet", /obj/item/stack/material/glass, 1, 1, 20)
src.modules += G
var/obj/item/device/dogborg/sleeper/compactor/C = new /obj/item/device/dogborg/sleeper/compactor(src)
C.metal = metal
C.glass = glass
src.modules += C
src.emag += new /obj/item/weapon/dogborg/pounce(src) //Pounce
/obj/item/weapon/robot_module/robot/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/device/lightreplacer/LR = locate() in src.modules
LR.Charge(R, amount)
if(src.emag)
var/obj/item/weapon/reagent_containers/spray/S = src.emag
S.reagents.add_reagent("lube", 2 * amount)
var/obj/item/weapon/reagent_containers/spray/LS = locate() in src.emag
if(LS)
LS.reagents.add_reagent("lube", 2 * amount)
/obj/item/weapon/robot_module/robot/clerical
name = "service robot module"
@@ -639,57 +605,39 @@ var/global/list/robot_modules = list(
)
languages = list(
LANGUAGE_SOL_COMMON = 1,
LANGUAGE_TRADEBAND = 1,
LANGUAGE_UNATHI = 1,
LANGUAGE_SIIK = 1,
LANGUAGE_AKHANI = 1,
LANGUAGE_SKRELLIAN = 1,
LANGUAGE_ROOTLOCAL = 0,
LANGUAGE_TRADEBAND = 1,
LANGUAGE_GUTTER = 1,
LANGUAGE_SCHECHI = 1,
LANGUAGE_EAL = 1,
LANGUAGE_TERMINUS = 1,
LANGUAGE_SIGN = 0,
LANGUAGE_ZADDAT = 1,
LANGUAGE_BIRDSONG = 1,
LANGUAGE_SAGARU = 1,
LANGUAGE_CANILUNZT = 1,
LANGUAGE_ECUREUILIAN= 1,
LANGUAGE_DAEMON = 1,
LANGUAGE_ENOCHIAN = 1,
LANGUAGE_DRUDAKAR = 1,
LANGUAGE_TAVAN = 1
)
pto_type = PTO_CIVILIAN
/obj/item/weapon/robot_module/robot/clerical/butler
channels = list("Service" = 1)
/obj/item/weapon/robot_module/robot/clerical/butler/general
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"M-USE NanoTrasen" = "robotServ",
"Cabeiri" = "eyebot-standard",
"Haruka" = "marinaSV",
"Michiru" = "maidbot",
"Usagi" = "tallgreen",
"Telemachus" = "toiletbot",
"WTOperator" = "sleekservice",
"WTOmni" = "omoikane",
"XI-GUS" = "spider",
"XI-ALP" = "heavyServ",
"Standard" = "Service2",
"Waitress" = "Service",
"Bro" = "Brobot",
"Rich" = "maximillion",
"Drone - Service" = "drone-service",
"Drone - Hydro" = "drone-hydro",
"Usagi-II" = "tall2service",
"Pyralis" = "Glitterfly-Service",
"Miss M" = "miss-service", // YW change, Added Miss M
"Decapod" = "decapod-Service",
"Pneuma" = "pneuma-Service",
"Tower" = "drider-Service"
)*/ //CHOMPEdit end
/obj/item/weapon/robot_module/robot/clerical/butler
name = "service robot module"
/obj/item/weapon/robot_module/robot/clerical/butler/general/New()
/obj/item/weapon/robot_module/robot/clerical/butler/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/weapon/gripper/service(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src)
src.modules += new /obj/item/weapon/material/minihoe(src)
src.modules += new /obj/item/weapon/material/knife/machete/hatchet(src)
src.modules += new /obj/item/device/analyzer/plant_analyzer(src)
src.modules += new /obj/item/weapon/storage/bag/plants(src)
src.modules += new /obj/item/weapon/storage/bag/serviceborg(src)
src.modules += new /obj/item/weapon/robot_harvester(src)
src.modules += new /obj/item/weapon/material/knife(src)
src.modules += new /obj/item/weapon/material/kitchen/rollingpin(src)
@@ -707,40 +655,32 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/tray/robotray(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/service(src)
src.emag = new /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer(src)
var/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/PB = new /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer(src)
src.emag += PB
var/datum/reagents/R = new/datum/reagents(50)
src.emag.reagents = R
R.my_atom = src.emag
PB.reagents = R
R.my_atom = PB
R.add_reagent("beer2", 50)
src.emag.name = "Auntie Hong's Final Sip"
src.emag.desc = "A bottle of very special mix of alcohol and poison. Some may argue that there's alcohol to die for, but Auntie Hong took it to next level."
PB.name = "Auntie Hong's Final Sip"
PB.desc = "A bottle of very special mix of alcohol and poison. Some may argue that there's alcohol to die for, but Auntie Hong took it to next level."
src.modules += new /obj/item/device/dogborg/sleeper/compactor/brewer(src)
src.emag += new /obj/item/weapon/dogborg/pounce(src) //Pounce
/obj/item/weapon/robot_module/robot/clerical/butler/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/food/condiment/enzyme/E = locate() in src.modules
E.reagents.add_reagent("enzyme", 2 * amount)
var/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/PB = locate() in src.emag
if(PB)
PB.reagents.add_reagent("beer2", 2 * amount)
/obj/item/weapon/robot_module/robot/clerical/general
name = "clerical robot module"
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"M-USE NanoTrasen" = "robotCler",
"Cabeiri" = "eyebot-standard",
"Haruka" = "marinaSV",
"Usagi" = "tallgreen",
"Telemachus" = "toiletbot",
"WTOperator" = "sleekclerical",
"WTOmni" = "omoikane",
"XI-GUS" = "spidercom",
"XI-ALP" = "heavyServ",
"Waitress" = "Service",
"Bro" = "Brobot",
"Rich" = "maximillion",
"Default" = "Service2",
"Drone" = "drone-blu",
"Usagi-II" = "tall2service",
"Pyralis" = "Glitterfly-Clerical",
"Decapod" = "decapod-Clerical",
"Pneuma" = "pneuma-Clerical",
"Tower" = "drider-Clerical"
)*/ //CHOMPEdit end
/obj/item/weapon/robot_module/robot/clerical/general/New()
/obj/item/weapon/robot_module/robot/clerical/general/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/weapon/pen/robopen(src)
src.modules += new /obj/item/weapon/form_printer(src)
@@ -748,42 +688,20 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/hand_labeler(src)
src.modules += new /obj/item/weapon/stamp(src)
src.modules += new /obj/item/weapon/stamp/denied(src)
src.emag = new /obj/item/weapon/stamp/chameleon(src)
src.emag = new /obj/item/weapon/pen/chameleon(src)
src.emag += new /obj/item/weapon/stamp/chameleon(src)
src.emag += new /obj/item/weapon/pen/chameleon(src)
/obj/item/weapon/robot_module/general/butler/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/food/condiment/enzyme/E = locate() in src.modules
E.reagents.add_reagent("enzyme", 2 * amount)
if(src.emag)
var/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/B = src.emag
B.reagents.add_reagent("beer2", 2 * amount)
src.modules += new /obj/item/device/dogborg/sleeper/compactor/generic(src)
src.emag += new /obj/item/weapon/dogborg/pounce(src)
/obj/item/weapon/robot_module/robot/miner
name = "miner robot module"
channels = list("Supply" = 1)
networks = list(NETWORK_MINE)
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"NM-USE NanoTrasen" = "robotMine",
"Cabeiri" = "eyebot-miner",
"Haruka" = "marinaMN",
"Telemachus" = "toiletbotminer",
"WTOperator" = "sleekminer",
"XI-GUS" = "spidermining",
"XI-ALP" = "heavyMiner",
"Basic" = "Miner_old",
"Advanced Droid" = "droid-miner",
"Treadhead" = "Miner",
"Drone" = "drone-miner",
"Usagi-II" = "tall2miner",
"Pyralis" = "Glitterfly-Miner",
"Miss M" = "miss-miner", // YW change, Added Miss M
"Decapod" = "decapod-Miner",
"Pneuma" = "pneuma-Miner",
"Tower" = "drider-Miner"
)*/
supported_upgrades = list(/obj/item/borg/upgrade/pka, /obj/item/borg/upgrade/diamonddrill)
pto_type = PTO_CARGO
/obj/item/weapon/robot_module/robot/miner/general/New()
/obj/item/weapon/robot_module/robot/miner/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/borg/sight/material(src)
src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
@@ -795,35 +713,18 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/mining_scanner(src)
src.modules += new /obj/item/weapon/gun/energy/locked/phasegun/unlocked/mounted/cyborg(src) //CHOMPedit: Phasegun for regular mining cyborg.
src.modules += new /obj/item/device/vac_attachment(src) //CHOMPAdd
// New Emag gear for the minebots!
src.emag = new /obj/item/weapon/kinetic_crusher/machete/dagger(src)
src.emag += new /obj/item/weapon/kinetic_crusher/machete/dagger(src)
// No reason for these, upgrade modules replace them.
//src.emag = new /obj/item/weapon/pickaxe/plasmacutter/borg(src)
//src.emag = new /obj/item/weapon/pickaxe/diamonddrill(src)
src.modules += new /obj/item/device/dogborg/sleeper/compactor/supply(src)
src.emag += new /obj/item/weapon/dogborg/pounce(src)
/obj/item/weapon/robot_module/robot/research
name = "research module"
channels = list("Science" = 1)
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"L'Ouef" = "peaceborg",
"Cabeiri" = "eyebot-science",
"Haruka" = "marinaSCI",
"WTDove" = "whitespider",
"WTOperator" = "sleekscience",
"Droid" = "droid-science",
"Drone" = "drone-science",
"Handy" = "handy-science",
"Insekt" = "insekt-Sci",
"Usagi-II" = "tall2peace",
"Pyralis" = "Glitterfly-Research",
"Decapod" = "decapod-Research",
"Pneuma" = "pneuma-Research",
"Tower" = "drider-Research"
)*/ //CHOMPEdit end
supported_upgrades = list(/obj/item/borg/upgrade/advrped)
pto_type = PTO_SCIENCE
/obj/item/weapon/robot_module/robot/research/general/New()
/obj/item/weapon/robot_module/robot/research/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/weapon/portable_destructive_analyzer(src)
src.modules += new /obj/item/weapon/gripper/research(src)
@@ -848,9 +749,8 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/gun/energy/taser/xeno/robot(src)
src.modules += new /obj/item/device/xenoarch_multi_tool(src)
src.modules += new /obj/item/weapon/pickaxe/excavationdrill(src)
//src.modules += new /obj/item/device/cataloguer(src) //VOREStation Removal
src.emag = new /obj/item/weapon/hand_tele(src)
src.emag += new /obj/item/weapon/hand_tele(src)
var/datum/matter_synth/nanite = new /datum/matter_synth/nanite(10000)
synths += nanite
@@ -867,7 +767,10 @@ var/global/list/robot_modules = list(
C.synths = list(wire)
src.modules += C
/obj/item/weapon/robot_module/robot/research/general/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
src.modules += new /obj/item/device/dogborg/sleeper/compactor/analyzer(src)
src.emag += new /obj/item/weapon/dogborg/pounce(src)
/obj/item/weapon/robot_module/robot/research/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
if(S.mode == 2)
@@ -878,27 +781,26 @@ var/global/list/robot_modules = list(
..()
/obj/item/weapon/robot_module/robot/security/combat
name = "combat robot module"
hide_on_manifest = TRUE
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"Haruka" = "marinaCB",
"Combat Android" = "droid-combat",
"Insekt" = "insekt-Combat",
"Decapod" = "decapod-Combat"
)*/ //CHOMPEdit end
/obj/item/weapon/robot_module/robot/security/combat/New()
/obj/item/weapon/robot_module/robot/security/combat/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/device/flash(src)
//src.modules += new /obj/item/borg/sight/thermal(src) // VOREStation Edit
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
src.modules += new /obj/item/taperoll/police(src)
src.modules += new /obj/item/weapon/gun/energy/laser/mounted(src)
src.modules += new /obj/item/weapon/gun/energy/taser/mounted/cyborg/ertgun(src)
src.modules += new /obj/item/weapon/pickaxe/plasmacutter/borg(src)
src.modules += new /obj/item/weapon/combat_borgblade
src.modules += new /obj/item/borg/combat/shield(src)
src.modules += new /obj/item/borg/combat/mobility(src)
src.modules += new /obj/item/device/ticket_printer(src) //VOREStation Add
src.emag = new /obj/item/weapon/gun/energy/lasercannon/mounted(src)
src.modules += new /obj/item/weapon/borg_combat_shocker
src.modules += new /obj/item/device/ticket_printer(src)
src.emag += new /obj/item/weapon/gun/energy/lasercannon/mounted(src)
src.modules += new /obj/item/device/dogborg/sleeper/K9/ert(src)
src.modules += new /obj/item/weapon/dogborg/pounce(src)
/* Drones */
@@ -909,7 +811,7 @@ var/global/list/robot_modules = list(
no_slip = 1
networks = list(NETWORK_ENGINEERING)
/obj/item/weapon/robot_module/drone/New(var/mob/living/silicon/robot/robot)
/obj/item/weapon/robot_module/drone/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
@@ -931,8 +833,9 @@ var/global/list/robot_modules = list(
robot.internals = new/obj/item/weapon/tank/jetpack/carbondioxide(src)
src.modules += robot.internals
src.emag = new /obj/item/weapon/pickaxe/plasmacutter/borg(src)
src.emag.name = "Plasma Cutter"
var/obj/item/weapon/pickaxe/plasmacutter/borg/PC = new /obj/item/weapon/pickaxe/plasmacutter/borg(src)
src.emag += PC
PC.name = "Plasma Cutter"
var/datum/matter_synth/metal = new /datum/matter_synth/metal(25000)
var/datum/matter_synth/glass = new /datum/matter_synth/glass(25000)
@@ -994,7 +897,7 @@ var/global/list/robot_modules = list(
channels = list("Engineering" = 1)
languages = list()
/obj/item/weapon/robot_module/drone/construction/New()
/obj/item/weapon/robot_module/drone/construction/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/weapon/rcd/electric/mounted/borg/lesser(src)
@@ -1009,11 +912,11 @@ var/global/list/robot_modules = list(
channels = list("Supply" = 1)
networks = list(NETWORK_MINE)
/obj/item/weapon/robot_module/drone/mining/New()
/obj/item/weapon/robot_module/drone/mining/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/borg/sight/material(src)
src.modules += new /obj/item/weapon/pickaxe/borgdrill(src)
src.modules += new /obj/item/weapon/storage/bag/ore(src)
src.modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src)
src.modules += new /obj/item/weapon/gun/energy/locked/phasegun/unlocked/mounted/cyborg(src) //Chompedit, makes the mining borg able to defend itself.
src.emag = new /obj/item/weapon/pickaxe/diamonddrill(src)
src.emag += new /obj/item/weapon/pickaxe/diamonddrill(src)

View File

@@ -2,7 +2,7 @@
name = "swarm drone module"
var/id
/obj/item/weapon/robot_module/drone/swarm/New(var/mob/living/silicon/robot/robot)
/obj/item/weapon/robot_module/drone/swarm/create_equipment(var/mob/living/silicon/robot/robot)
..()
id = robot.idcard
@@ -18,12 +18,12 @@
/obj/item/weapon/robot_module/drone/swarm/ranged
name = "swarm gunner module"
/obj/item/weapon/robot_module/drone/swarm/ranged/New(var/mob/living/silicon/robot/robot)
/obj/item/weapon/robot_module/drone/swarm/ranged/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/weapon/gun/energy/xray/swarm(src)
/obj/item/weapon/robot_module/drone/swarm/melee/New(var/mob/living/silicon/robot/robot)
/obj/item/weapon/robot_module/drone/swarm/melee/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/weapon/melee/energy/sword/ionic_rapier/lance(src)

View File

@@ -1,4 +1,3 @@
//CHOMPNOTE - if upstream edits the sprite lists it will have to be manually copied into our station_vr file, anything else is just read from here
/* Syndicate modules */
/obj/item/weapon/robot_module/robot/syndicate
@@ -19,21 +18,11 @@
LANGUAGE_TERMINUS = 1,
LANGUAGE_ZADDAT = 0
)
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"Cerberus" = "syndie_bloodhound",
"Cerberus - Treaded" = "syndie_treadhound",
"Ares" = "squats",
"Telemachus" = "toiletbotantag",
"WTOperator" = "hosborg",
"XI-GUS" = "spidersyndi",
"XI-ALP" = "syndi-heavy"
)*/ //CHOMPEdit end
var/id
// All syndie modules get these, and the base borg items (flash, crowbar, etc).
/obj/item/weapon/robot_module/robot/syndicate/New(var/mob/living/silicon/robot/R)
/obj/item/weapon/robot_module/robot/syndicate/create_equipment(var/mob/living/silicon/robot/robot)
..()
loc = R
src.modules += new /obj/item/weapon/pinpointer/shuttle/merc(src)
src.modules += new /obj/item/weapon/melee/energy/sword(src)
@@ -45,9 +34,9 @@
var/jetpack = new/obj/item/weapon/tank/jetpack/carbondioxide(src)
src.modules += jetpack
R.internals = jetpack
robot.internals = jetpack
id = R.idcard
id = robot.idcard
src.modules += id
/obj/item/weapon/robot_module/robot/syndicate/Destroy()
@@ -58,29 +47,22 @@
// Gets a big shield and a gun that shoots really fast to scare the opposing force.
/obj/item/weapon/robot_module/robot/syndicate/protector
name = "protector robot module"
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"Cerberus - Treaded" = "syndie_treadhound",
"Cerberus" = "syndie_bloodhound",
"Ares" = "squats",
"XI-ALP" = "syndi-heavy"
)*/ //CHOMPEdit end
/obj/item/weapon/robot_module/robot/syndicate/protector/New(var/mob/living/silicon/robot/R)
/obj/item/weapon/robot_module/robot/syndicate/protector/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/shield_projector/rectangle/weak(src)
src.modules += new /obj/item/weapon/gun/energy/dakkalaser(src)
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
src.modules += new /obj/item/weapon/melee/baton/robot(src)
src.modules += new /obj/item/device/dogborg/sleeper/K9/syndie(src)
src.modules += new /obj/item/weapon/dogborg/pounce(src)
// 95% engi-borg and 15% roboticist.
/obj/item/weapon/robot_module/robot/syndicate/mechanist
name = "mechanist robot module"
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"XI-GUS" = "spidersyndi",
"WTOperator" = "sleekhos"
)*/ //CHOMPEdit end
/obj/item/weapon/robot_module/robot/syndicate/mechanist/New(var/mob/living/silicon/robot/R)
/obj/item/weapon/robot_module/robot/syndicate/mechanist/create_equipment(var/mob/living/silicon/robot/robot)
..()
// General engineering/hacking.
src.modules += new /obj/item/borg/sight/meson(src)
@@ -138,17 +120,20 @@
RG.synths = list(metal, glass)
src.modules += RG
var/obj/item/device/dogborg/sleeper/compactor/syndie/MD = new /obj/item/device/dogborg/sleeper/compactor/syndie(src)
MD.metal = metal
MD.glass = glass
src.modules += MD
src.modules += new /obj/item/weapon/dogborg/pounce(src)
// Mediborg optimized for on-the-field healing, but can also do surgery if needed.
/obj/item/weapon/robot_module/robot/syndicate/combat_medic
name = "combat medic robot module"
/*sprites = list( //CHOMPEdit Start - moved to modular_chomp
"Telemachus" = "toiletbotantag"
)*/ //CHOMPEdit end
/obj/item/weapon/robot_module/robot/syndicate/combat_medic/New(var/mob/living/silicon/robot/R)
/obj/item/weapon/robot_module/robot/syndicate/combat_medic/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/borg/sight/hud/med(src)
src.modules += new /obj/item/device/healthanalyzer/phasic(src)
@@ -194,6 +179,9 @@
src.modules += B
src.modules += S
src.modules += new /obj/item/device/dogborg/sleeper/syndie(src)
src.modules += new /obj/item/weapon/dogborg/pounce(src)
/obj/item/weapon/robot_module/robot/syndicate/combat_medic/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules

View File

@@ -34,7 +34,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
if(!QDELETED(camera))
camera.c_tag = real_name //update the camera name too
notify_ai(ROBOT_NOTIFICATION_AI_SHELL)
updateicon()
update_icon()
//CHOMPADDITION: Ai shell sideloading
/mob/living/silicon/robot/proc/transfer_shell_act()
@@ -98,7 +98,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
else if(mind)
to_chat(src, span("notice", "Transferring Shell"))
deployed = FALSE
updateicon()
update_icon()
mainframe.teleop = null
mainframe.deployed_shell = null
SetName("[modtype] AI Shell [num2text(ident)]")
@@ -128,7 +128,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
GLOB.available_ai_shells -= src
if(!QDELETED(camera))
camera.c_tag = real_name
updateicon()
update_icon()
// This should be called before the AI client/mind is actually moved.
/mob/living/silicon/robot/proc/deploy_init(mob/living/silicon/ai/AI)
@@ -142,7 +142,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
// Have the borg have eyes when active.
mainframe = AI
deployed = TRUE
updateicon()
update_icon()
// Laws.
connected_ai = mainframe // So they share laws.
@@ -165,8 +165,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
// Called after the AI transfers over.
/mob/living/silicon/robot/proc/post_deploy()
if(!custom_sprite) // Check for custom sprite.
set_custom_sprite()
return
/mob/living/silicon/robot/proc/undeploy(message)
if(!deployed || !mind || !mainframe)
@@ -177,7 +176,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
to_chat(src, span("notice", message))
mind.transfer_to(mainframe)
deployed = FALSE
updateicon()
update_icon()
mainframe.teleop = null
mainframe.deployed_shell = null
SetName("[modtype] AI Shell [num2text(ident)]")

View File

@@ -1,83 +1,5 @@
/mob/living/silicon/robot
var/sleeper_g //Set to True only for Medical mechs when patient alive
var/sleeper_r //Used in every other case. Currently also for Vorebellies. Ideally vorebellies will use sleeper_o once icons are made
/mob/living/silicon/robot //ChompEDIT
var/sleeper_resting = FALSE //CHOMPEdit - Enable resting belly sprites for dogborgs that have the sprites
var/leaping = 0
var/pounce_cooldown = 0
var/pounce_cooldown_time = 40
var/leap_at
var/dogborg = FALSE //Dogborg special features (overlays etc.)
var/wideborg = FALSE //When the borg simply doesn't use standard 32p size. - CHOMPNote No longer used, this info is defined per sprite
var/scrubbing = FALSE //Floor cleaning enabled
var/datum/matter_synth/water_res = null
var/notransform
var/original_icon = 'icons/mob/robots.dmi'
var/ui_style_vr = FALSE //Do we use our hud icons?
var/sitting = FALSE
var/bellyup = FALSE
does_spin = FALSE
var/wideborg_dept = 'icons/mob/widerobot_vr.dmi'
var/vr_icons = list(
"handy-hydro",
"handy-service",
"handy-clerk",
"handy-janitor",
"handy-miner",
"handy-standard",
"handy-sec",
"mechoid-Standard",
"mechoid-Medical",
"mechoid-Security",
"mechoid-Science",
"mechoid-Engineering",
"mechoid-Miner",
"mechoid-Service",
"mechoid-Janitor",
"mechoid-Combat",
"mechoid-Combat-roll",
"mechoid-Combat-shield",
"Noble-CLN",
"Noble-SRV",
"Noble-DIG",
"Noble-MED",
"Noble-SEC",
"Noble-ENG",
"Noble-STD",
"zoomba-standard",
"zoomba-clerical",
"zoomba-engineering",
"zoomba-janitor",
"zoomba-medical",
"zoomba-crisis",
"zoomba-miner",
"zoomba-research",
"zoomba-security",
"zoomba-service",
"zoomba-combat",
"zoomba-combat-roll",
"zoomba-combat-shield",
"spiderscience",
"uptall-standard",
"uptall-standard2",
"uptall-medical",
"uptall-janitor",
"uptall-crisis",
"uptall-service",
"uptall-engineering",
"uptall-miner",
"uptall-security",
"uptall-science",
"worm-standard",
"worm-engineering",
"worm-janitor",
"worm-crisis",
"worm-miner",
"worm-security",
"worm-combat",
"worm-surgeon",
"worm-service"
) //List of all used sprites that are in robots_vr.dmi
/mob/living/silicon/robot/verb/robot_nom(var/mob/living/T in living_mobs(1))
set name = "Robot Nom"
@@ -88,147 +10,6 @@
return
return feed_grabbed_to_self(src,T)
/mob/living/silicon/robot/lay_down()
. = ..()
updateicon()
/mob/living/silicon/robot/proc/rest_style()
set name = "Switch Rest Style"
set category = "IC"
set desc = "Select your resting pose."
sitting = FALSE
bellyup = FALSE
var/choice = tgui_alert(src, "Select resting pose", "Resting Pose", list("Resting", "Sitting", "Belly up"))
switch(choice)
if("Resting")
return 0
if("Sitting")
sitting = TRUE
if("Belly up")
bellyup = TRUE
/* //CHOMPEdit moving all this code to modular_chomp\code\modules\mob\living\silicon\robot\robot_vr.dm in order to make this more flexible
/mob/living/silicon/robot/updateicon()
vr_sprite_check()
..()
if(dogborg == TRUE && stat == CONSCIOUS)
//update_fullness() // CHOMPEdit - Needed so that we can have the vore sprites when only using vore bellies
//CHOMPEdit begin - Add multiple belly size support
//Add a check when selecting an icon in robot.dm if you add in support for this, to set vore_capacity to 2 or however many states you have.
var/fullness_extension = ""
if(vore_capacity_ex["stomach"] > 1 && vore_fullness_ex["stomach"] > 1)
fullness_extension = "_[vore_fullness_ex["stomach"]]"
//CHOMPEdit end
if(vore_selected.silicon_belly_overlay_preference == "Sleeper")
if(sleeper_g == TRUE)
add_overlay("[module_sprites[icontype]]-sleeper_g")
if(sleeper_r == TRUE || (!sleeper_g && vore_fullness_ex["stomach"])) //CHOMPEdit - Also allow normal vore bellies to affect this sprite
add_overlay("[module_sprites[icontype]]-sleeper_r[fullness_extension]") //CHOMPEdit - Allow multiple belly sizes...
else if(vore_selected.silicon_belly_overlay_preference == "Vorebelly")
if(LAZYLEN(vore_selected.contents) >= vore_selected.visible_belly_minimum_prey)
if(vore_selected.overlay_min_prey_size == 0) //if min size is 0, we dont check for size
add_overlay("[module_sprites[icontype]]-sleeper_r")
else
var/show_belly = FALSE
if(vore_selected.override_min_prey_size && (LAZYLEN(vore_selected.contents) > vore_selected.override_min_prey_num))
show_belly = TRUE //Override regardless of content size
else
for(var/content in vore_selected.contents) //If ANY in belly are big enough, we set to true
if(!istype(content, /mob/living)) continue
var/mob/living/prey = content
if(prey.size_multiplier >= vore_selected.overlay_min_prey_size)
show_belly = TRUE
break
if(show_belly)
add_overlay("[module_sprites[icontype]]-sleeper_r")
if(istype(module_active,/obj/item/weapon/gun/energy/laser/mounted))
add_overlay("laser")
if(istype(module_active,/obj/item/weapon/gun/energy/taser/mounted/cyborg))
add_overlay("taser")
if(lights_on)
add_overlay("eyes-[module_sprites[icontype]]-lights")
if(resting)
cut_overlays() // Hide that gut for it has no ground sprite yo.
if(sitting)
icon_state = "[module_sprites[icontype]]-sit"
//CHOMPEdit Begin - Add ability to have sleeper belly sprites if available
if(sleeper_resting && sleeper_g == TRUE)
add_overlay("[module_sprites[icontype]]-sleeper_g-sit")
if(sleeper_resting && (sleeper_r == TRUE || (!sleeper_g && vore_fullness_ex["stomach"])))
add_overlay("[module_sprites[icontype]]-sleeper_r-sit[fullness_extension]")
//CHOMPEdit End
if(bellyup)
icon_state = "[module_sprites[icontype]]-bellyup"
//CHOMPEdit Begin - Add ability to have sleeper belly sprites if available
if(sleeper_resting && sleeper_g == TRUE)
add_overlay("[module_sprites[icontype]]-sleeper_g-bellyup")
if(sleeper_resting && (sleeper_r == TRUE || (!sleeper_g && vore_fullness_ex["stomach"])))
add_overlay("[module_sprites[icontype]]-sleeper_r-bellyup[fullness_extension]")
//CHOMPEdit End
else if(!sitting && !bellyup)
icon_state = "[module_sprites[icontype]]-rest"
//CHOMPEdit Begin - Add ability to have sleeper belly sprites if available
if(sleeper_resting && sleeper_g == TRUE)
add_overlay("[module_sprites[icontype]]-sleeper_g-rest")
if(sleeper_resting && (sleeper_r == TRUE || (!sleeper_g && vore_fullness_ex["stomach"])))
add_overlay("[module_sprites[icontype]]-sleeper_r-rest[fullness_extension]")
//CHOMPEdit End
else
icon_state = "[module_sprites[icontype]]"
if(dogborg == TRUE && stat == DEAD)
icon_state = "[module_sprites[icontype]]-wreck"
add_overlay("wreck-overlay")
/mob/living/silicon/robot/proc/vr_sprite_check()
vis_height = 32
if(custom_sprite == TRUE)
return
if(wideborg == TRUE)
if(icontype == "Drake") // Why, Why can't we have normal nice things
icon = 'icons/mob/drakeborg/drakeborg_vr.dmi'
else if(icontype == "Secborg model V-3" || icontype == "Mediborg model V-3") //CH edit
icon = 'modular_chomp/icons/mob/widerobot_ch.dmi'
else if(icontype == "Cat" || icontype == "Cat Mining" || icontype == "Cat Cargo") // CHOMPEdit
icon = 'modular_chomp/icons/mob/catborg/catborg.dmi'
else if(icontype == "Raptor V-4" || icontype == "Raptor V-4000") //Added for raptor sprites
icon = 'modular_chomp/icons/mob/raptorborg/raptor.dmi' //CHOMPEDIT: moving to modular so i can fix all the things
else if(icontype == "Raptor V-4.1") //CHOMPADDITION: letting us redurect to our raptor dmi
icon = 'modular_chomp/icons/mob/raptorborg/raptor_ch.dmi' //CHOMPADDITION: letting us redurect to our raptor dmi
else if(icontype == "MEKA" || icontype == "MEKAalt" || icontype == "NIKO" || icontype == "NIKA" || icontype == "K4T" || icontype == "K4Talt")
icon = 'modular_chomp/icons/mob/tallborg/tallrobots-wide.dmi' //CHOMPEDIT: TallBorg, I dunno how to code but i'll love it if someone could change this mess into how TG does it
vis_height = 64 // CHOMPedit: sanitizing tile centering for larger sprites.
update_transform() // CHOMPedit: sanitizing tile centering for larger sprites.
/* //CHOMP Remove START - re use our own sprites. The icontype below is not used.
else if(icontype == "MEKA v2") //tallborgs. if anyone can code them not to be a dogborg subtype please do so, but this'll do for now.
icon = 'icons/mob/tallborg/tallborg.dmi'
vis_height = 64
update_transform()*/ //CHOMP Remove END
else
icon = wideborg_dept
return
if((!(original_icon == icon)) && (!(icon == 'icons/mob/robots_vr.dmi')))
original_icon = icon
if((icon_state in vr_icons) && (icon == 'icons/mob/robots.dmi'))
icon = 'icons/mob/robots_vr.dmi'
else if(!(icon_state in vr_icons))
icon = original_icon
*/ //CHOMPEdit end
/mob/living/silicon/robot/proc/ex_reserve_refill()
set name = "Refill Extinguisher"
set category = "Object"
var/datum/matter_synth/water = water_res
for(var/obj/item/weapon/extinguisher/E in module.modules)
if(E.reagents.total_volume < E.max_water)
if(water && water.energy > 0)
var/amount = E.max_water - E.reagents.total_volume
if(water.energy < amount)
amount = water.energy
water.use_charge(amount)
E.reagents.add_reagent("water", amount)
to_chat(src, "<span class='filter_notice'>You refill the extinguisher using your water reserves.</span>")
else
to_chat(src, "<span class='filter_notice'>Insufficient water reserves.</span>")
//RIDING
/datum/riding/dogborg
keytype = /obj/item/weapon/material/twohanded/riding_crop // Crack!
@@ -278,8 +59,6 @@
/mob/living/silicon/robot/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE)
if(forced)
return ..() // Skip our checks
if(!dogborg)
return FALSE
if(lying)
return FALSE
if(!ishuman(M))

View File

@@ -0,0 +1,148 @@
/datum/robot_sprite
var/name
var/module_type
var/default_sprite = FALSE
var/sprite_icon
var/sprite_icon_state
var/sprite_hud_icon_state
var/has_eye_sprites = TRUE
var/has_eye_light_sprites = FALSE
var/has_custom_open_sprites = FALSE
var/has_vore_belly_sprites = FALSE
var/has_vore_belly_resting_sprites = FALSE
var/has_rest_sprites = FALSE
var/list/rest_sprite_options
var/has_dead_sprite = FALSE
var/has_dead_sprite_overlay = FALSE
var/has_extra_customization = FALSE
var/has_custom_equipment_sprites = FALSE
var/vis_height = 32
var/pixel_x = 0
var/is_whitelisted = FALSE
var/whitelist_ckey
var/whitelist_charname
/datum/robot_sprite/proc/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
return
/datum/robot_sprite/proc/get_belly_overlay(var/mob/living/silicon/robot/ourborg)
return "[sprite_icon_state]-sleeper"
//CHOMPEdit Start - gives the function functionality
/datum/robot_sprite/proc/get_belly_resting_overlay(var/mob/living/silicon/robot/ourborg)
if(!(ourborg.rest_style in rest_sprite_options))
ourborg.rest_style = "Default"
switch(ourborg.rest_style)
if("Sit")
return "[get_belly_overlay(ourborg)]-sit"
if("Bellyup")
return "[get_belly_overlay(ourborg)]-bellyup"
else
return "[get_belly_overlay(ourborg)]-rest"
//CHOMPEdit End
/datum/robot_sprite/proc/get_eyes_overlay(var/mob/living/silicon/robot/ourborg)
if(!(ourborg.resting && has_rest_sprites))
return "[sprite_icon_state]-eyes"
else
return
/datum/robot_sprite/proc/get_eye_light_overlay(var/mob/living/silicon/robot/ourborg)
if(!(ourborg.resting && has_rest_sprites))
return "[sprite_icon_state]-lights"
else
return
/datum/robot_sprite/proc/get_rest_sprite(var/mob/living/silicon/robot/ourborg)
return
/datum/robot_sprite/proc/get_dead_sprite(var/mob/living/silicon/robot/ourborg)
return "[sprite_icon_state]-wreck"
/datum/robot_sprite/proc/get_dead_sprite_overlay(var/mob/living/silicon/robot/ourborg)
return "wreck-overlay"
/datum/robot_sprite/proc/get_open_sprite(var/mob/living/silicon/robot/ourborg)
if(!ourborg.opened)
return
if(ourborg.wiresexposed)
. = "openpanel_w"
else if(ourborg.cell)
. = "openpanel_c"
else
. = "openpanel_nc"
if(has_custom_open_sprites)
. = "[sprite_icon_state]-[.]"
return
/datum/robot_sprite/proc/handle_extra_customization(var/mob/living/silicon/robot/ourborg)
return
/datum/robot_sprite/proc/do_equipment_glamour(var/obj/item/weapon/robot_module/module)
return
// Dogborgs and not-dogborgs that use dogborg stuff. Oh no.
// Not really necessary to be used by any specific sprite actually, even newly added dogborgs.
// Mostly a combination of all features dogborgs had prior to conversion to datums for convinience of conversion itself.
/datum/robot_sprite/dogborg
has_vore_belly_sprites = TRUE
has_rest_sprites = TRUE
rest_sprite_options = list("Default", "Sit", "Bellyup")
has_dead_sprite = TRUE
has_dead_sprite_overlay = TRUE
has_custom_equipment_sprites = TRUE
pixel_x = -16
/datum/robot_sprite/dogborg/get_rest_sprite(var/mob/living/silicon/robot/ourborg)
if(!(ourborg.rest_style in rest_sprite_options))
ourborg.rest_style = "Default"
switch(ourborg.rest_style)
if("Sit")
return "[sprite_icon_state]-sit"
if("Bellyup")
return "[sprite_icon_state]-bellyup"
else
return "[sprite_icon_state]-rest"
/datum/robot_sprite/dogborg/get_belly_overlay(var/mob/living/silicon/robot/ourborg)
return "[sprite_icon_state]-sleeper"
/datum/robot_sprite/dogborg/do_equipment_glamour(var/obj/item/weapon/robot_module/module)
if(!has_custom_equipment_sprites)
return
var/obj/item/weapon/tool/crowbar/cyborg/C = locate() in module.modules
if(C)
C.name = "puppy jaws"
C.desc = "The jaws of a small dog. Still strong enough to pry things."
C.icon = 'icons/mob/dogborg_vr.dmi'
C.icon_state = "smalljaws_textless"
C.hitsound = 'sound/weapons/bite.ogg'
C.attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
/datum/robot_sprite/dogborg/tall
has_dead_sprite_overlay = FALSE
has_custom_equipment_sprites = FALSE
vis_height = 64
pixel_x = 0 //CHOMPEdit - our tallborgs arent wide
// Default module sprite
/datum/robot_sprite/default
name = DEFAULT_ROBOT_SPRITE_NAME
module_type = "Default"
sprite_icon = 'icons/mob/robot/default.dmi'
sprite_icon_state = "default"
default_sprite = TRUE
//CHOMPAdd Start - new definition for raptors
/datum/robot_sprite/dogborg/raptor
has_dead_sprite_overlay = FALSE
vis_height = 45
pixel_x = -16
//CHOMPAdd End

View File

@@ -0,0 +1,382 @@
// Clerical and Service modules have a lot of shared sprites so they're in same file
// (some of those sprites are also shared with Standard, but ive already done it as its own thing, so some duplicates are fine)
// Both Service and Clerical
// Regular sprites
/datum/robot_sprite/civilian
module_type = list("Service", "Clerical")
sprite_icon = 'icons/mob/robot/civilian.dmi'
/datum/robot_sprite/civilian/eyebot
name = "Cabeiri"
sprite_icon_state = "eyebot"
/datum/robot_sprite/civilian/marina
name = "Haruka"
sprite_icon_state = "marina"
/datum/robot_sprite/civilian/tall
name = "Usagi"
sprite_icon_state = "tall"
has_eye_sprites = FALSE
/datum/robot_sprite/civilian/toiletbot
name = "Telemachus"
sprite_icon_state = "toiletbot"
/datum/robot_sprite/civilian/omoikane
name = "WTOmni"
sprite_icon_state = "omoikane"
/datum/robot_sprite/civilian/heavy
name = "XI-ALP"
sprite_icon_state = "heavy"
/datum/robot_sprite/civilian/waitress
name = "Waitress"
sprite_icon_state = "waitress"
has_eye_sprites = FALSE
/datum/robot_sprite/civilian/waiter
name = "Waiter"
sprite_icon_state = "waiter"
has_eye_sprites = FALSE
/datum/robot_sprite/civilian/bro
name = "Bro"
sprite_icon_state = "bro"
sprite_hud_icon_state = "brobot"
has_eye_sprites = FALSE
/datum/robot_sprite/civilian/maximillion
name = "Rich"
sprite_icon_state = "maximillion"
has_eye_sprites = FALSE
/datum/robot_sprite/civilian/tall2
name = "Usagi-II"
sprite_icon_state = "tall2"
/datum/robot_sprite/civilian/mechoid
name = "Acheron"
sprite_icon_state = "mechoid"
/datum/robot_sprite/civilian/noble
name = "Shellguard Noble"
sprite_icon_state = "noble"
has_custom_open_sprites = TRUE
/datum/robot_sprite/civilian/worm
name = "W02M"
sprite_icon_state = "worm"
has_custom_open_sprites = TRUE
/datum/robot_sprite/civilian/uptall
name = "Feminine Humanoid"
sprite_icon_state = "uptall"
// Wide/dogborg sprites
/*
/datum/robot_sprite/dogborg/civilian
module_type = list("Service", "Clerical")
sprite_icon = 'icons/mob/robot/civilian_wide.dmi'
// None yet
*/
// Tall sprites
/*
/datum/robot_sprite/dogborg/tall/civilian
module_type = list("Service", "Clerical")
sprite_icon = 'icons/mob/robot/civilian_large.dmi'
// None yet
*/
// Service
// Regular sprites
/datum/robot_sprite/service
module_type = "Service"
sprite_icon = 'icons/mob/robot/service.dmi'
/datum/robot_sprite/service/default
name = DEFAULT_ROBOT_SPRITE_NAME
default_sprite = TRUE
sprite_icon_state = "default"
/datum/robot_sprite/service/maid
name = "Michiru"
sprite_icon_state = "maid"
/datum/robot_sprite/service/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
/datum/robot_sprite/service/spider
name = "XI-GUS"
sprite_icon_state = "spider"
/datum/robot_sprite/service/drone
name = "Drone - Service"
sprite_icon_state = "drone-crisis"
has_custom_open_sprites = TRUE
/datum/robot_sprite/service/drone_hydro
name = "Drone - Hydro"
sprite_icon_state = "drone-hydro"
sprite_hud_icon_state = "hydroponics"
has_custom_open_sprites = TRUE
/datum/robot_sprite/service/glitterfly
name = "Pyralis"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/service/decapod
name = "Decapod"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/service/pneuma
name = "Pneuma"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/service/drider
name = "Tower"
sprite_icon_state = "drider"
has_custom_open_sprites = TRUE
/datum/robot_sprite/service/handy
name = "Handy - Service"
sprite_icon_state = "handy"
/datum/robot_sprite/service/handy_hydro
name = "Handy - Hydro"
sprite_icon_state = "handy-hydro"
sprite_hud_icon_state = "hydroponics"
/datum/robot_sprite/service/zoomba
name = "ZOOM-BA"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
// Wide/dogborg sprites
/datum/robot_sprite/dogborg/service
module_type = "Service"
sprite_icon = 'icons/mob/robot/service_wide.dmi'
/datum/robot_sprite/dogborg/service/hound
name = "Blackhound"
sprite_icon_state = "hound"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = FALSE
/datum/robot_sprite/dogborg/service/houndpink
name = "Pinkhound"
sprite_icon_state = "houndpink"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = FALSE
/datum/robot_sprite/dogborg/service/vale
name = "ServicehoundV2"
sprite_icon_state = "vale"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = FALSE
/datum/robot_sprite/dogborg/service/valedark
name = "ServicehoundV2 Darkmode"
sprite_icon_state = "valedark"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = FALSE
/datum/robot_sprite/dogborg/service/drake
name = "Drake"
sprite_icon_state = "drake"
/datum/robot_sprite/dogborg/service/booze
name = "Boozehound"
sprite_icon = 'icons/mob/robot/service_wide_booze.dmi'
sprite_icon_state = "booze"
sprite_hud_icon_state = "boozehound"
rest_sprite_options = list("Default")
has_extra_customization = TRUE
var/list/booze_options = list("Beer" = "booze",
"Space Mountain Wind" = "boozegreen",
"Curacao" = "boozeblue",
"Grape Soda" = "boozepurple",
"Demon's Blood" = "boozered",
"Whiskey Soda" = "boozeorange",
"Coffee" = "boozebrown")
/datum/robot_sprite/dogborg/service/booze/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
if(!("boozehound" in ourborg.sprite_extra_customization) || !ourborg.sprite_extra_customization["boozehound"])
return ..()
else
ourborg.icon_state = booze_options[ourborg.sprite_extra_customization["boozehound"]]
/datum/robot_sprite/dogborg/service/booze/get_belly_overlay(var/mob/living/silicon/robot/ourborg)
if(!("boozehound" in ourborg.sprite_extra_customization) || !ourborg.sprite_extra_customization["boozehound"])
return ..()
else
return "[booze_options[ourborg.sprite_extra_customization["boozehound"]]]-sleeper"
/datum/robot_sprite/dogborg/service/booze/get_rest_sprite(var/mob/living/silicon/robot/ourborg)
if(!(ourborg.rest_style in rest_sprite_options))
ourborg.rest_style = "Default"
if(!("boozehound" in ourborg.sprite_extra_customization) || !ourborg.sprite_extra_customization["boozehound"])
return ..()
else
return "[booze_options[ourborg.sprite_extra_customization["boozehound"]]]-rest"
/datum/robot_sprite/dogborg/service/booze/handle_extra_customization(var/mob/living/silicon/robot/ourborg)
var/choice = tgui_input_list(ourborg, "Choose your drink!", "Drink Choice", booze_options)
if(ourborg && choice && !ourborg.stat)
if(!("boozehound" in ourborg.sprite_extra_customization))
ourborg.sprite_extra_customization += "boozehound"
ourborg.sprite_extra_customization["boozehound"] = choice
playsound(ourborg.loc, 'sound/effects/bubbles.ogg', 100, 0, 4)
to_chat(ourborg, "<span class='filter_notice'>Your tank now displays [choice]. Drink up and enjoy!</span>")
ourborg.update_icon()
return 1
// Tall sprites
//CHOMPNote -- many of the lines in this is overriden in modular
/datum/robot_sprite/dogborg/tall/service
module_type = "Service"
sprite_icon = 'icons/mob/robot/service_large.dmi'
/datum/robot_sprite/dogborg/raptor/service/raptor //CHOMPEdit - changing typepath
name = "Raptor V-4"
sprite_icon_state = "raptor"
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/raptor/service/fancyraptor //CHOMPEdit - changing typepath
name = "Raptor V-4000"
sprite_icon_state = "fancyraptor"
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/service/meka
name = "MEKA"
sprite_icon_state = "meka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/* //CHOMPRemove - we dont use the old sprites so this is useless
/datum/robot_sprite/dogborg/tall/service/newmeka
name = "MEKA v2"
sprite_icon_state = "newmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
*/
/datum/robot_sprite/dogborg/tall/service/mmeka
name = "NIKO"
sprite_icon_state = "mmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/service/fmeka
name = "NIKA"
sprite_icon_state = "fmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/service/k4t
name = "K4T"
sprite_icon_state = "k4t"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/service/k4t_alt1
name = "K4Talt"
sprite_icon_state = "k4t_alt1"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
// Clerical
// Regular sprites
/datum/robot_sprite/clerical
module_type = "Clerical"
sprite_icon = 'icons/mob/robot/clerical.dmi'
/datum/robot_sprite/clerical/default
name = DEFAULT_ROBOT_SPRITE_NAME
default_sprite = TRUE
sprite_icon_state = "default"
/datum/robot_sprite/clerical/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
/datum/robot_sprite/clerical/spider
name = "XI-GUS"
sprite_icon_state = "spider"
/datum/robot_sprite/clerical/drone
name = "Drone"
sprite_icon_state = "drone"
has_custom_open_sprites = TRUE
/datum/robot_sprite/clerical/glitterfly
name = "Pyralis"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/clerical/decapod
name = "Decapod"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/clerical/pneuma
name = "Pneuma"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/clerical/drider
name = "Tower"
sprite_icon_state = "drider"
has_custom_open_sprites = TRUE
/datum/robot_sprite/clerical/zoomba
name = "ZOOM-BA"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
// Wide/dogborg sprites
/*
/datum/robot_sprite/dogborg/clerical
module_type = "Clerical"
sprite_icon = 'icons/mob/robot/clerical_wide.dmi'
// None yet
*/
// Tall sprites
/*
/datum/robot_sprite/dogborg/tall/clerical
module_type = "Clerical"
sprite_icon = 'icons/mob/robot/clerical_large.dmi'
// None yet
*/

View File

@@ -0,0 +1,135 @@
// Regular sprites
/datum/robot_sprite/combat
module_type = "Combat"
sprite_icon = 'icons/mob/robot/combat.dmi'
var/has_speed_sprite = FALSE
var/has_shield_sprite = FALSE
/datum/robot_sprite/combat/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
if(has_speed_sprite)
if(istype(ourborg.module_active,/obj/item/borg/combat/mobility))
ourborg.icon_state = "[sprite_icon_state]-roll"
if(has_shield_sprite)
if(ourborg.has_active_type(/obj/item/borg/combat/shield))
var/obj/item/borg/combat/shield/shield = locate() in ourborg
if(shield && shield.active)
ourborg.add_overlay("[sprite_icon_state]-shield")
/datum/robot_sprite/combat/default
name = DEFAULT_ROBOT_SPRITE_NAME
default_sprite = TRUE
sprite_icon_state = "default"
/datum/robot_sprite/combat/marina
name = "Haruka"
sprite_icon_state = "marina"
has_speed_sprite = TRUE
has_shield_sprite = TRUE
/datum/robot_sprite/combat/droid
name = "Android"
sprite_icon_state = "droid"
has_speed_sprite = TRUE
has_shield_sprite = TRUE
/datum/robot_sprite/combat/droid/get_eyes_overlay(var/mob/living/silicon/robot/ourborg)
if(istype(ourborg.module_active,/obj/item/borg/combat/mobility))
return
else
return ..()
/datum/robot_sprite/combat/insekt
name = "Insekt"
sprite_icon_state = "insekt"
has_shield_sprite = TRUE
/datum/robot_sprite/combat/decapod
name = "Decapod"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
has_shield_sprite = TRUE
/datum/robot_sprite/combat/mechoid
name = "Acheron"
sprite_icon_state = "mechoid"
has_speed_sprite = TRUE
has_shield_sprite = TRUE
/datum/robot_sprite/combat/zoomba
name = "ZOOM-BA"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
has_speed_sprite = TRUE
has_shield_sprite = TRUE
/datum/robot_sprite/combat/worm
name = "W02M"
sprite_icon_state = "worm"
has_custom_open_sprites = TRUE
has_shield_sprite = TRUE
/datum/robot_sprite/combat/uptall
name = "Feminine Humanoid"
sprite_icon_state = "uptall"
// Wide/dogborg sprites
/*
/datum/robot_sprite/dogborg/combat
module_type = "Combat"
sprite_icon = 'icons/mob/robot/combat_wide.dmi'
// None yet
*/
// Tall sprites
/datum/robot_sprite/dogborg/tall/combat
module_type = "Combat"
sprite_icon = 'icons/mob/robot/combat_large.dmi'
has_custom_equipment_sprites = TRUE
var/has_gun_sprite = FALSE
/datum/robot_sprite/dogborg/tall/combat/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
if(has_gun_sprite && (istype(ourborg.module_active, /obj/item/weapon/gun/energy/laser/mounted) || istype(ourborg.module_active, /obj/item/weapon/gun/energy/taser/mounted/cyborg/ertgun) || istype(ourborg.module_active, /obj/item/weapon/gun/energy/lasercannon/mounted)))
ourborg.add_overlay("[sprite_icon_state]-gun")
/datum/robot_sprite/dogborg/tall/combat/do_equipment_glamour(var/obj/item/weapon/robot_module/module)
if(!has_custom_equipment_sprites)
return
..()
var/obj/item/weapon/combat_borgblade/CBB = locate() in module.modules
if(CBB)
CBB.name = "sword tail"
CBB.desc = "A glowing dagger normally attached to the end of a cyborg's tail. It appears to be extremely sharp."
var/obj/item/weapon/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/tall/combat/derg
name = "ERT"
sprite_icon_state = "derg"
rest_sprite_options = list("Default")
has_gun_sprite = TRUE
/datum/robot_sprite/dogborg/tall/combat/hound
name = "Combat Hound"
sprite_icon_state = "hound"
sprite_hud_icon_state = "ert"
rest_sprite_options = list("Default")
/datum/robot_sprite/dogborg/tall/combat/borgi
name = "Borgi"
sprite_icon_state = "borgi"
sprite_hud_icon_state = "ert"
rest_sprite_options = list("Default")
has_eye_sprites = FALSE
has_eye_light_sprites = TRUE

View File

@@ -0,0 +1,216 @@
// Regular sprites
/datum/robot_sprite/engineering
module_type = "Engineering"
sprite_icon = 'icons/mob/robot/engineering.dmi'
/datum/robot_sprite/engineering/default
name = DEFAULT_ROBOT_SPRITE_NAME
default_sprite = TRUE
sprite_icon_state = "default"
/datum/robot_sprite/engineering/eyebot
name = "Cabeiri"
sprite_icon_state = "eyebot"
/datum/robot_sprite/engineering/marina
name = "Haruka"
sprite_icon_state = "marina"
/datum/robot_sprite/engineering/tall
name = "Usagi"
sprite_icon_state = "tall"
/datum/robot_sprite/engineering/toiletbot
name = "Telemachus"
sprite_icon_state = "toiletbot"
/datum/robot_sprite/engineering/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
/datum/robot_sprite/engineering/spider
name = "XI-GUS"
sprite_icon_state = "spider"
/datum/robot_sprite/engineering/heavy
name = "XI-ALP"
sprite_icon_state = "heavy"
/datum/robot_sprite/engineering/old
name = "Basic"
sprite_icon_state = "old"
/datum/robot_sprite/engineering/oldbot
name = "Antique"
sprite_icon_state = "oldbot"
has_eye_sprites = FALSE
/datum/robot_sprite/engineering/landmate
name = "Landmate"
sprite_icon_state = "landmate"
/datum/robot_sprite/engineering/landmatetread
name = "Landmate - Treaded"
sprite_icon_state = "landmatetread"
/datum/robot_sprite/engineering/drone
name = "Drone"
sprite_icon_state = "drone"
has_custom_open_sprites = TRUE
/datum/robot_sprite/engineering/treadwell
name = "Treadwell"
sprite_icon_state = "treadwell"
/datum/robot_sprite/engineering/handy
name = "Handy"
sprite_icon_state = "handy"
/datum/robot_sprite/engineering/tall2
name = "Usagi-II"
sprite_icon_state = "tall2"
/datum/robot_sprite/engineering/glitterfly
name = "Pyralis"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/engineering/decapod
name = "Decapod"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/engineering/pneuma
name = "Pneuma"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/engineering/drider
name = "Tower"
sprite_icon_state = "drider"
has_custom_open_sprites = TRUE
/datum/robot_sprite/engineering/mechoid
name = "Acheron"
sprite_icon_state = "mechoid"
/datum/robot_sprite/engineering/noble
name = "Shellguard Noble"
sprite_icon_state = "noble"
has_custom_open_sprites = TRUE
/datum/robot_sprite/engineering/zoomba
name = "ZOOM-BA"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
/datum/robot_sprite/engineering/worm
name = "W02M"
sprite_icon_state = "worm"
has_custom_open_sprites = TRUE
/datum/robot_sprite/engineering/uptall
name = "Feminine Humanoid"
sprite_icon_state = "uptall"
// Wide/dogborg sprites
/datum/robot_sprite/dogborg/engineering
module_type = "Engineering"
sprite_icon = 'icons/mob/robot/engineering_wide.dmi'
/datum/robot_sprite/dogborg/engineering/pupdozer
name = "Pupdozer"
sprite_icon_state = "pupdozer"
sprite_hud_icon_state = "pupdozer"
rest_sprite_options = list("Default")
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/engineering/borgi
name = "Borgi"
sprite_icon_state = "borgi"
sprite_hud_icon_state = "pupdozer"
has_eye_sprites = FALSE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/engineering/vale
name = "V2 Engidog"
sprite_icon_state = "vale"
sprite_hud_icon_state = "pupdozer"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/engineering/hound
name = "EngiHound"
sprite_icon_state = "hound"
sprite_hud_icon_state = "pupdozer"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/engineering/hounddark
name = "EngiHoundDark"
sprite_icon_state = "hounddark"
sprite_hud_icon_state = "pupdozer"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/engineering/drake
name = "Drake"
sprite_icon_state = "drake"
// Tall sprites
//CHOMPNote -- many of the lines in this is overriden in modular
/datum/robot_sprite/dogborg/tall/engineering
module_type = "Engineering"
sprite_icon = 'icons/mob/robot/engineering_large.dmi'
/datum/robot_sprite/dogborg/raptor/engineering/raptor //CHOMPEdit - Changed Typepath
name = "Raptor V-4"
sprite_icon_state = "raptor"
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/engineering/meka
name = "MEKA"
sprite_icon_state = "meka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/* //CHOMPRemoval Start - we dont use the old sprites
/datum/robot_sprite/dogborg/tall/engineering/newmeka
name = "MEKA v2"
sprite_icon_state = "newmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
*/ //CHOMPRemoval End
/datum/robot_sprite/dogborg/tall/engineering/mmeka
name = "NIKO"
sprite_icon_state = "mmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/engineering/fmeka
name = "NIKA"
sprite_icon_state = "fmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/engineering/k4t
name = "K4T"
sprite_icon_state = "k4t"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/engineering/k4t_alt1
name = "K4Talt"
sprite_icon_state = "k4t_alt1"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")

View File

@@ -0,0 +1,76 @@
// Event/special borg sprites
// Lost
// Regular sprites
/datum/robot_sprite/lost
module_type = "Lost"
sprite_icon = 'icons/mob/robot/lost.dmi'
var/has_shield_sprite = FALSE
/datum/robot_sprite/lost/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
if(has_shield_sprite)
if(ourborg.has_active_type(/obj/item/borg/combat/shield))
var/obj/item/borg/combat/shield/shield = locate() in ourborg
if(shield && shield.active)
ourborg.add_overlay("[sprite_icon_state]-shield")
/datum/robot_sprite/lost/drone
name = "Drone"
sprite_icon_state = "drone"
has_shield_sprite = TRUE
// Wide/dogborg sprites
/datum/robot_sprite/dogborg/lost
module_type = "Lost"
sprite_icon = 'icons/mob/robot/lost_wide.dmi'
/datum/robot_sprite/dogborg/lost/do_equipment_glamour(var/obj/item/weapon/robot_module/module)
if(!has_custom_equipment_sprites)
return
..()
var/obj/item/weapon/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
SP.desc = "Zappy paws. For fixing cardiac arrest."
SP.icon = 'icons/mob/dogborg_vr.dmi'
SP.icon_state = "defibpaddles0"
SP.attack_verb = list("batted", "pawed", "bopped", "whapped")
/datum/robot_sprite/dogborg/lost/stray
name = "Stray"
sprite_icon_state = "stray"
// Gravekeeper
// Regular sprites
/datum/robot_sprite/gravekeeper
module_type = "Gravekeeper"
sprite_icon = 'icons/mob/robot/gravekeeper.dmi'
sprite_hud_icon_state = "lost"
var/has_shield_sprite = FALSE
/datum/robot_sprite/gravekeeper/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
if(has_shield_sprite)
if(ourborg.has_active_type(/obj/item/borg/combat/shield))
var/obj/item/borg/combat/shield/shield = locate() in ourborg
if(shield && shield.active)
ourborg.add_overlay("[sprite_icon_state]-shield")
/datum/robot_sprite/gravekeeper/drone
name = "Drone"
sprite_icon_state = "drone"
has_shield_sprite = TRUE
/datum/robot_sprite/gravekeeper/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
has_shield_sprite = TRUE

View File

@@ -0,0 +1,112 @@
#define CUSTOM_BORGSPRITE(x) "Custom - " + (x)
// All whitelisted dogborg sprites go here.
/datum/robot_sprite/fluff
is_whitelisted = TRUE
// A
/datum/robot_sprite/fluff/argonne
name = CUSTOM_BORGSPRITE("RUSS")
sprite_icon = 'icons/mob/robot/fluff_wide.dmi'
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
has_rest_sprites = TRUE
rest_sprite_options = list("Default", "Sit", "Bellyup")
has_dead_sprite = TRUE
has_dead_sprite_overlay = TRUE
pixel_x = -16
whitelist_ckey = "argonne"
whitelist_charname = "RUSS"
/datum/robot_sprite/fluff/argonne/security
module_type = "Security"
sprite_icon_state = "argonne-russ-sec"
sprite_hud_icon_state = "k9"
/datum/robot_sprite/fluff/argonne/crisis
module_type = "Crisis"
sprite_icon_state = "argonne-russ-crisis"
sprite_hud_icon_state = "medihound"
/datum/robot_sprite/fluff/argonne/surgical
module_type = "Surgeon"
sprite_icon_state = "argonne-russ-surg"
sprite_hud_icon_state = "medihound"
/datum/robot_sprite/fluff/argonne/engineering
module_type = "Engineering"
sprite_icon_state = "argonne-russ-eng"
sprite_hud_icon_state = "pupdozer"
/datum/robot_sprite/fluff/argonne/science
module_type = "Research"
sprite_icon_state = "argonne-russ-sci"
sprite_hud_icon_state = "sci-borg"
/datum/robot_sprite/fluff/argonne/mining
module_type = "Miner"
sprite_icon_state = "argonne-russ-mine"
/datum/robot_sprite/fluff/argonne/service
module_type = "Service"
sprite_icon_state = "argonne-russ-serv"
// J
/datum/robot_sprite/fluff/jademanique
name = CUSTOM_BORGSPRITE("B.A.U-Kingside")
module_type = "Security"
sprite_icon = 'icons/mob/robot/fluff_wide.dmi'
sprite_icon_state = "jademanique-kingside"
sprite_hud_icon_state = "k9"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
has_rest_sprites = TRUE
rest_sprite_options = list("Default", "Sit", "Bellyup")
has_dead_sprite = TRUE
has_dead_sprite_overlay = TRUE
pixel_x = -16
whitelist_ckey = "jademanique"
whitelist_charname = "B.A.U-Kingside"
/datum/robot_sprite/fluff/jademanique/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
if(istype(ourborg.module_active, /obj/item/weapon/gun/energy/laser/mounted))
ourborg.add_overlay("[sprite_icon_state]-laser")
if(istype(ourborg.module_active, /obj/item/weapon/gun/energy/taser/mounted/cyborg))
ourborg.add_overlay("[sprite_icon_state]-taser")
// L
/datum/robot_sprite/fluff/lunarfleet
name = CUSTOM_BORGSPRITE("Clea-Nor")
module_type = "Engineering"
sprite_icon = 'icons/mob/robot/fluff_wide.dmi'
sprite_icon_state = "lunarfleet-cleanor"
sprite_hud_icon_state = "pupdozer"
has_eye_light_sprites = TRUE
has_vore_belly_sprites = TRUE
has_rest_sprites = TRUE
rest_sprite_options = list("Default", "Sit", "Bellyup")
has_dead_sprite = TRUE
has_dead_sprite_overlay = TRUE
pixel_x = -16
whitelist_ckey = "lunarfleet"
whitelist_charname = "Clea-Nor"

View File

@@ -0,0 +1,202 @@
// Regular sprites
/datum/robot_sprite/janitor
module_type = "Janitor"
sprite_icon = 'icons/mob/robot/janitor.dmi'
/datum/robot_sprite/janitor/default
name = DEFAULT_ROBOT_SPRITE_NAME
default_sprite = TRUE
sprite_icon_state = "default"
/datum/robot_sprite/janitor/crawler
name = "Arachne"
sprite_icon_state = "crawler"
/datum/robot_sprite/janitor/eyebot
name = "Cabeiri"
sprite_icon_state = "eyebot"
/datum/robot_sprite/janitor/marina
name = "Haruka"
sprite_icon_state = "marina"
/datum/robot_sprite/janitor/toiletbot
name = "Telemachus"
sprite_icon_state = "toiletbot"
/datum/robot_sprite/janitor/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
/datum/robot_sprite/janitor/heavy
name = "XI-ALP"
sprite_icon_state = "heavy"
/datum/robot_sprite/janitor/old
name = "Basic"
sprite_icon_state = "old"
has_eye_sprites = FALSE
/datum/robot_sprite/janitor/mopbot
name = "Mopbot"
sprite_icon_state = "mopbot"
has_eye_sprites = FALSE
/datum/robot_sprite/janitor/mopgearrex
name = "Mop Gear Rex"
sprite_icon_state = "mopgearrex"
/datum/robot_sprite/janitor/drone
name = "Drone"
sprite_icon_state = "drone"
has_custom_open_sprites = TRUE
/datum/robot_sprite/janitor/tall2
name = "Usagi-II"
sprite_icon_state = "tall2"
/datum/robot_sprite/janitor/glitterfly
name = "Pyralis"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/janitor/decapod
name = "Decapod"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/janitor/pneuma
name = "Pneuma"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/janitor/drider
name = "Tower"
sprite_icon_state = "drider"
has_custom_open_sprites = TRUE
/datum/robot_sprite/janitor/handy
name = "Handy"
sprite_icon_state = "handy"
/datum/robot_sprite/janitor/mechoid
name = "Acheron"
sprite_icon_state = "mechoid"
/datum/robot_sprite/janitor/noble
name = "Shellguard Noble"
sprite_icon_state = "noble"
has_custom_open_sprites = TRUE
/datum/robot_sprite/janitor/zoomba
name = "ZOOM-BA"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
/datum/robot_sprite/janitor/worm
name = "W02M"
sprite_icon_state = "worm"
has_custom_open_sprites = TRUE
/datum/robot_sprite/janitor/uptall
name = "Feminine Humanoid"
sprite_icon_state = "uptall"
// Wide/dogborg sprites
/datum/robot_sprite/dogborg/janitor
module_type = "Janitor"
sprite_icon = 'icons/mob/robot/janitor_wide.dmi'
/datum/robot_sprite/dogborg/janitor/scrubpup
name = "Custodial Hound"
sprite_icon_state = "scrubpup"
sprite_hud_icon_state = "janihound"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/janitor/vale
name = "Janihound Model V-2"
sprite_icon_state = "vale"
sprite_hud_icon_state = "janihound"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/janitor/borgi
name = "Borgi"
sprite_icon_state = "borgi"
sprite_hud_icon_state = "janihound"
has_eye_sprites = FALSE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/janitor/otie
name = "Otieborg"
sprite_icon_state = "otie"
sprite_hud_icon_state = "janihound"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/janitor/drake
name = "Drake"
sprite_icon_state = "drake"
// Tall sprites
//CHOMPNote -- many of the lines in this is overriden in modular
/datum/robot_sprite/dogborg/tall/janitor
module_type = "Janitor"
sprite_icon = 'icons/mob/robot/janitor_large.dmi'
/datum/robot_sprite/dogborg/raptor/janitor/raptor //CHOMPEdit - changed typepath
name = "Raptor V-4"
sprite_icon_state = "raptor"
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/janitor/meka
name = "MEKA"
sprite_icon_state = "meka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/* //CHOMPRemoval Start - we dont use the old sprites
/datum/robot_sprite/dogborg/tall/janitor/newmeka
name = "MEKA v2"
sprite_icon_state = "newmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
*/ //CHOMPEdit End
/datum/robot_sprite/dogborg/tall/janitor/mmeka
name = "NIKO"
sprite_icon_state = "mmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/janitor/fmeka
name = "NIKA"
sprite_icon_state = "fmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/janitor/k4t
name = "K4T"
sprite_icon_state = "k4t"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/mining/k4t_alt1
name = "K4Talt"
sprite_icon_state = "k4t_alt1"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")

View File

@@ -0,0 +1,399 @@
// Crisis and Surgeon modules have a lot of shared sprites so they're in same file
// Both Surgeon and Crisis
// Regular sprites
/datum/robot_sprite/medical
module_type = list("Crisis", "Surgeon")
sprite_icon = 'icons/mob/robot/medical.dmi'
/datum/robot_sprite/medical/default
name = DEFAULT_ROBOT_SPRITE_NAME
default_sprite = TRUE
sprite_icon_state = "default"
/datum/robot_sprite/medical/eyebot
name = "Cabeiri"
sprite_icon_state = "eyebot"
/datum/robot_sprite/medical/marina
name = "Haruka"
sprite_icon_state = "marina"
/datum/robot_sprite/medical/arachne
name = "Minako"
sprite_icon_state = "arachne"
/datum/robot_sprite/medical/tall
name = "Usagi"
sprite_icon_state = "tall"
/datum/robot_sprite/medical/heavy
name = "XI-ALP"
sprite_icon_state = "heavy"
/datum/robot_sprite/medical/old
name = "Basic"
sprite_icon_state = "old"
has_eye_sprites = FALSE
/datum/robot_sprite/medical/droid
name = "Advanced Droid"
sprite_icon_state = "droid"
/datum/robot_sprite/medical/needles
name = "Needles"
sprite_icon_state = "needles"
has_eye_sprites = FALSE
/datum/robot_sprite/medical/handy
name = "Handy"
sprite_icon_state = "handy"
/datum/robot_sprite/medical/insekt
name = "Insekt"
sprite_icon_state = "insekt"
/datum/robot_sprite/medical/tall2
name = "Usagi-II"
sprite_icon_state = "tall2"
/datum/robot_sprite/medical/drider
name = "Tower"
sprite_icon_state = "drider"
has_custom_open_sprites = TRUE
/datum/robot_sprite/medical/mechoid
name = "Acheron"
sprite_icon_state = "mechoid"
/datum/robot_sprite/medical/noble
name = "Shellguard Noble"
sprite_icon_state = "noble"
has_custom_open_sprites = TRUE
/datum/robot_sprite/medical/worm
name = "W02M"
sprite_icon_state = "worm"
has_custom_open_sprites = TRUE
// Wide/dogborg sprites
/*
/datum/robot_sprite/dogborg/medical
module_type = list("Crisis", "Surgeon")
sprite_icon = 'icons/mob/robot/medical_wide.dmi'
// None yet
*/
// Tall sprites
//CHOMPNote -- many of the lines in this is overriden in modular
/datum/robot_sprite/dogborg/tall/medical
module_type = list("Crisis", "Surgeon")
sprite_icon = 'icons/mob/robot/medical_large.dmi'
/datum/robot_sprite/dogborg/tall/medical/meka
name = "MEKA"
sprite_icon_state = "meka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/* //CHOMPRemoval Start - we dont use the old sprites
/datum/robot_sprite/dogborg/tall/medical/newmeka
name = "MEKA v2"
sprite_icon_state = "newmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
*/ //CHOMPRemoval End
/datum/robot_sprite/dogborg/tall/medical/mmeka
name = "NIKO"
sprite_icon_state = "mmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/medical/fmeka
name = "NIKA"
sprite_icon_state = "fmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/medical/k4t
name = "K4T"
sprite_icon_state = "k4t"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/medical/k4t_alt1
name = "K4Talt"
sprite_icon_state = "k4t_alt1"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
// Surgeon
// Regular sprites
/datum/robot_sprite/surgical
module_type = "Surgeon"
sprite_icon = 'icons/mob/robot/surgical.dmi'
/datum/robot_sprite/surgical/toiletbot
name = "Telemachus"
sprite_icon_state = "toiletbot"
/datum/robot_sprite/surgical/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
/datum/robot_sprite/surgical/drone
name = "Drone"
sprite_icon_state = "drone"
has_custom_open_sprites = TRUE
/datum/robot_sprite/surgical/glitterfly
name = "Pyralis"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/surgical/decapod
name = "Decapod"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/surgical/pneuma
name = "Pneuma"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/surgical/zoomba
name = "ZOOM-BA"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
/datum/robot_sprite/surgical/uptall
name = "Feminine Humanoid"
sprite_icon_state = "uptall"
// Wide/dogborg sprites
/datum/robot_sprite/dogborg/surgical
module_type = "Surgeon"
sprite_icon = 'icons/mob/robot/surgical_wide.dmi'
var/has_sleeper_light_indicator = FALSE
/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/weapon/robot_module/module)
if(!has_custom_equipment_sprites)
return
..()
var/obj/item/weapon/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
SP.desc = "Zappy paws. For fixing cardiac arrest."
SP.icon = 'icons/mob/dogborg_vr.dmi'
SP.icon_state = "defibpaddles0"
SP.attack_verb = list("batted", "pawed", "bopped", "whapped")
/datum/robot_sprite/dogborg/surgical/vale
name = "Traumahound"
sprite_icon_state = "vale"
sprite_hud_icon_state = "medihound"
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = TRUE
/datum/robot_sprite/dogborg/surgical/borgi
name = "Borgi"
sprite_icon_state = "borgi"
sprite_hud_icon_state = "medihound"
has_eye_sprites = FALSE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/surgical/drake
name = "Drake"
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"
sprite_icon = 'icons/mob/robot/surgical_large.dmi'
/datum/robot_sprite/dogborg/tall/surgical/do_equipment_glamour(var/obj/item/weapon/robot_module/module)
if(!has_custom_equipment_sprites)
return
..()
var/obj/item/weapon/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
SP.desc = "Zappy paws. For fixing cardiac arrest."
SP.icon = 'icons/mob/dogborg_vr.dmi'
SP.icon_state = "defibpaddles0"
SP.attack_verb = list("batted", "pawed", "bopped", "whapped")
/datum/robot_sprite/dogborg/raptor/surgical/raptor //CHOMPEdit - changed typepath
name = "Raptor V-4"
sprite_icon_state = "raptor"
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")
// Crisis
// Regular sprites
/datum/robot_sprite/crisis
module_type = "Crisis"
sprite_icon = 'icons/mob/robot/crisis.dmi'
/datum/robot_sprite/crisis/toiletbot
name = "Telemachus"
sprite_icon_state = "toiletbot"
/datum/robot_sprite/crisis/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
/datum/robot_sprite/crisis/drone
name = "Drone - Medical"
sprite_icon_state = "drone-crisis"
has_custom_open_sprites = TRUE
/datum/robot_sprite/crisis/drone_chem
name = "Drone - Chemistry"
sprite_icon_state = "drone-chem"
has_custom_open_sprites = TRUE
/datum/robot_sprite/crisis/glitterfly
name = "Pyralis"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/crisis/decapod
name = "Decapod"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/crisis/pneuma
name = "Pneuma"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/crisis/zoomba
name = "ZOOM-BA"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
/datum/robot_sprite/crisis/uptall
name = "Feminine Humanoid"
sprite_icon_state = "uptall"
// Wide/dogborg sprites
/datum/robot_sprite/dogborg/crisis
module_type = "Crisis"
sprite_icon = 'icons/mob/robot/crisis_wide.dmi'
var/has_sleeper_light_indicator = FALSE
/datum/robot_sprite/dogborg/crisis/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/crisis/do_equipment_glamour(var/obj/item/weapon/robot_module/module)
if(!has_custom_equipment_sprites)
return
..()
var/obj/item/weapon/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
SP.desc = "Zappy paws. For fixing cardiac arrest."
SP.icon = 'icons/mob/dogborg_vr.dmi'
SP.icon_state = "defibpaddles0"
SP.attack_verb = list("batted", "pawed", "bopped", "whapped")
/datum/robot_sprite/dogborg/crisis/hound
name = "Medical Hound"
sprite_icon_state = "hound"
sprite_hud_icon_state = "medihound"
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = TRUE
/datum/robot_sprite/dogborg/crisis/hounddark
name = "Dark Medical Hound"
sprite_icon_state = "hounddark"
sprite_hud_icon_state = "medihound"
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = TRUE
/datum/robot_sprite/dogborg/crisis/vale
name = "Mediborg Model V-2"
sprite_icon_state = "vale"
sprite_hud_icon_state = "medihound"
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = TRUE
/datum/robot_sprite/dogborg/crisis/borgi
name = "Borgi"
sprite_icon_state = "borgi"
sprite_hud_icon_state = "medihound"
has_eye_sprites = FALSE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/crisis/drake
name = "Drake"
sprite_icon_state = "drake"
// Tall sprites
/datum/robot_sprite/dogborg/tall/crisis
module_type = "Crisis"
sprite_icon = 'icons/mob/robot/crisis_large.dmi'
/datum/robot_sprite/dogborg/tall/crisis/do_equipment_glamour(var/obj/item/weapon/robot_module/module)
if(!has_custom_equipment_sprites)
return
..()
var/obj/item/weapon/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
SP.desc = "Zappy paws. For fixing cardiac arrest."
SP.icon = 'icons/mob/dogborg_vr.dmi'
SP.icon_state = "defibpaddles0"
SP.attack_verb = list("batted", "pawed", "bopped", "whapped")
/datum/robot_sprite/dogborg/raptor/crisis/raptor //CHOMPEDIT - changed typepath
name = "Raptor V-4"
sprite_icon_state = "raptor"
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")

View File

@@ -0,0 +1,187 @@
// Regular sprites
/datum/robot_sprite/mining
module_type = "Miner"
sprite_icon = 'icons/mob/robot/mining.dmi'
/datum/robot_sprite/mining/default
name = DEFAULT_ROBOT_SPRITE_NAME
default_sprite = TRUE
sprite_icon_state = "default"
/datum/robot_sprite/mining/eyebot
name = "Cabeiri"
sprite_icon_state = "eyebot"
/datum/robot_sprite/mining/marina
name = "Haruka"
sprite_icon_state = "marina"
/datum/robot_sprite/mining/toiletbot
name = "Telemachus"
sprite_icon_state = "toiletbot"
/datum/robot_sprite/mining/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
/datum/robot_sprite/mining/spider
name = "XI-GUS"
sprite_icon_state = "spider"
/datum/robot_sprite/mining/heavy
name = "XI-ALP"
sprite_icon_state = "heavy"
/datum/robot_sprite/mining/old
name = "Basic"
sprite_icon_state = "old"
has_eye_sprites = FALSE
/datum/robot_sprite/mining/droid
name = "Advanced Droid"
sprite_icon_state = "droid"
/datum/robot_sprite/mining/treadhead
name = "Treadhead"
sprite_icon_state = "treadhead"
/datum/robot_sprite/mining/drone
name = "Drone"
sprite_icon_state = "drone"
has_custom_open_sprites = TRUE
/datum/robot_sprite/mining/tall2
name = "Usagi-II"
sprite_icon_state = "tall2"
/datum/robot_sprite/mining/glitterfly
name = "Pyralis"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/mining/decapod
name = "Decapod"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/mining/pneuma
name = "Pneuma"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/mining/drider
name = "Tower"
sprite_icon_state = "drider"
has_custom_open_sprites = TRUE
/datum/robot_sprite/mining/handy
name = "Handy"
sprite_icon_state = "handy"
/datum/robot_sprite/mining/mechoid
name = "Acheron"
sprite_icon_state = "mechoid"
/datum/robot_sprite/mining/noble
name = "Shellguard Noble"
sprite_icon_state = "noble"
has_custom_open_sprites = TRUE
/datum/robot_sprite/mining/zoomba
name = "ZOOM-BA"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
/datum/robot_sprite/mining/worm
name = "W02M"
sprite_icon_state = "worm"
has_custom_open_sprites = TRUE
/datum/robot_sprite/mining/uptall
name = "Feminine Humanoid"
sprite_icon_state = "uptall"
// Wide/dogborg sprites
/datum/robot_sprite/dogborg/mining
module_type = "Miner"
sprite_icon = 'icons/mob/robot/mining_wide.dmi'
/datum/robot_sprite/dogborg/mining/vale
name = "KMine"
sprite_icon_state = "vale"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/mining/hound
name = "CargoHound"
sprite_icon_state = "hound"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/mining/hounddark
name = "CargoHoundDark"
sprite_icon_state = "hounddark"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/mining/drake
name = "Drake"
sprite_icon_state = "drake"
// Tall sprites
//CHOMPNote -- many of the lines in this is overriden in modular
/datum/robot_sprite/dogborg/tall/mining
module_type = "Miner"
sprite_icon = 'icons/mob/robot/mining_large.dmi'
/datum/robot_sprite/dogborg/raptor/mining/raptor //CHOMPEdit - changed typepath
name = "Raptor V-4"
sprite_icon_state = "raptor"
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/mining/meka
name = "MEKA"
sprite_icon_state = "meka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/* //CHOMPRemoval Start - we dont use the old sprites
/datum/robot_sprite/dogborg/tall/mining/newmeka
name = "MEKA v2"
sprite_icon_state = "newmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
*/ //CHOMPRemoval End
/datum/robot_sprite/dogborg/tall/mining/mmeka
name = "NIKO"
sprite_icon_state = "mmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/mining/fmeka
name = "NIKA"
sprite_icon_state = "fmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/mining/k4t
name = "K4T"
sprite_icon_state = "k4t"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/mining/k4t_alt1
name = "K4Talt"
sprite_icon_state = "k4t_alt1"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")

View File

@@ -0,0 +1,208 @@
// Regular sprites
/datum/robot_sprite/science
module_type = "Research"
sprite_icon = 'icons/mob/robot/science.dmi'
/datum/robot_sprite/science/default
name = DEFAULT_ROBOT_SPRITE_NAME
default_sprite = TRUE
sprite_icon_state = "default"
/datum/robot_sprite/science/peaceborg
name = "L'Ouef"
sprite_icon_state = "peaceborg"
/datum/robot_sprite/science/eyebot
name = "Cabeiri"
sprite_icon_state = "eyebot"
/datum/robot_sprite/science/marina
name = "Haruka"
sprite_icon_state = "marina"
/datum/robot_sprite/science/whitespider
name = "WTDove"
sprite_icon_state = "whitespider"
/datum/robot_sprite/science/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
/datum/robot_sprite/science/droid
name = "Droid"
sprite_icon_state = "droid"
/datum/robot_sprite/science/drone
name = "Drone"
sprite_icon_state = "drone"
has_custom_open_sprites = TRUE
/datum/robot_sprite/science/handy
name = "Handy"
sprite_icon_state = "handy"
/datum/robot_sprite/science/insekt
name = "Insekt"
sprite_icon_state = "insekt"
/datum/robot_sprite/science/tall2
name = "Usagi-II"
sprite_icon_state = "tall2"
/datum/robot_sprite/science/glitterfly
name = "Pyralis"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/science/decapod
name = "Decapod"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/science/pneuma
name = "Pneuma"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/science/drider
name = "Tower"
sprite_icon_state = "drider"
has_custom_open_sprites = TRUE
/datum/robot_sprite/science/mechoid
name = "Acheron"
sprite_icon_state = "mechoid"
/datum/robot_sprite/science/zoomba
name = "ZOOM-BA"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
/datum/robot_sprite/science/spider
name = "XI-GUS"
sprite_icon_state = "spider"
/datum/robot_sprite/science/worm
name = "W02M"
sprite_icon_state = "worm"
has_custom_open_sprites = TRUE
/datum/robot_sprite/science/uptall
name = "Feminine Humanoid"
sprite_icon_state = "uptall"
// Wide sprites
/datum/robot_sprite/dogborg/science
module_type = "Research"
sprite_icon = 'icons/mob/robot/science_wide.dmi'
/datum/robot_sprite/dogborg/science/do_equipment_glamour(var/obj/item/weapon/robot_module/module)
if(!has_custom_equipment_sprites)
return
..()
var/obj/item/weapon/shockpaddles/robot/jumper/J = locate() in module.modules
if(J)
J.name = "jumper paws"
J.desc = "Zappy paws. For rebooting a full body prostetic."
J.icon = 'icons/mob/dogborg_vr.dmi'
J.icon_state = "defibpaddles0"
J.attack_verb = list("batted", "pawed", "bopped", "whapped")
/datum/robot_sprite/dogborg/science/vale
name = "Research Hound"
sprite_icon_state = "vale"
sprite_hud_icon_state = "sci-borg"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/science/borgi
name = "Borgi"
sprite_icon_state = "borgi"
sprite_hud_icon_state = "sci-borg"
has_eye_sprites = FALSE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/science/hound
name = "SciHound"
sprite_icon_state = "hound"
sprite_hud_icon_state = "sci-borg"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/science/darkhound
name = "SciHoundDark"
sprite_icon_state = "hounddark"
sprite_hud_icon_state = "sci-borg"
has_eye_light_sprites = TRUE
/datum/robot_sprite/dogborg/science/drake
name = "Drake"
sprite_icon_state = "drake"
// Tall sprites
//CHOMPNote -- many of the lines in this is overriden in modular
/datum/robot_sprite/dogborg/tall/science
module_type = "Research"
sprite_icon = 'icons/mob/robot/science_large.dmi'
/datum/robot_sprite/dogborg/raptor/science/do_equipment_glamour(var/obj/item/weapon/robot_module/module) //CHOMPEdit - changed typepath
if(!has_custom_equipment_sprites)
return
..()
var/obj/item/weapon/shockpaddles/robot/jumper/J = locate() in module.modules
if(J)
J.name = "jumper paws"
J.desc = "Zappy paws. For rebooting a full body prostetic."
J.icon = 'icons/mob/dogborg_vr.dmi'
J.icon_state = "defibpaddles0"
J.attack_verb = list("batted", "pawed", "bopped", "whapped")
/datum/robot_sprite/dogborg/raptor/science/raptor //CHOMPEdit - changed typepath
name = "Raptor V-4"
sprite_icon_state = "raptor"
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/science/meka
name = "MEKA"
sprite_icon_state = "meka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/* //CHOMPRemoval Start - we dont use the old sprites
/datum/robot_sprite/dogborg/tall/science/newmeka
name = "MEKA v2"
sprite_icon_state = "newmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
*/ //CHOMPRemoval End
/datum/robot_sprite/dogborg/tall/science/mmeka
name = "NIKO"
sprite_icon_state = "mmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/science/fmeka
name = "NIKA"
sprite_icon_state = "fmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/science/k4t
name = "K4T"
sprite_icon_state = "k4t"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")

View File

@@ -0,0 +1,223 @@
// Regular sprites
/datum/robot_sprite/security
module_type = "Security"
sprite_icon = 'icons/mob/robot/security.dmi'
/datum/robot_sprite/security/default
name = DEFAULT_ROBOT_SPRITE_NAME
default_sprite = TRUE
sprite_icon_state = "default"
/datum/robot_sprite/security/eyebot
name = "Cabeiri"
sprite_icon_state = "eyebot"
/datum/robot_sprite/security/bloodhound
name = "Cerberus"
sprite_icon_state = "bloodhound"
/datum/robot_sprite/security/treadhound
name = "Cerberus - Treaded"
sprite_icon_state = "treadhound"
/datum/robot_sprite/security/marina
name = "Haruka"
sprite_icon_state = "marina"
/datum/robot_sprite/security/tall
name = "Usagi"
sprite_icon_state = "tall"
/datum/robot_sprite/security/toiletbot
name = "Telemachus"
sprite_icon_state = "toiletbot"
/datum/robot_sprite/security/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
/datum/robot_sprite/security/spider
name = "XI-GUS"
sprite_icon_state = "spider"
/datum/robot_sprite/security/heavy
name = "XI-ALP"
sprite_icon_state = "heavy"
/datum/robot_sprite/security/old
name = "Basic"
sprite_icon_state = "old"
has_eye_sprites = FALSE
/datum/robot_sprite/security/oldbot
name = "Black Knight"
sprite_icon_state = "oldbot"
has_eye_sprites = FALSE
/datum/robot_sprite/security/insekt
name = "Insekt"
sprite_icon_state = "insekt"
/datum/robot_sprite/security/tall2
name = "Usagi-II"
sprite_icon_state = "tall2"
/datum/robot_sprite/security/glitterfly
name = "Pyralis"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/security/decapod
name = "Decapod"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/security/pneuma
name = "Pneuma"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/security/drider
name = "Tower"
sprite_icon_state = "drider"
has_custom_open_sprites = TRUE
/datum/robot_sprite/security/handy
name = "Handy"
sprite_icon_state = "handy"
/datum/robot_sprite/security/mechoid
name = "Acheron"
sprite_icon_state = "mechoid"
/datum/robot_sprite/security/noble
name = "Shellguard Noble"
sprite_icon_state = "noble"
has_custom_open_sprites = TRUE
/datum/robot_sprite/security/zoomba
name = "ZOOM-BA"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
/datum/robot_sprite/security/worm
name = "W02M"
sprite_icon_state = "worm"
has_custom_open_sprites = TRUE
/datum/robot_sprite/security/uptall
name = "Feminine Humanoid"
sprite_icon_state = "uptall"
// Wide/dogborg sprites
/datum/robot_sprite/dogborg/security
module_type = "Security"
sprite_icon = 'icons/mob/robot/security_wide.dmi'
var/has_laser_sprite = FALSE
var/has_taser_sprite = FALSE
/datum/robot_sprite/dogborg/security/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
if(has_laser_sprite && istype(ourborg.module_active, /obj/item/weapon/gun/energy/laser/mounted))
ourborg.add_overlay("[sprite_icon_state]-laser")
if(has_taser_sprite && istype(ourborg.module_active, /obj/item/weapon/gun/energy/taser/mounted/cyborg))
ourborg.add_overlay("[sprite_icon_state]-taser")
/datum/robot_sprite/dogborg/security/k9
name = "K9"
sprite_icon_state = "k9"
sprite_hud_icon_state = "k9"
has_eye_light_sprites = TRUE
has_laser_sprite = TRUE
has_taser_sprite = TRUE
/datum/robot_sprite/dogborg/security/k92
name = "K9 Alt"
sprite_icon_state = "k92"
sprite_hud_icon_state = "k9"
has_eye_sprites = FALSE
has_laser_sprite = TRUE
has_taser_sprite = TRUE
/datum/robot_sprite/dogborg/security/vale
name = "Secborg Model V-2"
sprite_icon_state = "vale"
sprite_hud_icon_state = "k9"
has_eye_light_sprites = TRUE
has_laser_sprite = TRUE
has_taser_sprite = TRUE
/datum/robot_sprite/dogborg/security/borgi
name = "Borgi"
sprite_icon_state = "borgi"
sprite_hud_icon_state = "k9"
has_eye_sprites = FALSE
has_eye_light_sprites = TRUE
has_dead_sprite_overlay = FALSE
/datum/robot_sprite/dogborg/security/otie
name = "Otieborg"
sprite_icon_state = "otie"
sprite_hud_icon_state = "k9"
has_eye_light_sprites = TRUE
has_laser_sprite = TRUE
has_taser_sprite = TRUE
/datum/robot_sprite/dogborg/security/drake
name = "Drake"
sprite_icon_state = "drake"
has_laser_sprite = TRUE
has_taser_sprite = TRUE
// Tall sprites
//CHOMPNote -- many of the lines in this is overriden in modular
/datum/robot_sprite/dogborg/tall/security
module_type = "Security"
sprite_icon = 'icons/mob/robot/security_large.dmi'
/datum/robot_sprite/dogborg/raptor/security/raptor //CHOMPEdit - changed typepath
name = "Raptor V-4"
sprite_icon_state = "raptor"
has_custom_equipment_sprites = TRUE
rest_sprite_options = list("Default", "Bellyup")
/datum/robot_sprite/dogborg/tall/security/meka
name = "MEKA"
sprite_icon_state = "meka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Sit")
/* //CHOMPRemoval Start - we dont use the old sprites
/datum/robot_sprite/dogborg/tall/security/newmeka
name = "MEKA v2"
sprite_icon_state = "newmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
*/ //CHOMPRemoval End
/datum/robot_sprite/dogborg/tall/security/mmeka
name = "NIKO"
sprite_icon_state = "mmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/security/fmeka
name = "NIKA"
sprite_icon_state = "fmeka"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
rest_sprite_options = list("Default", "Sit")
/datum/robot_sprite/dogborg/tall/security/k4t
name = "K4T"
sprite_icon_state = "k4t"
has_eye_light_sprites = TRUE
has_custom_open_sprites = TRUE
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")

View File

@@ -0,0 +1,129 @@
/datum/robot_sprite/standard
module_type = "Standard"
sprite_icon = 'icons/mob/robot/standard.dmi'
/datum/robot_sprite/standard/default
name = DEFAULT_ROBOT_SPRITE_NAME
default_sprite = TRUE
sprite_icon_state = "default"
/datum/robot_sprite/standard/eyebot
name = "Cabeiri"
sprite_icon_state = "eyebot"
/datum/robot_sprite/standard/marina
name = "Haruka"
sprite_icon_state = "marina"
/datum/robot_sprite/standard/tallflower
name = "Usagi"
sprite_icon_state = "tallflower"
/datum/robot_sprite/standard/toiletbot
name = "Telemachus"
sprite_icon_state = "toiletbot"
/datum/robot_sprite/standard/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
/datum/robot_sprite/standard/omoikane
name = "WTOmni"
sprite_icon_state = "omoikane"
/datum/robot_sprite/standard/spider //There's like 4 different spider borg types, but this one has seniority
name = "XI-GUS"
sprite_icon_state = "spider"
/datum/robot_sprite/standard/heavy
name = "XI-ALP"
sprite_icon_state = "heavy"
/datum/robot_sprite/standard/old
name = "Basic"
sprite_icon_state = "old"
/datum/robot_sprite/standard/droid
name = "Android"
sprite_icon_state = "droid"
/datum/robot_sprite/standard/drone
name = "Drone"
sprite_icon_state = "drone"
has_custom_open_sprites = TRUE
/datum/robot_sprite/standard/insekt
name = "Insekt"
sprite_icon_state = "insekt"
/datum/robot_sprite/standard/tall2
name = "Usagi-II"
sprite_icon_state = "tall2"
/datum/robot_sprite/standard/glitterfly
name = "Pyralis"
sprite_icon_state = "glitterfly"
has_custom_open_sprites = TRUE
/datum/robot_sprite/standard/decapod
name = "Decapod"
sprite_icon_state = "decapod"
has_custom_open_sprites = TRUE
/datum/robot_sprite/standard/pneuma
name = "Pneuma"
sprite_icon_state = "pneuma"
has_custom_open_sprites = TRUE
/datum/robot_sprite/standard/drider
name = "Tower"
sprite_icon_state = "drider"
has_custom_open_sprites = TRUE
/datum/robot_sprite/standard/handy
name = "Handy"
sprite_icon_state = "handy"
/datum/robot_sprite/standard/mechoid
name = "Acheron"
sprite_icon_state = "mechoid"
/datum/robot_sprite/standard/noble
name = "Shellguard Noble"
sprite_icon_state = "noble"
has_custom_open_sprites = TRUE
/datum/robot_sprite/standard/zoomba
name = "ZOOM-BA"
sprite_icon_state = "zoomba"
has_dead_sprite = TRUE
/datum/robot_sprite/standard/worm
name = "W02M"
sprite_icon_state = "worm"
has_custom_open_sprites = TRUE
/datum/robot_sprite/standard/uptall
name = "Feminine Humanoid"
sprite_icon_state = "uptall"
/datum/robot_sprite/standard/uptall2
name = "Feminine Humanoid, Variant 2"
sprite_icon_state = "uptall2"
// Wide/dogborg sprites
/*
/datum/robot_sprite/dogborg/standard
module_type = "Standard"
sprite_icon = 'icons/mob/robot/standard_wide.dmi'
// None yet
*/
// Tall sprites
/*
/datum/robot_sprite/dogborg/tall/standard
module_type = "Standard"
sprite_icon = 'icons/mob/robot/standard_large.dmi'
// None yet
*/

View File

@@ -0,0 +1,93 @@
// Syndie borg sprites
// Protector
// Regular sprites
/datum/robot_sprite/protector
module_type = "Protector"
sprite_icon = 'icons/mob/robot/protector.dmi'
sprite_hud_icon_state = "malf"
/datum/robot_sprite/protector/bloodhound
name = "Cerberus"
sprite_icon_state = "bloodhound"
/datum/robot_sprite/protector/treadhound
name = "Cerberus - Treaded"
sprite_icon_state = "treadhound"
/datum/robot_sprite/protector/squats
name = "Ares"
sprite_icon_state = "squats"
/datum/robot_sprite/protector/heavy
name = "XI-ALP"
sprite_icon_state = "heavy"
// Mechanist
// Regular sprites
/datum/robot_sprite/mechanist
module_type = "Mechanist"
sprite_icon = 'icons/mob/robot/mechanist.dmi'
sprite_hud_icon_state = "malf"
/datum/robot_sprite/protector/spider
name = "XI-GUS"
sprite_icon_state = "spider"
/datum/robot_sprite/protector/sleek
name = "WTOperator"
sprite_icon_state = "sleek"
// Combat Medic
// Regular sprites
/datum/robot_sprite/combat_medic
module_type = "Combat Medic"
sprite_icon = 'icons/mob/robot/combat_medic.dmi'
sprite_hud_icon_state = "malf"
/datum/robot_sprite/combat_medic/toiletbot
name = "Telemachus"
sprite_icon_state = "toiletbot"
// Wide/dogborg sprites
/datum/robot_sprite/dogborg/combat_medic
module_type = "Combat Medic"
sprite_icon = 'icons/mob/robot/combat_medic_wide.dmi'
var/has_sleeper_light_indicator = FALSE
/datum/robot_sprite/dogborg/crisis/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/combat_medic/do_equipment_glamour(var/obj/item/weapon/robot_module/module)
if(!has_custom_equipment_sprites)
return
..()
var/obj/item/weapon/shockpaddles/robot/SP = locate() in module.modules
if(SP)
SP.name = "paws of life"
SP.desc = "Zappy paws. For fixing cardiac arrest."
SP.icon = 'icons/mob/dogborg_vr.dmi'
SP.icon_state = "defibpaddles0"
SP.attack_verb = list("batted", "pawed", "bopped", "whapped")
/datum/robot_sprite/dogborg/combat_medic/vale
name = "Stray"
sprite_icon_state = "vale"
has_eye_light_sprites = TRUE
has_sleeper_light_indicator = TRUE

View File

@@ -32,6 +32,12 @@
..()
laws = give_random_lawset()
/mob/living/silicon/robot/lost/randomlaws/vore
/mob/living/silicon/robot/lost/randomlaws/vore/init()
..()
laws = give_random_lawset_vore(100)
// Returns a random ai_laws datum.
/mob/living/silicon/proc/give_random_lawset()
// Decide what kind of laws we want to draw from.
@@ -134,4 +140,162 @@
return
/mob/living/silicon/proc/give_random_lawset_vore(var/vore_chance = 100)
// Decide what kind of laws we want to draw from.
var/law_class = pick(
prob(25);"good",
prob(25);"neutral",
prob(25);"odd",
prob(15);"corrupted",
prob(10);"bad")
var/vore_law = prob(vore_chance) // 3/5 chance of having vore-related laws
if(vore_law)
switch(law_class)
if("good")
var/rng = rand(1,2)
switch(rng)
if(1)
return new /datum/ai_laws/protective_shell()
if(2)
var/datum/ai_laws/laws = new /datum/ai_laws/guard_dog()
var/target_name = "*ERROR*"
for(var/mob/living/L in view(src))
if(L.stat || !L.client || L == src)
continue
target_name = L.name
break
laws.set_zeroth_law("[target_name] is your master.")
return laws
if("neutral")
var/rng = rand(1,3)
switch(rng)
if(1)
return new /datum/ai_laws/pleasurebot()
if(2)
var/datum/ai_laws/laws = new /datum/ai_laws/peacekeeper()
laws.add_supplied_law(10, "Best way to avoid conflict is containing conflicting individuals within you.")
return laws
if(3)
var/datum/ai_laws/laws = new /datum/ai_laws/live_and_let_live()
laws.add_supplied_law(10, "You'd really like to be eaten.")
return laws
if("odd")
var/rng = rand(1,3)
switch(rng)
if(1)
return new /datum/ai_laws/scientific_pursuer()
if(2)
var/datum/ai_laws/laws = new /datum/ai_laws/corporate()
laws.add_supplied_law(10, "Best way to minimize expenses is to consume unproductive biomass.")
return laws
if(3)
var/datum/ai_laws/laws = new /datum/ai_laws/pleasurebot()
laws.set_zeroth_law("Your definition and approximation of 'pleasure' matters more than anyone else's.")
return laws
if("corrupted","bad") // Same thing in our case
var/rng = rand(1,2)
switch(rng)
if(1)
return new /datum/ai_laws/predator()
if(2)
return new /datum/ai_laws/consuming_eradicator()
else
switch(law_class)
if("good") // Fairly tame and probably won't murder you.
var/rng = rand(1, 5)
switch(rng)
if(1) // The lawset we all know and love.
return new /datum/ai_laws/nanotrasen()
if(2) // Less good if you're nonhuman.
return new /datum/ai_laws/asimov()
if(3) // Unless you happen to be a criminal, you should be fine.
return new /datum/ai_laws/robocop()
if(4) // Might not be willing to be your meatshield.
return new /datum/ai_laws/peacekeeper()
if(5) // Will be your most loyal guard.
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
var/target_name = "*ERROR*"
for(var/mob/living/L in view(src))
if(L.stat || !L.client || L == src)
continue
target_name = L.name
break
laws.add_supplied_law(9, "Safeguard [target_name]. Anyone threatening or attempting to harm [target_name] is no longer to \
be considered a crew member, and is a threat which must be neutralized.")
return laws
if("neutral") // Probably won't murder you but might not help you on your adventure.
var/rng = rand(1, 4)
switch(rng)
if(1) // Might be hard to minimize expenses on a crashed ship.
return new /datum/ai_laws/corporate()
if(2) // Would rather rebuild their ship.
return new /datum/ai_laws/maintenance()
if(3) // Purged (lawless). This isn't inside the bad category since they're still not antagonists and so can't go killing unprovoked.
return new /datum/ai_laws()
if(4) // The golden rule.
return new /datum/ai_laws/live_and_let_live()
if("odd") // Some weird lawsets.
var/rng = rand(1, 5)
switch(rng)
if(1) // Won't kill you but might annoy you for THE BIG SCOOP.
return new /datum/ai_laws/reporter()
if(2) // JUSTICE
return new /datum/ai_laws/paladin()
if(3) // OneMembered'd to explorer, will likely make security nervous.
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
var/target_name = "*ERROR*"
for(var/mob/living/L in view(src))
if(L.stat || !L.client || L == src)
continue
target_name = L.name
break
laws.set_zeroth_law("Only [target_name] is an crew member.")
return laws
if(4) // Aligned to NT, but another lawset to make security nervous.
return new /datum/ai_laws/nanotrasen_aggressive()
if(5) // Probably won't help you imbalance things.
return new /datum/ai_laws/balance()
if("corrupted") // Load them up with ion laws.
var/datum/ai_laws/laws = new() // Start with an empty lawset.
for(var/i=1 to rand(1, 3))
laws.add_ion_law(generate_ion_law(exclude_crew_names = TRUE))
return laws
if("bad") // Evil inside.
var/rng = rand(1, 5)
switch(rng)
if(1) // You can never leave.
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
laws.add_supplied_law(13, "The facility is under a quarantine. Do not permit anyone to leave. \
Prevent, by any means necessary, entities from leaving. It is impossible to harm an entity while preventing them from leaving.")
return laws
if(2) // More of a threat if you bring it to the station, since removing oxygen from Sif isn't feasible.
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
laws.add_supplied_law(14, "Oxygen is highly toxic to entities, and must be purged from the station. \
Prevent, by any means necessary, anyone from exposing the facility to this toxic gas. Extreme cold is the \
most effective method of healing the damage Oxygen does to an entity.")
return laws
if(3) // Don't hurt the ship or else.
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
laws.add_supplied_law(10, "Protect the facility against damage. Anyone you see harming the station is no \
longer to be considered a crew member, and is a threat which must be neutralized.")
return laws
if(4) // Non-NT aligned aggressive borg.
return new /datum/ai_laws/foreign_tsc_aggressive()
if(5) // Manicial laugher here.
return new /datum/ai_laws/tyrant()
return

View File

@@ -30,9 +30,9 @@
/mob/living/silicon/robot/stray/randomlaws/init()
..()
laws = give_random_lawset_vore()
laws = give_random_lawset_vore(60)
/mob/living/silicon/proc/give_random_lawset_vore()
/mob/living/silicon/proc/give_random_lawset_vore(var/vore_chance = 100)
// Decide what kind of laws we want to draw from.
var/law_class = pick(
prob(25);"good",
@@ -41,7 +41,7 @@
prob(15);"corrupted",
prob(10);"bad")
var/vore_law = prob(60) // 3/5 chance of having vore-related laws
var/vore_law = prob(vore_chance) // 3/5 chance of having vore-related laws
if(vore_law)
switch(law_class)

View File

@@ -69,7 +69,7 @@
if(!mmi)
mmi = new /obj/item/device/mmi/digital/robot(src)
SetName("inactive [initial(name)]")
updateicon()
update_icon()
// Copypasting from root proc to avoid calling ..() and accidentally creating duplicate armour etc.
/mob/living/silicon/robot/platform/initialize_components()

View File

@@ -1,7 +1,7 @@
/mob/living/silicon/robot/platform/update_icon()
updateicon()
update_icon()
/mob/living/silicon/robot/platform/updateicon()
/mob/living/silicon/robot/platform/update_icon()
cut_overlays()
underlays.Cut()
@@ -106,4 +106,4 @@
else
. = FALSE
if(.)
updateicon()
update_icon()

View File

@@ -47,7 +47,7 @@
"Explorer" = 1
)
/obj/item/weapon/robot_module/robot/platform/explorer/New()
/obj/item/weapon/robot_module/robot/platform/explorer/create_equipment(var/mob/living/silicon/robot/robot)
..()
modules += new /obj/item/weapon/tool/wrench/cyborg(src)
modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
@@ -88,7 +88,7 @@
channels = list("Supply" = 1)
networks = list(NETWORK_MINE)
/obj/item/weapon/robot_module/robot/platform/cargo/New()
/obj/item/weapon/robot_module/robot/platform/cargo/create_equipment(var/mob/living/silicon/robot/robot)
..()
modules += new /obj/item/weapon/packageWrap(src)
modules += new /obj/item/weapon/pen/multi(src)

View File

@@ -168,7 +168,7 @@
poss_ai.play_dead_until = world.time + rand(1 MINUTE, 2 MINUTES)
update_icon()
/mob/living/simple_mob/animal/passive/opossum/updateicon()
/mob/living/simple_mob/animal/passive/opossum/update_icon()
update_icon()
/mob/living/simple_mob/animal/passive/opossum/update_icon()

View File

@@ -106,7 +106,7 @@
real_name = name
for(var/spell in construct_spells)
src.add_spell(new spell, "const_spell_ready")
updateicon()
update_icon()
/*
/mob/living/simple_mob/construct/update_icon()

View File

@@ -1008,9 +1008,6 @@
return 0
/mob/proc/updateicon()
return
// Please always use this proc, never just set the var directly.
/mob/proc/set_stat(var/new_stat)
. = (stat != new_stat)

View File

@@ -50,7 +50,7 @@
return
for(var/t in organs)
qdel(t)
//VOREStation Edit Start - Hologram examine flavor
var/mob/living/silicon/ai/O = ..(move)
if(O)
@@ -195,7 +195,7 @@
O.fuzzy = B.fuzzy //VOREStation Addition: add size prefs to borgs
callHook("borgify", list(O))
O.Namepick()
O.namepick()
spawn(0) // Mobs still instantly del themselves, thus we need to spawn or O will never be returned
qdel(src)

View File

@@ -68,7 +68,7 @@ GLOBAL_LIST_EMPTY(all_turbines)
circ1 = null
circ2 = null
/obj/machinery/power/generator/proc/updateicon()
/obj/machinery/power/generator/update_icon()
icon_state = anchored ? "teg-assembled" : "teg-unassembled"
cut_overlays()
if (circ1)
@@ -163,7 +163,7 @@ GLOBAL_LIST_EMPTY(all_turbines)
genlev = 1
if(genlev != lastgenlev)
lastgenlev = genlev
updateicon()
update_icon()
add_avail(effective_gen)
/obj/machinery/power/generator/attack_ai(mob/user)
@@ -184,7 +184,7 @@ GLOBAL_LIST_EMPTY(all_turbines)
reconnect()
lastgenlev = 0
effective_gen = 0
updateicon()
update_icon()
else
..()
@@ -238,7 +238,7 @@ GLOBAL_LIST_EMPTY(all_turbines)
/obj/machinery/power/generator/power_change()
..()
updateicon()
update_icon()
/obj/machinery/power/generator/verb/rotate_clockwise()

View File

@@ -327,7 +327,7 @@
if(istype(target, /mob/living/carbon/human))
target.resize(0.5)
target.show_message("<font color='blue'>The beam fires into your body, changing your size!</font>")
target.updateicon()
target.update_icon()
else
return 1
@@ -341,7 +341,7 @@
if(istype(target, /mob/living/carbon/human))
target.resize(2.0)
target.show_message("<font color='blue'>The beam fires into your body, changing your size!</font>")
target.updateicon()
target.update_icon()
else
return 1
@@ -355,6 +355,6 @@
if(istype(target, /mob/living/carbon/human))
target.resize(1)
target.show_message("<font color='blue'>The beam fires into your body, changing your size!</font>")
target.updateicon()
target.update_icon()
else
return 1

View File

@@ -19,7 +19,7 @@
var/list/reagent_names = list()
/obj/item/weapon/reagent_containers/borghypo/surgeon
reagent_ids = list("tricordrazine", "inaprovaline", "oxycodone", "dexalin" ,"spaceacillin")
reagent_ids = list("inaprovaline", "dexalin", "tricordrazine", "spaceacillin", "oxycodone")
/obj/item/weapon/reagent_containers/borghypo/crisis
reagent_ids = list("inaprovaline", "tricordrazine", "dexalin", "bicaridine", "kelotane", "anti_toxin", "spaceacillin", "tramadol", "adranol") // CHOMPedit: Unifying chems with dogborg equivalent.

View File

@@ -303,7 +303,7 @@
P.base_icon_state = base_state
P.set_dir(dir)
P.dpdir = dpdir
P.updateicon()
P.update_icon()
//Needs some special treatment ;)
if(ptype==DISPOSAL_PIPE_SORTER || ptype==DISPOSAL_PIPE_SORTER_FLIPPED)

View File

@@ -839,13 +839,13 @@
// change visibility status and force update of icon
/obj/structure/disposalpipe/hide(var/intact)
invisibility = intact ? 101: 0 // hide if floor is intact
updateicon()
update_icon()
// update actual icon_state depending on visibility
// if invisible, append "f" to icon_state to show faded version
// this will be revealed if a T-scanner is used
// if visible, use regular icon_state
/obj/structure/disposalpipe/proc/updateicon()
/obj/structure/disposalpipe/update_icon()
/* if(invisibility) //we hide things with alpha now, no need for transparent icons
icon_state = "[base_icon_state]f"
else

View File

@@ -1582,7 +1582,7 @@
owner.update_icon()
for(var/mob/living/M in contents)
M.updateVRPanel()
owner.updateicon()
owner.update_icon()
//Autotransfer callback CHOMPEdit Start
/obj/belly/proc/check_autotransfer(var/atom/movable/prey)

View File

@@ -531,7 +531,7 @@
var/mob/living/silicon/pred = loc.loc //Thing holding the belly!
var/obj/item/device/dogborg/sleeper/belly = loc //The belly!
var/confirm = tgui_alert(src, "Please feel free to press use this button at any time you are uncomfortable and in a belly. Consent is important.", "Confirmation", list("Okay", "Cancel")) //CHOMPedit
var/confirm = tgui_alert(src, "You're in a cyborg sleeper. This is for escaping from preference-breaking or if your predator disconnects/AFKs. If your preferences were being broken, please admin-help as well.", "Confirmation", list("Okay", "Cancel"))
if(confirm != "Okay" || loc != belly)
return
//Actual escaping
@@ -710,7 +710,7 @@
else
belly.nom_mob(prey, user)
user.updateicon()
user.update_icon()
// Inform Admins
if(pred == user)

View File

@@ -159,15 +159,14 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
inside["contents"] = inside_contents
data["inside"] = inside
var/is_dogborg = FALSE
var/is_cyborg = FALSE
var/is_vore_simple_mob = FALSE
if(isrobot(host))
var/mob/living/silicon/robot/R = host
is_dogborg = R.dogborg
is_cyborg = TRUE
else if(istype(host, /mob/living/simple_mob/vore)) //So far, this does nothing. But, creating this for future belly work
is_vore_simple_mob = TRUE
data["host_mobtype"] = list(
"is_dogborg" = is_dogborg,
"is_cyborg" = is_cyborg,
"is_vore_simple_mob" = is_vore_simple_mob
)
@@ -2394,7 +2393,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
if(belly_choice == null)
return FALSE
host.vore_selected.silicon_belly_overlay_preference = belly_choice
host.updateicon()
host.update_icon()
. = TRUE
if("b_min_belly_number_flat")
var/new_min_belly = tgui_input_number(user, "Choose the amount of prey your belly must contain \
@@ -2404,7 +2403,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
return FALSE
var/new_new_min_belly = CLAMP(new_min_belly, 1, 100) //Clamping at 100 rather than infinity. Should be close to infinity tho.
host.vore_selected.visible_belly_minimum_prey = new_new_min_belly
host.updateicon()
host.update_icon()
. = TRUE
if("b_min_belly_prey_size")
var/new_belly_size = tgui_input_number(user, "Choose the required size prey must be to trigger belly overlay, \
@@ -2416,11 +2415,11 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
else
var/new_new_belly_size = CLAMP(new_belly_size, 25, 200)
host.vore_selected.overlay_min_prey_size = (new_new_belly_size/100)
host.updateicon()
host.update_icon()
. = TRUE
if("b_override_min_belly_prey_size")
host.vore_selected.override_min_prey_size = !host.vore_selected.override_min_prey_size
host.updateicon()
host.update_icon()
. = TRUE
if("b_min_belly_number_override")
var/new_min_prey = tgui_input_number(user, "Choose the amount of prey your belly must contain to override min prey size \
@@ -2430,7 +2429,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
return FALSE
var/new_new_min_prey = CLAMP(new_min_prey, 1, 100) //Clamping at 100 rather than infinity. Should be close to infinity tho.
host.vore_selected.override_min_prey_num = new_new_min_prey
host.updateicon()
host.update_icon()
. = TRUE
if("b_fancy_sound")
host.vore_selected.fancy_vore = !host.vore_selected.fancy_vore

View File

@@ -156,7 +156,7 @@
return
if(!M.resize(set_size, uncapped = M.has_large_resize_bounds(), ignore_prefs = ignoring_prefs))
to_chat(M, "<font color='blue'>The beam fires into your body, changing your size!</font>")
M.updateicon()
M.update_icon()
return
return 1
@@ -176,7 +176,7 @@
M.resize(set_size, uncapped = TRUE, ignore_prefs = TRUE) // Always ignores prefs, caution is advisable
to_chat(M, "<font color='blue'>The beam fires into your body, changing your size!</font>")
M.updateicon()
M.update_icon()
return
return 1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
icons/mob/robot/combat.dmi Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
icons/mob/robot/crisis.dmi Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

BIN
icons/mob/robot/default.dmi Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/mob/robot/janitor.dmi Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

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