Overhauls and 2/28 sync (#244)
* map tweaks/shuttle engines * helpers and defines * global/onclick * controllers and datums * mapping * game folder * some other stuff * some modules * modules that aren't mobs * some mob stuff * new player stuff * mob living * silicon stuff * simple animal things * carbon/ayylmao * update_icons * carbon/human * sounds and tools * icons and stuff * hippie grinder changes + tgui * kitchen.dmi * compile issues fixed * mapfix * Mapfixes 2.0 * mapedit2.0 * mapmerger pls * Revert "mapedit2.0" This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481. * clean up vore folder + 2 hotfixes * admin ticket refinement * Blob tweaks and LAZYADD * LAZYADD IS LAZY * Magic strings purged * DEFINES NEED HIGHER PRIORITIES * Only a sleepless idiot deals in absolute TRUE|FALSE * u h g * progress bar fix * reverts ticket logs * there's always that one guy * fixes and stuff * 2/27 fixes * game folder stuff * stats * some modules again * clothing stuff gets vg clothing out of the main files * everything not mobs again * mob stuff * maps, tgui, sql stuff * icons * additional fixes and compile errors * don't need this anymore * Oh right this isn't needed anymore * maint bar re-added * that doesn't need to be here * stupid events * wtfeven * probably makes Travis happy * don't care to fix the grinder atm * fixes vending sprites, changes turret * lethal, not lethals * overylays are finicky creatures * lazy fix for bleeding edgy (#252) * map tweaks/shuttle engines * helpers and defines * global/onclick * controllers and datums * mapping * game folder * some other stuff * some modules * modules that aren't mobs * some mob stuff * new player stuff * mob living * silicon stuff * simple animal things * carbon/ayylmao * update_icons * carbon/human * sounds and tools * icons and stuff * hippie grinder changes + tgui * kitchen.dmi * compile issues fixed * mapfix * Mapfixes 2.0 * mapedit2.0 * mapmerger pls * Revert "mapedit2.0" This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481. * clean up vore folder + 2 hotfixes * admin ticket refinement * Blob tweaks and LAZYADD * LAZYADD IS LAZY * Magic strings purged * DEFINES NEED HIGHER PRIORITIES * Only a sleepless idiot deals in absolute TRUE|FALSE * u h g * progress bar fix * reverts ticket logs * there's always that one guy * fixes and stuff * 2/27 fixes * game folder stuff * stats * some modules again * clothing stuff gets vg clothing out of the main files * everything not mobs again * mob stuff * maps, tgui, sql stuff * icons * additional fixes and compile errors * don't need this anymore * Oh right this isn't needed anymore * maint bar re-added * that doesn't need to be here * stupid events * wtfeven * probably makes Travis happy * don't care to fix the grinder atm * fixes vending sprites, changes turret * lethal, not lethals * overylays are finicky creatures
This commit is contained in:
@@ -53,18 +53,12 @@ var/list/announcement_systems = list()
|
||||
cut_overlays()
|
||||
if(arrivalToggle)
|
||||
add_overlay(greenlight)
|
||||
else
|
||||
overlays -= greenlight
|
||||
|
||||
if(newheadToggle)
|
||||
add_overlay(pinklight)
|
||||
else
|
||||
overlays -= pinklight
|
||||
|
||||
if(stat & BROKEN)
|
||||
add_overlay(errorlight)
|
||||
else
|
||||
overlays -= errorlight
|
||||
|
||||
/obj/machinery/announcement_system/Destroy()
|
||||
qdel(radio)
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
C.setDir(src.dir)
|
||||
|
||||
C.network = tempnetwork
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
C.c_tag = "[A.name] ([rand(1, 999)])"
|
||||
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//Potential replacement for genetics revives or something I dunno (?)
|
||||
|
||||
#define CLONE_INITIAL_DAMAGE 190 //Clones in clonepods start with 190 cloneloss damage and 190 brainloss damage, thats just logical
|
||||
#define MINIMUM_HEAL_LEVEL 40
|
||||
|
||||
#define SPEAK(message) radio.talk_into(src, message, radio_channel, get_spans())
|
||||
|
||||
@@ -16,12 +17,10 @@
|
||||
icon_state = "pod_0"
|
||||
req_access = list(access_cloning) //For premature unlocking.
|
||||
verb_say = "states"
|
||||
var/heal_level = 90 //The clone is released once its health reaches this level.
|
||||
var/locked = FALSE
|
||||
var/heal_level //The clone is released once its health reaches this level.
|
||||
var/obj/machinery/computer/cloning/connected = null //So we remember the connected clone machine.
|
||||
var/mess = FALSE //Need to clean out it if it's full of exploded clone.
|
||||
var/attempting = FALSE //One clone attempt at a time thanks
|
||||
var/eject_wait = FALSE //Don't eject them as soon as they are created fuckkk
|
||||
var/speed_coeff
|
||||
var/efficiency
|
||||
|
||||
@@ -34,6 +33,13 @@
|
||||
|
||||
var/obj/effect/countdown/clonepod/countdown
|
||||
|
||||
var/list/unattached_flesh
|
||||
var/flesh_number = 0
|
||||
|
||||
// The "brine" is the reagents that are automatically added in small
|
||||
// amounts to the occupant.
|
||||
var/static/list/brine_types = list("salbutamol", "bicaridine", "corazone")
|
||||
|
||||
/obj/machinery/clonepod/New()
|
||||
..()
|
||||
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/clonepod(null)
|
||||
@@ -55,6 +61,10 @@
|
||||
countdown = null
|
||||
if(connected)
|
||||
connected.DetachCloner(src)
|
||||
for(var/i in unattached_flesh)
|
||||
qdel(i)
|
||||
LAZYCLEARLIST(unattached_flesh)
|
||||
unattached_flesh = null
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/clonepod/RefreshParts()
|
||||
@@ -65,6 +75,8 @@
|
||||
for(var/obj/item/weapon/stock_parts/manipulator/P in component_parts)
|
||||
speed_coeff += P.rating
|
||||
heal_level = (efficiency * 15) + 10
|
||||
if(heal_level < MINIMUM_HEAL_LEVEL)
|
||||
heal_level = MINIMUM_HEAL_LEVEL
|
||||
if(heal_level > 100)
|
||||
heal_level = 100
|
||||
|
||||
@@ -137,18 +149,14 @@
|
||||
return FALSE
|
||||
if(clonemind.damnation_type) //Can't clone the damned.
|
||||
INVOKE_ASYNC(src, .proc/horrifyingsound)
|
||||
mess = 1
|
||||
mess = TRUE
|
||||
icon_state = "pod_g"
|
||||
update_icon()
|
||||
return FALSE
|
||||
|
||||
attempting = TRUE //One at a time!!
|
||||
locked = TRUE
|
||||
countdown.start()
|
||||
|
||||
eject_wait = TRUE
|
||||
addtimer(CALLBACK(src, .proc/wait_complete), 30)
|
||||
|
||||
var/mob/living/carbon/human/H = new /mob/living/carbon/human(src)
|
||||
|
||||
H.hardset_dna(ui, se, H.real_name, null, mrace, features)
|
||||
@@ -172,8 +180,8 @@
|
||||
|
||||
icon_state = "pod_1"
|
||||
//Get the clone body ready
|
||||
H.setCloneLoss(CLONE_INITIAL_DAMAGE) //Yeah, clones start with very low health, not with random, because why would they start with random health
|
||||
H.setBrainLoss(CLONE_INITIAL_DAMAGE)
|
||||
maim_clone(H)
|
||||
check_brine() // put in chemicals NOW to stop death via cardiac arrest
|
||||
H.Paralyse(4)
|
||||
|
||||
if(grab_ghost_when == CLONER_FRESH_CLONE)
|
||||
@@ -196,24 +204,19 @@
|
||||
attempting = FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/clonepod/proc/wait_complete()
|
||||
eject_wait = FALSE
|
||||
|
||||
//Grow clones to maturity then kick them out. FREELOADERS
|
||||
/obj/machinery/clonepod/process()
|
||||
|
||||
if(!is_operational()) //Autoeject if power is lost
|
||||
if (occupant)
|
||||
locked = FALSE
|
||||
go_out()
|
||||
connected_message("Clone Ejected: Loss of power.")
|
||||
|
||||
else if((occupant) && (occupant.loc == src))
|
||||
if((occupant.stat == DEAD) || (occupant.suiciding) || occupant.hellbound) //Autoeject corpses and suiciding dudes.
|
||||
connected_message("Clone Rejected: Deceased.")
|
||||
SPEAK("The cloning of <b>[occupant.real_name]</b> has been \
|
||||
SPEAK("The cloning of [occupant.real_name] has been \
|
||||
aborted due to unrecoverable tissue failure.")
|
||||
locked = FALSE
|
||||
go_out()
|
||||
|
||||
else if(occupant.cloneloss > (100 - heal_level))
|
||||
@@ -221,37 +224,43 @@
|
||||
|
||||
//Slowly get that clone healed and finished.
|
||||
occupant.adjustCloneLoss(-((speed_coeff/2) * config.damage_multiplier))
|
||||
var/progress = CLONE_INITIAL_DAMAGE - occupant.getCloneLoss()
|
||||
// To avoid the default cloner making incomplete clones
|
||||
progress += (100 - MINIMUM_HEAL_LEVEL)
|
||||
var/milestone = CLONE_INITIAL_DAMAGE / flesh_number
|
||||
var/installed = flesh_number - unattached_flesh.len
|
||||
|
||||
if((progress / milestone) >= installed)
|
||||
// attach some flesh
|
||||
var/obj/item/I = pick_n_take(unattached_flesh)
|
||||
if(isorgan(I))
|
||||
var/obj/item/organ/O = I
|
||||
O.Insert(occupant)
|
||||
else if(isbodypart(I))
|
||||
var/obj/item/bodypart/BP = I
|
||||
BP.attach_limb(occupant)
|
||||
|
||||
//Premature clones may have brain damage.
|
||||
occupant.adjustBrainLoss(-((speed_coeff/2) * config.damage_multiplier))
|
||||
|
||||
//So clones don't die of oxyloss in a running pod.
|
||||
if (occupant.reagents.get_reagent_amount("salbutamol") < 30)
|
||||
occupant.reagents.add_reagent("salbutamol", 60)
|
||||
// NOBREATH species will take brute damage in crit instead
|
||||
// so heal that as well
|
||||
if(occupant.reagents.get_reagent_amount("bicaridine") < 5)
|
||||
occupant.reagents.add_reagent("bicaridine", 10)
|
||||
check_brine()
|
||||
|
||||
use_power(7500) //This might need tweaking.
|
||||
|
||||
else if((occupant.cloneloss <= (100 - heal_level)) && (!eject_wait))
|
||||
else if((occupant.cloneloss <= (100 - heal_level)))
|
||||
connected_message("Cloning Process Complete.")
|
||||
SPEAK("The cloning cycle of <b>[occupant]</b> is complete.")
|
||||
locked = FALSE
|
||||
SPEAK("The cloning cycle of [occupant.real_name] is complete.")
|
||||
go_out()
|
||||
|
||||
else if ((!occupant) || (occupant.loc != src))
|
||||
occupant = null
|
||||
if (locked)
|
||||
locked = FALSE
|
||||
if (!mess && !panel_open)
|
||||
icon_state = "pod_0"
|
||||
use_power(200)
|
||||
|
||||
//Let's unlock this early I guess. Might be too early, needs tweaking.
|
||||
/obj/machinery/clonepod/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(!(occupant || mess || locked))
|
||||
if(!(occupant || mess))
|
||||
if(default_deconstruction_screwdriver(user, "[icon_state]_maintenance", "[initial(icon_state)]",W))
|
||||
return
|
||||
|
||||
@@ -263,9 +272,9 @@
|
||||
|
||||
if(istype(W,/obj/item/device/multitool))
|
||||
var/obj/item/device/multitool/P = W
|
||||
|
||||
|
||||
if(istype(P.buffer, /obj/machinery/computer/cloning))
|
||||
if(get_area_master(P.buffer) != get_area_master(src))
|
||||
if(get_area(P.buffer) != get_area(src))
|
||||
user << "<font color = #666633>-% Cannot link machines across power zones. Buffer cleared %-</font color>"
|
||||
P.buffer = null
|
||||
return
|
||||
@@ -278,28 +287,27 @@
|
||||
P.buffer = src
|
||||
user << "<font color = #666633>-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-</font color>"
|
||||
return
|
||||
|
||||
if (W.GetID())
|
||||
if (!check_access(W))
|
||||
|
||||
if(W.GetID())
|
||||
if(!check_access(W))
|
||||
user << "<span class='danger'>Access Denied.</span>"
|
||||
return
|
||||
if (!locked || !occupant)
|
||||
return
|
||||
if (occupant.health < -20 && occupant.stat != DEAD)
|
||||
user << "<span class='danger'>Access Refused. Patient status still unstable.</span>"
|
||||
if(!(occupant || mess))
|
||||
user << "<span class='danger'>Error: Pod has no occupant.</span>"
|
||||
return
|
||||
else
|
||||
locked = FALSE
|
||||
user << "System unlocked."
|
||||
connected_message("Authorized Ejection")
|
||||
SPEAK("An authorized ejection of [occupant.real_name] has occurred.")
|
||||
user << "<span class='notice'>You force an emergency ejection. </span>"
|
||||
go_out()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/clonepod/emag_act(mob/user)
|
||||
if (isnull(occupant))
|
||||
if(!occupant)
|
||||
return
|
||||
user << "<span class='notice'>You force an emergency ejection.</span>"
|
||||
locked = FALSE
|
||||
go_out()
|
||||
user << "<span class='warning'>You corrupt the genetic compiler.</span>"
|
||||
malfunction()
|
||||
|
||||
//Put messages in the connected computer's temp var for display.
|
||||
/obj/machinery/clonepod/proc/connected_message(message)
|
||||
@@ -312,31 +320,17 @@
|
||||
connected.updateUsrDialog()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/clonepod/verb/eject()
|
||||
set name = "Eject Cloner"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(!usr)
|
||||
return
|
||||
if(usr.stat || !usr.canmove || usr.restrained())
|
||||
return
|
||||
go_out()
|
||||
add_fingerprint(usr)
|
||||
|
||||
/obj/machinery/clonepod/proc/go_out()
|
||||
if (locked)
|
||||
return
|
||||
countdown.stop()
|
||||
|
||||
if (mess) //Clean that mess and dump those gibs!
|
||||
if(mess) //Clean that mess and dump those gibs!
|
||||
mess = FALSE
|
||||
new /obj/effect/gibspawner/generic(loc)
|
||||
audible_message("<span class='italics'>You hear a splat.</span>")
|
||||
icon_state = "pod_0"
|
||||
return
|
||||
|
||||
if (!occupant)
|
||||
if(!occupant)
|
||||
return
|
||||
|
||||
if(grab_ghost_when == CLONER_MATURE_CLONE)
|
||||
@@ -349,7 +343,6 @@
|
||||
var/turf/T = get_turf(src)
|
||||
occupant.forceMove(T)
|
||||
icon_state = "pod_0"
|
||||
eject_wait = FALSE //If it's still set somehow.
|
||||
occupant.domutcheck(1) //Waiting until they're out before possible monkeyizing. The 1 argument forces powers to manifest.
|
||||
occupant = null
|
||||
|
||||
@@ -383,14 +376,12 @@
|
||||
/obj/machinery/clonepod/ex_act(severity, target)
|
||||
..()
|
||||
if(!QDELETED(src))
|
||||
locked = FALSE
|
||||
go_out()
|
||||
|
||||
/obj/machinery/clonepod/handle_atom_del(atom/A)
|
||||
if(A == occupant)
|
||||
occupant = null
|
||||
locked = FALSE
|
||||
go_out()
|
||||
countdown.stop()
|
||||
|
||||
/obj/machinery/clonepod/proc/horrifyingsound()
|
||||
for(var/i in 1 to 5)
|
||||
@@ -401,23 +392,44 @@
|
||||
|
||||
/obj/machinery/clonepod/deconstruct(disassembled = TRUE)
|
||||
if(occupant)
|
||||
locked = FALSE
|
||||
go_out()
|
||||
..()
|
||||
|
||||
/obj/machinery/clonepod/proc/maim_clone(mob/living/carbon/human/H)
|
||||
if(!unattached_flesh)
|
||||
unattached_flesh = list()
|
||||
else
|
||||
for(var/fl in unattached_flesh)
|
||||
qdel(fl)
|
||||
unattached_flesh.Cut()
|
||||
|
||||
/*
|
||||
* Diskette Box
|
||||
*/
|
||||
H.setCloneLoss(CLONE_INITIAL_DAMAGE) //Yeah, clones start with very low health, not with random, because why would they start with random health
|
||||
H.setBrainLoss(CLONE_INITIAL_DAMAGE)
|
||||
// In addition to being cellularly damaged and having barely any
|
||||
// brain function, they also have no limbs or internal organs.
|
||||
var/static/list/zones = list("r_arm", "l_arm", "r_leg", "l_leg")
|
||||
for(var/zone in zones)
|
||||
var/obj/item/bodypart/BP = H.get_bodypart(zone)
|
||||
BP.drop_limb()
|
||||
BP.forceMove(src)
|
||||
unattached_flesh += BP
|
||||
|
||||
/obj/item/weapon/storage/box/disks
|
||||
name = "diskette box"
|
||||
icon_state = "disk_kit"
|
||||
for(var/o in H.internal_organs)
|
||||
var/obj/item/organ/organ = o
|
||||
if(!istype(organ) || organ.vital)
|
||||
continue
|
||||
organ.Remove(H, special=TRUE)
|
||||
organ.forceMove(src)
|
||||
unattached_flesh += organ
|
||||
|
||||
/obj/item/weapon/storage/box/disks/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/disk/data(src)
|
||||
flesh_number = unattached_flesh.len
|
||||
|
||||
/obj/machinery/clonepod/proc/check_brine()
|
||||
// Clones are in a pickled bath of mild chemicals, keeping
|
||||
// them alive, despite their lack of internal organs
|
||||
for(var/bt in brine_types)
|
||||
if(occupant.reagents.get_reagent_amount(bt) < 1)
|
||||
occupant.reagents.add_reagent(bt, 1)
|
||||
|
||||
/*
|
||||
* Manual -- A big ol' manual.
|
||||
@@ -449,3 +461,4 @@
|
||||
|
||||
#undef CLONE_INITIAL_DAMAGE
|
||||
#undef SPEAK
|
||||
#undef MINIMUM_HEAL_LEVEL
|
||||
|
||||
@@ -416,6 +416,9 @@
|
||||
/obj/item/weapon/circuitboard/computer/white_ship
|
||||
name = "White Ship (Computer Board)"
|
||||
build_path = /obj/machinery/computer/shuttle/white_ship
|
||||
/obj/item/weapon/circuitboard/computer/auxillary_base
|
||||
name = "Auxillary Base Management Console (Computer Board)"
|
||||
build_path = /obj/machinery/computer/auxillary_base
|
||||
/obj/item/weapon/circuitboard/computer/holodeck// Not going to let people get this, but it's just here for future
|
||||
name = "Holodeck Control (Computer Board)"
|
||||
build_path = /obj/machinery/computer/holodeck
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
var/obj/item/device/multitool/P = W
|
||||
|
||||
if(istype(P.buffer, /obj/machinery/clonepod))
|
||||
if(get_area_master(P.buffer) != get_area_master(src))
|
||||
if(get_area(P.buffer) != get_area(src))
|
||||
user << "<font color = #666633>-% Cannot link machines across power zones. Buffer cleared %-</font color>"
|
||||
P.buffer = null
|
||||
return
|
||||
|
||||
@@ -64,11 +64,12 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
|
||||
playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0)
|
||||
if("login")
|
||||
var/mob/M = usr
|
||||
|
||||
var/obj/item/weapon/card/id/I = M.get_active_held_item()
|
||||
if (istype(I, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/pda = I
|
||||
I = pda.id
|
||||
if (I && istype(I))
|
||||
if(!istype(I))
|
||||
I = M.get_idcard()
|
||||
|
||||
if(I && istype(I))
|
||||
if(src.check_access(I))
|
||||
authenticated = 1
|
||||
auth_id = "[I.registered_name] ([I.assignment])"
|
||||
@@ -148,7 +149,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
|
||||
|
||||
if("buyshuttle")
|
||||
if(authenticated==2)
|
||||
var/list/shuttles = flatten_list(shuttle_templates)
|
||||
var/list/shuttles = flatten_list(SSmapping.shuttle_templates)
|
||||
var/datum/map_template/shuttle/S = locate(href_list["chosen_shuttle"]) in shuttles
|
||||
if(S && istype(S))
|
||||
if(SSshuttle.emergency.mode != SHUTTLE_RECALL && SSshuttle.emergency.mode != SHUTTLE_IDLE)
|
||||
@@ -521,8 +522,8 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
|
||||
|
||||
if(STATE_PURCHASE)
|
||||
dat += "Budget: [SSshuttle.points] Credits.<BR>"
|
||||
for(var/shuttle_id in shuttle_templates)
|
||||
var/datum/map_template/shuttle/S = shuttle_templates[shuttle_id]
|
||||
for(var/shuttle_id in SSmapping.shuttle_templates)
|
||||
var/datum/map_template/shuttle/S = SSmapping.shuttle_templates[shuttle_id]
|
||||
if(S.can_be_bought && S.credit_cost < INFINITY)
|
||||
dat += "[S.name] | [S.credit_cost] Credits<BR>"
|
||||
dat += "[S.description]<BR>"
|
||||
|
||||
@@ -762,7 +762,7 @@ What a mess.*/
|
||||
if(4)
|
||||
R.fields["criminal"] = pick("None", "*Arrest*", "Incarcerated", "Parolled", "Discharged")
|
||||
if(5)
|
||||
R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit")
|
||||
R.fields["p_stat"] = pick("*Unconscious*", "Active", "Physically Unfit")
|
||||
if(6)
|
||||
R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable")
|
||||
if(7)
|
||||
|
||||
@@ -81,14 +81,6 @@ var/list/airlock_overlays = list()
|
||||
var/airlock_material = null //material of inner filling; if its an airlock with glass, this should be set to "glass"
|
||||
var/overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
|
||||
var/image/old_frame_overlay //keep those in order to prevent unnecessary updating
|
||||
var/image/old_filling_overlay
|
||||
var/image/old_lights_overlay
|
||||
var/image/old_panel_overlay
|
||||
var/image/old_weld_overlay
|
||||
var/image/old_sparks_overlay
|
||||
var/image/old_dam_overlay
|
||||
|
||||
var/cyclelinkeddir = 0
|
||||
var/obj/machinery/door/airlock/cyclelinkedairlock
|
||||
var/shuttledocked = 0
|
||||
@@ -452,35 +444,14 @@ var/list/airlock_overlays = list()
|
||||
else
|
||||
panel_overlay = get_airlock_overlay("panel_opening", overlays_file)
|
||||
|
||||
//doesn't use cut_overlays() for performance reasons
|
||||
if(frame_overlay != old_frame_overlay)
|
||||
overlays -= old_frame_overlay
|
||||
add_overlay(frame_overlay)
|
||||
old_frame_overlay = frame_overlay
|
||||
if(filling_overlay != old_filling_overlay)
|
||||
overlays -= old_filling_overlay
|
||||
add_overlay(filling_overlay)
|
||||
old_filling_overlay = filling_overlay
|
||||
if(lights_overlay != old_lights_overlay)
|
||||
overlays -= old_lights_overlay
|
||||
add_overlay(lights_overlay)
|
||||
old_lights_overlay = lights_overlay
|
||||
if(panel_overlay != old_panel_overlay)
|
||||
overlays -= old_panel_overlay
|
||||
add_overlay(panel_overlay)
|
||||
old_panel_overlay = panel_overlay
|
||||
if(weld_overlay != old_weld_overlay)
|
||||
overlays -= old_weld_overlay
|
||||
add_overlay(weld_overlay)
|
||||
old_weld_overlay = weld_overlay
|
||||
if(sparks_overlay != old_sparks_overlay)
|
||||
overlays -= old_sparks_overlay
|
||||
add_overlay(sparks_overlay)
|
||||
old_sparks_overlay = sparks_overlay
|
||||
if(damag_overlay != old_dam_overlay)
|
||||
overlays -= old_dam_overlay
|
||||
add_overlay(damag_overlay)
|
||||
old_dam_overlay = damag_overlay
|
||||
cut_overlays()
|
||||
add_overlay(frame_overlay)
|
||||
add_overlay(filling_overlay)
|
||||
add_overlay(lights_overlay)
|
||||
add_overlay(panel_overlay)
|
||||
add_overlay(weld_overlay)
|
||||
add_overlay(sparks_overlay)
|
||||
add_overlay(damag_overlay)
|
||||
|
||||
/proc/get_airlock_overlay(icon_state, icon_file)
|
||||
var/iconkey = "[icon_state][icon_file]"
|
||||
|
||||
@@ -426,7 +426,7 @@
|
||||
use_power = FALSE
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
damage_deflection = 30
|
||||
normal_integrity = 400
|
||||
normal_integrity = 240
|
||||
var/construction_state = GEAR_SECURE //Pinion airlocks have custom deconstruction
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/New()
|
||||
@@ -445,13 +445,15 @@
|
||||
var/gear_text = "The cogwheel is flickering and twisting wildly. Report this to a coder."
|
||||
switch(construction_state)
|
||||
if(GEAR_SECURE)
|
||||
gear_text = "<span class='brass'>The cogwheel is solidly <b>screwed</b> to the brass around it.</span>"
|
||||
if(GEAR_UNFASTENED)
|
||||
gear_text = "<span class='brass'>The cogwheel is <i>unscrewed</i>, but is still <b>wrenched</b> to the brass.</span>"
|
||||
gear_text = "<span class='brass'>The cogwheel is solidly <b>wrenched</b> to the brass around it.</span>"
|
||||
if(GEAR_LOOSE)
|
||||
gear_text = "<span class='alloy'>The cogwheel has been <i>loosened</i>, but remains <b>connected loosely</b> to the door!</span>"
|
||||
user << gear_text
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/emp_act(severity)
|
||||
if(prob(80/severity))
|
||||
open()
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/canAIControl(mob/user)
|
||||
return (is_servant_of_ratvar(user) && !isAllPowerCut())
|
||||
|
||||
@@ -495,34 +497,11 @@
|
||||
/obj/machinery/door/airlock/clockwork/proc/attempt_construction(obj/item/I, mob/living/user)
|
||||
if(!I || !user || !user.canUseTopic(src))
|
||||
return 0
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(construction_state == GEAR_SECURE)
|
||||
user.visible_message("<span class='notice'>[user] begins unfastening [src]'s cogwheel...</span>", "<span class='notice'>You begin unfastening [src]'s cogwheel...</span>")
|
||||
playsound(src, I.usesound, 50, 1)
|
||||
if(!do_after(user, 100*I.toolspeed, target = src) || construction_state != GEAR_SECURE)
|
||||
return 1 //Returns 1 so as not to have extra interactions with the tools used (i.e. prying open)
|
||||
user.visible_message("<span class='notice'>[user] unfastens [src]'s cogwheel!</span>", "<span class='notice'>[src]'s cogwheel shifts slightly with a pop.</span>")
|
||||
playsound(src, 'sound/items/Screwdriver2.ogg', 50, 1)
|
||||
construction_state = GEAR_UNFASTENED
|
||||
else if(construction_state == GEAR_UNFASTENED)
|
||||
user.visible_message("<span class='notice'>[user] begins fastening [src]'s cogwheel...</span>", "<span class='notice'>You begin fastening [src]'s cogwheel...</span>")
|
||||
playsound(src, I.usesound, 50, 1)
|
||||
if(!do_after(user, 75*I.toolspeed, target = src) || construction_state != GEAR_UNFASTENED)
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] fastens [src]'s cogwheel!</span>", "<span class='notice'>[src]'s cogwheel shifts back into place.</span>")
|
||||
playsound(src, 'sound/items/Screwdriver2.ogg', 50, 1)
|
||||
construction_state = GEAR_SECURE
|
||||
else if(construction_state == GEAR_LOOSE)
|
||||
user << "<span class='warning'>The gear isn't secure enough to fasten!</span>"
|
||||
return 1
|
||||
else if(istype(I, /obj/item/weapon/wrench))
|
||||
if(construction_state == GEAR_SECURE)
|
||||
user << "<span class='warning'>[src]'s cogwheel is too tightly secured! Your [I.name] can't get a solid grip!</span>"
|
||||
return 0
|
||||
else if(construction_state == GEAR_UNFASTENED)
|
||||
user.visible_message("<span class='notice'>[user] begins loosening [src]'s cogwheel...</span>", "<span class='notice'>You begin loosening [src]'s cogwheel...</span>")
|
||||
playsound(src, I.usesound, 50, 1)
|
||||
if(!do_after(user, 100*I.toolspeed, target = src) || construction_state != GEAR_UNFASTENED)
|
||||
if(!do_after(user, 75*I.toolspeed, target = src) || construction_state != GEAR_SECURE)
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] loosens [src]'s cogwheel!</span>", "<span class='notice'>[src]'s cogwheel pops off and dangles loosely.</span>")
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
@@ -534,16 +513,16 @@
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] tightens [src]'s cogwheel!</span>", "<span class='notice'>You firmly tighten [src]'s cogwheel into place.</span>")
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
construction_state = GEAR_UNFASTENED
|
||||
construction_state = GEAR_SECURE
|
||||
return 1
|
||||
else if(istype(I, /obj/item/weapon/crowbar))
|
||||
if(construction_state == GEAR_SECURE || construction_state == GEAR_UNFASTENED)
|
||||
if(construction_state == GEAR_SECURE)
|
||||
user << "<span class='warning'>[src]'s cogwheel is too tightly secured! Your [I.name] can't reach under it!</span>"
|
||||
return 1
|
||||
else if(construction_state == GEAR_LOOSE)
|
||||
user.visible_message("<span class='notice'>[user] begins slowly lifting off [src]'s cogwheel...</span>", "<span class='notice'>You slowly begin lifting off [src]'s cogwheel...</span>")
|
||||
playsound(src, I.usesound, 50, 1)
|
||||
if(!do_after(user, 100*I.toolspeed, target = src) || construction_state != GEAR_LOOSE)
|
||||
if(!do_after(user, 75*I.toolspeed, target = src) || construction_state != GEAR_LOOSE)
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] lifts off [src]'s cogwheel, causing it to fall apart!</span>", \
|
||||
"<span class='notice'>You lift off [src]'s cogwheel, causing it to fall apart!</span>")
|
||||
|
||||
@@ -36,9 +36,6 @@
|
||||
var/alert = signal.data["alert"]
|
||||
|
||||
var/area/our_area = get_area(src)
|
||||
if (our_area.master)
|
||||
our_area = our_area.master
|
||||
|
||||
if(alarm_area == our_area.name)
|
||||
switch(alert)
|
||||
if("severe")
|
||||
|
||||
@@ -339,6 +339,10 @@
|
||||
change_construction_value(-2)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/window/clockwork/emp_act(severity)
|
||||
if(prob(80/severity))
|
||||
open()
|
||||
|
||||
/obj/machinery/door/window/clockwork/ratvar_act()
|
||||
if(ratvar_awakens)
|
||||
obj_integrity = max_integrity
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
return
|
||||
var/area/A = get_area(src)
|
||||
A.firealert(src)
|
||||
playsound(src.loc, 'goon/sound/machinery/FireAlarm.ogg', 75, 1)
|
||||
playsound(src.loc, 'goon/sound/machinery/FireAlarm.ogg', 75)
|
||||
|
||||
/obj/machinery/firealarm/proc/alarm_in(time)
|
||||
addtimer(CALLBACK(src, .proc/alarm), time)
|
||||
|
||||
@@ -171,7 +171,7 @@ var/list/holopads = list()
|
||||
var/area/holo_area = get_area(src)
|
||||
var/area/eye_area = get_area(master.eyeobj)
|
||||
|
||||
if(eye_area in holo_area.master.related)
|
||||
if(eye_area in holo_area.related)
|
||||
return TRUE
|
||||
|
||||
clear_holo(master)//If not, we want to get rid of the hologram.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
else
|
||||
icon_state = "donateidle"
|
||||
|
||||
overlays = null
|
||||
cut_overlays()
|
||||
|
||||
if(beaker)
|
||||
if(attached)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
on = !on
|
||||
|
||||
for(var/area/A in area.master.related)
|
||||
for(var/area/A in area.related)
|
||||
A.lightswitch = on
|
||||
A.updateicon()
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
L.on = on
|
||||
L.updateicon()
|
||||
|
||||
area.master.power_change()
|
||||
area.power_change()
|
||||
|
||||
/obj/machinery/light_switch/power_change()
|
||||
|
||||
|
||||
@@ -571,11 +571,9 @@
|
||||
|
||||
/obj/machinery/porta_turret/aux_base
|
||||
name = "perimeter defense turret"
|
||||
desc = "A plasma cutter turret calibrated to defend outposts against non-humanoid fauna."
|
||||
|
||||
req_access = list() //Can be disabled/enabled by any humanoid!
|
||||
desc = "A plasma beam turret calibrated to defend outposts against non-humanoid fauna. It is more effective when exposed to the environment."
|
||||
installation = null
|
||||
lethal_projectile = /obj/item/projectile/plasma
|
||||
lethal_projectile = /obj/item/projectile/plasma/turret
|
||||
lethal_projectile_sound = 'sound/weapons/plasma_cutter.ogg'
|
||||
mode = TURRET_LETHAL //It would be useless in stun mode anyway
|
||||
faction = "neutral" //Minebots, medibots, etc that should not be shot.
|
||||
@@ -586,6 +584,9 @@
|
||||
/obj/machinery/porta_turret/aux_base/setup()
|
||||
return
|
||||
|
||||
/obj/machinery/porta_turret/aux_base/interact(mob/user) //Controlled solely from the base console.
|
||||
return
|
||||
|
||||
/obj/machinery/porta_turret/aux_base/New()
|
||||
..()
|
||||
cover.name = name
|
||||
@@ -636,11 +637,7 @@
|
||||
break
|
||||
|
||||
if(!control_area)
|
||||
var/area/CA = get_area(src)
|
||||
if(CA.master && CA.master != CA)
|
||||
control_area = CA.master
|
||||
else
|
||||
control_area = CA
|
||||
control_area = get_area(src)
|
||||
|
||||
for(var/obj/machinery/porta_turret/T in control_area)
|
||||
turrets |= T
|
||||
|
||||
@@ -66,6 +66,10 @@ var/list/obj/machinery/requests_console/allConsoles = list()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/requests_console/update_icon()
|
||||
if(stat & NOPOWER)
|
||||
SetLuminosity(0)
|
||||
else
|
||||
SetLuminosity(2)
|
||||
if(open)
|
||||
if(!hackState)
|
||||
icon_state="req_comp_open"
|
||||
@@ -188,7 +192,6 @@ var/list/obj/machinery/requests_console/allConsoles = list()
|
||||
if (Console.department == department)
|
||||
Console.newmessagepriority = 0
|
||||
Console.update_icon()
|
||||
Console.SetLuminosity(1)
|
||||
newmessagepriority = 0
|
||||
update_icon()
|
||||
var/messageComposite = ""
|
||||
@@ -375,7 +378,6 @@ var/list/obj/machinery/requests_console/allConsoles = list()
|
||||
alert = "Message from [department][authentic]"
|
||||
Console.createmessage(src, alert , sending, 1, 1)
|
||||
screen = 6
|
||||
Console.SetLuminosity(2)
|
||||
|
||||
if(radio_freq)
|
||||
Radio.talk_into(src,"[alert]: <i>[message]</i>",radio_freq)
|
||||
@@ -476,7 +478,6 @@ var/list/obj/machinery/requests_console/allConsoles = list()
|
||||
playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||
say(title)
|
||||
src.messages += "<b>From:</b> [linkedsender]<BR>[message]"
|
||||
SetLuminosity(2)
|
||||
|
||||
/obj/machinery/requests_console/attackby(obj/item/weapon/O, mob/user, params)
|
||||
if(istype(O, /obj/item/weapon/crowbar))
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
qdel(O)
|
||||
|
||||
user << "<span class='notice'>You insert [count] metal sheet\s into \the [src].</span>"
|
||||
src.overlays -= "fab-load-metal"
|
||||
cut_overlay("fab-load-metal")
|
||||
updateDialog()
|
||||
else
|
||||
user << "\The [src] is full."
|
||||
@@ -143,7 +143,7 @@ Please wait until completion...</TT><BR>
|
||||
src.being_built = null
|
||||
src.use_power = 1
|
||||
src.operating = 0
|
||||
src.overlays -= "fab-active"
|
||||
cut_overlay("fab-active")
|
||||
return
|
||||
|
||||
updateUsrDialog()
|
||||
|
||||
@@ -153,8 +153,7 @@
|
||||
maptext = new_text
|
||||
|
||||
/obj/machinery/status_display/proc/remove_display()
|
||||
if(overlays.len)
|
||||
cut_overlays()
|
||||
cut_overlays()
|
||||
if(maptext)
|
||||
maptext = ""
|
||||
|
||||
@@ -277,8 +276,7 @@
|
||||
|
||||
/obj/machinery/ai_status_display/proc/set_picture(state)
|
||||
picture_state = state
|
||||
if(overlays.len)
|
||||
cut_overlays()
|
||||
cut_overlays()
|
||||
add_overlay(image('icons/obj/status_display.dmi', icon_state=picture_state))
|
||||
|
||||
#undef CHARS_PER_LINE
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
/obj/machinery/suit_storage_unit/hos
|
||||
suit_type = /obj/item/clothing/suit/space/hardsuit/security/hos
|
||||
mask_type = /obj/item/clothing/mask/gas/sechailer
|
||||
storage_type = /obj/item/weapon/tank/internals/oxygen
|
||||
|
||||
/obj/machinery/suit_storage_unit/atmos
|
||||
suit_type = /obj/item/clothing/suit/space/hardsuit/engine/atmos
|
||||
|
||||
+141
-76
@@ -623,6 +623,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
/obj/machinery/vending/[vendors name here] // --vending machine template :)
|
||||
name = ""
|
||||
desc = ""
|
||||
@@ -631,6 +632,7 @@
|
||||
products = list()
|
||||
contraband = list()
|
||||
premium = list()
|
||||
|
||||
IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY CANISTER CHARGES in vending_items.dm
|
||||
*/
|
||||
|
||||
@@ -699,6 +701,28 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
refill_canister = /obj/item/weapon/vending_refill/snack
|
||||
var/chef_compartment_access = "28"
|
||||
|
||||
/obj/machinery/vending/snack/random
|
||||
name = "\improper Random Snackies"
|
||||
desc = "Uh oh!"
|
||||
|
||||
/obj/machinery/vending/snack/random/New()
|
||||
..()
|
||||
var/T = pick(subtypesof(/obj/machinery/vending/snack) - /obj/machinery/vending/snack/random)
|
||||
new T(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/vending/snack/blue
|
||||
icon_state = "snackblue"
|
||||
|
||||
/obj/machinery/vending/snack/orange
|
||||
icon_state = "snackorange"
|
||||
|
||||
/obj/machinery/vending/snack/green
|
||||
icon_state = "snackgreen"
|
||||
|
||||
/obj/machinery/vending/snack/teal
|
||||
icon_state = "snackteal"
|
||||
|
||||
/obj/machinery/vending/sustenance
|
||||
name = "\improper Sustenance Vendor"
|
||||
desc = "A vending machine which vends food, as required by section 47-C of the NT's Prisoner Ethical Treatment Agreement."
|
||||
@@ -723,12 +747,67 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space."
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/pwr_game = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime = 10)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko = 6)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko = 6,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/shamblers = 6)
|
||||
premium = list(/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola = 1)
|
||||
refill_canister = /obj/item/weapon/vending_refill/cola
|
||||
|
||||
/obj/machinery/vending/cola/random
|
||||
name = "\improper Random Drinkies"
|
||||
desc = "Uh oh!"
|
||||
|
||||
/obj/machinery/vending/cola/random/New()
|
||||
..()
|
||||
var/T = pick(subtypesof(/obj/machinery/vending/cola) - /obj/machinery/vending/cola/random)
|
||||
new T(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/vending/cola/blue
|
||||
icon_state = "Cola_Machine"
|
||||
|
||||
/obj/machinery/vending/cola/black
|
||||
icon_state = "cola_black"
|
||||
|
||||
/obj/machinery/vending/cola/red
|
||||
icon_state = "red_cola"
|
||||
name = "\improper Space Cola Vendor"
|
||||
desc = "It vends cola, in space."
|
||||
product_slogans = "Cola in space!"
|
||||
|
||||
/obj/machinery/vending/cola/space_up
|
||||
icon_state = "space_up"
|
||||
name = "\improper Space-up! Vendor"
|
||||
desc = "Indulge in an explosion of flavor."
|
||||
product_slogans = "Space-up! Like a hull breach in your mouth."
|
||||
|
||||
/obj/machinery/vending/cola/starkist
|
||||
icon_state = "starkist"
|
||||
name = "\improper Star-kist Vendor"
|
||||
desc = "The taste of a star in liquid form."
|
||||
product_slogans = "Drink the stars! Star-kist!"
|
||||
|
||||
/obj/machinery/vending/cola/sodie
|
||||
icon_state = "soda"
|
||||
|
||||
/obj/machinery/vending/cola/pwr_game
|
||||
icon_state = "pwr_game"
|
||||
name = "\improper Pwr Game Vendor"
|
||||
desc = "You want it, we got it. Brought to you in partnership with Vlad's Salads."
|
||||
product_slogans = "The POWER that gamers crave! PWR GAME!"
|
||||
|
||||
/obj/machinery/vending/cola/shamblers
|
||||
name = "\improper Shambler's Vendor"
|
||||
desc = "~Shake me up some of that Shambler's Juice!~"
|
||||
icon_state = "shamblers_juice"
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/pwr_game = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/shamblers = 10)
|
||||
product_slogans = "~Shake me up some of that Shambler's Juice!~"
|
||||
product_ads = "Refreshing!;Jyrbv dv lg jfdv fw kyrk Jyrdscvi'j Alztv!;Over 1 trillion souls drank!;Thirsty? Nyp efk uizeb kyv uribevjj?;Kyv Jyrdscvi uizebj kyv ezxyk!;Drink up!;Krjkp."
|
||||
|
||||
|
||||
//This one's from bay12
|
||||
/obj/machinery/vending/cart
|
||||
name = "\improper PTech"
|
||||
@@ -910,65 +989,39 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
/obj/item/clothing/suit/hooded/carp_costume = 1,
|
||||
/obj/item/clothing/suit/hooded/ian_costume = 1,
|
||||
/obj/item/clothing/suit/hooded/bee_costume = 1,
|
||||
/obj/item/clothing/suit/snowman = 1,
|
||||
/obj/item/clothing/head/snowman = 1,
|
||||
/obj/item/clothing/suit/snowman = 1,/obj/item/clothing/head/snowman = 1,
|
||||
/obj/item/clothing/mask/joy = 1,
|
||||
/obj/item/clothing/head/cueball = 1,
|
||||
/obj/item/clothing/under/scratch = 1,
|
||||
/obj/item/clothing/under/sailor=1,
|
||||
/obj/item/clothing/shoes/megaboots=1,
|
||||
/obj/item/clothing/gloves/megagloves=1,
|
||||
/obj/item/clothing/head/helmet/megahelmet=1,
|
||||
/obj/item/clothing/under/mega=1,
|
||||
/obj/item/clothing/shoes/protoboots=1,
|
||||
/obj/item/clothing/gloves/protogloves=1,
|
||||
/obj/item/clothing/head/helmet/protohelmet = 1,
|
||||
/obj/item/clothing/under/proto = 1,
|
||||
/obj/item/clothing/shoes/megaxboots = 1,
|
||||
/obj/item/clothing/gloves/megaxgloves = 1,
|
||||
/obj/item/clothing/head/helmet/megaxhelmet = 1,
|
||||
/obj/item/clothing/under/megax = 1,
|
||||
/obj/item/clothing/shoes/joeboots = 1,
|
||||
/obj/item/clothing/gloves/joegloves = 1,
|
||||
/obj/item/clothing/head/helmet/joehelmet = 1,
|
||||
/obj/item/clothing/under/joe = 1,
|
||||
/obj/item/clothing/shoes/megaboots=1,/obj/item/clothing/gloves/megagloves=1,/obj/item/clothing/head/helmet/megahelmet=1,/obj/item/clothing/under/mega=1,
|
||||
/obj/item/clothing/shoes/protoboots=1,/obj/item/clothing/gloves/protogloves=1,/obj/item/clothing/head/helmet/protohelmet = 1,/obj/item/clothing/under/proto = 1,
|
||||
/obj/item/clothing/shoes/megaxboots = 1,/obj/item/clothing/gloves/megaxgloves = 1,/obj/item/clothing/head/helmet/megaxhelmet = 1,/obj/item/clothing/under/megax = 1,
|
||||
/obj/item/clothing/shoes/joeboots = 1,/obj/item/clothing/gloves/joegloves = 1,/obj/item/clothing/head/helmet/joehelmet = 1,/obj/item/clothing/under/joe = 1,
|
||||
/obj/item/clothing/under/vault = 1,
|
||||
/obj/item/clothing/under/roll = 1,
|
||||
/obj/item/clothing/head/clownpiece = 1,
|
||||
/obj/item/clothing/under/clownpiece = 1,
|
||||
/obj/item/clothing/suit/clownpiece = 1
|
||||
/obj/item/clothing/head/clownpiece = 1,/obj/item/clothing/under/clownpiece = 1,/obj/item/clothing/suit/clownpiece = 1
|
||||
)
|
||||
contraband = list(/obj/item/clothing/suit/judgerobe = 1,
|
||||
/obj/item/clothing/head/powdered_wig = 1,
|
||||
contraband = list(/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,
|
||||
/obj/item/weapon/gun/magic/wand = 2,
|
||||
/obj/item/clothing/glasses/sunglasses/garb = 2,
|
||||
/obj/item/clothing/gloves/anchor_arms = 1,
|
||||
/obj/item/clothing/suit/kaminacape = 1,
|
||||
/obj/item/clothing/under/soldieruniform = 1,
|
||||
/obj/item/clothing/head/stalhelm = 1,
|
||||
/obj/item/clothing/suit/soldiercoat = 1,
|
||||
/obj/item/clothing/under/soldieruniform = 1,/obj/item/clothing/head/stalhelm = 1,/obj/item/clothing/suit/soldiercoat = 1,
|
||||
/obj/item/clothing/under/officeruniform = 1,
|
||||
/obj/item/clothing/head/naziofficer = 1,
|
||||
/obj/item/clothing/suit/officercoat = 1,
|
||||
/obj/item/clothing/head/panzer = 1,
|
||||
/obj/item/clothing/under/russobluecamooutfit = 1,
|
||||
/obj/item/clothing/head/russobluecamohat = 1,
|
||||
/obj/item/clothing/suit/russofurcoat = 1,
|
||||
/obj/item/clothing/head/russofurhat = 1,
|
||||
/obj/item/clothing/under/rottensuit = 1,
|
||||
/obj/item/clothing/shoes/rottenshoes = 1,
|
||||
/obj/item/clothing/head/helmet/biker = 1,
|
||||
/obj/item/clothing/under/bikersuit = 1,
|
||||
/obj/item/clothing/gloves/bikergloves = 1,
|
||||
/obj/item/clothing/under/russobluecamooutfit = 1,/obj/item/clothing/head/russobluecamohat = 1,
|
||||
/obj/item/clothing/suit/russofurcoat = 1,/obj/item/clothing/head/russofurhat = 1,
|
||||
/obj/item/clothing/under/rottensuit = 1,/obj/item/clothing/shoes/rottenshoes = 1,
|
||||
/obj/item/clothing/head/helmet/biker = 1,/obj/item/clothing/under/bikersuit = 1,/obj/item/clothing/gloves/bikergloves = 1,
|
||||
/obj/item/clothing/under/jacketsuit = 1,
|
||||
/obj/item/clothing/head/helmet/richard = 1,
|
||||
/obj/item/clothing/under/vault13 = 1
|
||||
)
|
||||
premium = list(/obj/item/clothing/suit/pirate/captain = 2,
|
||||
/obj/item/clothing/head/pirate/captain = 2,
|
||||
/obj/item/clothing/head/helmet/roman = 1,
|
||||
/obj/item/clothing/head/helmet/roman/legionaire = 1,
|
||||
/obj/item/clothing/under/roman = 1,
|
||||
premium = list(/obj/item/clothing/suit/pirate/captain = 2,/obj/item/clothing/head/pirate/captain = 2,
|
||||
/obj/item/clothing/head/helmet/roman = 1,/obj/item/clothing/head/helmet/roman/legionaire = 1,/obj/item/clothing/under/roman = 1,
|
||||
/obj/item/clothing/shoes/roman = 1,
|
||||
/obj/item/weapon/shield/riot/roman = 1,
|
||||
/obj/item/weapon/skub = 1
|
||||
@@ -1058,36 +1111,38 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
product_slogans = "Dress for success!;Prepare to look swagalicious!;Look at all this free swag!;Why leave style up to fate? Use the ClothesMate!"
|
||||
vend_reply = "Thank you for using the ClothesMate!"
|
||||
products = list(/obj/item/clothing/head/that=2,/obj/item/clothing/head/fedora=1,/obj/item/clothing/glasses/monocle=1,
|
||||
/obj/item/clothing/suit/jacket=2, /obj/item/clothing/suit/jacket/puffer/vest=2, /obj/item/clothing/suit/jacket/puffer=2,
|
||||
/obj/item/clothing/under/suit_jacket/navy=1,/obj/item/clothing/under/suit_jacket/really_black=1,/obj/item/clothing/under/suit_jacket/burgundy=1,
|
||||
/obj/item/clothing/under/suit_jacket/charcoal=1, /obj/item/clothing/under/suit_jacket/white=1,/obj/item/clothing/under/kilt=1,/obj/item/clothing/under/overalls=1,
|
||||
/obj/item/clothing/under/sl_suit=1,/obj/item/clothing/under/pants/jeans=3,/obj/item/clothing/under/pants/classicjeans=2,
|
||||
/obj/item/clothing/under/pants/camo = 1,/obj/item/clothing/under/pants/blackjeans=2,/obj/item/clothing/under/pants/khaki=2,
|
||||
/obj/item/clothing/under/pants/white=2,/obj/item/clothing/under/pants/red=1,/obj/item/clothing/under/pants/black=2,
|
||||
/obj/item/clothing/under/pants/tan=2,/obj/item/clothing/under/pants/track=1,/obj/item/clothing/suit/jacket/miljacket = 1,
|
||||
/obj/item/clothing/neck/tie/blue=1, /obj/item/clothing/neck/tie/red=1, /obj/item/clothing/neck/tie/black=1, /obj/item/clothing/neck/tie/horrible=1,
|
||||
/obj/item/clothing/neck/scarf/red=1,/obj/item/clothing/neck/scarf/green=1,/obj/item/clothing/neck/scarf/darkblue=1,
|
||||
/obj/item/clothing/neck/scarf/purple=1,/obj/item/clothing/neck/scarf/yellow=1,/obj/item/clothing/neck/scarf/orange=1,
|
||||
/obj/item/clothing/neck/scarf/cyan=1,/obj/item/clothing/neck/scarf=1,/obj/item/clothing/neck/scarf/black=1,
|
||||
/obj/item/clothing/neck/scarf/zebra=1,/obj/item/clothing/neck/scarf/christmas=1,/obj/item/clothing/neck/stripedredscarf=1,
|
||||
/obj/item/clothing/neck/stripedbluescarf=1,/obj/item/clothing/neck/stripedgreenscarf=1,/obj/item/clothing/tie/waistcoat=1,
|
||||
/obj/item/clothing/under/skirt/black=1,/obj/item/clothing/under/skirt/blue=1,/obj/item/clothing/under/skirt/red=1,/obj/item/clothing/under/skirt/purple=1,
|
||||
/obj/item/clothing/under/sundress=2,/obj/item/clothing/under/stripeddress=1, /obj/item/clothing/under/sailordress=1, /obj/item/clothing/under/redeveninggown=1, /obj/item/clothing/under/blacktango=1,
|
||||
/obj/item/clothing/under/plaid_skirt=1,/obj/item/clothing/under/plaid_skirt/blue=1,/obj/item/clothing/under/plaid_skirt/purple=1,/obj/item/clothing/under/plaid_skirt/green=1,
|
||||
/obj/item/clothing/glasses/regular=2,/obj/item/clothing/head/sombrero=1,/obj/item/clothing/suit/poncho=1,
|
||||
/obj/item/clothing/suit/ianshirt=1,/obj/item/clothing/shoes/laceup=2,/obj/item/clothing/shoes/sneakers/black=4,
|
||||
/obj/item/clothing/shoes/sandal=1, /obj/item/clothing/gloves/fingerless=2,/obj/item/clothing/glasses/orange=1,/obj/item/clothing/glasses/red=1,
|
||||
/obj/item/weapon/storage/belt/fannypack=1, /obj/item/weapon/storage/belt/fannypack/blue=1, /obj/item/weapon/storage/belt/fannypack/red=1, /obj/item/clothing/suit/jacket/letterman=2,
|
||||
/obj/item/clothing/head/beanie=1, /obj/item/clothing/head/beanie/black=1, /obj/item/clothing/head/beanie/red=1, /obj/item/clothing/head/beanie/green=1, /obj/item/clothing/head/beanie/darkblue=1,
|
||||
/obj/item/clothing/head/beanie/purple=1, /obj/item/clothing/head/beanie/yellow=1, /obj/item/clothing/head/beanie/orange=1, /obj/item/clothing/head/beanie/cyan=1, /obj/item/clothing/head/beanie/christmas=1,
|
||||
/obj/item/clothing/head/beanie/striped=1, /obj/item/clothing/head/beanie/stripedred=1, /obj/item/clothing/head/beanie/stripedblue=1, /obj/item/clothing/head/beanie/stripedgreen=1,
|
||||
/obj/item/clothing/suit/jacket/letterman_red=1, /obj/item/clothing/under/wintercasualwear=1, /obj/item/clothing/under/casualwear=1, /obj/item/clothing/under/casualhoodie=1,
|
||||
/obj/item/clothing/under/casualhoodie/skirt=1,
|
||||
/obj/item/clothing/under/bb_sweater=2,
|
||||
/obj/item/clothing/under/bb_sweater/blue=2,
|
||||
/obj/item/clothing/under/bb_sweater/green=2,
|
||||
/obj/item/clothing/under/bb_sweater/purple =2,
|
||||
/obj/item/clothing/under/bb_sweater/red=2)
|
||||
/obj/item/clothing/suit/jacket=2, /obj/item/clothing/suit/jacket/puffer/vest=2, /obj/item/clothing/suit/jacket/puffer=2,
|
||||
/obj/item/clothing/under/suit_jacket/navy=1,/obj/item/clothing/under/suit_jacket/really_black=1,/obj/item/clothing/under/suit_jacket/burgundy=1,
|
||||
/obj/item/clothing/under/suit_jacket/charcoal=1, /obj/item/clothing/under/suit_jacket/white=1,/obj/item/clothing/under/kilt=1,/obj/item/clothing/under/overalls=1,
|
||||
/obj/item/clothing/under/sl_suit=1,/obj/item/clothing/under/pants/jeans=3,/obj/item/clothing/under/pants/classicjeans=2,
|
||||
/obj/item/clothing/under/pants/camo = 1,/obj/item/clothing/under/pants/blackjeans=2,/obj/item/clothing/under/pants/khaki=2,
|
||||
/obj/item/clothing/under/pants/white=2,/obj/item/clothing/under/pants/red=1,/obj/item/clothing/under/pants/black=2,
|
||||
/obj/item/clothing/under/pants/tan=2,/obj/item/clothing/under/pants/track=1,/obj/item/clothing/suit/jacket/miljacket = 1,
|
||||
/obj/item/clothing/neck/tie/blue=1, /obj/item/clothing/neck/tie/red=1, /obj/item/clothing/neck/tie/black=1, /obj/item/clothing/neck/tie/horrible=1,
|
||||
/obj/item/clothing/neck/scarf/red=1,/obj/item/clothing/neck/scarf/green=1,/obj/item/clothing/neck/scarf/darkblue=1,
|
||||
/obj/item/clothing/neck/scarf/purple=1,/obj/item/clothing/neck/scarf/yellow=1,/obj/item/clothing/neck/scarf/orange=1,
|
||||
/obj/item/clothing/neck/scarf/cyan=1,/obj/item/clothing/neck/scarf=1,/obj/item/clothing/neck/scarf/black=1,
|
||||
/obj/item/clothing/neck/scarf/zebra=1,/obj/item/clothing/neck/scarf/christmas=1,/obj/item/clothing/neck/stripedredscarf=1,
|
||||
/obj/item/clothing/neck/stripedbluescarf=1,/obj/item/clothing/neck/stripedgreenscarf=1,/obj/item/clothing/tie/waistcoat=1,
|
||||
/obj/item/clothing/under/skirt/black=1,/obj/item/clothing/under/skirt/blue=1,/obj/item/clothing/under/skirt/red=1,/obj/item/clothing/under/skirt/purple=1,
|
||||
/obj/item/clothing/under/sundress=2,/obj/item/clothing/under/stripeddress=1, /obj/item/clothing/under/sailordress=1, /obj/item/clothing/under/redeveninggown=1, /obj/item/clothing/under/blacktango=1,
|
||||
/obj/item/clothing/under/plaid_skirt=1,/obj/item/clothing/under/plaid_skirt/blue=1,/obj/item/clothing/under/plaid_skirt/purple=1,/obj/item/clothing/under/plaid_skirt/green=1,
|
||||
/obj/item/clothing/glasses/regular=2,/obj/item/clothing/head/sombrero=1,/obj/item/clothing/suit/poncho=1,
|
||||
/obj/item/clothing/suit/ianshirt=1,/obj/item/clothing/shoes/laceup=2,/obj/item/clothing/shoes/sneakers/black=4,
|
||||
/obj/item/clothing/shoes/sandal=1, /obj/item/clothing/gloves/fingerless=2,/obj/item/clothing/glasses/orange=1,/obj/item/clothing/glasses/red=1,
|
||||
/obj/item/weapon/storage/belt/fannypack=1, /obj/item/weapon/storage/belt/fannypack/blue=1, /obj/item/weapon/storage/belt/fannypack/red=1, /obj/item/clothing/suit/jacket/letterman=2,
|
||||
/obj/item/clothing/head/beanie=1, /obj/item/clothing/head/beanie/black=1, /obj/item/clothing/head/beanie/red=1, /obj/item/clothing/head/beanie/green=1, /obj/item/clothing/head/beanie/darkblue=1,
|
||||
/obj/item/clothing/head/beanie/purple=1, /obj/item/clothing/head/beanie/yellow=1, /obj/item/clothing/head/beanie/orange=1, /obj/item/clothing/head/beanie/cyan=1, /obj/item/clothing/head/beanie/christmas=1,
|
||||
/obj/item/clothing/head/beanie/striped=1, /obj/item/clothing/head/beanie/stripedred=1, /obj/item/clothing/head/beanie/stripedblue=1, /obj/item/clothing/head/beanie/stripedgreen=1,
|
||||
/obj/item/clothing/suit/jacket/letterman_red=1,
|
||||
/obj/item/clothing/under/wintercasualwear=1, /obj/item/clothing/under/casualwear=1, /obj/item/clothing/under/casualhoodie=1,
|
||||
/obj/item/clothing/under/casualhoodie/skirt=1,
|
||||
/obj/item/clothing/under/bb_sweater=2,
|
||||
/obj/item/clothing/under/bb_sweater/blue=2,
|
||||
/obj/item/clothing/under/bb_sweater/green=2,
|
||||
/obj/item/clothing/under/bb_sweater/purple =2,
|
||||
/obj/item/clothing/under/bb_sweater/red=2
|
||||
)
|
||||
contraband = list(/obj/item/clothing/under/syndicate/tacticool=1,/obj/item/clothing/mask/balaclava=1,/obj/item/clothing/head/ushanka=1,/obj/item/clothing/under/soviet=1,/obj/item/weapon/storage/belt/fannypack/black=2,/obj/item/clothing/suit/jacket/letterman_syndie=1,/obj/item/clothing/under/jabroni=1, /obj/item/clothing/suit/vapeshirt=1, /obj/item/clothing/under/geisha=1,
|
||||
/obj/item/clothing/under/wedding/bride_orange=1,
|
||||
/obj/item/clothing/under/wedding/bride_purple=1,
|
||||
@@ -1097,7 +1152,8 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
/obj/item/clothing/under/keyholesweater=1,
|
||||
/obj/item/clothing/suit/doshjacket=1,
|
||||
/obj/item/clothing/under/squatter_outfit = 1,
|
||||
/obj/item/clothing/head/squatter_hat = 1)
|
||||
/obj/item/clothing/head/squatter_hat = 1
|
||||
)
|
||||
premium = list(/obj/item/clothing/under/suit_jacket/checkered=1,/obj/item/clothing/head/mailman=1,/obj/item/clothing/under/rank/mailman=1,/obj/item/clothing/suit/jacket/leather=1,/obj/item/clothing/suit/jacket/leather/overcoat=1,/obj/item/clothing/under/pants/mustangjeans=1,/obj/item/clothing/neck/necklace/dope=3,/obj/item/clothing/suit/jacket/letterman_nanotrasen=1)
|
||||
refill_canister = /obj/item/weapon/vending_refill/clothing
|
||||
|
||||
@@ -1105,17 +1161,26 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
/obj/machinery/vending/kink
|
||||
name = "KinkMate"
|
||||
desc = "A vending machine for all your unmentionable desires."
|
||||
icon = 'icons/obj/citvending.dmi'
|
||||
icon_state = "kink"
|
||||
product_slogans = "Kinky!;Sexy!;Check me out, big boy!"
|
||||
vend_reply = "Have fun, you shameless pervert!"
|
||||
products = list(/obj/item/clothing/under/maid = 5, /obj/item/clothing/under/stripper_pink = 5, /obj/item/clothing/under/stripper_green = 5)
|
||||
contraband = list(/obj/item/weapon/restraints/handcuffs/fake/kinky = 5, /obj/item/clothing/neck/petcollar=5, /obj/item/clothing/under/mankini = 1)
|
||||
products = list(
|
||||
/obj/item/clothing/under/maid = 5,
|
||||
/obj/item/clothing/under/stripper_pink = 5,
|
||||
/obj/item/clothing/under/stripper_green = 5
|
||||
)
|
||||
contraband = list(/obj/item/weapon/restraints/handcuffs/fake/kinky = 5,
|
||||
/obj/item/clothing/neck/petcollar=5,
|
||||
/obj/item/clothing/under/mankini = 1
|
||||
)
|
||||
premium = list()
|
||||
refill_canister = /obj/item/weapon/vending_refill/kink
|
||||
|
||||
/obj/machinery/vending/nazivend
|
||||
name = "Nazivend"
|
||||
desc = "A vending machine containing Nazi German supplies. A label reads: \"Remember the gorrilions lost.\""
|
||||
icon = 'icons/obj/citvending.dmi'
|
||||
icon_state = "nazi"
|
||||
vend_reply = "SIEG HEIL!"
|
||||
product_slogans = "Das Vierte Reich wird zuruckkehren!;ENTFERNEN JUDEN!;Billiger als die Juden jemals geben!;Rader auf dem adminbus geht rund und rund.;Warten Sie, warum wir wieder hassen Juden?- *BZZT*"
|
||||
@@ -1140,6 +1205,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
/obj/machinery/vending/sovietvend
|
||||
name = "KomradeVendtink"
|
||||
desc = "Rodina-mat' zovyot!"
|
||||
icon = 'icons/obj/citvending.dmi'
|
||||
icon_state = "soviet"
|
||||
vend_reply = "The fascist and capitalist svin'ya shall fall, komrade!"
|
||||
product_slogans = "Quality worth waiting in line for!; Get Hammer and Sickled!; Sosvietsky soyuz above all!; With capitalist pigsky, you would have paid a fortunetink! ; Craftink in Motherland herself!"
|
||||
@@ -1164,7 +1230,6 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
|
||||
refill_canister = /obj/item/weapon/vending_refill/soviet
|
||||
|
||||
|
||||
#undef STANDARD_CHARGE
|
||||
#undef CONTRABAND_CHARGE
|
||||
#undef COIN_CHARGE
|
||||
|
||||
Reference in New Issue
Block a user