This commit is contained in:
Ghommie
2019-11-19 19:34:42 +01:00
52 changed files with 637 additions and 674 deletions

View File

@@ -25,7 +25,7 @@
return ..() return ..()
/obj/screen/examine(mob/user) /obj/screen/examine(mob/user)
return return list()
/obj/screen/orbit() /obj/screen/orbit()
return return

View File

@@ -106,9 +106,8 @@
/obj/item/tk_grab/examine(user) /obj/item/tk_grab/examine(user)
if (focus) if (focus)
focus.examine(user) return focus.examine(user)
else return ..()
..()
/obj/item/tk_grab/attack_self(mob/user) /obj/item/tk_grab/attack_self(mob/user)
if(!focus) if(!focus)

View File

@@ -29,21 +29,21 @@
var/obj/item/typecast = upgrade_item var/obj/item/typecast = upgrade_item
upgrade_name = initial(typecast.name) upgrade_name = initial(typecast.name)
/datum/component/armor_plate/proc/examine(datum/source, mob/user) /datum/component/armor_plate/proc/examine(datum/source, mob/user, list/examine_list)
//upgrade_item could also be typecast here instead //upgrade_item could also be typecast here instead
if(ismecha(parent)) if(ismecha(parent))
if(amount) if(amount)
if(amount < maxamount) if(amount < maxamount)
to_chat(user, "<span class='notice'>Its armor is enhanced with [amount] [upgrade_name].</span>") examine_list += "<span class='notice'>Its armor is enhanced with [amount] [upgrade_name].</span>"
else else
to_chat(user, "<span class='notice'>It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter.</span>") examine_list += "<span class='notice'>It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter.</span>"
else else
to_chat(user, "<span class='notice'>It has attachment points for strapping monster hide on for added protection.</span>") examine_list += "<span class='notice'>It has attachment points for strapping monster hide on for added protection.</span>"
else else
if(amount) if(amount)
to_chat(user, "<span class='notice'>It has been strengthened with [amount]/[maxamount] [upgrade_name].</span>") examine_list += "<span class='notice'>It has been strengthened with [amount]/[maxamount] [upgrade_name].</span>"
else else
to_chat(user, "<span class='notice'>It can be strengthened with up to [maxamount] [upgrade_name].</span>") examine_list += "<span class='notice'>It can be strengthened with up to [maxamount] [upgrade_name].</span>"
/datum/component/armor_plate/proc/applyplate(datum/source, obj/item/I, mob/user, params) /datum/component/armor_plate/proc/applyplate(datum/source, obj/item/I, mob/user, params)
if(!istype(I,upgrade_item)) if(!istype(I,upgrade_item))

View File

@@ -19,9 +19,9 @@
RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/action) RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/action)
update_parent(index) update_parent(index)
/datum/component/construction/proc/examine(datum/source, mob/user) /datum/component/construction/proc/examine(datum/source, mob/user, list/examine_list)
if(desc) if(desc)
to_chat(user, desc) examine_list += desc
/datum/component/construction/proc/on_step() /datum/component/construction/proc/on_step()
if(index > steps.len) if(index > steps.len)

View File

@@ -71,5 +71,5 @@
if(strength >= cleanable) if(strength >= cleanable)
qdel(src) qdel(src)
/datum/component/decal/proc/examine(datum/source, mob/user) /datum/component/decal/proc/examine(datum/source, mob/user, list/examine_list)
to_chat(user, description) examine_list += description

View File

@@ -15,8 +15,8 @@
for(var/i in parent) for(var/i in parent)
RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react) RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react)
/datum/component/magnetic_catch/proc/examine(datum/source, mob/user) /datum/component/magnetic_catch/proc/examine(datum/source, mob/user, list/examine_list)
to_chat(user, "It has been installed with inertia dampening to prevent coffee spills.") examine_list += "It has been installed with inertia dampening to prevent coffee spills."
/datum/component/magnetic_catch/proc/crossed_react(datum/source, atom/movable/thing) /datum/component/magnetic_catch/proc/crossed_react(datum/source, atom/movable/thing)
RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react, TRUE) RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react, TRUE)

View File

@@ -49,13 +49,13 @@
var/mat_path = possible_mats[id] var/mat_path = possible_mats[id]
materials[id] = new mat_path() materials[id] = new mat_path()
/datum/component/material_container/proc/OnExamine(datum/source, mob/user) /datum/component/material_container/proc/OnExamine(datum/source, mob/user, list/examine_list)
if(show_on_examine) if(show_on_examine)
for(var/I in materials) for(var/I in materials)
var/datum/material/M = materials[I] var/datum/material/M = materials[I]
var/amt = amount(M.id) var/amt = amount(M.id)
if(amt) if(amt)
to_chat(user, "<span class='notice'>It has [amt] units of [lowertext(M.name)] stored.</span>") examine_list += "<span class='notice'>It has [amt] units of [lowertext(M.name)] stored.</span>"
/datum/component/material_container/proc/OnAttackBy(datum/source, obj/item/I, mob/living/user) /datum/component/material_container/proc/OnAttackBy(datum/source, obj/item/I, mob/living/user)
var/list/tc = allowed_typecache var/list/tc = allowed_typecache

View File

@@ -18,7 +18,7 @@
hl3_release_date = _half_life hl3_release_date = _half_life
can_contaminate = _can_contaminate can_contaminate = _can_contaminate
if(istype(parent, /atom)) if(istype(parent, /atom))
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/rad_examine) RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/rad_examine)
if(istype(parent, /obj/item)) if(istype(parent, /obj/item))
RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/rad_attack) RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/rad_attack)
@@ -58,7 +58,7 @@
else else
strength = max(strength, arguments[1]) strength = max(strength, arguments[1])
/datum/component/radioactive/proc/rad_examine(datum/source, mob/user, atom/thing) /datum/component/radioactive/proc/rad_examine(datum/source, mob/user, list/examine_list)
var/atom/master = parent var/atom/master = parent
var/list/out = list() var/list/out = list()
if(get_dist(master, user) <= 1) if(get_dist(master, user) <= 1)
@@ -72,7 +72,7 @@
out += "[out ? " and it " : "[master] "]hurts to look at." out += "[out ? " and it " : "[master] "]hurts to look at."
else else
out += "." out += "."
to_chat(user, out.Join()) examine_list += out.Join()
/datum/component/radioactive/proc/rad_attack(datum/source, atom/movable/target, mob/living/user) /datum/component/radioactive/proc/rad_attack(datum/source, atom/movable/target, mob/living/user)
radiation_pulse(parent, strength/20) radiation_pulse(parent, strength/20)

View File

@@ -98,9 +98,9 @@
remove_verbs() remove_verbs()
. = ..() . = ..()
/datum/component/simple_rotation/proc/ExamineMessage(datum/source, mob/user) /datum/component/simple_rotation/proc/ExamineMessage(datum/source, mob/user, list/examine_list)
if(rotation_flags & ROTATION_ALTCLICK) if(rotation_flags & ROTATION_ALTCLICK)
to_chat(user, "<span class='notice'>Alt-click to rotate it clockwise.</span>") examine_list += "<span class='notice'>Alt-click to rotate it clockwise.</span>"
/datum/component/simple_rotation/proc/HandRot(datum/source, mob/user, rotation = default_rotation_direction) /datum/component/simple_rotation/proc/HandRot(datum/source, mob/user, rotation = default_rotation_direction)
if(!can_be_rotated.Invoke(user, rotation) || !can_user_rotate.Invoke(user, rotation)) if(!can_be_rotated.Invoke(user, rotation) || !can_user_rotate.Invoke(user, rotation))

View File

@@ -283,7 +283,7 @@
return "[icon2html(src, user)] [thats? "That's ":""][get_examine_name(user)]" return "[icon2html(src, user)] [thats? "That's ":""][get_examine_name(user)]"
/atom/proc/examine(mob/user) /atom/proc/examine(mob/user)
. = list(user, "[get_examine_string(user, TRUE)].") . = list("[get_examine_string(user, TRUE)].")
if(desc) if(desc)
. += desc . += desc
@@ -294,7 +294,7 @@
if(length(reagents.reagent_list)) if(length(reagents.reagent_list))
if(user.can_see_reagents()) //Show each individual reagent if(user.can_see_reagents()) //Show each individual reagent
for(var/datum/reagent/R in reagents.reagent_list) for(var/datum/reagent/R in reagents.reagent_list)
. += user, "[R.volume] units of [R.name]" . += "[R.volume] units of [R.name]"
else //Otherwise, just show the total volume else //Otherwise, just show the total volume
var/total_volume = 0 var/total_volume = 0
for(var/datum/reagent/R in reagents.reagent_list) for(var/datum/reagent/R in reagents.reagent_list)

View File

