[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>
@@ -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.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
@@ -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()
|
||||
..()
|
||||
115
code/controllers/subsystems/robot_sprites.dm
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
dead_mob_list |= src
|
||||
|
||||
set_respawn_timer()
|
||||
updateicon()
|
||||
update_icon()
|
||||
handle_regular_hud_updates()
|
||||
handle_vision()
|
||||
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)]°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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 ..()
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
@@ -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"
|
||||
@@ -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
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)]")
|
||||
|
||||
@@ -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))
|
||||
|
||||
148
code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm
Normal 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
|
||||
382
code/modules/mob/living/silicon/robot/sprites/civilian.dm
Normal 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
|
||||
*/
|
||||
135
code/modules/mob/living/silicon/robot/sprites/combat.dm
Normal 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
|
||||
216
code/modules/mob/living/silicon/robot/sprites/engineering.dm
Normal 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")
|
||||
76
code/modules/mob/living/silicon/robot/sprites/event.dm
Normal 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
|
||||
112
code/modules/mob/living/silicon/robot/sprites/fluff.dm
Normal 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"
|
||||
202
code/modules/mob/living/silicon/robot/sprites/janitor.dm
Normal 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")
|
||||
399
code/modules/mob/living/silicon/robot/sprites/medical.dm
Normal 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")
|
||||
187
code/modules/mob/living/silicon/robot/sprites/mining.dm
Normal 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")
|
||||
208
code/modules/mob/living/silicon/robot/sprites/science.dm
Normal 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")
|
||||
223
code/modules/mob/living/silicon/robot/sprites/security.dm
Normal 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")
|
||||
129
code/modules/mob/living/silicon/robot/sprites/standard.dm
Normal 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
|
||||
*/
|
||||
93
code/modules/mob/living/silicon/robot/sprites/syndicate.dm
Normal 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
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 29 KiB |
BIN
icons/mob/robot/civilian.dmi
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
icons/mob/robot/clerical.dmi
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
icons/mob/robot/combat.dmi
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
icons/mob/robot/combat_large.dmi
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
icons/mob/robot/combat_medic.dmi
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
icons/mob/robot/combat_medic_wide.dmi
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
icons/mob/robot/crisis.dmi
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
icons/mob/robot/crisis_large.dmi
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
icons/mob/robot/crisis_wide.dmi
Normal file
|
After Width: | Height: | Size: 273 KiB |
BIN
icons/mob/robot/default.dmi
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
icons/mob/robot/engineering.dmi
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
icons/mob/robot/engineering_large.dmi
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
icons/mob/robot/engineering_wide.dmi
Normal file
|
After Width: | Height: | Size: 301 KiB |
BIN
icons/mob/robot/fluff_wide.dmi
Normal file
|
After Width: | Height: | Size: 318 KiB |
BIN
icons/mob/robot/gravekeeper.dmi
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
icons/mob/robot/janitor.dmi
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
icons/mob/robot/janitor_large.dmi
Normal file
|
After Width: | Height: | Size: 133 KiB |