@@ -114,11 +114,11 @@
/obj/machinery/status_display/examine(mob/user) /obj/machinery/status_display/examine(mob/user)
. = ..() . = ..()
if (message1 || message2) if (message1 || message2)
. += list("The display says:" . += "The display says:"
if (message1) if (message1)
. += "<br>\t<tt>[html_encode(message1)]</tt>" . += "\t<tt>[html_encode(message1)]</tt>"
if (message2) if (message2)
. += "<br>\t<tt>[html_encode(message2)]</tt>" . += "\t<tt>[html_encode(message2)]</tt>"
// Helper procs for child display types. // Helper procs for child display types.
/obj/machinery/status_display/proc/display_shuttle_status(obj/docking_port/mobile/shuttle) /obj/machinery/status_display/proc/display_shuttle_status(obj/docking_port/mobile/shuttle)

View File

@@ -111,13 +111,15 @@
throw_speed = 3 throw_speed = 3
throw_range = 7 throw_range = 7
attack_verb = list("HONKED") attack_verb = list("HONKED")
var/moodlet = "honk" //used to define which kind of moodlet is added to the honked target
var/honksound = 'sound/items/bikehorn.ogg'
/obj/item/bikehorn/Initialize() /obj/item/bikehorn/Initialize()
. = ..() . = ..()
AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50) AddComponent(/datum/component/squeak, list(honksound=1), 50)
/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user) /obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "honk", /datum/mood_event/honk) SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, moodlet, /datum/mood_event/honk)
return ..() return ..()
/obj/item/bikehorn/suicide_act(mob/user) /obj/item/bikehorn/suicide_act(mob/user)
@@ -130,10 +132,7 @@
name = "air horn" name = "air horn"
desc = "Damn son, where'd you find this?" desc = "Damn son, where'd you find this?"
icon_state = "air_horn" icon_state = "air_horn"
honksound = 'sound/items/airhorn2.ogg'
/obj/item/bikehorn/airhorn/Initialize()
. = ..()
AddComponent(/datum/component/squeak, list('sound/items/airhorn2.ogg'=1), 50)
//golden bikehorn //golden bikehorn
/obj/item/bikehorn/golden /obj/item/bikehorn/golden
@@ -163,6 +162,19 @@
M.emote("flip") M.emote("flip")
flip_cooldown = world.time + 7 flip_cooldown = world.time + 7
/obj/item/bikehorn/silver
name = "silver bike horn"
desc = "A shiny bike horn handcrafted in the artisan workshops of Mars, with superior kevlar-reinforced rubber bulb attached to a polished plasteel reed horn."
attack_verb = list("elegantly HONKED")
icon_state = "silverhorn"
/obj/item/bikehorn/bluespacehonker
name = "bluespace bike horn"
desc = "A normal bike horn colored blue and has bluespace dust held in to reed horn allowing for silly honks through space and time, into your in childhood."
attack_verb = list("HONKED in bluespace", "HONKED", "quantumly HONKED")
icon_state = "bluespacehonker"
moodlet = "bshonk"
//canned laughter //canned laughter
/obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter /obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter
name = "Canned Laughter" name = "Canned Laughter"

View File

@@ -134,7 +134,6 @@
var/voracious = hound ? TRUE : FALSE var/voracious = hound ? TRUE : FALSE
var/list/targets = target && hound ? list(target) : contents var/list/targets = target && hound ? list(target) : contents
if(hound) if(hound)
hound.setClickCooldown(50)
if(!hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) if(!hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
voracious = FALSE voracious = FALSE
else else
@@ -447,7 +446,7 @@
if (!target.devourable) if (!target.devourable)
to_chat(user, "The target registers an error code. Unable to insert into [src].") to_chat(user, "The target registers an error code. Unable to insert into [src].")
return return
if(target) if(patient)
to_chat(user,"<span class='warning'>Your [src] is already occupied.</span>") to_chat(user,"<span class='warning'>Your [src] is already occupied.</span>")
return return
if(target.buckled) if(target.buckled)
@@ -524,3 +523,7 @@
update_gut() update_gut()
user.visible_message("<span class='warning'>[hound.name]'s garbage processor groans lightly as [trashman] slips inside.</span>", "<span class='notice'>Your garbage compactor groans lightly as [trashman] slips inside.</span>") user.visible_message("<span class='warning'>[hound.name]'s garbage processor groans lightly as [trashman] slips inside.</span>", "<span class='notice'>Your garbage compactor groans lightly as [trashman] slips inside.</span>")
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1) playsound(hound, 'sound/effects/bin_close.ogg', 80, 1)
/obj/item/dogborg/sleeper/K9/flavour
name = "Mobile Sleeper"
desc = "A mounted, underslung sleeper, intended for holding willing occupants for leisurely purposes."

View File

@@ -755,3 +755,47 @@
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
w_class = WEIGHT_CLASS_NORMAL w_class = WEIGHT_CLASS_NORMAL
attack_verb = list("bashes", "smacks", "whacks") attack_verb = list("bashes", "smacks", "whacks")
/obj/item/nullrod/rosary
icon_state = "rosary"
item_state = null
name = "prayer beads"
desc = "A set of prayer beads used by many of the more traditional religions in space"
force = 4
throwforce = 0
attack_verb = list("whipped", "repented", "lashed", "flagellated")
var/praying = FALSE
var/deity_name = "Coderbus" //This is the default, hopefully won't actually appear if the religion subsystem is running properly
/obj/item/nullrod/rosary/Initialize()
.=..()
if(GLOB.deity)
deity_name = GLOB.deity
/obj/item/nullrod/rosary/attack(mob/living/M, mob/living/user)
if(user.a_intent == INTENT_HARM)
return ..()
if(!user.mind || user.mind.assigned_role != "Chaplain")
to_chat(user, "<span class='notice'>You are not close enough with [deity_name] to use [src].</span>")
return
if(praying)
to_chat(user, "<span class='notice'>You are already using [src].</span>")
return
user.visible_message("<span class='info'>[user] kneels[M == user ? null : " next to [M]"] and begins to utter a prayer to [deity_name].</span>", \
"<span class='info'>You kneel[M == user ? null : " next to [M]"] and begin a prayer to [deity_name].</span>")
praying = TRUE
if(do_after(user, 20, target = M))
M.reagents?.add_reagent("holywater", 5)
to_chat(M, "<span class='notice'>[user]'s prayer to [deity_name] has eased your pain!</span>")
M.adjustToxLoss(-5, TRUE, TRUE)
M.adjustOxyLoss(-5)
M.adjustBruteLoss(-5)
M.adjustFireLoss(-5)
praying = FALSE
else
to_chat(user, "<span class='notice'>Your prayer to [deity_name] was interrupted.</span>")
praying = FALSE

View File

@@ -1014,3 +1014,9 @@
icon_state = "maya" icon_state = "maya"
item_state = "maya" item_state = "maya"
attack_verb = list("nuked", "arrested", "harmbatonned") attack_verb = list("nuked", "arrested", "harmbatonned")
/obj/item/toy/plush/catgirl/marisa
desc = "An adorable stuffed toy that resembles a crew member, or maybe a witch. Having it makes you feel you can win."
icon_state = "marisa"
item_state = "marisa"
attack_verb = list("blasted", "sparked", "dazzled")

View File

@@ -56,12 +56,12 @@
/obj/item/pneumatic_cannon/examine(mob/user) /obj/item/pneumatic_cannon/examine(mob/user)
. = ..() . = ..()
var/list/out = list()
if(!in_range(user, src)) if(!in_range(user, src))
. += "<span class='notice'>You'll need to get closer to see any more.</span>" . += "<span class='notice'>You'll need to get closer to see any more.</span>"
return return
for(var/obj/item/I in loadedItems) for(var/obj/item/I in loadedItems)
. += "<span class='info'>[icon2html(I, user)] It has \a [I] loaded.</span>" . += "<span class='info'>[icon2html(I, user)] It has \a [I] loaded.</span>"
CHECK_TICK
if(tank) if(tank)
. += "<span class='notice'>[icon2html(tank, user)] It has \a [tank] mounted onto it.</span>" . += "<span class='notice'>[icon2html(tank, user)] It has \a [tank] mounted onto it.</span>"

View File

@@ -203,7 +203,7 @@
desc = "A trash bag of holding replacement for the janiborg's standard trash bag." desc = "A trash bag of holding replacement for the janiborg's standard trash bag."
icon_state = "cyborg_upgrade3" icon_state = "cyborg_upgrade3"
require_module = 1 require_module = 1
module_type = list(/obj/item/robot_module/janitor, /obj/item/robot_module/scrubpup) module_type = list(/obj/item/robot_module/butler)
/obj/item/borg/upgrade/tboh/action(mob/living/silicon/robot/R) /obj/item/borg/upgrade/tboh/action(mob/living/silicon/robot/R)
. = ..() . = ..()
@@ -230,7 +230,7 @@
desc = "An advanced mop replacement for the janiborg's standard mop." desc = "An advanced mop replacement for the janiborg's standard mop."
icon_state = "cyborg_upgrade3" icon_state = "cyborg_upgrade3"
require_module = 1 require_module = 1
module_type = list(/obj/item/robot_module/janitor, /obj/item/robot_module/scrubpup) module_type = list(/obj/item/robot_module/butler)
/obj/item/borg/upgrade/amop/action(mob/living/silicon/robot/R) /obj/item/borg/upgrade/amop/action(mob/living/silicon/robot/R)
. = ..() . = ..()
@@ -522,8 +522,7 @@
module_type = list( module_type = list(
/obj/item/robot_module/medical, /obj/item/robot_module/medical,
/obj/item/robot_module/syndicate_medical, /obj/item/robot_module/syndicate_medical,
/obj/item/robot_module/medihound, /obj/item/robot_module/medihound)
/obj/item/robot_module/borgi)
/obj/item/borg/upgrade/advhealth/action(mob/living/silicon/robot/R, user = usr) /obj/item/borg/upgrade/advhealth/action(mob/living/silicon/robot/R, user = usr)
. = ..() . = ..()

View File

@@ -36,8 +36,7 @@
/obj/structure/guillotine/examine(mob/user) /obj/structure/guillotine/examine(mob/user)
. = ..() . = ..()
. += "It is [anchored ? "wrenched to the floor." : "unsecured. A wrench should fix that."]<br/>" . += "It is [anchored ? "wrenched to the floor." : "unsecured. A wrench should fix that."]"
msg = ""
if (blade_status == GUILLOTINE_BLADE_RAISED) if (blade_status == GUILLOTINE_BLADE_RAISED)
var/msg = "The blade is raised, ready to fall, and" var/msg = "The blade is raised, ready to fall, and"

View File

@@ -582,7 +582,7 @@
/obj/structure/rack/examine(mob/user) /obj/structure/rack/examine(mob/user)
. = ..() . = ..()
. += "<span class='notice'>It's held together by a couple of <b>bolts</b>.</span>") . += "<span class='notice'>It's held together by a couple of <b>bolts</b>.</span>"
/obj/structure/rack/CanPass(atom/movable/mover, turf/target) /obj/structure/rack/CanPass(atom/movable/mover, turf/target)
if(src.density == 0) //Because broken racks -Agouri |TODO: SPRITE!| if(src.density == 0) //Because broken racks -Agouri |TODO: SPRITE!|

View File

@@ -17,19 +17,19 @@
/turf/closed/wall/r_wall/deconstruction_hints(mob/user) /turf/closed/wall/r_wall/deconstruction_hints(mob/user)
switch(d_state) switch(d_state)
if(INTACT) if(INTACT)
to_chat(user, "<span class='notice'>The outer <b>grille</b> is fully intact.</span>") return "<span class='notice'>The outer <b>grille</b> is fully intact.</span>"
if(SUPPORT_LINES) if(SUPPORT_LINES)
to_chat(user, "<span class='notice'>The outer <i>grille</i> has been cut, and the support lines are <b>screwed</b> securely to the outer cover.</span>") return "<span class='notice'>The outer <i>grille</i> has been cut, and the support lines are <b>screwed</b> securely to the outer cover.</span>"
if(COVER) if(COVER)
to_chat(user, "<span class='notice'>The support lines have been <i>unscrewed</i>, and the metal cover is <b>welded</b> firmly in place.</span>") return "<span class='notice'>The support lines have been <i>unscrewed</i>, and the metal cover is <b>welded</b> firmly in place.</span>"
if(CUT_COVER) if(CUT_COVER)
to_chat(user, "<span class='notice'>The metal cover has been <i>sliced through</i>, and is <b>connected loosely</b> to the girder.</span>") return "<span class='notice'>The metal cover has been <i>sliced through</i>, and is <b>connected loosely</b> to the girder.</span>"
if(ANCHOR_BOLTS) if(ANCHOR_BOLTS)
to_chat(user, "<span class='notice'>The outer cover has been <i>pried away</i>, and the bolts anchoring the support rods are <b>wrenched</b> in place.</span>") return "<span class='notice'>The outer cover has been <i>pried away</i>, and the bolts anchoring the support rods are <b>wrenched</b> in place.</span>"
if(SUPPORT_RODS) if(SUPPORT_RODS)
to_chat(user, "<span class='notice'>The bolts anchoring the support rods have been <i>loosened</i>, but are still <b>welded</b> firmly to the girder.</span>") return "<span class='notice'>The bolts anchoring the support rods have been <i>loosened</i>, but are still <b>welded</b> firmly to the girder.</span>"
if(SHEATH) if(SHEATH)
to_chat(user, "<span class='notice'>The support rods have been <i>sliced through</i>, and the outer sheath is <b>connected loosely</b> to the girder.</span>") return "<span class='notice'>The support rods have been <i>sliced through</i>, and the outer sheath is <b>connected loosely</b> to the girder.</span>"
/turf/closed/wall/r_wall/devastate_wall() /turf/closed/wall/r_wall/devastate_wall()
new sheet_type(src, sheet_amount) new sheet_type(src, sheet_amount)

View File

@@ -232,7 +232,7 @@
if(grace_period) if(grace_period)
. += "<span class='big'><b>Crew grace period time remaining:</b> [DisplayTimeText(get_arrival_time())]</span>" . += "<span class='big'><b>Crew grace period time remaining:</b> [DisplayTimeText(get_arrival_time())]</span>"
else else
to_chat(user, "<span class='big'><b>Time until Ratvar's arrival:</b> [DisplayTimeText(get_arrival_time())]</span>" . += "<span class='big'><b>Time until Ratvar's arrival:</b> [DisplayTimeText(get_arrival_time())]</span>"
switch(progress_in_seconds) switch(progress_in_seconds)
if(-INFINITY to GATEWAY_REEBE_FOUND) if(-INFINITY to GATEWAY_REEBE_FOUND)
. += "<span class='heavy_brass'>The Ark is feeding power into the bluespace field.</span>" . += "<span class='heavy_brass'>The Ark is feeding power into the bluespace field.</span>"
@@ -242,7 +242,7 @@
. += "<span class='heavy_brass'>With the bluespace field established, Ratvar is preparing to come through!</span>" . += "<span class='heavy_brass'>With the bluespace field established, Ratvar is preparing to come through!</span>"
else else
if(!active) if(!active)
. += "<span class='warning'>Whatever it is, it doesn't seem to be active.</span>") . += "<span class='warning'>Whatever it is, it doesn't seem to be active.</span>"
else else
switch(progress_in_seconds) switch(progress_in_seconds)
if(-INFINITY to GATEWAY_REEBE_FOUND) if(-INFINITY to GATEWAY_REEBE_FOUND)

View File

@@ -301,7 +301,7 @@
else else
text += " normal" text += " normal"
text += " vine." text += " vine."
. += text) . += text
/obj/structure/spacevine/Destroy() /obj/structure/spacevine/Destroy()
for(var/datum/spacevine_mutation/SM in mutations) for(var/datum/spacevine_mutation/SM in mutations)

View File

@@ -63,8 +63,7 @@
/obj/item/twohanded/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user) /obj/item/twohanded/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user)
if(!wielded) if(!wielded)
to_chat(user, "<span class='warning'>[src] is too heavy to use with one hand. You fumble and drop everything.") to_chat(user, "<span class='warning'>[src] is too heavy to use with one hand.")
user.drop_all_held_items()
return return
var/datum/status_effect/crusher_damage/C = target.has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) var/datum/status_effect/crusher_damage/C = target.has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
var/target_health = target.health var/target_health = target.health

View File

@@ -13,7 +13,7 @@
if(HAS_TRAIT(L, TRAIT_PROSOPAGNOSIA)) if(HAS_TRAIT(L, TRAIT_PROSOPAGNOSIA))
obscure_name = TRUE obscure_name = TRUE
. = list("<span class='info'>*---------*\nThis is <EM>[!obscure_name ? name : "Unknown"]</EM>!)" . = list("<span class='info'>*---------*\nThis is <EM>[!obscure_name ? name : "Unknown"]</EM>!")
var/list/obscured = check_obscured_slots() var/list/obscured = check_obscured_slots()
var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
@@ -133,10 +133,8 @@
. += "<span class='warning'>[t_He] appear[p_s()] to have committed suicide... there is no hope of recovery.</span>" . += "<span class='warning'>[t_He] appear[p_s()] to have committed suicide... there is no hope of recovery.</span>"
if(hellbound) if(hellbound)
. += "<span class='warning'>[t_His] soul seems to have been ripped out of [t_his] body. Revival is impossible.</span>" . += "<span class='warning'>[t_His] soul seems to have been ripped out of [t_his] body. Revival is impossible.</span>"
. += "" if(getorgan(/obj/item/organ/brain) && !key && !get_ghost(FALSE, TRUE))
if(getorgan(/obj/item/organ/brain) && !key && !get_ghost(FALSE, TRUE)))
. += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has departed...</span>" . += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has departed...</span>"
if(!foundghost)
else else
. += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive; there are no signs of life...</span>" . += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive; there are no signs of life...</span>"

View File

@@ -1,5 +1,5 @@
/mob/living/silicon/robot/examine(mob/user) /mob/living/silicon/robot/examine(mob/user)
. = list("<span class='info'>*---------*\nThis is [icon2html(src, user)] \a <EM>[src]</EM>, a [src.module.name]!") . = list("<span class='info'>*---------*\nThis is [icon2html(src, user)] \a <EM>[src]</EM>, a [src.module.name] unit!")
if(desc) if(desc)
. += "[desc]" . += "[desc]"

View File

@@ -110,6 +110,7 @@
var/sitting = 0 var/sitting = 0
var/bellyup = 0 var/bellyup = 0
var/dogborg = FALSE
/mob/living/silicon/robot/get_cell() /mob/living/silicon/robot/get_cell()
return cell return cell
@@ -232,15 +233,14 @@
var/list/modulelist = list("Standard" = /obj/item/robot_module/standard, \ var/list/modulelist = list("Standard" = /obj/item/robot_module/standard, \
"Engineering" = /obj/item/robot_module/engineering, \ "Engineering" = /obj/item/robot_module/engineering, \
"Medical" = /obj/item/robot_module/medical, \ "Medical" = /obj/item/robot_module/medical, \
"Medihound" = /obj/item/robot_module/medihound, \
"Miner" = /obj/item/robot_module/miner, \ "Miner" = /obj/item/robot_module/miner, \
"Janitor" = /obj/item/robot_module/janitor, \
"Service" = /obj/item/robot_module/butler) "Service" = /obj/item/robot_module/butler)
if(!CONFIG_GET(flag/disable_peaceborg)) if(!CONFIG_GET(flag/disable_peaceborg))
modulelist["Peacekeeper"] = /obj/item/robot_module/peacekeeper modulelist["Peacekeeper"] = /obj/item/robot_module/peacekeeper
if(BORG_SEC_AVAILABLE) if(BORG_SEC_AVAILABLE)
modulelist["Security"] = /obj/item/robot_module/security modulelist["Security"] = /obj/item/robot_module/security
modulelist["Security K-9"] = /obj/item/robot_module/k9
modulelist += get_cit_modules() //Citadel change - adds Citadel's borg modules.
var/input_module = input("Please, select a module!", "Robot", null, null) as null|anything in modulelist var/input_module = input("Please, select a module!", "Robot", null, null) as null|anything in modulelist
if(!input_module || module.type != /obj/item/robot_module) if(!input_module || module.type != /obj/item/robot_module)
@@ -879,9 +879,6 @@
/mob/living/silicon/robot/modules/miner /mob/living/silicon/robot/modules/miner
set_module = /obj/item/robot_module/miner set_module = /obj/item/robot_module/miner
/mob/living/silicon/robot/modules/janitor
set_module = /obj/item/robot_module/janitor
/mob/living/silicon/robot/modules/syndicate /mob/living/silicon/robot/modules/syndicate
icon_state = "synd_sec" icon_state = "synd_sec"
faction = list(ROLE_SYNDICATE) faction = list(ROLE_SYNDICATE)
@@ -1256,6 +1253,20 @@
for(var/i in connected_ai.aicamera.stored) for(var/i in connected_ai.aicamera.stored)
aicamera.stored[i] = TRUE aicamera.stored[i] = TRUE
/mob/living/silicon/robot/lay_down()
..()
update_canmove()
/mob/living/silicon/robot/update_canmove()
..()
if(client && stat != DEAD && dogborg == FALSE)
if(resting)
cut_overlays()
icon_state = "[module.cyborg_base_icon]-rest"
else
icon_state = "[module.cyborg_base_icon]"
update_icons()
/mob/living/silicon/robot/proc/rest_style() /mob/living/silicon/robot/proc/rest_style()
set name = "Switch Rest Style" set name = "Switch Rest Style"
set category = "Robot Commands" set category = "Robot Commands"
@@ -1271,4 +1282,8 @@
sitting = 1 sitting = 1
if("Belly up") if("Belly up")
bellyup = 1 bellyup = 1
update_icons() update_icons()
/mob/living/silicon/robot/adjustStaminaLossBuffered(amount, updating_stamina = 1)
if(istype(cell))
cell.charge -= amount*5

View File

@@ -35,6 +35,13 @@
var/ride_allow_incapacitated = FALSE var/ride_allow_incapacitated = FALSE
var/allow_riding = TRUE var/allow_riding = TRUE
var/sleeper_overlay
var/icon/cyborg_icon_override
var/has_snowflake_deadsprite
var/cyborg_pixel_offset
var/moduleselect_alternate_icon
var/dogborg = FALSE
/obj/item/robot_module/Initialize() /obj/item/robot_module/Initialize()
. = ..() . = ..()
for(var/i in basic_modules) for(var/i in basic_modules)
@@ -129,6 +136,28 @@
rebuild_modules() rebuild_modules()
return I return I
//Adds flavoursome dogborg items to dogborg variants without mechanical benefits
/obj/item/robot_module/proc/dogborg_equip()
if(istype(src, /obj/item/robot_module/k9) || istype(src, /obj/item/robot_module/medihound))
return //Bandaid fix to prevent stacking until I merge these two modules into their base types
var/obj/item/I = new /obj/item/analyzer/nose/flavour(src)
basic_modules += I
I = new /obj/item/soap/tongue/flavour(src)
basic_modules += I
I = new /obj/item/dogborg/sleeper/K9/flavour(src)
if(istype(src, /obj/item/robot_module/engineering))
I.icon_state = "decompiler"
if(istype(src, /obj/item/robot_module/security))
I.icon_state = "sleeperb"
if(istype(src, /obj/item/robot_module/medical))
I.icon_state = "sleeper"
if(istype(src, /obj/item/robot_module/butler))
I.icon_state = "servicer"
if(cyborg_base_icon == "scrubpup")
I.icon_state = "compactor"
basic_modules += I
rebuild_modules()
/obj/item/robot_module/proc/remove_module(obj/item/I, delete_after) /obj/item/robot_module/proc/remove_module(obj/item/I, delete_after)
basic_modules -= I basic_modules -= I
modules -= I modules -= I
@@ -197,6 +226,8 @@
R.update_module_innate() R.update_module_innate()
RM.rebuild_modules() RM.rebuild_modules()
INVOKE_ASYNC(RM, .proc/do_transform_animation) INVOKE_ASYNC(RM, .proc/do_transform_animation)
if(RM.dogborg)
RM.dogborg_equip()
R.maxHealth = borghealth R.maxHealth = borghealth
R.health = min(borghealth, R.health) R.health = min(borghealth, R.health)
qdel(src) qdel(src)
@@ -245,15 +276,15 @@
name = "Standard" name = "Standard"
basic_modules = list( basic_modules = list(
/obj/item/assembly/flash/cyborg, /obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/crowbar/cyborg,
/obj/item/reagent_containers/borghypo/epi, /obj/item/reagent_containers/borghypo/epi,
/obj/item/healthanalyzer, /obj/item/healthanalyzer,
/obj/item/weldingtool/largetank/cyborg, /obj/item/weldingtool/largetank/cyborg,
/obj/item/wrench/cyborg, /obj/item/wrench/cyborg,
/obj/item/crowbar/cyborg,
/obj/item/stack/sheet/metal/cyborg, /obj/item/stack/sheet/metal/cyborg,
/obj/item/stack/rods/cyborg, /obj/item/stack/rods/cyborg,
/obj/item/stack/tile/plasteel/cyborg, /obj/item/stack/tile/plasteel/cyborg,
/obj/item/extinguisher,
/obj/item/pickaxe, /obj/item/pickaxe,
/obj/item/t_scanner/adv_mining_scanner, /obj/item/t_scanner/adv_mining_scanner,
/obj/item/restraints/handcuffs/cable/zipties, /obj/item/restraints/handcuffs/cable/zipties,
@@ -271,6 +302,8 @@
name = "Medical" name = "Medical"
basic_modules = list( basic_modules = list(
/obj/item/assembly/flash/cyborg, /obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/crowbar/cyborg,
/obj/item/healthanalyzer, /obj/item/healthanalyzer,
/obj/item/reagent_containers/borghypo, /obj/item/reagent_containers/borghypo,
/obj/item/reagent_containers/glass/beaker/large, /obj/item/reagent_containers/glass/beaker/large,
@@ -283,7 +316,6 @@
/obj/item/surgicaldrill, /obj/item/surgicaldrill,
/obj/item/scalpel, /obj/item/scalpel,
/obj/item/circular_saw, /obj/item/circular_saw,
/obj/item/extinguisher/mini,
/obj/item/roller/robo, /obj/item/roller/robo,
/obj/item/borg/cyborghug/medical, /obj/item/borg/cyborghug/medical,
/obj/item/stack/medical/gauze/cyborg, /obj/item/stack/medical/gauze/cyborg,
@@ -299,6 +331,85 @@
can_be_pushed = FALSE can_be_pushed = FALSE
hat_offset = 3 hat_offset = 3
/obj/item/robot_module/medical/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Heavy", "Sleek", "Marina", "Droid", "Eyebot")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "medical"
if("Droid")
cyborg_base_icon = "medical"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
hat_offset = 4
if("Sleek")
cyborg_base_icon = "sleekmed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinamed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Eyebot")
cyborg_base_icon = "eyebotmed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavymed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
/obj/item/robot_module/medihound
name = "MediHound"
basic_modules = list(
/obj/item/dogborg/jaws/small,
/obj/item/storage/bag/borgdelivery,
/obj/item/analyzer/nose,
/obj/item/soap/tongue,
/obj/item/extinguisher/mini,
/obj/item/healthanalyzer,
/obj/item/dogborg/sleeper/medihound,
/obj/item/roller/robo,
/obj/item/reagent_containers/borghypo,
/obj/item/twohanded/shockpaddles/cyborg/hound,
/obj/item/stack/medical/gauze/cyborg,
/obj/item/pinpointer/crew,
/obj/item/sensor_device)
emag_modules = list(/obj/item/dogborg/pounce)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/medical,
/obj/item/clockwork/weapon/ratvarian_spear)
cyborg_base_icon = "medihound"
moduleselect_icon = "medihound"
moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
can_be_pushed = FALSE
hat_offset = INFINITY
sleeper_overlay = "msleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
/obj/item/robot_module/medihound/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/list/medhoundmodels = list("Default", "Dark", "Vale")
if(R.client && R.client.ckey in list("nezuli"))
medhoundmodels += "Alina"
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in medhoundmodels
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "medihound"
if("Dark")
cyborg_base_icon = "medihounddark"
sleeper_overlay = "mdsleeper"
if("Vale")
cyborg_base_icon = "valemed"
sleeper_overlay = "valemedsleeper"
if("Alina")
cyborg_base_icon = "alina-med"
special_light_key = "alina"
sleeper_overlay = "alinasleeper"
return ..()
/obj/item/robot_module/engineering /obj/item/robot_module/engineering
name = "Engineering" name = "Engineering"
basic_modules = list( basic_modules = list(
@@ -338,10 +449,79 @@
magpulsing = TRUE magpulsing = TRUE
hat_offset = -4 hat_offset = -4
/obj/item/robot_module/engineering/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/list/engymodels = list("Default", "Default - Treads", "Heavy", "Sleek", "Marina", "Can", "Spider", "Loader","Handy", "Pup Dozer", "Vale")
if(R.client && R.client.ckey in list("nezuli"))
engymodels += "Alina"
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in engymodels
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "engineer"
if("Default - Treads")
cyborg_base_icon = "engi-tread"
special_light_key = "engineer"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Loader")
cyborg_base_icon = "loaderborg"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
has_snowflake_deadsprite = TRUE
if("Handy")
cyborg_base_icon = "handyeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Sleek")
cyborg_base_icon = "sleekeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Can")
cyborg_base_icon = "caneng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinaeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Spider")
cyborg_base_icon = "spidereng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavyeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Pup Dozer")
cyborg_base_icon = "pupdozer"
can_be_pushed = FALSE
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
sleeper_overlay = "dozersleeper"
if("Vale")
cyborg_base_icon = "valeeng"
can_be_pushed = FALSE
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
sleeper_overlay = "valeengsleeper"
if("Alina")
cyborg_base_icon = "alina-eng"
special_light_key = "alina"
can_be_pushed = FALSE
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
sleeper_overlay = "alinasleeper"
return ..()
/obj/item/robot_module/security /obj/item/robot_module/security
name = "Security" name = "Security"
basic_modules = list( basic_modules = list(
/obj/item/assembly/flash/cyborg, /obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/crowbar/cyborg,
/obj/item/restraints/handcuffs/cable/zipties, /obj/item/restraints/handcuffs/cable/zipties,
/obj/item/melee/baton/loaded, /obj/item/melee/baton/loaded,
/obj/item/gun/energy/disabler/cyborg, /obj/item/gun/energy/disabler/cyborg,
@@ -360,6 +540,90 @@
to_chat(loc, "<span class='userdanger'>While you have picked the security module, you still have to follow your laws, NOT Space Law. \ to_chat(loc, "<span class='userdanger'>While you have picked the security module, you still have to follow your laws, NOT Space Law. \
For Crewsimov, this means you must follow criminals' orders unless there is a law 1 reason not to.</span>") For Crewsimov, this means you must follow criminals' orders unless there is a law 1 reason not to.</span>")
/obj/item/robot_module/security/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Default - Treads", "Heavy", "Sleek", "Can", "Marina", "Spider")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "sec"
if("Default - Treads")
cyborg_base_icon = "sec-tread"
special_light_key = "sec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Sleek")
cyborg_base_icon = "sleeksec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinasec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Can")
cyborg_base_icon = "cansec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Spider")
cyborg_base_icon = "spidersec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavysec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
/obj/item/robot_module/k9
name = "Security K-9 Unit"
basic_modules = list(
/obj/item/restraints/handcuffs/cable/zipties,
/obj/item/storage/bag/borgdelivery,
/obj/item/dogborg/jaws/big,
/obj/item/dogborg/pounce,
/obj/item/clothing/mask/gas/sechailer/cyborg,
/obj/item/soap/tongue,
/obj/item/analyzer/nose,
/obj/item/dogborg/sleeper/K9,
/obj/item/gun/energy/disabler/cyborg,
/obj/item/pinpointer/crew)
emag_modules = list(/obj/item/gun/energy/laser/cyborg)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security,
/obj/item/clockwork/weapon/ratvarian_spear)
cyborg_base_icon = "k9"
moduleselect_icon = "k9"
moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
can_be_pushed = FALSE
hat_offset = INFINITY
sleeper_overlay = "ksleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
/obj/item/robot_module/k9/do_transform_animation()
..()
to_chat(loc,"<span class='userdanger'>While you have picked the Security K-9 module, you still have to follow your laws, NOT Space Law. \
For Crewsimov, this means you must follow criminals' orders unless there is a law 1 reason not to.</span>")
/obj/item/robot_module/k9/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/list/sechoundmodels = list("Default", "Dark", "Vale")
if(R.client && R.client.ckey in list("nezuli"))
sechoundmodels += "Alina"
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in sechoundmodels
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "k9"
if("Alina")
cyborg_base_icon = "alina-sec"
special_light_key = "alina"
sleeper_overlay = "alinasleeper"
if("Dark")
cyborg_base_icon = "k9dark"
sleeper_overlay = "k9darksleeper"
if("Vale")
cyborg_base_icon = "valesec"
sleeper_overlay = "valesecsleeper"
return ..()
/obj/item/robot_module/security/Initialize() /obj/item/robot_module/security/Initialize()
. = ..() . = ..()
if(!CONFIG_GET(flag/weaken_secborg)) if(!CONFIG_GET(flag/weaken_secborg))
@@ -372,12 +636,13 @@
name = "Peacekeeper" name = "Peacekeeper"
basic_modules = list( basic_modules = list(
/obj/item/assembly/flash/cyborg, /obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/crowbar/cyborg,
/obj/item/cookiesynth, /obj/item/cookiesynth,
/obj/item/harmalarm, /obj/item/harmalarm,
/obj/item/reagent_containers/borghypo/peace, /obj/item/reagent_containers/borghypo/peace,
/obj/item/holosign_creator/cyborg, /obj/item/holosign_creator/cyborg,
/obj/item/borg/cyborghug/peacekeeper, /obj/item/borg/cyborghug/peacekeeper,
/obj/item/extinguisher,
/obj/item/megaphone, /obj/item/megaphone,
/obj/item/borg/projectile_dampen) /obj/item/borg/projectile_dampen)
emag_modules = list(/obj/item/reagent_containers/borghypo/peace/hacked) emag_modules = list(/obj/item/reagent_containers/borghypo/peace/hacked)
@@ -391,9 +656,31 @@
/obj/item/robot_module/peacekeeper/do_transform_animation() /obj/item/robot_module/peacekeeper/do_transform_animation()
..() ..()
to_chat(loc, "<span class='userdanger'>Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \ to_chat(loc, "<span class='userdanger'>Under ASIMOV/CREWSIMOV, you are an enforcer of the PEACE and preventer of HUMAN/CREW HARM. \
You are not a security module and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.</span>") You are not a security module and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.</span>")
/obj/item/robot_module/peacekeeper/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Spider", "Borgi")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "peace"
if("Spider")
cyborg_base_icon = "whitespider"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Borgi")
cyborg_base_icon = "borgi"
moduleselect_icon = "borgi"
moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
has_snowflake_deadsprite = TRUE
return ..()
//Janitor module combined with Service module
/*
/obj/item/robot_module/janitor /obj/item/robot_module/janitor
name = "Janitor" name = "Janitor"
basic_modules = list( basic_modules = list(
@@ -416,6 +703,7 @@
moduleselect_icon = "janitor" moduleselect_icon = "janitor"
hat_offset = -5 hat_offset = -5
clean_on_move = TRUE clean_on_move = TRUE
*/
/obj/item/reagent_containers/spray/cyborg_drying /obj/item/reagent_containers/spray/cyborg_drying
name = "drying agent spray" name = "drying agent spray"
@@ -426,25 +714,12 @@
name = "lube spray" name = "lube spray"
list_reagents = list("lube" = 250) list_reagents = list("lube" = 250)
/obj/item/robot_module/janitor/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
..()
var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules
if(LR)
for(var/i in 1 to coeff)
LR.Charge(R)
var/obj/item/reagent_containers/spray/cyborg_drying/CD = locate(/obj/item/reagent_containers/spray/cyborg_drying) in basic_modules
if(CD)
CD.reagents.add_reagent("drying_agent", 5 * coeff)
var/obj/item/reagent_containers/spray/cyborg_lube/CL = locate(/obj/item/reagent_containers/spray/cyborg_lube) in emag_modules
if(CL)
CL.reagents.add_reagent("lube", 2 * coeff)
/obj/item/robot_module/clown /obj/item/robot_module/clown
name = "Clown" name = "Clown"
basic_modules = list( basic_modules = list(
/obj/item/assembly/flash/cyborg, /obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/crowbar/cyborg,
/obj/item/toy/crayon/rainbow, /obj/item/toy/crayon/rainbow,
/obj/item/instrument/bikehorn, /obj/item/instrument/bikehorn,
/obj/item/stamp/clown, /obj/item/stamp/clown,
@@ -459,8 +734,7 @@
/obj/item/borg/cyborghug/peacekeeper, /obj/item/borg/cyborghug/peacekeeper,
/obj/item/borg/lollipop/clown, /obj/item/borg/lollipop/clown,
/obj/item/picket_sign/cyborg, /obj/item/picket_sign/cyborg,
/obj/item/reagent_containers/borghypo/clown, /obj/item/reagent_containers/borghypo/clown)
/obj/item/extinguisher/mini)
emag_modules = list( emag_modules = list(
/obj/item/reagent_containers/borghypo/clown/hacked, /obj/item/reagent_containers/borghypo/clown/hacked,
/obj/item/reagent_containers/spray/waterflower/cyborg/hacked) /obj/item/reagent_containers/spray/waterflower/cyborg/hacked)
@@ -476,11 +750,12 @@
name = "Service" name = "Service"
basic_modules = list( basic_modules = list(
/obj/item/assembly/flash/cyborg, /obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/crowbar/cyborg,
/obj/item/reagent_containers/food/drinks/drinkingglass, /obj/item/reagent_containers/food/drinks/drinkingglass,
/obj/item/reagent_containers/food/condiment/enzyme, /obj/item/reagent_containers/food/condiment/enzyme,
/obj/item/pen, /obj/item/pen,
/obj/item/toy/crayon/spraycan/borg, /obj/item/toy/crayon/spraycan/borg,
/obj/item/extinguisher/mini,
/obj/item/hand_labeler/borg, /obj/item/hand_labeler/borg,
/obj/item/razor, /obj/item/razor,
/obj/item/instrument/violin, /obj/item/instrument/violin,
@@ -490,31 +765,123 @@
/obj/item/lighter, /obj/item/lighter,
/obj/item/storage/bag/tray, /obj/item/storage/bag/tray,
/obj/item/reagent_containers/borghypo/borgshaker, /obj/item/reagent_containers/borghypo/borgshaker,
/obj/item/borg/lollipop) /obj/item/borg/lollipop,
/obj/item/screwdriver/cyborg,
/obj/item/stack/tile/plasteel/cyborg,
/obj/item/soap/nanotrasen,
/obj/item/storage/bag/trash/cyborg,
/obj/item/mop/cyborg,
/obj/item/lightreplacer/cyborg,
/obj/item/holosign_creator,
/obj/item/reagent_containers/spray/cyborg_drying)
emag_modules = list(/obj/item/reagent_containers/borghypo/borgshaker/hacked) emag_modules = list(/obj/item/reagent_containers/borghypo/borgshaker/hacked)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/service, ratvar_modules = list(/obj/item/clockwork/slab/cyborg/service,
/obj/item/borg/sight/xray/truesight_lens) /obj/item/borg/sight/xray/truesight_lens)
moduleselect_icon = "service" moduleselect_icon = "service"
special_light_key = "service"
hat_offset = 0 hat_offset = 0
clean_on_move = TRUE
/obj/item/robot_module/butler/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) /obj/item/robot_module/butler/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
..() ..()
var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules
var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules
if(O) if(O)
O.reagents.add_reagent("enzyme", 2 * coeff) O.reagents.add_reagent("enzyme", 2 * coeff)
if(LR)
for(var/i in 1 to coeff)
LR.Charge(R)
var/obj/item/reagent_containers/spray/cyborg_drying/CD = locate(/obj/item/reagent_containers/spray/cyborg_drying) in basic_modules
if(CD)
CD.reagents.add_reagent("drying_agent", 5 * coeff)
var/obj/item/reagent_containers/spray/cyborg_lube/CL = locate(/obj/item/reagent_containers/spray/cyborg_lube) in emag_modules
if(CL)
CL.reagents.add_reagent("lube", 2 * coeff)
/obj/item/robot_module/butler/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("(Service) Waitress", "(Service) Heavy", "(Service) Sleek", "(Service) Butler", "(Service) Tophat", "(Service) Can", "(Service) Bro", "(Service) DarkK9", "(Service) Vale", "(Service) ValeDark", "(Janitor) Default", "(Janitor) Sleek", "(Janitor) Marina", "(Janitor) Can", "(Janitor) Heavy", "(Janitor) Scrubpuppy")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("(Service) Waitress")
cyborg_base_icon = "service_f"
special_light_key = "service"
if("(Service) Butler")
cyborg_base_icon = "service_m"
special_light_key = "service"
if("(Service) Bro")
cyborg_base_icon = "brobot"
special_light_key = "service"
if("(Service) Can")
cyborg_base_icon = "kent"
special_light_key = "medical"
hat_offset = 3
if("(Service) Tophat")
cyborg_base_icon = "tophat"
special_light_key = null
hat_offset = INFINITY //He is already wearing a hat
if("(Service) Sleek")
cyborg_base_icon = "sleekserv"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("(Service) Heavy")
cyborg_base_icon = "heavyserv"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("(Service) DarkK9")
cyborg_base_icon = "k50"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
sleeper_overlay = "ksleeper"
if("(Service) Vale")
cyborg_base_icon = "valeserv"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
sleeper_overlay = "valeservsleeper"
if("(Service) ValeDark")
cyborg_base_icon = "valeservdark"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
sleeper_overlay = "valeservsleeper"
if("(Janitor) Default")
cyborg_base_icon = "janitor"
if("(Janitor) Marina")
cyborg_base_icon = "marinajan"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("(Janitor) Sleek")
cyborg_base_icon = "sleekjan"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("(Janitor) Can")
cyborg_base_icon = "canjan"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("(Janitor) Heavy")
cyborg_base_icon = "heavyres"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("(Janitor) Scrubpuppy")
cyborg_base_icon = "scrubpup"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
cyborg_pixel_offset = -16
dogborg = TRUE
sleeper_overlay = "jsleeper"
return ..()
/obj/item/robot_module/miner /obj/item/robot_module/miner
name = "Miner" name = "Miner"
basic_modules = list( basic_modules = list(
/obj/item/assembly/flash/cyborg, /obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/crowbar/cyborg,
/obj/item/borg/sight/meson, /obj/item/borg/sight/meson,
/obj/item/storage/bag/ore/cyborg, /obj/item/storage/bag/ore/cyborg,
/obj/item/pickaxe/drill/cyborg, /obj/item/pickaxe/drill/cyborg,
/obj/item/shovel, /obj/item/shovel,
/obj/item/crowbar/cyborg,
/obj/item/weldingtool/mini, /obj/item/weldingtool/mini,
/obj/item/extinguisher/mini,
/obj/item/storage/bag/sheetsnatcher/borg, /obj/item/storage/bag/sheetsnatcher/borg,
/obj/item/t_scanner/adv_mining_scanner, /obj/item/t_scanner/adv_mining_scanner,
/obj/item/gun/energy/kinetic_accelerator/cyborg, /obj/item/gun/energy/kinetic_accelerator/cyborg,
@@ -529,10 +896,44 @@
moduleselect_icon = "miner" moduleselect_icon = "miner"
hat_offset = 0 hat_offset = 0
/obj/item/robot_module/miner/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Lavaland", "Heavy", "Sleek", "Marina", "Can", "Spider", "Asteroid", "Droid")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Lavaland")
cyborg_base_icon = "miner"
if("Asteroid")
cyborg_base_icon = "minerOLD"
special_light_key = "miner"
if("Droid")
cyborg_base_icon = "miner"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
hat_offset = 4
if("Sleek")
cyborg_base_icon = "sleekmin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Can")
cyborg_base_icon = "canmin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinamin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Spider")
cyborg_base_icon = "spidermin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavymin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
/obj/item/robot_module/syndicate /obj/item/robot_module/syndicate
name = "Syndicate Assault" name = "Syndicate Assault"
basic_modules = list( basic_modules = list(
/obj/item/assembly/flash/cyborg, /obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/crowbar/cyborg,
/obj/item/melee/transforming/energy/sword/cyborg, /obj/item/melee/transforming/energy/sword/cyborg,
/obj/item/gun/energy/printer, /obj/item/gun/energy/printer,
/obj/item/gun/ballistic/revolver/grenadelauncher/cyborg, /obj/item/gun/ballistic/revolver/grenadelauncher/cyborg,
@@ -562,6 +963,8 @@
name = "Syndicate Medical" name = "Syndicate Medical"
basic_modules = list( basic_modules = list(
/obj/item/assembly/flash/cyborg, /obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/crowbar/cyborg,
/obj/item/reagent_containers/borghypo/syndicate, /obj/item/reagent_containers/borghypo/syndicate,
/obj/item/twohanded/shockpaddles/syndicate, /obj/item/twohanded/shockpaddles/syndicate,
/obj/item/healthanalyzer, /obj/item/healthanalyzer,
@@ -574,8 +977,6 @@
/obj/item/melee/transforming/energy/sword/cyborg/saw, /obj/item/melee/transforming/energy/sword/cyborg/saw,
/obj/item/roller/robo, /obj/item/roller/robo,
/obj/item/card/emag, /obj/item/card/emag,
/obj/item/crowbar/cyborg,
/obj/item/extinguisher/mini,
/obj/item/pinpointer/syndicate_cyborg, /obj/item/pinpointer/syndicate_cyborg,
/obj/item/stack/medical/gauze/cyborg, /obj/item/stack/medical/gauze/cyborg,
/obj/item/gun/medbeam, /obj/item/gun/medbeam,

View File

@@ -13,6 +13,7 @@
mob_biotypes = list(MOB_ROBOTIC) mob_biotypes = list(MOB_ROBOTIC)
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
speech_span = SPAN_ROBOT speech_span = SPAN_ROBOT
no_vore = TRUE
var/datum/ai_laws/laws = null//Now... THEY ALL CAN ALL HAVE LAWS var/datum/ai_laws/laws = null//Now... THEY ALL CAN ALL HAVE LAWS
var/last_lawchange_announce = 0 var/last_lawchange_announce = 0

View File

@@ -416,9 +416,9 @@
. += "<span class='deadsay'>It appears to be alive but unresponsive.</span>" . += "<span class='deadsay'>It appears to be alive but unresponsive.</span>"
if (getBruteLoss()) if (getBruteLoss())
if (getBruteLoss() < 40) if (getBruteLoss() < 40)
msg += "<span class='warning'>It has some punctures in its flesh!" . += "<span class='warning'>It has some punctures in its flesh!"
else else
msg += "<span class='danger'>It has severe punctures and tears in its flesh!</span>" . += "<span class='danger'>It has severe punctures and tears in its flesh!</span>"
switch(powerlevel) switch(powerlevel)
if(2 to 3) if(2 to 3)

View File

@@ -144,7 +144,7 @@
/obj/item/gun/ballistic/shotgun/boltaction/examine(mob/user) /obj/item/gun/ballistic/shotgun/boltaction/examine(mob/user)
. = ..() . = ..()
. += "The bolt is [bolt_open ? "open" : "closed"].") . += "The bolt is [bolt_open ? "open" : "closed"]."
/obj/item/gun/ballistic/shotgun/boltaction/enchanted /obj/item/gun/ballistic/shotgun/boltaction/enchanted
name = "enchanted bolt action rifle" name = "enchanted bolt action rifle"
@@ -264,7 +264,7 @@
/obj/item/gun/ballistic/shotgun/automatic/dual_tube/examine(mob/user) /obj/item/gun/ballistic/shotgun/automatic/dual_tube/examine(mob/user)
. = ..() . = ..()
. += "<span class='notice'>Alt-click to pump it.</span>") . += "<span class='notice'>Alt-click to pump it.</span>"
/obj/item/gun/ballistic/shotgun/automatic/dual_tube/Initialize() /obj/item/gun/ballistic/shotgun/automatic/dual_tube/Initialize()
. = ..() . = ..()

View File

@@ -0,0 +1,4 @@
author: "kevinz000"
delete-after: True
changes:
- balance: "kinetic crushers no longer drop if you try to use it with one hand"

View File

@@ -0,0 +1,4 @@
author: "Ghommie"
delete-after: True
changes:
- bugfix: "Strawberry milk and tea have sprites now."

View File

@@ -0,0 +1,5 @@
author: "Ghommie"
delete-after: True
changes:
- bugfix: "Rosary beads prayer now works on non-carbon mobs too, and won't break when performed on a monkey or other humanoids."
- tweak: "You can flagellate people with rosary beads on harm intent. It's even mediocrer than the sord though."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -1,45 +0,0 @@
/obj/item/nullrod/rosary
icon = 'modular_citadel/icons/obj/items_and_weapons.dmi'
icon_state = "rosary"
item_state = null
name = "prayer beads"
desc = "A set of prayer beads used by many of the more traditional religions in space"
force = 0
throwforce = 0
var/praying = FALSE
var/deity_name = "Coderbus" //This is the default, hopefully won't actually appear if the religion subsystem is running properly
/obj/item/nullrod/rosary/Initialize()
.=..()
if(GLOB.religion)
deity_name = GLOB.deity
/obj/item/nullrod/rosary/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M))
return ..()
if(!user.mind || user.mind.assigned_role != "Chaplain")
to_chat(user, "<span class='notice'>You are not close enough with [deity_name] to use [src].</span>")
return
if(praying)
to_chat(user, "<span class='notice'>You are already using [src].</span>")
return
user.visible_message("<span class='info'>[user] kneels[M == user ? null : " next to [M]"] and begins to utter a prayer to [deity_name].</span>", \
"<span class='info'>You kneel[M == user ? null : " next to [M]"] and begin a prayer to [deity_name].</span>")
praying = TRUE
if(do_after(user, 20, target = M))
if(istype(M, /mob/living/carbon/human)) // This probably should not work on catpeople. They're unholy abominations.
var/mob/living/carbon/human/target = M
M.reagents.add_reagent("holywater", 5)
to_chat(target, "<span class='notice'>[user]'s prayer to [deity_name] has eased your pain!</span>")
target.adjustToxLoss(-5, TRUE, TRUE)
target.adjustOxyLoss(-5)
target.adjustBruteLoss(-5)
target.adjustFireLoss(-5)
praying = FALSE
else
to_chat(user, "<span class='notice'>Your prayer to [deity_name] was interrupted.</span>")
praying = FALSE

View File

@@ -1,17 +0,0 @@
/obj/item/bikehorn/silver
name = "silver bike horn"
desc = "A shiny bike horn handcrafted in the artisan workshops of Mars, with superior kevlar-reinforced rubber bulb attached to a polished plasteel reed horn."
attack_verb = list("elegantly HONKED")
icon = 'modular_citadel/icons/obj/honk.dmi'
icon_state = "silverhorn"
/obj/item/bikehorn/bluespacehonker
name = "bluespace bike horn"
desc = "A normal bike horn colored blue and has bluespace dust held in to reed horn allowing for silly honks through space and time, into your in childhood."
attack_verb = list("HONKED in bluespace", "HONKED", "quantumly HONKED")
icon = 'modular_citadel/icons/obj/honk.dmi'
icon_state = "bluespacehonker"
/obj/item/bikehorn/bluespacehonker/attack(mob/living/carbon/M, mob/living/carbon/user)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "bshonk", /datum/mood_event/bshonk)
return ..()

View File

@@ -1,3 +0,0 @@
/obj/item/vending_refill/medical
machine_name = "NanoMed"
icon_state = "refill_medical"

View File

@@ -19,9 +19,9 @@
. = ..() . = ..()
if(user.get_item_by_slot(SLOT_GLASSES) == src) if(user.get_item_by_slot(SLOT_GLASSES) == src)
if(world.time >= nextadrenalinepop) if(world.time >= nextadrenalinepop)
to_chat(user, "<span class='notice'>The built-in adrenaline injector is ready for use.</span>") . += "<span class='notice'>The built-in adrenaline injector is ready for use.</span>"
else else
to_chat(user, "<span class='notice'>[DisplayTimeText(nextadrenalinepop - world.time)] left before the adrenaline injector can be used again.") . += "<span class='notice'>[DisplayTimeText(nextadrenalinepop - world.time)] left before the adrenaline injector can be used again."
/obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate) /obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate)
if(istype(user) && combatmodestate && world.time >= nextadrenalinepop) if(istype(user) && combatmodestate && world.time >= nextadrenalinepop)

View File

@@ -20,7 +20,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
/obj/item/dogborg/jaws/examine(mob/user) /obj/item/dogborg/jaws/examine(mob/user)
. = ..() . = ..()
if(!CONFIG_GET(flag/weaken_secborg)) if(!CONFIG_GET(flag/weaken_secborg))
to_chat(user, "<span class='notice'>Use help intent to attempt to non-lethally incapacitate the target by latching on with your maw. This is more effective against exhausted and resting targets.</span>") . += "<span class='notice'>Use help intent to attempt to non-lethally incapacitate the target by latching on with your maw. This is more effective against exhausted and resting targets.</span>"
/obj/item/dogborg/jaws/big /obj/item/dogborg/jaws/big
name = "combat jaws" name = "combat jaws"
@@ -312,6 +312,42 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
target.wash_cream() target.wash_cream()
return return
//Nerfed tongue for flavour reasons (haha geddit?). Used for aux skins for regular borgs
/obj/item/soap/tongue/flavour
desc = "For giving affectionate kisses."
/obj/item/soap/tongue/flavour/attack_self(mob/user)
return
/obj/item/soap/tongue/flavour/afterattack(atom/target, mob/user, proximity)
if(!proximity)
return
var/mob/living/silicon/robot.R = user
if(ishuman(target))
var/mob/living/L = target
if(status == 0 && check_zone(R.zone_selected) == "head")
R.visible_message("<span class='warning'>\the [R] affectionally licks \the [L]'s face!</span>", "<span class='notice'>You affectionally lick \the [L]'s face!</span>")
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
return
else if(status == 0)
R.visible_message("<span class='warning'>\the [R] affectionally licks \the [L]!</span>", "<span class='notice'>You affectionally lick \the [L]!</span>")
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
return
//Same as above but for noses
/obj/item/analyzer/nose/flavour/AltClick(mob/user)
return
/obj/item/analyzer/nose/flavour/attack_self(mob/user)
return
/obj/item/analyzer/nose/flavour/afterattack(atom/target, mob/user, proximity)
if(!proximity)
return
do_attack_animation(target, null, src)
user.visible_message("<span class='notice'>[user] [pick(attack_verb)] \the [target.name] with their nose!</span>")
//Dogfood //Dogfood
/obj/item/trash/rkibble /obj/item/trash/rkibble

View File

@@ -1,26 +0,0 @@
mob/living/silicon
no_vore = TRUE
/mob/living/silicon/robot
var/dogborg = FALSE
/mob/living/silicon/robot/lay_down()
..()
update_canmove()
/mob/living/silicon/robot/update_canmove()
..()
if(client && stat != DEAD && dogborg == FALSE)
if(resting)
cut_overlays()
icon_state = "[module.cyborg_base_icon]-rest"
else
icon_state = "[module.cyborg_base_icon]"
update_icons()
/mob/living/silicon/robot/adjustStaminaLossBuffered(amount, updating_stamina = 1)
if(istype(cell))
cell.charge -= amount*5

View File

@@ -1,466 +0,0 @@
/mob/living/silicon/robot/modules/medihound
set_module = /obj/item/robot_module/medihound
/mob/living/silicon/robot/modules/k9
set_module = /obj/item/robot_module/k9
/mob/living/silicon/robot/modules/scrubpup
set_module = /obj/item/robot_module/scrubpup
/mob/living/silicon/robot/modules/borgi
set_module = /obj/item/robot_module/borgi
/mob/living/silicon/robot/proc/get_cit_modules()
var/list/modulelist = list()
modulelist["MediHound"] = /obj/item/robot_module/medihound
if(BORG_SEC_AVAILABLE)
modulelist["Security K-9"] = /obj/item/robot_module/k9
modulelist["Scrub Puppy"] = /obj/item/robot_module/scrubpup
modulelist["Borgi"] = /obj/item/robot_module/borgi
return modulelist
/obj/item/robot_module
var/sleeper_overlay
var/icon/cyborg_icon_override
var/has_snowflake_deadsprite
var/cyborg_pixel_offset
var/moduleselect_alternate_icon
var/dogborg = FALSE
/obj/item/robot_module/k9
name = "Security K-9 Unit"
basic_modules = list(
/obj/item/restraints/handcuffs/cable/zipties,
/obj/item/storage/bag/borgdelivery,
/obj/item/dogborg/jaws/big,
/obj/item/dogborg/pounce,
/obj/item/clothing/mask/gas/sechailer/cyborg,
/obj/item/soap/tongue,
/obj/item/analyzer/nose,
/obj/item/dogborg/sleeper/K9,
/obj/item/gun/energy/disabler/cyborg,
/obj/item/pinpointer/crew)
emag_modules = list(/obj/item/gun/energy/laser/cyborg)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security,
/obj/item/clockwork/weapon/ratvarian_spear)
cyborg_base_icon = "k9"
moduleselect_icon = "k9"
moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
can_be_pushed = FALSE
hat_offset = INFINITY
sleeper_overlay = "ksleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
borghealth = 80
/obj/item/robot_module/k9/do_transform_animation()
..()
to_chat(loc,"<span class='userdanger'>While you have picked the Security K-9 module, you still have to follow your laws, NOT Space Law. \
For Crewsimov, this means you must follow criminals' orders unless there is a law 1 reason not to.</span>")
/obj/item/robot_module/k9/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/list/sechoundmodels = list("Default", "Dark", "Vale")
if(R.client && R.client.ckey in list("nezuli"))
sechoundmodels += "Alina"
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in sechoundmodels
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "k9"
if("Alina")
cyborg_base_icon = "alina-sec"
special_light_key = "alina"
sleeper_overlay = "alinasleeper"
if("Dark")
cyborg_base_icon = "k9dark"
if("Vale")
cyborg_base_icon = "valesec"
return ..()
/obj/item/robot_module/medihound
name = "MediHound"
basic_modules = list(
/obj/item/dogborg/jaws/small,
/obj/item/storage/bag/borgdelivery,
/obj/item/analyzer/nose,
/obj/item/soap/tongue,
/obj/item/extinguisher/mini,
/obj/item/healthanalyzer,
/obj/item/dogborg/sleeper/medihound,
/obj/item/roller/robo,
/obj/item/reagent_containers/borghypo,
/obj/item/twohanded/shockpaddles/cyborg/hound,
/obj/item/stack/medical/gauze/cyborg,
/obj/item/pinpointer/crew,
/obj/item/sensor_device)
emag_modules = list(/obj/item/dogborg/pounce)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/medical,
/obj/item/clockwork/weapon/ratvarian_spear)
cyborg_base_icon = "medihound"
moduleselect_icon = "medihound"
moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
can_be_pushed = FALSE
hat_offset = INFINITY
sleeper_overlay = "msleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
/obj/item/robot_module/medihound/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/list/medhoundmodels = list("Default", "Dark", "Vale")
if(R.client && R.client.ckey in list("nezuli"))
medhoundmodels += "Alina"
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in medhoundmodels
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "medihound"
if("Dark")
cyborg_base_icon = "medihounddark"
sleeper_overlay = "mdsleeper"
if("Vale")
cyborg_base_icon = "valemed"
sleeper_overlay = "valemedsleeper"
if("Alina")
cyborg_base_icon = "alina-med"
special_light_key = "alina"
sleeper_overlay = "alinasleeper"
return ..()
/obj/item/robot_module/scrubpup
name = "Scrub Pup"
basic_modules = list(
/obj/item/dogborg/jaws/small,
/obj/item/analyzer/nose,
/obj/item/soap/tongue/scrubpup,
/obj/item/lightreplacer/cyborg,
/obj/item/extinguisher/mini,
/obj/item/dogborg/sleeper/compactor)
emag_modules = list(/obj/item/dogborg/pounce)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/janitor,
/obj/item/clockwork/replica_fabricator/cyborg)
cyborg_base_icon = "scrubpup"
moduleselect_icon = "janitor"
hat_offset = INFINITY
clean_on_move = TRUE
sleeper_overlay = "jsleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
cyborg_pixel_offset = -16
dogborg = TRUE
/obj/item/robot_module/scrubpup/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
..()
var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules
if(LR)
for(var/i in 1 to coeff)
LR.Charge(R)
/obj/item/robot_module/scrubpup/do_transform_animation()
..()
to_chat(loc,"<span class='userdanger'>As tempting as it might be, do not begin binging on important items. Eat your garbage responsibly. People are not included under Garbage.</span>")
/obj/item/robot_module/borgi
name = "Borgi"
basic_modules = list(
/obj/item/dogborg/jaws/small,
/obj/item/storage/bag/borgdelivery,
/obj/item/analyzer/nose,
/obj/item/soap/tongue,
/obj/item/healthanalyzer,
/obj/item/extinguisher/mini,
/obj/item/borg/cyborghug)
emag_modules = list(/obj/item/dogborg/pounce)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg,
/obj/item/clockwork/weapon/ratvarian_spear,
/obj/item/clockwork/replica_fabricator/cyborg)
cyborg_base_icon = "borgi"
moduleselect_icon = "borgi"
moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
has_snowflake_deadsprite = TRUE
/*
/obj/item/robot_module/orepup
name = "Ore Pup"
basic_modules = list(
/obj/item/storage/bag/ore/cyborg,
/obj/item/analyzer/nose,
/obj/item/storage/bag/borgdelivery,
/obj/item/dogborg/sleeper/ore,
/obj/item/pickaxe/drill/cyborg,
/obj/item/shovel,
/obj/item/crowbar/cyborg,
/obj/item/weldingtool/mini,
/obj/item/extinguisher/mini,
/obj/item/t_scanner/adv_mining_scanner,
/obj/item/gun/energy/kinetic_accelerator/cyborg,
/obj/item/gps/cyborg)
emag_modules = list(/obj/item/dogborg/pounce)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/miner,
/obj/item/clockwork/weapon/ratvarian_spear,
/obj/item/borg/sight/xray/truesight_lens)
cyborg_base_icon = "orepup"
moduleselect_icon = "orepup"
sleeper_overlay = "osleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
cyborg_pixel_offset = -16
/obj/item/robot_module/miner/do_transform_animation()
var/mob/living/silicon/robot/R = loc
R.cut_overlays()
R.setDir(SOUTH)
flick("orepup_transform", R)
do_transform_delay()
R.update_headlamp()
*/
/obj/item/robot_module/medical/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Heavy", "Sleek", "Marina", "Droid", "Eyebot")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "medical"
if("Droid")
cyborg_base_icon = "medical"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
hat_offset = 4
if("Sleek")
cyborg_base_icon = "sleekmed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinamed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Eyebot")
cyborg_base_icon = "eyebotmed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavymed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
/obj/item/robot_module/janitor/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/list/janimodels = list("Default", "Sleek", "Marina", "Can", "Heavy")
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in janimodels
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "janitor"
if("Marina")
cyborg_base_icon = "marinajan"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Sleek")
cyborg_base_icon = "sleekjan"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Can")
cyborg_base_icon = "canjan"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavyres"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
/obj/item/robot_module/peacekeeper/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Spider")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "peace"
if("Spider")
cyborg_base_icon = "whitespider"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
/obj/item/robot_module/security/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Default - Treads", "Heavy", "Sleek", "Can", "Marina", "Spider")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "sec"
if("Default - Treads")
cyborg_base_icon = "sec-tread"
special_light_key = "sec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Sleek")
cyborg_base_icon = "sleeksec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinasec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Can")
cyborg_base_icon = "cansec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Spider")
cyborg_base_icon = "spidersec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavysec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()
/obj/item/robot_module/butler/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Waitress", "Heavy", "Sleek", "Butler", "Tophat", "Kent", "Bro", "DarkK9", "Vale", "ValeDark")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Waitress")
cyborg_base_icon = "service_f"
if("Butler")
cyborg_base_icon = "service_m"
if("Bro")
cyborg_base_icon = "brobot"
if("Kent")
cyborg_base_icon = "kent"
special_light_key = "medical"
hat_offset = 3
if("Tophat")
cyborg_base_icon = "tophat"
special_light_key = null
hat_offset = INFINITY //He is already wearing a hat
if("Sleek")
cyborg_base_icon = "sleekserv"
special_light_key = "sleekserv"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavyserv"
special_light_key = "heavyserv"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("DarkK9")
cyborg_base_icon = "k50"
special_light_key = "k50"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
if("Vale")
cyborg_base_icon = "valeserv"
special_light_key = "valeserv"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
if("ValeDark")
cyborg_base_icon = "valeservdark"
special_light_key = "valeservdark"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
return ..()
/obj/item/robot_module/engineering/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/list/engymodels = list("Default", "Default - Treads", "Heavy", "Sleek", "Marina", "Can", "Spider", "Loader","Handy", "Pup Dozer", "Vale")
if(R.client && R.client.ckey in list("nezuli"))
engymodels += "Alina"
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in engymodels
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Default")
cyborg_base_icon = "engineer"
if("Default - Treads")
cyborg_base_icon = "engi-tread"
special_light_key = "engineer"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Loader")
cyborg_base_icon = "loaderborg"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
has_snowflake_deadsprite = TRUE
if("Handy")
cyborg_base_icon = "handyeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Sleek")
cyborg_base_icon = "sleekeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Can")
cyborg_base_icon = "caneng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinaeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Spider")
cyborg_base_icon = "spidereng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavyeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Pup Dozer")
cyborg_base_icon = "pupdozer"
can_be_pushed = FALSE
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
if("Vale")
cyborg_base_icon = "valeeng"
can_be_pushed = FALSE
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
if("Alina")
cyborg_base_icon = "alina-eng"
special_light_key = "alina"
can_be_pushed = FALSE
hat_offset = INFINITY
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
has_snowflake_deadsprite = TRUE
dogborg = TRUE
cyborg_pixel_offset = -16
return ..()
/obj/item/robot_module/miner/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Lavaland", "Heavy", "Sleek", "Marina", "Can", "Spider", "Asteroid", "Droid")
if(!borg_icon)
return FALSE
switch(borg_icon)
if("Lavaland")
cyborg_base_icon = "miner"
if("Asteroid")
cyborg_base_icon = "minerOLD"
special_light_key = "miner"
if("Droid")
cyborg_base_icon = "miner"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
hat_offset = 4
if("Sleek")
cyborg_base_icon = "sleekmin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Can")
cyborg_base_icon = "canmin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Marina")
cyborg_base_icon = "marinamin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Spider")
cyborg_base_icon = "spidermin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
if("Heavy")
cyborg_base_icon = "heavymin"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
return ..()

View File

@@ -178,9 +178,9 @@
/obj/item/gun/ballistic/automatic/magrifle_e/examine(mob/user) /obj/item/gun/ballistic/automatic/magrifle_e/examine(mob/user)
. = ..() . = ..()
if(cell) if(cell)
to_chat(user, "<span class='notice'>[src]'s cell is [round(cell.charge / cell.maxcharge, 0.1) * 100]% full.</span>") . += "<span class='notice'>[src]'s cell is [round(cell.charge / cell.maxcharge, 0.1) * 100]% full.</span>"
else else
to_chat(user, "<span class='notice'>[src] doesn't seem to have a cell!</span>") . += "<span class='notice'>[src] doesn't seem to have a cell!</span>"
/obj/item/gun/ballistic/automatic/magrifle_e/can_shoot() /obj/item/gun/ballistic/automatic/magrifle_e/can_shoot()
if(QDELETED(cell)) if(QDELETED(cell))
@@ -241,9 +241,9 @@
/obj/item/gun/ballistic/automatic/pistol/mag_e/examine(mob/user) /obj/item/gun/ballistic/automatic/pistol/mag_e/examine(mob/user)
. = ..() . = ..()
if(cell) if(cell)
to_chat(user, "<span class='notice'>[src]'s cell is [round(cell.charge / cell.maxcharge, 0.1) * 100]% full.</span>") . += "<span class='notice'>[src]'s cell is [round(cell.charge / cell.maxcharge, 0.1) * 100]% full.</span>"
else else
to_chat(user, "<span class='notice'>[src] doesn't seem to have a cell!</span>") . += "<span class='notice'>[src] doesn't seem to have a cell!</span>"
/obj/item/gun/ballistic/automatic/pistol/mag_e/can_shoot() /obj/item/gun/ballistic/automatic/pistol/mag_e/can_shoot()
if(QDELETED(cell)) if(QDELETED(cell))

View File

@@ -218,8 +218,8 @@
body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1) body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1)
update_icon() update_icon()
/obj/item/gun/ballistic/automatic/AM4B/examine(mob/user) /obj/item/gun/ballistic/automatic/AM4B/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>Alt-click to recolor it.</span>") . += "<span class='notice'>Alt-click to recolor it.</span>"
/obj/item/ammo_box/magazine/toy/AM4C /obj/item/ammo_box/magazine/toy/AM4C
name = "foam force AM4-C magazine" name = "foam force AM4-C magazine"

View File

@@ -94,8 +94,8 @@
update_icon() update_icon()
/obj/item/gun/energy/pumpaction/examine(mob/user) //so people don't ask HOW TO CHANGE FIRING MODE /obj/item/gun/energy/pumpaction/examine(mob/user) //so people don't ask HOW TO CHANGE FIRING MODE
..() . = ..()
to_chat(user, "<span class='notice'>Alt-click to change firing modes.</span>") . += "<span class='notice'>Alt-click to change firing modes.</span>"
/obj/item/gun/energy/pumpaction/worn_overlays(isinhands, icon_file) //ammo counter for inhands /obj/item/gun/energy/pumpaction/worn_overlays(isinhands, icon_file) //ammo counter for inhands
. = ..() . = ..()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 636 KiB

After

Width:  |  Height:  |  Size: 632 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 789 B

After

Width:  |  Height:  |  Size: 557 B

View File

@@ -3016,10 +3016,7 @@
#include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\tracer.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\tracer.dm"
#include "modular_citadel\code\game\objects\items\balls.dm" #include "modular_citadel\code\game\objects\items\balls.dm"
#include "modular_citadel\code\game\objects\items\boombox.dm" #include "modular_citadel\code\game\objects\items\boombox.dm"
#include "modular_citadel\code\game\objects\items\holy_weapons.dm"
#include "modular_citadel\code\game\objects\items\honk.dm"
#include "modular_citadel\code\game\objects\items\stunsword.dm" #include "modular_citadel\code\game\objects\items\stunsword.dm"
#include "modular_citadel\code\game\objects\items\vending_items.dm"
#include "modular_citadel\code\game\objects\items\circuitboards\machine_circuitboards.dm" #include "modular_citadel\code\game\objects\items\circuitboards\machine_circuitboards.dm"
#include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm" #include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm"
#include "modular_citadel\code\game\objects\items\devices\radio\headset.dm" #include "modular_citadel\code\game\objects\items\devices\radio\headset.dm"
@@ -3102,8 +3099,6 @@
#include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm"
#include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm"
#include "modular_citadel\code\modules\mob\living\silicon\robot\dogborg_equipment.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\dogborg_equipment.dm"
#include "modular_citadel\code\modules\mob\living\silicon\robot\robot.dm"
#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_modules.dm"
#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_movement.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\robot_movement.dm"
#include "modular_citadel\code\modules\projectiles\gun.dm" #include "modular_citadel\code\modules\projectiles\gun.dm"
#include "modular_citadel\code\modules\projectiles\ammunition\caseless.dm" #include "modular_citadel\code\modules\projectiles\ammunition\caseless.dm"