mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-13 16:13:19 +01:00
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into ann2
# Conflicts: # code/defines/procs/announce.dm # code/modules/events/mass_hallucination.dm
This commit is contained in:
@@ -365,7 +365,7 @@
|
||||
"aha" = (/obj/machinery/computer/prisoner,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos)
|
||||
"ahb" = (/obj/machinery/computer/security,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos)
|
||||
"ahc" = (/obj/machinery/computer/secure_data,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos)
|
||||
"ahd" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/obj/machinery/computer/med_data/laptop,/obj/item/weapon/storage/secure/safe/HoS{pixel_x = 36; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos)
|
||||
"ahd" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/obj/machinery/computer/med_data/laptop,/obj/item/weapon/storage/secure/safe{pixel_x = 36; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos)
|
||||
"ahe" = (/turf/simulated/wall,/area/security/range)
|
||||
"ahf" = (/obj/machinery/alarm{pixel_y = 28},/obj/structure/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/item/clothing/suit/armor/laserproof,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden)
|
||||
"ahg" = (/obj/machinery/door/airlock/external{name = "Escape Pod Three"},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
|
||||
|
||||
@@ -523,7 +523,7 @@
|
||||
"kc" = (/obj/machinery/door/airlock{name = "Supply Closet"},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel)
|
||||
"kd" = (/obj/machinery/door/airlock/glass{name = "Gateway"},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel)
|
||||
"ke" = (/obj/item/weapon/melee/cultblade,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel)
|
||||
"kf" = (/obj/item/weapon/kitchen/knife/butcher{blood_DNA = 1e+009},/obj/effect/decal/cleanable/blood/old,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel)
|
||||
"kf" = (/obj/item/weapon/kitchen/knife/butcher{blood_DNA = list("1e+009" = "O-")},/obj/effect/decal/cleanable/blood/old,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel)
|
||||
"kg" = (/obj/machinery/light{dir = 8},/obj/structure/stool/bed/chair/sofa/left{icon_state = "sofaend_left"; dir = 4},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel)
|
||||
"kh" = (/obj/effect/hotel_controller,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel)
|
||||
"ki" = (/obj/item/weapon/pen,/obj/structure/table/reinforced,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel/reception)
|
||||
|
||||
@@ -2,77 +2,84 @@
|
||||
//node2, air2, network2 correspond to output
|
||||
/obj/machinery/atmospherics/binary/circulator
|
||||
name = "circulator/heat exchanger"
|
||||
desc = "A gas circulator pump and heat exchanger."
|
||||
icon = 'icons/obj/pipes.dmi'
|
||||
icon_state = "circ-off"
|
||||
anchored = 0
|
||||
density = 1
|
||||
desc = "A gas circulator pump and heat exchanger. Its input port is on the south side, and its output port is on the north side."
|
||||
icon = 'icons/obj/atmospherics/circulator.dmi'
|
||||
icon_state = "circ1-off"
|
||||
|
||||
var/side = CIRC_LEFT
|
||||
|
||||
var/global/const/CIRC_LEFT = WEST
|
||||
var/global/const/CIRC_RIGHT = EAST
|
||||
|
||||
var/recent_moles_transferred = 0
|
||||
var/last_heat_capacity = 0
|
||||
var/last_temperature = 0
|
||||
var/last_pressure_delta = 0
|
||||
var/last_worldtime_transfer = 0
|
||||
|
||||
var/obj/machinery/power/generator/generator
|
||||
|
||||
/obj/machinery/atmospherics/binary/circulator/New()
|
||||
..()
|
||||
desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]."
|
||||
layer = 2.45 // Just above wires
|
||||
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
can_unwrench = 1
|
||||
|
||||
// Creating a custom circulator pipe subtype to be delivered through cargo
|
||||
/obj/item/pipe/circulator
|
||||
name = "circulator/heat exchanger fitting"
|
||||
|
||||
/obj/item/pipe/circulator/New(loc)
|
||||
var/obj/machinery/atmospherics/binary/circulator/C = new /obj/machinery/atmospherics/binary/circulator(null)
|
||||
..(loc, make_from = C)
|
||||
|
||||
/obj/machinery/atmospherics/binary/circulator/Destroy()
|
||||
if(generator && generator.cold_circ == src)
|
||||
generator.cold_circ = null
|
||||
else if(generator && generator.hot_circ == src)
|
||||
generator.hot_circ = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/binary/circulator/proc/return_transfer_air()
|
||||
var/datum/gas_mixture/removed
|
||||
if(anchored && !(stat & BROKEN))
|
||||
var/input_starting_pressure = air1.return_pressure()
|
||||
var/output_starting_pressure = air2.return_pressure()
|
||||
last_pressure_delta = max(input_starting_pressure - output_starting_pressure + 10, 0)
|
||||
var/output_starting_pressure = air1.return_pressure()
|
||||
var/input_starting_pressure = air2.return_pressure()
|
||||
|
||||
//only circulate air if there is a pressure difference (plus 10 kPa to represent friction in the machine)
|
||||
if(air1.temperature > 0 && last_pressure_delta > 0)
|
||||
if(output_starting_pressure >= input_starting_pressure - 10)
|
||||
//Need at least 10 KPa difference to overcome friction in the mechanism
|
||||
last_pressure_delta = 0
|
||||
return null
|
||||
|
||||
//Calculate necessary moles to transfer using PV = nRT
|
||||
recent_moles_transferred = last_pressure_delta*air2.volume/(air1.temperature * R_IDEAL_GAS_EQUATION)
|
||||
//Calculate necessary moles to transfer using PV = nRT
|
||||
if(air2.temperature > 0)
|
||||
var/pressure_delta = (input_starting_pressure - output_starting_pressure) / 2
|
||||
|
||||
//Actually transfer the gas
|
||||
removed = air1.remove(recent_moles_transferred)
|
||||
if(removed)
|
||||
last_heat_capacity = removed.heat_capacity()
|
||||
last_temperature = removed.temperature
|
||||
var/transfer_moles = pressure_delta * air1.volume/(air2.temperature * R_IDEAL_GAS_EQUATION)
|
||||
|
||||
//Update the gas networks.
|
||||
parent1.update = 1
|
||||
last_pressure_delta = pressure_delta
|
||||
|
||||
last_worldtime_transfer = world.time
|
||||
else
|
||||
recent_moles_transferred = 0
|
||||
//log_debug("pressure_delta = [pressure_delta]; transfer_moles = [transfer_moles];")
|
||||
|
||||
//Actually transfer the gas
|
||||
var/datum/gas_mixture/removed = air2.remove(transfer_moles)
|
||||
|
||||
parent1.update = 1
|
||||
parent2.update = 1
|
||||
|
||||
update_icon()
|
||||
return removed
|
||||
|
||||
else
|
||||
last_pressure_delta = 0
|
||||
|
||||
/obj/machinery/atmospherics/binary/circulator/process()
|
||||
if(!..())
|
||||
return 0
|
||||
if(last_worldtime_transfer < world.time - 50)
|
||||
recent_moles_transferred = 0
|
||||
update_icon()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/binary/circulator/update_icon()
|
||||
if(stat & (BROKEN|NOPOWER) || !anchored)
|
||||
icon_state = "circ-p"
|
||||
else if(last_pressure_delta > 0 && recent_moles_transferred > 0)
|
||||
if(last_pressure_delta > 5*ONE_ATMOSPHERE)
|
||||
icon_state = "circ-run"
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
icon_state = "circ[side]-p"
|
||||
else if(last_pressure_delta > 0)
|
||||
if(last_pressure_delta > ONE_ATMOSPHERE)
|
||||
icon_state = "circ[side]-run"
|
||||
else
|
||||
icon_state = "circ-slow"
|
||||
icon_state = "circ[side]-slow"
|
||||
else
|
||||
icon_state = "circ-off"
|
||||
icon_state = "circ[side]-off"
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/binary/circulator/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
var/turf/T = get_turf(src)
|
||||
if(!istype(T, /turf/simulated))
|
||||
return ..()
|
||||
anchored = !anchored
|
||||
to_chat(user, "You [(anchored) ? "fasten" : "loosen"] \the [src] to the floor")
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
else return ..()
|
||||
return 1
|
||||
@@ -85,3 +85,18 @@ var/gaussian_next
|
||||
gaussian_next = R2 * working
|
||||
return (mean + stddev * R1)
|
||||
#undef ACCURACY
|
||||
|
||||
|
||||
|
||||
// oof, what a mouthful
|
||||
// Used in status_procs' "adjust" to let them modify a status effect by a given
|
||||
// amount, without inadverdently increasing it in the wrong direction
|
||||
/proc/directional_bounded_sum(orig_val, modifier, bound_lower, bound_upper)
|
||||
var/new_val = orig_val + modifier
|
||||
if(modifier > 0)
|
||||
if(new_val > bound_upper)
|
||||
new_val = max(orig_val, bound_upper)
|
||||
else if(modifier < 0)
|
||||
if(new_val < bound_lower)
|
||||
new_val = min(orig_val, bound_lower)
|
||||
return new_val
|
||||
|
||||
@@ -18,7 +18,6 @@ var/global/list/global_map = null
|
||||
//3 - AI satellite
|
||||
//5 - empty space
|
||||
|
||||
var/list/monkeystart = list()
|
||||
var/list/wizardstart = list()
|
||||
var/list/newplayer_start = list()
|
||||
var/list/latejoin = list()
|
||||
@@ -26,10 +25,9 @@ var/list/latejoin_gateway = list()
|
||||
var/list/latejoin_cryo = list()
|
||||
var/list/latejoin_cyborg = list()
|
||||
var/list/prisonwarp = list() //prisoners go to these
|
||||
var/list/holdingfacility = list() //captured people go here
|
||||
var/list/xeno_spawn = list()//Aliens spawn at these.
|
||||
var/list/ertdirector = list()
|
||||
// list/mazewarp = list()
|
||||
var/list/emergencyresponseteamspawn = list()
|
||||
var/list/tdome1 = list()
|
||||
var/list/tdome2 = list()
|
||||
var/list/team_alpha = list()
|
||||
|
||||
@@ -31,10 +31,4 @@ var/endicon = null
|
||||
var/datum/air_tunnel/air_tunnel1/SS13_airtunnel = null
|
||||
var/going = 1.0
|
||||
var/datum/engine_eject/engine_eject_control = null
|
||||
// list/traitors = list() //traitor list
|
||||
// list/traitobj = list( )
|
||||
var/airtunnel_start = 68 // default
|
||||
var/airtunnel_stop = 68 // default
|
||||
var/airtunnel_bottom = 72 // default
|
||||
// reverse_dir[dir] = reverse of dir
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
CtrlClickOn(A)
|
||||
return
|
||||
|
||||
if(stat || paralysis || stunned || weakened)
|
||||
if(incapacitated(ignore_restraints = 1, ignore_grab = 1, ignore_lying = 1))
|
||||
return
|
||||
|
||||
face_atom(A)
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
CtrlClickOn(A)
|
||||
return
|
||||
|
||||
if(stat || lockcharge || weakened || stunned || paralysis)
|
||||
if(incapacitated())
|
||||
return
|
||||
|
||||
if(next_move >= world.time)
|
||||
|
||||
@@ -35,6 +35,6 @@ Bonus
|
||||
to_chat(M, "<span class='warning'>[pick("Your head hurts.", "Your mind blanks for a moment.")]</span>")
|
||||
else
|
||||
to_chat(M, "<span class='userdanger'>You can't think straight!</span>")
|
||||
M.confused = min(100, M.confused + 8)
|
||||
M.AdjustConfused(8, bound_lower = 0, bound_upper = 100)
|
||||
|
||||
return
|
||||
|
||||
@@ -33,11 +33,11 @@ Bonus
|
||||
if(3, 4)
|
||||
to_chat(M, "<span class='warning'>[pick("You hear a ringing in your ear.", "Your ears pop.")]</span>")
|
||||
if(5)
|
||||
if(!(M.ear_deaf))
|
||||
if(!(M.disabilities & DEAF))
|
||||
to_chat(M, "<span class='userdanger'>Your ears pop and begin ringing loudly!</span>")
|
||||
M.setEarDamage(-1,INFINITY) //Shall be enough
|
||||
M.BecomeDeaf()
|
||||
spawn(200)
|
||||
if(M)
|
||||
to_chat(M, "<span class='warning'>The ringing in your ears fades...</span>")
|
||||
M.setEarDamage(-1,0)
|
||||
return
|
||||
M.CureDeaf()
|
||||
return
|
||||
|
||||
@@ -36,6 +36,6 @@ Bonus
|
||||
to_chat(M, "<span class='warning'><b>[pick("Something is following you.", "You are being watched.", "You hear a whisper in your ear.", "Thumping footsteps slam toward you from nowhere.")]</b></span>")
|
||||
else
|
||||
to_chat(M, "<span class='userdanger'>[pick("Oh, your head...", "Your head pounds.", "They're everywhere! Run!", "Something in the shadows...")]</span>")
|
||||
M.hallucination += 5
|
||||
M.AdjustHallucinate(5)
|
||||
|
||||
return
|
||||
|
||||
@@ -24,18 +24,18 @@
|
||||
to_chat(affected_mob, "<span class='notice'>You feel panicky.</span>")
|
||||
if(prob(2))
|
||||
to_chat(affected_mob, "<span class='danger'>You're overtaken with panic!</span>")
|
||||
affected_mob.confused += (rand(2,3))
|
||||
affected_mob.AdjustConfused(rand(2,3))
|
||||
if(4)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel butterflies in your stomach.</span>")
|
||||
if(prob(5))
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] stumbles around in a panic.</span>", \
|
||||
"<span class='userdanger'>You have a panic attack!</span>")
|
||||
affected_mob.confused += (rand(6,8))
|
||||
affected_mob.jitteriness += (rand(6,8))
|
||||
affected_mob.AdjustConfused(rand(6,8))
|
||||
affected_mob.AdjustJitter(rand(6,8))
|
||||
if(prob(2))
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up butterflies!</span>", \
|
||||
"<span class='userdanger'>You cough up butterflies!</span>")
|
||||
new /mob/living/simple_animal/butterfly(affected_mob.loc)
|
||||
new /mob/living/simple_animal/butterfly(affected_mob.loc)
|
||||
return
|
||||
return
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
if(3)
|
||||
if(prob(4))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel a stabbing pain in your head.</span>")
|
||||
affected_mob.confused += 10
|
||||
affected_mob.AdjustConfused(10)
|
||||
if(4)
|
||||
if(prob(3))
|
||||
affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh."))
|
||||
@@ -241,4 +241,4 @@
|
||||
stage3 = list("<span class='danger'>Your appendages are melting away.</span>", "<span class='danger'>Your limbs begin to lose their shape.</span>")
|
||||
stage4 = list("<span class='danger'>You're ravenous.</span>")
|
||||
stage5 = list("<span class='danger'>You have become a morph.</span>")
|
||||
new_form = /mob/living/simple_animal/hostile/morph
|
||||
new_form = /mob/living/simple_animal/hostile/morph
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
affected_mob.AdjustSleeping(5)
|
||||
if(prob(2))
|
||||
to_chat(affected_mob, "<span class='userdanger'>You feel your mind relax and your thoughts drift!</span>")
|
||||
affected_mob.confused = min(100, affected_mob.confused + 8)
|
||||
affected_mob.AdjustConfused(8, bound_lower = 0, bound_upper = 100)
|
||||
if(prob(10))
|
||||
affected_mob.vomit(20)
|
||||
if(prob(3))
|
||||
@@ -55,4 +55,3 @@
|
||||
to_chat(affected_mob, "<span class='danger'>[pick("You feel uncomfortably hot...", "You feel like unzipping your jumpsuit", "You feel like taking off some clothes...")]</span>")
|
||||
affected_mob.bodytemperature += 40
|
||||
return
|
||||
|
||||
|
||||
@@ -20,15 +20,15 @@
|
||||
|
||||
if(prob(10))
|
||||
affected_mob.emote(pick("cough","groan", "gasp"))
|
||||
affected_mob.losebreath++
|
||||
affected_mob.AdjustLoseBreath(1)
|
||||
|
||||
if(prob(15))
|
||||
if(prob(33))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel sickly and weak.</span>")
|
||||
affected_mob.slowed += 3
|
||||
affected_mob.AdjustSlowed(3)
|
||||
affected_mob.adjustToxLoss(toxdamage)
|
||||
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='danger'>Your joints ache horribly!</span>")
|
||||
affected_mob.Weaken(stuntime)
|
||||
affected_mob.Stun(stuntime)
|
||||
affected_mob.Stun(stuntime)
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
var/byproduct // example: = /obj/item/weapon/kitchen/mould // byproduct to return, such as a mould or trash
|
||||
|
||||
|
||||
/datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents) //1=precisely, 0=insufficiently, -1=superfluous
|
||||
/datum/recipe/proc/check_reagents(datum/reagents/avail_reagents) //1=precisely, 0=insufficiently, -1=superfluous
|
||||
. = 1
|
||||
for(var/r_r in reagents)
|
||||
var/aval_r_amnt = avail_reagents.get_reagent_amount(r_r)
|
||||
@@ -55,7 +55,7 @@
|
||||
return -1
|
||||
return .
|
||||
|
||||
/datum/recipe/proc/check_fruit(var/obj/container)
|
||||
/datum/recipe/proc/check_fruit(obj/container)
|
||||
. = 1
|
||||
if(fruit && fruit.len)
|
||||
var/list/checklist = list()
|
||||
@@ -74,7 +74,7 @@
|
||||
break
|
||||
return .
|
||||
|
||||
/datum/recipe/proc/check_items(var/obj/container as obj)
|
||||
/datum/recipe/proc/check_items(obj/container)
|
||||
. = 1
|
||||
if(items && items.len)
|
||||
var/list/checklist = list()
|
||||
@@ -96,7 +96,7 @@
|
||||
return .
|
||||
|
||||
//general version
|
||||
/datum/recipe/proc/make(var/obj/container as obj)
|
||||
/datum/recipe/proc/make(obj/container)
|
||||
var/obj/result_obj = new result(container)
|
||||
for(var/obj/O in (container.contents-result_obj))
|
||||
O.reagents.trans_to(result_obj, O.reagents.total_volume)
|
||||
@@ -106,7 +106,7 @@
|
||||
return result_obj
|
||||
|
||||
// food-related
|
||||
/datum/recipe/proc/make_food(var/obj/container as obj)
|
||||
/datum/recipe/proc/make_food(obj/container)
|
||||
var/obj/result_obj = new result(container)
|
||||
for(var/obj/O in (container.contents-result_obj))
|
||||
if(O.reagents)
|
||||
@@ -118,7 +118,7 @@
|
||||
score_meals++
|
||||
return result_obj
|
||||
|
||||
/proc/select_recipe(var/list/datum/recipe/avaiable_recipes, var/obj/obj as obj, var/exact = 1 as num)
|
||||
/proc/select_recipe(list/datum/recipe/avaiable_recipes, obj/obj, exact = 1)
|
||||
if(!exact)
|
||||
exact = -1
|
||||
var/list/datum/recipe/possible_recipes = new
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
adjustBrainLoss(80)
|
||||
nutrition = 9000
|
||||
overeatduration = 9000
|
||||
confused = 30
|
||||
Confused(30)
|
||||
if(mind)
|
||||
mind.assigned_role = "Cluwne"
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
adjustBrainLoss(-120)
|
||||
nutrition = NUTRITION_LEVEL_STARVING
|
||||
overeatduration = 0
|
||||
confused = 0
|
||||
jitteriness = 0
|
||||
SetConfused(0)
|
||||
SetJitter(0)
|
||||
if(mind)
|
||||
mind.assigned_role = "Lawyer"
|
||||
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
target.Paralyse(amt_paralysis)
|
||||
target.Stun(amt_stunned)
|
||||
|
||||
target.eye_blind += amt_eye_blind
|
||||
target.eye_blurry += amt_eye_blurry
|
||||
target.AdjustEyeBlind(amt_eye_blind)
|
||||
target.AdjustEyeBlurry(amt_eye_blurry)
|
||||
//summoning
|
||||
if(summon_type)
|
||||
new summon_type(target.loc, target)
|
||||
new summon_type(target.loc, target)
|
||||
|
||||
@@ -581,7 +581,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
/obj/item/clothing/head/helmet/space,
|
||||
/obj/item/clothing/head/helmet/space,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/clothing/mask/breath,)
|
||||
/obj/item/clothing/mask/breath)
|
||||
cost = 30
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "space suit crate"
|
||||
@@ -607,9 +607,8 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
name = "Thermo-Electric Generator Crate"
|
||||
contains = list(
|
||||
/obj/machinery/power/generator,
|
||||
/obj/machinery/atmospherics/binary/circulator,
|
||||
/obj/machinery/atmospherics/binary/circulator
|
||||
)
|
||||
/obj/item/pipe/circulator,
|
||||
/obj/item/pipe/circulator)
|
||||
cost = 25
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "thermo-electric generator crate"
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
for(var/obj/item/device/radio/R in global_radios)
|
||||
receivers |= R.send_announcement()
|
||||
for(var/mob/M in receivers)
|
||||
if(!istype(M) || !M.client || M.stat || isdeaf(M))
|
||||
if(!istype(M) || !M.client || M.stat || !M.can_hear())
|
||||
receivers -= M
|
||||
continue
|
||||
if(!M.say_understands(null, message_language))
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
|
||||
if(usr.stat != 0)
|
||||
return
|
||||
if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other
|
||||
if(usr.incapacitated()) //are you cuffed, dying, lying, stunned or other
|
||||
return
|
||||
if(!ishuman(usr)) //Make sure they're a mob that has dna
|
||||
to_chat(usr, "<span class='notice'>Try as you might, you can not climb up into the [src].</span>")
|
||||
@@ -169,7 +169,7 @@
|
||||
return
|
||||
if(O.loc == user) //no you can't pull things out of your ass
|
||||
return
|
||||
if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis || user.resting) //are you cuffed, dying, lying, stunned or other
|
||||
if(user.incapacitated()) //are you cuffed, dying, lying, stunned or other
|
||||
return
|
||||
if(O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)) // is the mob anchored, too far away from you, or are you too far away from the source
|
||||
return
|
||||
@@ -973,4 +973,4 @@
|
||||
return 1
|
||||
|
||||
|
||||
/////////////////////////// DNA MACHINES
|
||||
/////////////////////////// DNA MACHINES
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/datum/dna/gene/disability/can_activate(var/mob/M,var/flags)
|
||||
return 1 // Always set!
|
||||
|
||||
/datum/dna/gene/disability/activate(var/mob/M, var/connected, var/flags)
|
||||
/datum/dna/gene/disability/activate(var/mob/living/M, var/connected, var/flags)
|
||||
..()
|
||||
if(mutation && !(mutation in M.mutations))
|
||||
M.mutations.Add(mutation)
|
||||
@@ -35,7 +35,7 @@
|
||||
else
|
||||
testing("[name] has no activation message.")
|
||||
|
||||
/datum/dna/gene/disability/deactivate(var/mob/M, var/connected, var/flags)
|
||||
/datum/dna/gene/disability/deactivate(var/mob/living/M, var/connected, var/flags)
|
||||
..()
|
||||
if(mutation && (mutation in M.mutations))
|
||||
M.mutations.Remove(mutation)
|
||||
@@ -127,7 +127,7 @@
|
||||
|
||||
/datum/dna/gene/disability/deaf/activate(var/mob/M, var/connected, var/flags)
|
||||
..(M,connected,flags)
|
||||
M.ear_deaf = 1
|
||||
M.EarDeaf(1)
|
||||
|
||||
/datum/dna/gene/disability/nearsighted
|
||||
name="Nearsightedness"
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
for(var/mob/living/carbon/human/H in range(2,user))
|
||||
to_chat(H, "<span class='userdanger'>You are blinded by a shower of blood!</span>")
|
||||
H.Stun(1)
|
||||
H.eye_blurry = max(20, H.eye_blurry)
|
||||
H.EyeBlurry(20)
|
||||
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
|
||||
if(istype(E))
|
||||
E.damage = max(E.damage+5, 0)
|
||||
H.confused += 3
|
||||
H.AdjustConfused(3)
|
||||
for(var/mob/living/silicon/S in range(2,user))
|
||||
to_chat(S, "<span class='userdanger'>Your sensors are disabled by a shower of blood!</span>")
|
||||
S.Weaken(3)
|
||||
@@ -37,4 +37,4 @@
|
||||
to_chat(crab, "<span class='warning'>You burst out of the remains of your former body in a shower of gore!</span>")
|
||||
user.gib()
|
||||
feedback_add_details("changeling_powers","LR")
|
||||
return 1
|
||||
return 1
|
||||
|
||||
@@ -17,10 +17,14 @@
|
||||
user.SetStunned(0)
|
||||
user.SetWeakened(0)
|
||||
user.radiation = 0
|
||||
user.eye_blind = 0
|
||||
user.eye_blurry = 0
|
||||
user.setEarDamage(0,0)
|
||||
user.SetEyeBlind(0)
|
||||
user.SetEyeBlurry(0)
|
||||
user.SetEarDamage(0)
|
||||
user.SetEarDeaf(0)
|
||||
user.heal_overall_damage(user.getBruteLoss(), user.getFireLoss())
|
||||
user.CureBlind()
|
||||
user.CureDeaf()
|
||||
user.CureNearsighted()
|
||||
user.reagents.clear_reagents()
|
||||
user.germ_level = 0
|
||||
user.next_pain_time = 0
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
for(var/mob/living/M in get_mobs_in_view(4, user))
|
||||
if(iscarbon(M))
|
||||
if(!M.mind || !M.mind.changeling)
|
||||
M.adjustEarDamage(0, 30)
|
||||
M.confused += 20
|
||||
M.AdjustEarDeaf(30)
|
||||
M.AdjustConfused(20)
|
||||
M.Jitter(50)
|
||||
else
|
||||
M << sound('sound/effects/screech.ogg')
|
||||
@@ -41,5 +41,3 @@
|
||||
L.broken()
|
||||
empulse(get_turf(user), 2, 4, 1)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ obj/effect/proc_holder/changeling/sting/mute
|
||||
|
||||
/obj/effect/proc_holder/changeling/sting/mute/sting_action(var/mob/user, var/mob/living/carbon/target)
|
||||
add_logs(user, target, "stung", object="mute sting")
|
||||
target.silent += 30
|
||||
target.AdjustSilence(30)
|
||||
feedback_add_details("changeling_powers","MS")
|
||||
return 1
|
||||
|
||||
@@ -165,12 +165,12 @@ obj/effect/proc_holder/changeling/sting/blind
|
||||
chemical_cost = 25
|
||||
dna_cost = 1
|
||||
|
||||
/obj/effect/proc_holder/changeling/sting/blind/sting_action(var/mob/user, var/mob/target)
|
||||
/obj/effect/proc_holder/changeling/sting/blind/sting_action(var/mob/living/user, var/mob/living/target)
|
||||
add_logs(user, target, "stung", object="blind sting")
|
||||
to_chat(target, "<span class='danger'>Your eyes burn horrifically!</span>")
|
||||
target.disabilities |= NEARSIGHTED
|
||||
target.eye_blind = 20
|
||||
target.eye_blurry = 40
|
||||
target.BecomeNearsighted()
|
||||
target.EyeBlind(20)
|
||||
target.EyeBlurry(40)
|
||||
feedback_add_details("changeling_powers","BS")
|
||||
return 1
|
||||
|
||||
@@ -186,7 +186,7 @@ obj/effect/proc_holder/changeling/sting/LSD
|
||||
add_logs(user, target, "stung", object="LSD sting")
|
||||
spawn(rand(300,600))
|
||||
if(target)
|
||||
target.hallucination = max(400, target.hallucination)
|
||||
target.Hallucinate(400)
|
||||
feedback_add_details("changeling_powers","HS")
|
||||
return 1
|
||||
|
||||
|
||||
@@ -840,7 +840,7 @@ var/list/sacrificed = list()
|
||||
var/obj/item/weapon/nullrod/N = locate() in C
|
||||
if(N)
|
||||
continue
|
||||
C.adjustEarDamage(0,50)
|
||||
C.AdjustEarDeaf(50)
|
||||
C.show_message("\red The world around you suddenly becomes quiet.", 3)
|
||||
affected++
|
||||
if(prob(1))
|
||||
@@ -859,7 +859,7 @@ var/list/sacrificed = list()
|
||||
var/obj/item/weapon/nullrod/N = locate() in C
|
||||
if(N)
|
||||
continue
|
||||
C.adjustEarDamage(0,30)
|
||||
C.AdjustEarDeaf(30)
|
||||
//talismans is weaker.
|
||||
C.show_message("\red The world around you suddenly becomes quiet.", 3)
|
||||
affected++
|
||||
@@ -880,12 +880,12 @@ var/list/sacrificed = list()
|
||||
var/obj/item/weapon/nullrod/N = locate() in C
|
||||
if(N)
|
||||
continue
|
||||
C.eye_blurry += 50
|
||||
C.eye_blind += 20
|
||||
C.AdjustEyeBlurry(50)
|
||||
C.AdjustEyeBlind(20)
|
||||
if(prob(5))
|
||||
C.disabilities |= NEARSIGHTED
|
||||
C.BecomeNearsighted()
|
||||
if(prob(10))
|
||||
C.disabilities |= BLIND
|
||||
C.BecomeBlind()
|
||||
C.show_message("\red Suddenly you see red flash that blinds you.", 3)
|
||||
affected++
|
||||
if(affected)
|
||||
@@ -902,8 +902,8 @@ var/list/sacrificed = list()
|
||||
var/obj/item/weapon/nullrod/N = locate() in C
|
||||
if(N)
|
||||
continue
|
||||
C.eye_blurry += 30
|
||||
C.eye_blind += 10
|
||||
C.AdjustEyeBlurry(30)
|
||||
C.AdjustEyeBlind(10)
|
||||
//talismans is weaker.
|
||||
affected++
|
||||
C.show_message("\red You feel a sharp pain in your eyes, and the world disappears into darkness..", 3)
|
||||
@@ -1016,7 +1016,7 @@ var/list/sacrificed = list()
|
||||
var/mob/living/carbon/C = T
|
||||
C.flash_eyes()
|
||||
if(!(HULK in C.mutations))
|
||||
C.silent += 15
|
||||
C.AdjustSilence(15)
|
||||
C.Weaken(10)
|
||||
C.Stun(10)
|
||||
return
|
||||
|
||||
@@ -466,7 +466,7 @@ Congratulations! You are now trained for xenobiology research!"}
|
||||
L.Sleeping(60)
|
||||
add_logs(user, L, "put to sleep")
|
||||
else
|
||||
L.drowsyness += 1
|
||||
L.AdjustDrowsy(1)
|
||||
to_chat(user, "<span class='warning'>Sleep inducement works fully only on stunned specimens! </span>")
|
||||
L.visible_message("<span class='danger'>[user] tried to induce sleep in [L] with [src]!</span>", \
|
||||
"<span class='userdanger'>You suddenly feel drowsy!</span>")
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
if(H == owner)
|
||||
continue
|
||||
to_chat(H, "<span class='alien'>You hear a buzz in your head.</span>")
|
||||
H.confused += 20
|
||||
H.AdjustConfused(20)
|
||||
|
||||
/obj/item/organ/internal/gland/pop
|
||||
origin_tech = "materials=4;biotech=6;abductor=3"
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
to_chat(human, "<span class='warning'>You suddenly feel [pick("sick and tired", "tired and confused", "nauseated", "dizzy")].</span>")
|
||||
human.adjustStaminaLoss(stamdamage)
|
||||
human.adjustToxLoss(toxdamage)
|
||||
human.confused = min(human.confused+confusion, maxconfusion)
|
||||
human.AdjustConfused(confusion, bound_lower = 0, bound_upper = maxconfusion)
|
||||
new/obj/effect/overlay/temp/revenant(human.loc)
|
||||
if(!istype(T, /turf/simulated/shuttle) && !istype(T, /turf/simulated/wall/rust) && !istype(T, /turf/simulated/wall/r_wall) && istype(T, /turf/simulated/wall) && prob(15))
|
||||
new/obj/effect/overlay/temp/revenant(T)
|
||||
@@ -317,4 +317,4 @@
|
||||
playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1)
|
||||
new/obj/effect/overlay/temp/revenant(S.loc)
|
||||
S.spark_system.start()
|
||||
S.emp_act(1)
|
||||
S.emp_act(1)
|
||||
|
||||
@@ -150,16 +150,6 @@ proc/issyndicate(mob/living/M as mob)
|
||||
var/hair_c = pick("#8B4513","#000000","#FF4500","#FFD700") // Brown, black, red, blonde
|
||||
var/eye_c = pick("#000000","#8B4513","1E90FF") // Black, brown, blue
|
||||
var/skin_tone = pick(-50, -30, -10, 0, 0, 0, 10) // Caucasian/black
|
||||
var/hair_style = "Bald"
|
||||
var/facial_hair_style = "Shaved"
|
||||
if(M.gender == MALE)
|
||||
hair_style = pick(hair_styles_male_list)
|
||||
facial_hair_style = pick(facial_hair_styles_list)
|
||||
else
|
||||
hair_style = pick(hair_styles_female_list)
|
||||
if(prob(5))
|
||||
facial_hair_style = pick(facial_hair_styles_list)
|
||||
|
||||
head_organ.r_facial = color2R(hair_c)
|
||||
head_organ.g_facial = color2G(hair_c)
|
||||
head_organ.b_facial = color2B(hair_c)
|
||||
@@ -168,9 +158,11 @@ proc/issyndicate(mob/living/M as mob)
|
||||
head_organ.b_hair = color2B(hair_c)
|
||||
M.change_eye_color(color2R(eye_c), color2G(eye_c), color2B(eye_c))
|
||||
M.s_tone = skin_tone
|
||||
head_organ.h_style = hair_style
|
||||
head_organ.f_style = facial_hair_style
|
||||
head_organ.h_style = random_hair_style(M.gender, head_organ.species.name)
|
||||
head_organ.f_style = random_facial_hair_style(M.gender, head_organ.species.name)
|
||||
M.body_accessory = null
|
||||
M.regenerate_icons()
|
||||
M.update_body()
|
||||
|
||||
/datum/game_mode/proc/prepare_syndicate_leader(var/datum/mind/synd_mind, var/nuke_code)
|
||||
var/leader_title = pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord")
|
||||
|
||||
@@ -241,7 +241,7 @@
|
||||
revolutionaries += rev_mind
|
||||
if(iscarbon(rev_mind.current))
|
||||
var/mob/living/carbon/carbon_mob = rev_mind.current
|
||||
carbon_mob.silent = max(carbon_mob.silent, 5)
|
||||
carbon_mob.Silence(5)
|
||||
carbon_mob.flash_eyes(1, 1)
|
||||
rev_mind.current.Stun(5)
|
||||
to_chat(rev_mind.current, "<span class='danger'><FONT size = 3> You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!</FONT></span>")
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
else //Only alludes to the shadowling if the target is close by
|
||||
to_chat(target, "<span class='userdanger'>Red lights suddenly dance in your vision, and you are mesmerized by the heavenly lights...</span>")
|
||||
target.Stun(10)
|
||||
M.silent += 10
|
||||
M.AdjustSilence(10)
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/lesser_glare
|
||||
@@ -79,7 +79,7 @@
|
||||
else
|
||||
to_chat(target, "<span class='userdanger'>Red lights suddenly dance in your vision, and you are mesmerized by their heavenly beauty...</span>")
|
||||
target.Stun(3) //Roughly 30% as long as the normal one
|
||||
M.silent += 3
|
||||
M.AdjustSilence(3)
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/veil
|
||||
@@ -519,7 +519,7 @@
|
||||
/datum/reagent/shadowling_blindness_smoke/on_mob_life(mob/living/M)
|
||||
if(!is_shadow_or_thrall(M))
|
||||
to_chat(M, "<span class='warning'><b>You breathe in the black smoke, and your eyes burn horribly!</b></span>")
|
||||
M.eye_blind = 5
|
||||
M.EyeBlind(5)
|
||||
if(prob(25))
|
||||
M.visible_message("<b>[M]</b> claws at their eyes!")
|
||||
M.Stun(3)
|
||||
@@ -556,8 +556,8 @@
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/M = target
|
||||
to_chat(M, "<span class='danger'><b>A spike of pain drives into your head and scrambles your thoughts!</b></span>")
|
||||
M.confused += 10
|
||||
M.setEarDamage(M.ear_damage + 3)
|
||||
M.AdjustConfused(10)
|
||||
M.AdjustEarDamage(3)
|
||||
else if(issilicon(target))
|
||||
var/mob/living/silicon/S = target
|
||||
to_chat(S, "<span class='warning'><b>ERROR $!(@ ERROR )#^! SENSORY OVERLOAD \[$(!@#</b></span>")
|
||||
|
||||
@@ -259,8 +259,8 @@
|
||||
continue
|
||||
to_chat(C, "<span class='warning'><font size='3'><b>You hear a ear piercing shriek and your senses dull!</font></b></span>")
|
||||
C.Weaken(4)
|
||||
C.adjustEarDamage(0,20)
|
||||
C.stuttering = 20
|
||||
C.AdjustEarDeaf(20)
|
||||
C.Stuttering(20)
|
||||
C.Stun(4)
|
||||
C.Jitter(150)
|
||||
for(var/obj/structure/window/W in view(4))
|
||||
|
||||
@@ -782,7 +782,7 @@ var/global/list/multiverse = list()
|
||||
else if(istype(I,/obj/item/weapon/bikehorn))
|
||||
to_chat(target, "<span class='userdanger'>HONK</span>")
|
||||
target << 'sound/items/AirHorn.ogg'
|
||||
target.adjustEarDamage(0,3)
|
||||
target.AdjustEarDeaf(3)
|
||||
GiveHint(target)
|
||||
cooldown = world.time +cooldown_time
|
||||
return
|
||||
|
||||
@@ -747,7 +747,7 @@
|
||||
/obj/item/weapon/spellbook/oneuse/blind/recoil(mob/user as mob)
|
||||
..()
|
||||
to_chat(user, "<span class='warning'>You go blind!</span>")
|
||||
user.eye_blind = 10
|
||||
user.EyeBlind(10)
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/mindswap
|
||||
spell = /obj/effect/proc_holder/spell/targeted/mind_transfer
|
||||
|
||||
@@ -546,7 +546,7 @@
|
||||
if(panel_open)
|
||||
to_chat(usr, "<span class='boldnotice'>Close the maintenance panel first.</span>")
|
||||
return
|
||||
if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other
|
||||
if(usr.incapacitated()) //are you cuffed, dying, lying, stunned or other
|
||||
return
|
||||
for(var/mob/living/carbon/slime/M in range(1,usr))
|
||||
if(M.Victim == usr)
|
||||
@@ -590,4 +590,4 @@
|
||||
component_parts += new /obj/item/stack/cable_coil(null, 1)
|
||||
RefreshParts()
|
||||
|
||||
#undef ADDICTION_SPEEDUP_TIME
|
||||
#undef ADDICTION_SPEEDUP_TIME
|
||||
|
||||
@@ -448,7 +448,7 @@
|
||||
if(ORION_TRAIL_RAIDERS)
|
||||
if(prob(50))
|
||||
to_chat(usr, "<span class='userdanger'>You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?</span>")
|
||||
M.hallucination += 30
|
||||
M.AdjustHallucinate(30)
|
||||
else
|
||||
to_chat(usr, "<span class='userdanger'>Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there...</span>")
|
||||
M.take_organ_damage(30)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
jump_action.Grant(user)
|
||||
|
||||
/obj/machinery/computer/camera_advanced/check_eye(mob/user)
|
||||
if((stat & (NOPOWER|BROKEN)) || !Adjacent(user) || user.eye_blind || user.incapacitated())
|
||||
if((stat & (NOPOWER|BROKEN)) || !Adjacent(user) || !user.can_see() || user.incapacitated())
|
||||
user.unset_machine()
|
||||
return 0
|
||||
return 1
|
||||
@@ -167,4 +167,4 @@
|
||||
var/camera = input("Choose which camera you want to view", "Cameras") as null|anything in T
|
||||
var/obj/machinery/camera/final = T[camera]
|
||||
if(final)
|
||||
remote_eye.setLoc(get_turf(final))
|
||||
remote_eye.setLoc(get_turf(final))
|
||||
|
||||
@@ -80,10 +80,10 @@
|
||||
beaker = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(atom/movable/O as mob|obj, mob/living/user as mob)
|
||||
if(O.loc == user) //no you can't pull things out of your ass
|
||||
return
|
||||
if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis || user.resting) //are you cuffed, dying, lying, stunned or other
|
||||
if(user.incapacitated()) //are you cuffed, dying, lying, stunned or other
|
||||
return
|
||||
if(get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)) // is the mob anchored, too far away from you, or are you too far away from the source
|
||||
return
|
||||
@@ -371,7 +371,7 @@
|
||||
occupant.bodytemperature += 2*(air_contents.temperature - occupant.bodytemperature)*current_heat_capacity/(current_heat_capacity + air_contents.heat_capacity())
|
||||
occupant.bodytemperature = max(occupant.bodytemperature, air_contents.temperature) // this is so ugly i'm sorry for doing it i'll fix it later i promise
|
||||
if(occupant.bodytemperature < T0C)
|
||||
occupant.sleeping = max(5/efficiency, (1/occupant.bodytemperature)*2000/efficiency)
|
||||
occupant.Sleeping(max(5/efficiency, (1/occupant.bodytemperature)*2000/efficiency))
|
||||
occupant.Paralyse(max(5/efficiency, (1/occupant.bodytemperature)*3000/efficiency))
|
||||
if(air_contents.oxygen > 2)
|
||||
if(occupant.getOxyLoss()) occupant.adjustOxyLoss(-1)
|
||||
@@ -469,9 +469,9 @@
|
||||
if(M.Victim == usr)
|
||||
to_chat(usr, "You're too busy getting your life sucked out of you.")
|
||||
return
|
||||
if(usr.stat != 0 || stat & (NOPOWER|BROKEN))
|
||||
if(usr.stat != CONSCIOUS || stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other
|
||||
if(usr.incapacitated()) //are you cuffed, dying, lying, stunned or other
|
||||
return
|
||||
put_mob(usr)
|
||||
return
|
||||
|
||||
@@ -485,7 +485,7 @@
|
||||
|
||||
if(O.loc == user) //no you can't pull things out of your ass
|
||||
return
|
||||
if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis || user.resting) //are you cuffed, dying, lying, stunned or other
|
||||
if(user.incapacitated()) //are you cuffed, dying, lying, stunned or other
|
||||
return
|
||||
if(get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)) // is the mob anchored, too far away from you, or are you too far away from the source
|
||||
return
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#define PIPE_DP_VENT 36
|
||||
#define PIPE_PASV_VENT 37
|
||||
#define PIPE_DTVALVE 38
|
||||
#define PIPE_CIRCULATOR 39
|
||||
|
||||
/obj/item/pipe
|
||||
name = "pipe"
|
||||
@@ -150,10 +151,16 @@
|
||||
src.pipe_type = PIPE_OMNI_MIXER
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/omni/filter))
|
||||
src.pipe_type = PIPE_OMNI_FILTER
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/binary/circulator))
|
||||
src.pipe_type = PIPE_CIRCULATOR
|
||||
|
||||
var/obj/machinery/atmospherics/trinary/triP = make_from
|
||||
if(istype(triP) && triP.flipped)
|
||||
src.flipped = 1
|
||||
|
||||
var/obj/machinery/atmospherics/binary/circulator/circP = make_from
|
||||
if(istype(circP) && circP.side == circP.CIRC_RIGHT)
|
||||
src.flipped = 1
|
||||
|
||||
else
|
||||
src.pipe_type = pipe_type
|
||||
@@ -214,6 +221,7 @@
|
||||
"dual-port vent", \
|
||||
"passive vent", \
|
||||
"digital t-valve", \
|
||||
"circulator/heat exchanger", \
|
||||
)
|
||||
name = nlist[pipe_type+1] + " fitting"
|
||||
var/list/islist = list( \
|
||||
@@ -256,11 +264,15 @@
|
||||
"dual-port vent", \
|
||||
"passive vent", \
|
||||
"dtvalve", \
|
||||
"circ", \
|
||||
)
|
||||
icon_state = islist[pipe_type + 1]
|
||||
var/obj/machinery/atmospherics/trinary/triP = make_from
|
||||
if(istype(triP) && triP.flipped)
|
||||
icon_state = "m_[icon_state]"
|
||||
var/obj/machinery/atmospherics/binary/circulator/circP = make_from
|
||||
if(istype(circP) && circP.side == circP.CIRC_RIGHT)
|
||||
icon_state = "m_[icon_state]"
|
||||
|
||||
// called by turf to know if should treat as bent or not on placement
|
||||
/obj/item/pipe/proc/is_bent_pipe()
|
||||
@@ -280,6 +292,10 @@
|
||||
|
||||
if( usr.stat || usr.restrained() )
|
||||
return
|
||||
|
||||
if(pipe_type == PIPE_CIRCULATOR)
|
||||
flip()
|
||||
return
|
||||
|
||||
src.dir = turn(src.dir, -90)
|
||||
|
||||
@@ -295,7 +311,7 @@
|
||||
if(usr.stat || usr.restrained())
|
||||
return
|
||||
|
||||
if(pipe_type in list(PIPE_GAS_FILTER, PIPE_GAS_MIXER, PIPE_TVALVE, PIPE_DTVALVE))
|
||||
if(pipe_type in list(PIPE_GAS_FILTER, PIPE_GAS_MIXER, PIPE_TVALVE, PIPE_DTVALVE, PIPE_CIRCULATOR))
|
||||
if(flipped)
|
||||
icon_state = copytext(icon_state,3)
|
||||
else
|
||||
@@ -529,6 +545,14 @@
|
||||
if(pipename)
|
||||
P.name = pipename
|
||||
P.construction(unflip(dir), pipe_dir, color)
|
||||
|
||||
if(PIPE_CIRCULATOR) //circulator
|
||||
var/obj/machinery/atmospherics/binary/circulator/C = new(src.loc)
|
||||
if(flipped)
|
||||
C.side = C.CIRC_RIGHT
|
||||
if(pipename)
|
||||
C.name = pipename
|
||||
C.construction(C.dir, C.initialize_directions, color)
|
||||
|
||||
if(PIPE_SCRUBBER) //scrubber
|
||||
var/obj/machinery/atmospherics/unary/vent_scrubber/S = new(src.loc)
|
||||
@@ -682,3 +706,4 @@
|
||||
#undef PIPE_DP_VENT
|
||||
#undef PIPE_PASV_VENT
|
||||
#undef PIPE_DTVALVE
|
||||
#undef PIPE_CIRCULATOR
|
||||
|
||||
@@ -104,11 +104,11 @@
|
||||
return
|
||||
|
||||
if(drownee.stat) //Mob is in critical.
|
||||
drownee.losebreath -= 3 //You're gonna die here.
|
||||
drownee.AdjustLoseBreath(3, bound_lower = 0, bound_upper = 20)
|
||||
add_logs(src, drownee, "drowned", null, null, 0) //log it to their VV, but don't spam the admins' chats with the logs
|
||||
drownee.visible_message("<span class='danger'>\The [drownee] appears to be drowning!</span>","<span class='userdanger'>You're quickly drowning!</span>") //inform them that they are fucked.
|
||||
else
|
||||
drownee.losebreath -= 2 //For every time you drown, you miss 2 breath attempts. Hope you catch on quick!
|
||||
drownee.AdjustLoseBreath(2, bound_lower = 0, bound_upper = 20) //For every time you drown, you miss 2 breath attempts. Hope you catch on quick!
|
||||
add_logs(src, drownee, "drowned", null, null, 0) //log it to their VV, but don't spam the admins' chats with the logs
|
||||
if(prob(35)) //35% chance to tell them what is going on. They should probably figure it out before then.
|
||||
drownee.visible_message("<span class='danger'>\The [drownee] flails, almost like they are drowning!</span>","<span class='userdanger'>You're lacking air!</span>") //*gasp* *gasp* *gasp* *gasp* *gasp*
|
||||
|
||||
@@ -164,9 +164,9 @@
|
||||
if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs))
|
||||
continue
|
||||
to_chat(M, "<font color='red' size='7'>HONK</font>")
|
||||
M.sleeping = 0
|
||||
M.stuttering = 20
|
||||
M.adjustEarDamage(0,30)
|
||||
M.SetSleeping(0)
|
||||
M.Stuttering(20)
|
||||
M.AdjustEarDeaf(30)
|
||||
M.Weaken(3)
|
||||
if(prob(30))
|
||||
M.Stun(10)
|
||||
|
||||
@@ -583,7 +583,7 @@ steam.start() -- spawns the effect
|
||||
// if(M.wear_suit, /obj/item/clothing/suit/wizrobe && (M.hat, /obj/item/clothing/head/wizard) && (M.shoes, /obj/item/clothing/shoes/sandal)) // I'll work on it later
|
||||
else
|
||||
M.drop_item()
|
||||
M:sleeping += 5
|
||||
M.AdjustSleeping(5)
|
||||
if(M.coughedtime != 1)
|
||||
M.coughedtime = 1
|
||||
M.emote("cough")
|
||||
@@ -600,7 +600,7 @@ steam.start() -- spawns the effect
|
||||
return
|
||||
else
|
||||
M.drop_item()
|
||||
M:sleeping += 5
|
||||
M.AdjustSleeping(5)
|
||||
if(M.coughedtime != 1)
|
||||
M.coughedtime = 1
|
||||
M.emote("cough")
|
||||
|
||||
@@ -12,22 +12,6 @@
|
||||
invisibility = 101
|
||||
|
||||
switch(name) //some of these are probably obsolete
|
||||
if("shuttle")
|
||||
log_runtime(EXCEPTION("Obsolete landmark '[name]' at ([x],[y],[z])"), src)
|
||||
qdel(src)
|
||||
|
||||
if("airtunnel_stop")
|
||||
airtunnel_stop = x
|
||||
|
||||
if("airtunnel_start")
|
||||
airtunnel_start = x
|
||||
|
||||
if("airtunnel_bottom")
|
||||
airtunnel_bottom = y
|
||||
|
||||
if("monkey")
|
||||
monkeystart += loc
|
||||
qdel(src)
|
||||
if("start")
|
||||
newplayer_start += loc
|
||||
qdel(src)
|
||||
@@ -52,29 +36,28 @@
|
||||
latejoin_cyborg += loc
|
||||
qdel(src)
|
||||
|
||||
//prisoners
|
||||
if("prisonwarp")
|
||||
prisonwarp += loc
|
||||
qdel(src)
|
||||
// if("mazewarp")
|
||||
// mazewarp += loc
|
||||
if("Holding Facility")
|
||||
holdingfacility += loc
|
||||
if("tdome1")
|
||||
tdome1 += loc
|
||||
if("tdome2")
|
||||
tdome2 += loc
|
||||
if("tdomeadmin")
|
||||
tdomeadmin += loc
|
||||
if("tdomeobserve")
|
||||
tdomeobserve += loc
|
||||
if("aroomwarp")
|
||||
aroomwarp += loc
|
||||
|
||||
//not prisoners
|
||||
|
||||
if("prisonsecuritywarp")
|
||||
prisonsecuritywarp += loc
|
||||
qdel(src)
|
||||
|
||||
if("tdome1")
|
||||
tdome1 += loc
|
||||
|
||||
if("tdome2")
|
||||
tdome2 += loc
|
||||
|
||||
if("tdomeadmin")
|
||||
tdomeadmin += loc
|
||||
|
||||
if("tdomeobserve")
|
||||
tdomeobserve += loc
|
||||
|
||||
if("aroomwarp")
|
||||
aroomwarp += loc
|
||||
|
||||
if("blobstart")
|
||||
blobstart += loc
|
||||
@@ -96,6 +79,11 @@
|
||||
|
||||
if("ERT Director")
|
||||
ertdirector += loc
|
||||
qdel(src)
|
||||
|
||||
if("Response Team")
|
||||
emergencyresponseteamspawn += loc
|
||||
qdel(src)
|
||||
|
||||
landmarks_list += src
|
||||
return 1
|
||||
|
||||
@@ -215,6 +215,7 @@
|
||||
desc = "Green squishy mess."
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "greenshatter"
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/spider/cocoon
|
||||
name = "cocoon"
|
||||
|
||||
@@ -57,10 +57,11 @@
|
||||
|
||||
var/close = range(world.view+round(devastation_range,1), epicenter)
|
||||
// to all distanced mobs play a different sound
|
||||
for(var/mob/M in world) if(M.z == epicenter.z) if(!(M in close))
|
||||
// check if the mob can hear
|
||||
if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space))
|
||||
M << 'sound/effects/explosionfar.ogg'
|
||||
for(var/mob/M in world)
|
||||
if(M.z == epicenter.z && !(M in close))
|
||||
// check if the mob can hear
|
||||
if(M.can_hear() && !istype(M.loc,/turf/space))
|
||||
M << 'sound/effects/explosionfar.ogg'
|
||||
|
||||
if(heavy_impact_range > 1)
|
||||
var/datum/effect/system/explosion/E = new/datum/effect/system/explosion()
|
||||
|
||||
@@ -474,10 +474,10 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
||||
if(!(eyes.status & ORGAN_ROBOT) || !(eyes.status & ORGAN_ASSISTED)) //robot eyes bleeding might be a bit silly
|
||||
to_chat(M, "<span class='danger'>Your eyes start to bleed profusely!</span>")
|
||||
if(prob(50))
|
||||
if(M.stat != 2)
|
||||
if(M.stat != DEAD)
|
||||
to_chat(M, "<span class='danger'>You drop what you're holding and clutch at your eyes!</span>")
|
||||
M.drop_item()
|
||||
M.eye_blurry += 10
|
||||
M.AdjustEyeBlurry(10)
|
||||
M.Paralyse(1)
|
||||
M.Weaken(2)
|
||||
if(eyes.damage >= eyes.min_broken_damage)
|
||||
@@ -488,7 +488,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
||||
H.UpdateDamageIcon()
|
||||
else
|
||||
M.take_organ_damage(7)
|
||||
M.eye_blurry += rand(3,4)
|
||||
M.AdjustEyeBlurry(rand(3,4))
|
||||
return
|
||||
|
||||
/obj/item/clean_blood()
|
||||
|
||||
@@ -236,10 +236,10 @@
|
||||
var/mob/living/carbon/human/C = target
|
||||
user.visible_message("<span class='danger'> [user] sprays [src] into the face of [target]!</span>")
|
||||
if(C.client)
|
||||
C.eye_blurry = max(C.eye_blurry, 3)
|
||||
C.eye_blind = max(C.eye_blind, 1)
|
||||
C.EyeBlurry(3)
|
||||
C.EyeBlind(1)
|
||||
if(C.check_eye_prot() <= 0) // no eye protection? ARGH IT BURNS.
|
||||
C.confused = max(C.confused, 3)
|
||||
C.Confused(3)
|
||||
C.Weaken(3)
|
||||
C.lip_style = "spray_face"
|
||||
C.lip_color = colour
|
||||
@@ -251,4 +251,4 @@
|
||||
overlays.Cut()
|
||||
var/image/I = image('icons/obj/crayons.dmi',icon_state = "[capped ? "spraycan_cap_colors" : "spraycan_colors"]")
|
||||
I.color = colour
|
||||
overlays += I
|
||||
overlays += I
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
interact(user)
|
||||
|
||||
/obj/item/device/camera_bug/check_eye(var/mob/user as mob)
|
||||
if(user.stat || loc != user || !user.canmove || user.eye_blind || !current)
|
||||
if(user.stat || loc != user || !user.canmove || !user.can_see() || !current)
|
||||
user.reset_view(null)
|
||||
user.unset_machine()
|
||||
return null
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
if(M.weakeyes)
|
||||
M.Weaken(3) //quick weaken bypasses eye protection but has no eye flash
|
||||
if(M.flash_eyes(1, 1))
|
||||
M.confused += power
|
||||
M.AdjustConfused(power)
|
||||
terrible_conversion_proc(M, user)
|
||||
M.Stun(1)
|
||||
visible_message("<span class='disarm'>[user] blinds [M] with the flash!</span>")
|
||||
@@ -96,7 +96,7 @@
|
||||
to_chat(M, "<span class='danger'>[user] fails to blind you with the flash!</span>")
|
||||
else
|
||||
if(M.flash_eyes())
|
||||
M.confused += power
|
||||
M.AdjustConfused(power)
|
||||
|
||||
/obj/item/device/flash/attack(mob/living/M, mob/user)
|
||||
if(!try_use_flash(user))
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
G.state = GRAB_NECK
|
||||
G.hud.icon_state = "kill"
|
||||
G.hud.name = "kill"
|
||||
M.silent += 1
|
||||
M.AdjustSilence(1)
|
||||
|
||||
garrote_time = world.time + 10
|
||||
processing_objects.Add(src)
|
||||
@@ -152,11 +152,11 @@
|
||||
return
|
||||
|
||||
|
||||
strangling.silent = max(strangling.silent, 3) // Non-improvised effects
|
||||
strangling.Silence(3) // Non-improvised effects
|
||||
strangling.apply_damage(4, OXY, "head")
|
||||
|
||||
|
||||
/obj/item/weapon/twohanded/garrote/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is wrapping the [src] around \his neck and pulling the handles! It looks like \he's trying to commit suicide.</span>")
|
||||
playsound(src.loc, 'sound/weapons/cablecuff.ogg', 15, 1, -1)
|
||||
return (OXYLOSS)
|
||||
return (OXYLOSS)
|
||||
|
||||
@@ -51,12 +51,13 @@
|
||||
if(!ear_safety)
|
||||
M.Stun(max(10/distance, 3))
|
||||
M.Weaken(max(10/distance, 3))
|
||||
M.setEarDamage(M.ear_damage + rand(0, 5), max(M.ear_deaf,15))
|
||||
M.EarDeaf(15)
|
||||
M.AdjustEarDamage(rand(0, 5))
|
||||
if(M.ear_damage >= 15)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring badly!</span>")
|
||||
if(prob(M.ear_damage - 10 + 5))
|
||||
if(prob(M.ear_damage - 5))
|
||||
to_chat(M, "<span class='warning'>You can't hear anything!</span>")
|
||||
M.disabilities |= DEAF
|
||||
M.BecomeDeaf()
|
||||
else
|
||||
if(M.ear_damage >= 5)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
if(do_after(user, 50, target = H))
|
||||
playsound(loc, "sound/weapons/bladeslice.ogg", 50, 1, -1)
|
||||
user.visible_message("<span class='danger'>[user] abruptly stops cutting [M]'s hair and slices their throat!</span>", "<span class='danger'>You stop cutting [M]'s hair and slice their throat!</span>") //Just a little off the top.
|
||||
H.losebreath += 10 //30 Oxy damage over time
|
||||
H.AdjustLoseBreath(10) //30 Oxy damage over time
|
||||
H.apply_damage(18, BRUTE, "head", sharp =1, edge =1, used_weapon = "scissors")
|
||||
var/turf/location = get_turf(H)
|
||||
if(istype(location, /turf/simulated))
|
||||
|
||||
@@ -138,8 +138,8 @@
|
||||
affected_mob.setStaminaLoss(0)
|
||||
var/status = CANSTUN | CANWEAKEN | CANPARALYSE
|
||||
affected_mob.status_flags &= ~status
|
||||
affected_mob.dizziness = max(0, affected_mob.dizziness-10)
|
||||
affected_mob.drowsyness = max(0, affected_mob.drowsyness-10)
|
||||
affected_mob.AdjustDizzy(-10)
|
||||
affected_mob.AdjustDrowsy(-10)
|
||||
affected_mob.SetSleeping(0)
|
||||
stage = 1
|
||||
switch(progenitor.hunger)
|
||||
@@ -181,4 +181,4 @@
|
||||
affected_mob.adjustBruteLoss(5)
|
||||
|
||||
if(ismob(progenitor.loc))
|
||||
progenitor.hunger++
|
||||
progenitor.hunger++
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
if(H.get_item_by_slot(slot_head) == src)
|
||||
if(H.internal)
|
||||
return
|
||||
H.losebreath += 1
|
||||
H.AdjustLoseBreath(1)
|
||||
else
|
||||
storage_slots = 7
|
||||
processing_objects.Remove(src)
|
||||
|
||||
@@ -27,131 +27,132 @@
|
||||
max_w_class = 2
|
||||
max_combined_w_class = 14
|
||||
|
||||
examine(mob/user)
|
||||
if(..(user, 1))
|
||||
to_chat(user, text("The service panel is [src.open ? "open" : "closed"]."))
|
||||
/obj/item/weapon/storage/secure/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
to_chat(user, text("The service panel is [open ? "open" : "closed"]."))
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(locked)
|
||||
if((istype(W, /obj/item/weapon/melee/energy/blade)) && (!src.emagged))
|
||||
emag_act(user, W)
|
||||
/obj/item/weapon/storage/secure/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(locked)
|
||||
if((istype(W, /obj/item/weapon/melee/energy/blade)) && (!emagged))
|
||||
emag_act(user, W)
|
||||
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(do_after(user, 20, target = src))
|
||||
src.open =! src.open
|
||||
user.show_message(text("\blue You [] the service panel.", (src.open ? "open" : "close")))
|
||||
return
|
||||
if((istype(W, /obj/item/device/multitool)) && (src.open == 1)&& (!src.l_hacking))
|
||||
user.show_message(text("\red Now attempting to reset internal memory, please hold."), 1)
|
||||
src.l_hacking = 1
|
||||
if(do_after(usr, 100, target = src))
|
||||
if(prob(40))
|
||||
src.l_setshort = 1
|
||||
src.l_set = 0
|
||||
user.show_message(text("\red Internal memory reset. Please give it a few seconds to reinitialize."), 1)
|
||||
sleep(80)
|
||||
src.l_setshort = 0
|
||||
src.l_hacking = 0
|
||||
else
|
||||
user.show_message(text("\red Unable to reset internal memory."), 1)
|
||||
src.l_hacking = 0
|
||||
else src.l_hacking = 0
|
||||
return
|
||||
//At this point you have exhausted all the special things to do when locked
|
||||
// ... but it's still locked.
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(do_after(user, 20, target = src))
|
||||
open = !open
|
||||
user.show_message("<span class='notice'>You [open ? "open" : "close"] the service panel.</span>", 1)
|
||||
return
|
||||
|
||||
// -> storage/attackby() what with handle insertion, etc
|
||||
..()
|
||||
|
||||
emag_act(user as mob, weapon as obj)
|
||||
if(!emagged)
|
||||
emagged = 1
|
||||
src.overlays += image('icons/obj/storage.dmi', icon_sparking)
|
||||
sleep(6)
|
||||
src.overlays = null
|
||||
overlays += image('icons/obj/storage.dmi', icon_locking)
|
||||
locked = 0
|
||||
if(istype(weapon, /obj/item/weapon/melee/energy/blade))
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src.loc)
|
||||
spark_system.start()
|
||||
playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1)
|
||||
playsound(src.loc, "sparks", 50, 1)
|
||||
to_chat(user, "You slice through the lock on [src].")
|
||||
else
|
||||
to_chat(user, "You short out the lock on [src].")
|
||||
return
|
||||
|
||||
|
||||
MouseDrop(over_object, src_location, over_location)
|
||||
if(locked)
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
var/dat = text("<TT><B>[]</B><BR>\n\nLock Status: []",src, (src.locked ? "LOCKED" : "UNLOCKED"))
|
||||
var/message = "Code"
|
||||
if((src.l_set == 0) && (!src.emagged) && (!src.l_setshort))
|
||||
dat += text("<p>\n<b>5-DIGIT PASSCODE NOT SET.<br>ENTER NEW PASSCODE.</b>")
|
||||
if(src.emagged)
|
||||
dat += text("<p>\n<font color=red><b>LOCKING SYSTEM ERROR - 1701</b></font>")
|
||||
if(src.l_setshort)
|
||||
dat += text("<p>\n<font color=red><b>ALERT: MEMORY SYSTEM ERROR - 6040 201</b></font>")
|
||||
message = text("[]", src.code)
|
||||
if(!src.locked)
|
||||
message = "*****"
|
||||
dat += {"<HR>\n>[message]<BR>\n
|
||||
<A href='?src=[UID()];type=1'>1</A>-
|
||||
<A href='?src=[UID()];type=2'>2</A>-
|
||||
<A href='?src=[UID()];type=3'>3</A><BR>\n
|
||||
<A href='?src=[UID()];type=4'>4</A>-
|
||||
<A href='?src=[UID()];type=5'>5</A>-
|
||||
<A href='?src=[UID()];type=6'>6</A><BR>\n
|
||||
<A href='?src=[UID()];type=7'>7</A>-
|
||||
<A href='?src=[UID()];type=8'>8</A>-
|
||||
<A href='?src=[UID()];type=9'>9</A><BR>\n
|
||||
<A href='?src=[UID()];type=R'>R</A>-
|
||||
<A href='?src=[UID()];type=0'>0</A>-
|
||||
<A href='?src=[UID()];type=E'>E</A><BR>\n</TT>"}
|
||||
user << browse(dat, "window=caselock;size=300x280")
|
||||
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
if((usr.stat || usr.restrained()) || (get_dist(src, usr) > 1))
|
||||
return
|
||||
if(href_list["type"])
|
||||
if(href_list["type"] == "E")
|
||||
if((src.l_set == 0) && (length(src.code) == 5) && (!src.l_setshort) && (src.code != "ERROR"))
|
||||
src.l_code = src.code
|
||||
src.l_set = 1
|
||||
else if((src.code == src.l_code) && (src.emagged == 0) && (src.l_set == 1))
|
||||
src.locked = 0
|
||||
src.overlays = null
|
||||
overlays += image('icons/obj/storage.dmi', icon_opened)
|
||||
src.code = null
|
||||
if((istype(W, /obj/item/device/multitool)) && (open == 1) && (!l_hacking))
|
||||
user.show_message("<span class='danger'>Now attempting to reset internal memory, please hold.</span>", 1)
|
||||
l_hacking = 1
|
||||
if(do_after(usr, 100, target = src))
|
||||
if(prob(40))
|
||||
l_setshort = 1
|
||||
l_set = 0
|
||||
user.show_message("<span class='danger'>Internal memory reset. Please give it a few seconds to reinitialize.</span>", 1)
|
||||
sleep(80)
|
||||
l_setshort = 0
|
||||
l_hacking = 0
|
||||
else
|
||||
src.code = "ERROR"
|
||||
else
|
||||
if((href_list["type"] == "R") && (src.emagged == 0) && (!src.l_setshort))
|
||||
src.locked = 1
|
||||
src.overlays = null
|
||||
src.code = null
|
||||
src.close(usr)
|
||||
else
|
||||
src.code += text("[]", href_list["type"])
|
||||
if(length(src.code) > 5)
|
||||
src.code = "ERROR"
|
||||
src.add_fingerprint(usr)
|
||||
for(var/mob/M in viewers(1, src.loc))
|
||||
if((M.client && M.machine == src))
|
||||
src.attack_self(M)
|
||||
return
|
||||
user.show_message("<span class='danger'>Unable to reset internal memory.</span>", 1)
|
||||
l_hacking = 0
|
||||
else
|
||||
l_hacking = 0
|
||||
return
|
||||
//At this point you have exhausted all the special things to do when locked
|
||||
// ... but it's still locked.
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/secure/emag_act(user as mob, weapon as obj)
|
||||
if(!emagged)
|
||||
emagged = 1
|
||||
overlays += image('icons/obj/storage.dmi', icon_sparking)
|
||||
sleep(6)
|
||||
overlays = null
|
||||
overlays += image('icons/obj/storage.dmi', icon_locking)
|
||||
locked = 0
|
||||
if(istype(weapon, /obj/item/weapon/melee/energy/blade))
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src.loc)
|
||||
spark_system.start()
|
||||
playsound(loc, 'sound/weapons/blade1.ogg', 50, 1)
|
||||
playsound(loc, "sparks", 50, 1)
|
||||
to_chat(user, "You slice through the lock on [src].")
|
||||
else
|
||||
to_chat(user, "You short out the lock on [src].")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/storage/secure/MouseDrop(over_object, src_location, over_location)
|
||||
if(locked)
|
||||
add_fingerprint(usr)
|
||||
to_chat(usr, "<span class='warning'>It's locked!</span>")
|
||||
return 0
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/secure/attack_self(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
var/dat = text("<TT><B>[]</B><BR>\n\nLock Status: []", src, (locked ? "LOCKED" : "UNLOCKED"))
|
||||
var/message = "Code"
|
||||
if((l_set == 0) && (!emagged) && (!l_setshort))
|
||||
dat += text("<p>\n<b>5-DIGIT PASSCODE NOT SET.<br>ENTER NEW PASSCODE.</b>")
|
||||
if(emagged)
|
||||
dat += text("<p>\n<font color=red><b>LOCKING SYSTEM ERROR - 1701</b></font>")
|
||||
if(l_setshort)
|
||||
dat += text("<p>\n<font color=red><b>ALERT: MEMORY SYSTEM ERROR - 6040 201</b></font>")
|
||||
message = text("[]", code)
|
||||
if(!locked)
|
||||
message = "*****"
|
||||
dat += {"<HR>\n>[message]<BR>\n
|
||||
<A href='?src=[UID()];type=1'>1</A>-
|
||||
<A href='?src=[UID()];type=2'>2</A>-
|
||||
<A href='?src=[UID()];type=3'>3</A><BR>\n
|
||||
<A href='?src=[UID()];type=4'>4</A>-
|
||||
<A href='?src=[UID()];type=5'>5</A>-
|
||||
<A href='?src=[UID()];type=6'>6</A><BR>\n
|
||||
<A href='?src=[UID()];type=7'>7</A>-
|
||||
<A href='?src=[UID()];type=8'>8</A>-
|
||||
<A href='?src=[UID()];type=9'>9</A><BR>\n
|
||||
<A href='?src=[UID()];type=R'>R</A>-
|
||||
<A href='?src=[UID()];type=0'>0</A>-
|
||||
<A href='?src=[UID()];type=E'>E</A><BR>\n</TT>"}
|
||||
user << browse(dat, "window=caselock;size=300x280")
|
||||
|
||||
/obj/item/weapon/storage/secure/Topic(href, href_list)
|
||||
..()
|
||||
if(usr.incapacitated() || (get_dist(src, usr) > 1))
|
||||
return
|
||||
if(href_list["type"])
|
||||
if(href_list["type"] == "E")
|
||||
if((l_set == 0) && (length(code) == 5) && (!l_setshort) && (code != "ERROR"))
|
||||
l_code = code
|
||||
l_set = 1
|
||||
else if((code == l_code) && (emagged == 0) && (l_set == 1))
|
||||
locked = 0
|
||||
overlays = null
|
||||
overlays += image('icons/obj/storage.dmi', icon_opened)
|
||||
code = null
|
||||
else
|
||||
code = "ERROR"
|
||||
else
|
||||
if((href_list["type"] == "R") && (emagged == 0) && (!l_setshort))
|
||||
locked = 1
|
||||
overlays = null
|
||||
code = null
|
||||
close(usr)
|
||||
else
|
||||
code += text("[]", href_list["type"])
|
||||
if(length(code) > 5)
|
||||
code = "ERROR"
|
||||
add_fingerprint(usr)
|
||||
for(var/mob/M in viewers(1, loc))
|
||||
if((M.client && M.machine == src))
|
||||
attack_self(M)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/secure/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(!locked)
|
||||
return ..()
|
||||
@@ -160,8 +161,10 @@
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/storage/secure/hear_talk(mob/living/M as mob, msg)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/secure/hear_message(mob/living/M as mob, msg)
|
||||
return
|
||||
|
||||
// -----------------------------
|
||||
// Secure Briefcase
|
||||
@@ -174,7 +177,7 @@
|
||||
item_state = "sec-case"
|
||||
flags = CONDUCT
|
||||
hitsound = "swing_hit"
|
||||
force = 8.0
|
||||
force = 8
|
||||
throw_speed = 2
|
||||
throw_range = 4
|
||||
w_class = 4
|
||||
@@ -182,36 +185,36 @@
|
||||
max_combined_w_class = 21
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/paper(src)
|
||||
new /obj/item/weapon/pen(src)
|
||||
/obj/item/weapon/storage/secure/briefcase/New()
|
||||
..()
|
||||
handle_item_insertion(new /obj/item/weapon/paper, 1)
|
||||
handle_item_insertion(new /obj/item/weapon/pen, 1)
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
if((src.loc == user) && (src.locked == 1))
|
||||
to_chat(usr, "\red [src] is locked and cannot be opened!")
|
||||
else if((src.loc == user) && (!src.locked))
|
||||
playsound(src.loc, "rustle", 50, 1, -5)
|
||||
if(user.s_active)
|
||||
user.s_active.close(user) //Close and re-open
|
||||
src.show_to(user)
|
||||
else
|
||||
..()
|
||||
for(var/mob/M in range(1))
|
||||
if(M.s_active == src)
|
||||
src.close(M)
|
||||
src.orient2hud(user)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
/obj/item/weapon/storage/secure/briefcase/attack_hand(mob/user as mob)
|
||||
if((loc == user) && (locked == 1))
|
||||
to_chat(usr, "<span class='warning'>[src] is locked and cannot be opened!</span>")
|
||||
else if((loc == user) && !locked)
|
||||
playsound(loc, "rustle", 50, 1, -5)
|
||||
if(user.s_active)
|
||||
user.s_active.close(user) //Close and re-open
|
||||
show_to(user)
|
||||
else
|
||||
..()
|
||||
for(var/mob/M in range(1))
|
||||
if(M.s_active == src)
|
||||
close(M)
|
||||
orient2hud(user)
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
//Syndie variant of Secure Briefcase. Contains space cash, slightly more robust.
|
||||
/obj/item/weapon/storage/secure/briefcase/syndie
|
||||
force = 15.0
|
||||
force = 15
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/syndie/New()
|
||||
..()
|
||||
for(var/i = 0, i < storage_slots - 2, i++)
|
||||
new /obj/item/weapon/spacecash/c1000(src)
|
||||
return ..()
|
||||
handle_item_insertion(new /obj/item/weapon/spacecash/c1000, 1)
|
||||
|
||||
// -----------------------------
|
||||
// Secure Safe
|
||||
@@ -224,30 +227,17 @@
|
||||
icon_opened = "safe0"
|
||||
icon_locking = "safeb"
|
||||
icon_sparking = "safespark"
|
||||
force = 8.0
|
||||
force = 8
|
||||
w_class = 5
|
||||
max_w_class = 8
|
||||
anchored = 1.0
|
||||
anchored = 1
|
||||
density = 0
|
||||
cant_hold = list("/obj/item/weapon/storage/secure/briefcase")
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/paper(src)
|
||||
new /obj/item/weapon/pen(src)
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
return attack_self(user)
|
||||
|
||||
// Clown planet WMD storage
|
||||
/obj/item/weapon/storage/secure/safe/clown
|
||||
name="WMD Storage"
|
||||
|
||||
/obj/item/weapon/storage/secure/safe/clown/New()
|
||||
for(var/i=0;i<10;i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/pie(src)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/secure/safe/HoS/New()
|
||||
/obj/item/weapon/storage/secure/safe/New()
|
||||
..()
|
||||
//new /obj/item/weapon/storage/lockbox/clusterbang(src) This item is currently broken... and probably shouldnt exist to begin with (even though it's cool)
|
||||
handle_item_insertion(new /obj/item/weapon/paper, 1)
|
||||
handle_item_insertion(new /obj/item/weapon/pen, 1)
|
||||
|
||||
/obj/item/weapon/storage/secure/safe/attack_hand(mob/user as mob)
|
||||
return attack_self(user)
|
||||
|
||||
@@ -420,8 +420,7 @@
|
||||
H.lip_style = null //Washes off lipstick
|
||||
H.lip_color = initial(H.lip_color)
|
||||
H.regenerate_icons()
|
||||
user.drowsyness -= rand(2,3) //Washing your face wakes you up if you're falling asleep
|
||||
user.drowsyness = Clamp(user.drowsyness, 0, INFINITY)
|
||||
user.AdjustDrowsy(-rand(2,3)) //Washing your face wakes you up if you're falling asleep
|
||||
else
|
||||
user.clean_blood()
|
||||
|
||||
@@ -459,4 +458,3 @@
|
||||
icon_state = "puddle-splash"
|
||||
..()
|
||||
icon_state = "puddle"
|
||||
|
||||
|
||||
+38
-41
@@ -73,7 +73,6 @@ var/ert_request_answered = 0
|
||||
return 0
|
||||
|
||||
/mob/dead/observer/proc/JoinResponseTeam()
|
||||
|
||||
if(!send_emergency_team)
|
||||
to_chat(src, "No emergency response team is currently being sent.")
|
||||
return 0
|
||||
@@ -82,35 +81,23 @@ var/ert_request_answered = 0
|
||||
to_chat(src, "<span class='warning'>You are jobbanned from the emergency reponse team!</span>")
|
||||
return 0
|
||||
|
||||
var/player_age_check = check_client_age(src.client, responseteam_age)
|
||||
var/player_age_check = check_client_age(client, responseteam_age)
|
||||
if(player_age_check && config.use_age_restriction_for_antags)
|
||||
to_chat(src, "<span class='warning'>This role is not yet available to you. You need to wait another [player_age_check] days.</span>")
|
||||
return 0
|
||||
|
||||
if(src.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
|
||||
if(has_enabled_antagHUD == 1 && config.antag_hud_restricted)
|
||||
to_chat(src, "<span class='boldnotice'>Upon using the antagHUD you forfeited the ability to join the round.</span>")
|
||||
return 0
|
||||
|
||||
if(response_team_members.len > 6)
|
||||
to_chat(src, "The emergency response team is already full!")
|
||||
return 0
|
||||
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(L.name == "Response Team")
|
||||
L.name = null
|
||||
if(!src.client)
|
||||
return
|
||||
spawn(-1)
|
||||
var/client/C = src.client
|
||||
var/mob/living/carbon/human/new_commando = C.create_response_team(L.loc)
|
||||
qdel(L)
|
||||
new_commando.mind.key = src.key
|
||||
new_commando.key = src.key
|
||||
new_commando.update_icons()
|
||||
return 1
|
||||
|
||||
return 1
|
||||
|
||||
/proc/trigger_armed_response_team(var/datum/response_team/response_team_type)
|
||||
|
||||
response_team_members = list()
|
||||
active_team = response_team_type
|
||||
|
||||
send_emergency_team = 1
|
||||
@@ -118,24 +105,41 @@ var/ert_request_answered = 0
|
||||
if(!ert_candidates.len)
|
||||
active_team.cannot_send_team()
|
||||
send_emergency_team = 0
|
||||
return
|
||||
var/teamsize = 0
|
||||
return 0
|
||||
|
||||
// Respawnable players get first dibs
|
||||
for(var/mob/dead/observer/M in (ert_candidates & respawnable_list))
|
||||
teamsize += M.JoinResponseTeam()
|
||||
for(var/mob/dead/observer/M in ert_candidates)
|
||||
if((M in respawnable_list) && M.JoinResponseTeam())
|
||||
response_team_members |= M
|
||||
// If there's still open slots, non-respawnable players can fill them
|
||||
for(var/mob/dead/observer/M in (ert_candidates - respawnable_list))
|
||||
teamsize += M.JoinResponseTeam()
|
||||
send_emergency_team = 0
|
||||
if (!teamsize)
|
||||
if(M.JoinResponseTeam())
|
||||
response_team_members |= M
|
||||
|
||||
if(!response_team_members.len)
|
||||
active_team.cannot_send_team()
|
||||
return
|
||||
active_team.announce_team()
|
||||
send_emergency_team = 0
|
||||
return 0
|
||||
|
||||
/client/proc/create_response_team(obj/spawn_location)
|
||||
var/index = 1
|
||||
for(var/mob/M in response_team_members)
|
||||
if(index > emergencyresponseteamspawn.len)
|
||||
index = 1
|
||||
|
||||
var/client/C = M.client
|
||||
var/mob/living/carbon/human/new_commando = C.create_response_team(emergencyresponseteamspawn[index])
|
||||
new_commando.mind.key = M.key
|
||||
new_commando.key = M.key
|
||||
new_commando.update_icons()
|
||||
index++
|
||||
|
||||
send_emergency_team = 0
|
||||
active_team.announce_team()
|
||||
return 1
|
||||
|
||||
/client/proc/create_response_team(var/turf/spawn_location)
|
||||
var/mob/living/carbon/human/M = new(null)
|
||||
var/obj/item/organ/external/head/head_organ = M.get_organ("head")
|
||||
response_team_members |= M
|
||||
|
||||
var/new_gender = alert(src, "Please select your gender.", "ERT Character Generation", "Male", "Female")
|
||||
|
||||
@@ -157,15 +161,6 @@ var/ert_request_answered = 0
|
||||
var/hair_c = pick("#8B4513","#000000","#FF4500","#FFD700") // Brown, black, red, blonde
|
||||
var/eye_c = pick("#000000","#8B4513","1E90FF") // Black, brown, blue
|
||||
var/skin_tone = pick(-50, -30, -10, 0, 0, 0, 10) // Caucasian/black
|
||||
var/hair_style = "Bald"
|
||||
var/facial_hair_style = "Shaved"
|
||||
if(M.gender == MALE)
|
||||
hair_style = pick(hair_styles_male_list)
|
||||
facial_hair_style = pick(facial_hair_styles_list)
|
||||
else
|
||||
hair_style = pick(hair_styles_female_list)
|
||||
if(prob(5))
|
||||
facial_hair_style = pick(facial_hair_styles_list)
|
||||
|
||||
head_organ.r_facial = color2R(hair_c)
|
||||
head_organ.g_facial = color2G(hair_c)
|
||||
@@ -175,12 +170,14 @@ var/ert_request_answered = 0
|
||||
head_organ.b_hair = color2B(hair_c)
|
||||
M.change_eye_color(color2R(eye_c), color2G(eye_c), color2B(eye_c))
|
||||
M.s_tone = skin_tone
|
||||
head_organ.h_style = hair_style
|
||||
head_organ.f_style = facial_hair_style
|
||||
head_organ.h_style = random_hair_style(M.gender, head_organ.species.name)
|
||||
head_organ.f_style = random_facial_hair_style(M.gender, head_organ.species.name)
|
||||
|
||||
M.real_name = "[pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant First Class", "Master Sergeant", "Sergeant Major")] [pick(last_names)]"
|
||||
M.name = M.real_name
|
||||
M.age = rand(23,35)
|
||||
M.regenerate_icons()
|
||||
M.update_body()
|
||||
|
||||
//Creates mind stuff.
|
||||
M.mind = new
|
||||
@@ -190,7 +187,7 @@ var/ert_request_answered = 0
|
||||
M.mind.special_role = SPECIAL_ROLE_ERT
|
||||
if(!(M.mind in ticker.minds))
|
||||
ticker.minds += M.mind //Adds them to regular mind list.
|
||||
M.loc = spawn_location
|
||||
M.forceMove(spawn_location)
|
||||
|
||||
active_team.equip_officer(class, M)
|
||||
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ var/list/ricochet = list('sound/weapons/effects/ric1.ogg', 'sound/weapons/effect
|
||||
M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, is_global, S)
|
||||
|
||||
/mob/proc/playsound_local(var/turf/turf_source, soundin, vol as num, vary, frequency, falloff, is_global, sound/S)
|
||||
if(!src.client || ear_deaf > 0)
|
||||
if(!src.client || !can_hear())
|
||||
return
|
||||
|
||||
if(!S)
|
||||
|
||||
@@ -934,11 +934,11 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
for(var/obj/item/briefcase_item in sec_briefcase)
|
||||
qdel(briefcase_item)
|
||||
for(var/i=3, i>0, i--)
|
||||
sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000
|
||||
sec_briefcase.contents += new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow
|
||||
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba
|
||||
sec_briefcase.contents += new /obj/item/ammo_box/a357
|
||||
sec_briefcase.contents += new /obj/item/weapon/grenade/plastic/c4
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/weapon/spacecash/c1000, 1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, 1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/projectile/revolver/mateba, 1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/ammo_box/a357, 1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/weapon/grenade/plastic/c4, 1)
|
||||
// briefcase must be unlocked by setting the code.
|
||||
M.equip_to_slot_or_del(sec_briefcase, slot_l_hand)
|
||||
var/obj/item/weapon/implant/dust/DUST = new /obj/item/weapon/implant/dust(M)
|
||||
|
||||
@@ -36,7 +36,7 @@ var/global/list/frozen_mob_list = list()
|
||||
anchored = 1
|
||||
frozen = AO
|
||||
admin_prev_sleeping = sleeping
|
||||
sleeping += 20000
|
||||
AdjustSleeping(20000)
|
||||
if(!(src in frozen_mob_list))
|
||||
frozen_mob_list += src
|
||||
|
||||
@@ -49,7 +49,7 @@ var/global/list/frozen_mob_list = list()
|
||||
anchored = 0
|
||||
overlays -= frozen
|
||||
frozen = null
|
||||
sleeping = admin_prev_sleeping
|
||||
SetSleeping(admin_prev_sleeping)
|
||||
admin_prev_sleeping = null
|
||||
if(src in frozen_mob_list)
|
||||
frozen_mob_list -= src
|
||||
|
||||
@@ -411,11 +411,12 @@
|
||||
var/mob/living/carbon/human/M = src.loc
|
||||
to_chat(M, "\red The Optical Thermal Scanner overloads and blinds you!")
|
||||
if(M.glasses == src)
|
||||
M.eye_blind = 3
|
||||
M.eye_blurry = 5
|
||||
M.disabilities |= NEARSIGHTED
|
||||
spawn(100)
|
||||
M.disabilities &= ~NEARSIGHTED
|
||||
M.EyeBlind(3)
|
||||
M.EyeBlurry(5)
|
||||
if(!(M.disabilities & NEARSIGHTED))
|
||||
M.BecomeNearsighted()
|
||||
spawn(100)
|
||||
M.CureNearsighted()
|
||||
..()
|
||||
|
||||
/obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete
|
||||
|
||||
@@ -189,15 +189,11 @@
|
||||
to_chat(H, "<span class='notice'>You deploy your hardsuit helmet, sealing you off from the world.</span>")
|
||||
H.update_inv_head()
|
||||
|
||||
/obj/item/clothing/suit/space/rig/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
/obj/item/clothing/suit/space/rig/attackby(obj/item/W, mob/user, params)
|
||||
if(!isliving(user))
|
||||
return
|
||||
|
||||
if(istype(src.loc,/mob/living))
|
||||
to_chat(user, "How do you propose to modify a hardsuit while it is being worn?")
|
||||
return
|
||||
|
||||
if(istype(W,/obj/item/weapon/screwdriver))
|
||||
if(istype(W,/obj/item/weapon/screwdriver) && can_modify(user))
|
||||
if(!helmet)
|
||||
to_chat(user, "\The [src] does not have a helmet installed.")
|
||||
else
|
||||
@@ -213,7 +209,7 @@
|
||||
boots = null
|
||||
return
|
||||
|
||||
else if(istype(W,/obj/item/clothing/head/helmet/space))
|
||||
else if(istype(W,/obj/item/clothing/head/helmet/space) && can_modify(user))
|
||||
if(!attached_helmet)
|
||||
to_chat(user, "\The [src] does not have a helmet mount.")
|
||||
return
|
||||
@@ -226,7 +222,7 @@
|
||||
src.helmet = W
|
||||
return
|
||||
|
||||
else if(istype(W,/obj/item/clothing/shoes/magboots))
|
||||
else if(istype(W,/obj/item/clothing/shoes/magboots) && can_modify(user))
|
||||
if(!attached_boots)
|
||||
to_chat(user, "\The [src] does not have boot mounts.")
|
||||
return
|
||||
@@ -242,6 +238,13 @@
|
||||
return ..()
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/space/rig/proc/can_modify(mob/living/user)
|
||||
if(isliving(loc))
|
||||
to_chat(user, "<span class='info'>You can not modify the hardsuit while it is being worn.</span>")
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
//Engineering rig
|
||||
/obj/item/clothing/head/helmet/space/rig/engineering
|
||||
|
||||
@@ -336,7 +336,7 @@
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
if(H.head == src)
|
||||
H.slurring = max(3, H.slurring) //always slur
|
||||
H.Slur(3) //always slur
|
||||
|
||||
/obj/item/clothing/head/beret/fluff/linda //Epic_Charger: Linda Clark
|
||||
name = "Green beret"
|
||||
@@ -433,6 +433,15 @@
|
||||
item_state = "castile_dress"
|
||||
item_color = "castile_dress"
|
||||
|
||||
/obj/item/clothing/under/fluff/elishirt // FlattestGuitar9: Eli Randolph
|
||||
name = "casual dress shirt"
|
||||
desc = "A soft, white dress shirt paired up with black suit pants. The set looks comfortable."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "elishirt"
|
||||
item_state = "elishirt"
|
||||
item_color = "elishirt"
|
||||
displays_id = 0
|
||||
|
||||
/obj/item/clothing/under/psysuit/fluff/isaca_sirius_1 // Xilia: Isaca Sirius
|
||||
name = "Isaca's suit"
|
||||
desc = "Black, comfortable and nicely fitting suit. Made not to hinder the wearer in any way. Made of some exotic fabric. And some strange glowing jewel at the waist. Name labels says; Property of Isaca Sirius; The Seeder."
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
var/armor = H.getarmor(type = "rad")
|
||||
if((H.species.flags & RADIMMUNE) || armor >= 75) // Leave radiation-immune species/rad armored players completely unaffected
|
||||
continue
|
||||
H.hallucination += rand(50, 100)
|
||||
H.AdjustHallucinate(rand(50, 100))
|
||||
|
||||
/datum/event/mass_hallucination/announce()
|
||||
event_announcement.Announce("It seems that station [station_name()] is passing through a minor radiation field, this may cause some hallucination, but no further damage")
|
||||
event_announcement.Announce("It seems that station [station_name()] is passing through a minor radiation field, this may cause some hallucination, but no further damage")
|
||||
|
||||
@@ -279,11 +279,11 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
/obj/effect/hallucination/simple/singularity/proc/Eat(atom/OldLoc, Dir)
|
||||
var/target_dist = get_dist(src,target)
|
||||
if(target_dist<=3) //"Eaten"
|
||||
target.sleeping = 20
|
||||
target.Sleeping(20)
|
||||
target.hal_crit = 1
|
||||
target.hal_screwyhud = 1
|
||||
spawn(rand(50,100))
|
||||
target.sleeping = 0
|
||||
target.SetSleeping(0)
|
||||
target.hal_crit = 0
|
||||
target.hal_screwyhud = 0
|
||||
|
||||
@@ -480,7 +480,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
my_target.show_message("<span class='danger'>[src.name] has attacked [my_target] with [weapon_name]!</span>", 1)
|
||||
my_target.staminaloss += 30
|
||||
if(prob(20))
|
||||
my_target.eye_blurry += 3
|
||||
my_target.AdjustEyeBlurry(3)
|
||||
if(prob(33))
|
||||
if(!locate(/obj/effect/overlay) in my_target.loc)
|
||||
fake_blood(my_target)
|
||||
@@ -752,11 +752,11 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite
|
||||
halimage = null
|
||||
if("death")
|
||||
//Fake death
|
||||
src.sleeping = 20
|
||||
Sleeping(20)
|
||||
hal_crit = 1
|
||||
hal_screwyhud = 1
|
||||
spawn(rand(50,100))
|
||||
src.sleeping = 0
|
||||
SetSleeping(0)
|
||||
hal_crit = 0
|
||||
hal_screwyhud = 0
|
||||
if("husks")
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
refill = reagents.get_master_reagent_id()
|
||||
refillName = reagents.get_master_reagent_name()
|
||||
|
||||
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
var/trans = reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
to_chat(user, "<span class='notice'> You transfer [trans] units of the solution to [target].</span>")
|
||||
|
||||
if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
|
||||
@@ -102,22 +102,22 @@
|
||||
if(istype(I, /obj/item/clothing/mask/cigarette)) //ciggies are weird
|
||||
return
|
||||
if(is_hot(I))
|
||||
if(src.reagents)
|
||||
src.reagents.chem_temp += 15
|
||||
if(reagents)
|
||||
reagents.chem_temp += 15
|
||||
to_chat(user, "<span class='notice'>You heat [src] with [I].</span>")
|
||||
src.reagents.handle_reactions()
|
||||
reagents.handle_reactions()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/examine(mob/user)
|
||||
if(!..(user, 1))
|
||||
return
|
||||
if(!reagents || reagents.total_volume==0)
|
||||
if(!reagents || reagents.total_volume == 0)
|
||||
to_chat(user, "<span class='notice'> \The [src] is empty!</span>")
|
||||
else if(reagents.total_volume<=src.volume/4)
|
||||
else if(reagents.total_volume <= volume/4)
|
||||
to_chat(user, "<span class='notice'> \The [src] is almost empty!</span>")
|
||||
else if(reagents.total_volume<=src.volume*0.66)
|
||||
else if(reagents.total_volume <= volume*0.66)
|
||||
to_chat(user, "<span class='notice'> \The [src] is half full!</span>")// We're all optimistic, right?!
|
||||
|
||||
else if(reagents.total_volume<=src.volume*0.90)
|
||||
else if(reagents.total_volume <= volume*0.90)
|
||||
to_chat(user, "<span class='notice'> \The [src] is almost full!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'> \The [src] is full!</span>")
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
else
|
||||
user.drop_item()
|
||||
user.put_in_active_hand(B)
|
||||
B.icon_state = src.icon_state
|
||||
B.icon_state = icon_state
|
||||
|
||||
var/icon/I = new('icons/obj/drinks.dmi', src.icon_state)
|
||||
var/icon/I = new('icons/obj/drinks.dmi', icon_state)
|
||||
I.Blend(B.broken_outline, ICON_OVERLAY, rand(5), 1)
|
||||
I.SwapColor(rgb(255, 0, 220, 255), rgb(0, 0, 0, 0))
|
||||
B.icon = I
|
||||
@@ -99,11 +99,11 @@
|
||||
|
||||
//Display an attack message.
|
||||
if(target != user)
|
||||
target.visible_message("<span class='danger'>[user] has hit [target][head_attack_message] with a bottle of [src.name]!</span>", \
|
||||
"<span class='userdanger'>[user] has hit [target][head_attack_message] with a bottle of [src.name]!</span>")
|
||||
target.visible_message("<span class='danger'>[user] has hit [target][head_attack_message] with a bottle of [name]!</span>", \
|
||||
"<span class='userdanger'>[user] has hit [target][head_attack_message] with a bottle of [name]!</span>")
|
||||
else
|
||||
user.visible_message("<span class='danger'>[target] hits \himself with a bottle of [src.name][head_attack_message]!</span>", \
|
||||
"<span class='userdanger'>[target] hits \himself with a bottle of [src.name][head_attack_message]!</span>")
|
||||
user.visible_message("<span class='danger'>[target] hits \himself with a bottle of [name][head_attack_message]!</span>", \
|
||||
"<span class='userdanger'>[target] hits \himself with a bottle of [name][head_attack_message]!</span>")
|
||||
|
||||
//Attack logs
|
||||
add_logs(user, target, "attacked", src)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/attack_self(mob/user)
|
||||
if(canopened == 0)
|
||||
playsound(src.loc,'sound/effects/canopen.ogg', rand(10,50), 1)
|
||||
playsound(loc,'sound/effects/canopen.ogg', rand(10,50), 1)
|
||||
to_chat(user, "<span class='notice'>You open the drink with an audible pop!</span>")
|
||||
canopened = 1
|
||||
flags |= OPENCONTAINER
|
||||
@@ -32,7 +32,7 @@
|
||||
if(canopened == 0)
|
||||
to_chat(user, "<span class='notice'>You need to open the drink!</span>")
|
||||
return
|
||||
else if(M == user && !src.reagents.total_volume && user.a_intent == "harm" && user.zone_sel.selecting == "head")
|
||||
else if(M == user && !reagents.total_volume && user.a_intent == "harm" && user.zone_sel.selecting == "head")
|
||||
user.visible_message("<span class='warning'>[user] crushes ["\the [src]"] on \his forehead!</span>", "<span class='notice'>You crush \the [src] on your forehead.</span>")
|
||||
crush(user)
|
||||
return
|
||||
|
||||
@@ -13,9 +13,6 @@
|
||||
icon = 'icons/obj/food/candy.dmi'
|
||||
icon_state = "candy"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/New()
|
||||
..()
|
||||
|
||||
// ***********************************************************
|
||||
// Candy Ingredients / Flavorings / Byproduct
|
||||
// ***********************************************************
|
||||
@@ -25,76 +22,53 @@
|
||||
desc = "Such sweet, fattening food."
|
||||
icon_state = "chocolatebar"
|
||||
filling_color = "#7D5F46"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("chocolate",4)
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 2, "chocolate" = 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/caramel
|
||||
name = "Caramel"
|
||||
desc = "Chewy and dense, yet it practically melts in your mouth!"
|
||||
icon_state = "caramel"
|
||||
filling_color = "#DB944D"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/caramel/New()
|
||||
..()
|
||||
reagents.add_reagent("cream", 2)
|
||||
reagents.add_reagent("sugar", 2)
|
||||
bitesize = 2
|
||||
list_reagents = list("cream" = 2, "sugar" = 2)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/toffee
|
||||
name = "Toffee"
|
||||
desc = "A hard, brittle candy with a distinctive taste."
|
||||
icon_state = "toffee"
|
||||
filling_color = "#7D5F46"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/toffee/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/nougat
|
||||
name = "Nougat"
|
||||
desc = "A soft, chewy candy commonly found in candybars."
|
||||
icon_state = "nougat"
|
||||
filling_color = "#7D5F46"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/nougat/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sugar", 3)
|
||||
spawn(1)
|
||||
reagents.del_reagent("egg")
|
||||
reagents.update_total()
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/taffy
|
||||
name = "Saltwater Taffy"
|
||||
desc = "Old fashioned saltwater taffy. Chewy!"
|
||||
icon_state = "candy1"
|
||||
filling_color = "#7D5F46"
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/taffy/New()
|
||||
..()
|
||||
icon_state = pick("candy1", "candy2", "candy3", "candy4", "candy5")
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/fudge
|
||||
name = "Fudge"
|
||||
desc = "Chocolate fudge, a timeless classic treat."
|
||||
icon_state = "fudge"
|
||||
filling_color = "#7D5F46"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/fudge/New()
|
||||
..()
|
||||
reagents.add_reagent("cream", 3)
|
||||
reagents.add_reagent("chocolate",6)
|
||||
bitesize = 3
|
||||
list_reagents = list("cream" = 3, "chocolate" = 6)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/fudge/peanut
|
||||
name = "Peanut Fudge"
|
||||
@@ -113,10 +87,7 @@
|
||||
desc = "An extra creamy fudge with bits of real chocolate cookie mixed in. Crunchy!"
|
||||
icon_state = "fudge_cookies_n_cream"
|
||||
filling_color = "#7D5F46"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/fudge/cookies_n_cream/New()
|
||||
..()
|
||||
reagents.add_reagent("cream", 3)
|
||||
list_reagents = list("cream" = 6, "chocolate" = 6)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/fudge/turtle
|
||||
name = "Turtle Fudge"
|
||||
@@ -132,24 +103,16 @@
|
||||
name = "Donor Candy"
|
||||
desc = "A little treat for blood donors."
|
||||
trash = /obj/item/trash/candy
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/donor/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 5
|
||||
list_reagents = list("nutriment" = 10, "sugar" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/candy_corn
|
||||
name = "candy corn"
|
||||
desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas."
|
||||
icon_state = "candycorn"
|
||||
filling_color = "#FFFCB0"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/candy_corn/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("sugar", 2)
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 4, "sugar" = 2)
|
||||
|
||||
// ***********************************************************
|
||||
// Candy Products (plain / unflavored)
|
||||
@@ -161,11 +124,8 @@
|
||||
icon_state = "cottoncandy_plain"
|
||||
trash = /obj/item/weapon/c_tube
|
||||
filling_color = "#FFFFFF"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/New()
|
||||
..()
|
||||
reagents.add_reagent("sugar", 15)
|
||||
bitesize = 3
|
||||
bitesize = 4
|
||||
list_reagents = list("sugar" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar
|
||||
name = "candy"
|
||||
@@ -173,92 +133,64 @@
|
||||
icon_state = "candy"
|
||||
trash = /obj/item/trash/candy
|
||||
filling_color = "#7D5F46"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("chocolate",5)
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "chocolate" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/candycane
|
||||
name = "candy cane"
|
||||
desc = "A festive mint candy cane."
|
||||
icon_state = "candycane"
|
||||
filling_color = "#F2F2F2"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/candycane/New()
|
||||
..()
|
||||
reagents.add_reagent("minttoxin", 1)
|
||||
reagents.add_reagent("sugar", 5)
|
||||
bitesize = 2
|
||||
list_reagents = list("minttoxin" = 1, "sugar" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear
|
||||
name = "gummy bear"
|
||||
desc = "A small edible bear. It's squishy and chewy!"
|
||||
icon_state = "gbear"
|
||||
filling_color = "#FFFFFF"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/New()
|
||||
..()
|
||||
reagents.add_reagent("sugar", 10)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm
|
||||
name = "gummy worm"
|
||||
desc = "An edible worm, made from gelatin."
|
||||
icon_state = "gworm"
|
||||
filling_color = "#FFFFFF"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/New()
|
||||
..()
|
||||
reagents.add_reagent("sugar", 10)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas."
|
||||
icon_state = "jbean"
|
||||
filling_color = "#FFFFFF"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/New()
|
||||
..()
|
||||
reagents.add_reagent("sugar", 10)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jawbreaker
|
||||
name = "jawbreaker"
|
||||
desc = "An unbelievably hard candy. The name is fitting."
|
||||
icon_state = "jawbreaker"
|
||||
filling_color = "#ED0758"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jawbreaker/New()
|
||||
..()
|
||||
reagents.add_reagent("sugar", 10)
|
||||
bitesize = 0.1 //this is gonna take a while, you'll be working at this all shift.
|
||||
list_reagents = list("sugar" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cash
|
||||
name = "candy cash"
|
||||
desc = "Not legal tender. Tasty though."
|
||||
icon_state = "candy_cash"
|
||||
filling_color = "#302000"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cash/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("chocolate", 4)
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 2, "chocolate" = 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/coin
|
||||
name = "chocolate coin"
|
||||
desc = "Probably won't work in the vending machines."
|
||||
icon_state = "choc_coin"
|
||||
filling_color = "#302000"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/coin/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("chocolate",4)
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "chocolate" = 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gum
|
||||
name = "bubblegum"
|
||||
@@ -266,22 +198,15 @@
|
||||
icon_state = "bubblegum"
|
||||
trash = /obj/item/trash/gum
|
||||
filling_color = "#FF7495"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gum/New()
|
||||
..()
|
||||
reagents.add_reagent("sugar", 5)
|
||||
bitesize = 0.2
|
||||
list_reagents = list("sugar" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/sucker
|
||||
name = "sucker"
|
||||
desc = "For being such a good sport!"
|
||||
icon_state = "sucker"
|
||||
filling_color = "#FFFFFF"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/sucker/New()
|
||||
..()
|
||||
reagents.add_reagent("sugar", 10)
|
||||
bitesize = 1
|
||||
list_reagents = list("sugar" = 10)
|
||||
|
||||
// ***********************************************************
|
||||
// Gummy Bear Flavors
|
||||
@@ -292,91 +217,56 @@
|
||||
desc = "A small edible bear. It's red!"
|
||||
icon_state = "gbear_red"
|
||||
filling_color = "#801E28"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/red/New()
|
||||
..()
|
||||
reagents.add_reagent("cherryjelly", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "cherryjelly" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/blue
|
||||
name = "gummy bear"
|
||||
desc = "A small edible bear. It's blue!"
|
||||
icon_state = "gbear_blue"
|
||||
filling_color = "#863333"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/blue/New()
|
||||
..()
|
||||
reagents.add_reagent("berryjuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "berryjuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/poison
|
||||
name = "gummy bear"
|
||||
desc = "A small edible bear. It's blue!"
|
||||
icon_state = "gbear_blue"
|
||||
filling_color = "#863353"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/poison/New()
|
||||
..()
|
||||
reagents.add_reagent("poisonberryjuice", 12)
|
||||
spawn(1)
|
||||
reagents.del_reagent("sugar")
|
||||
reagents.update_total()
|
||||
bitesize = 3
|
||||
list_reagents = list("poisonberryjuice" = 12)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/green
|
||||
name = "gummy bear"
|
||||
desc = "A small edible bear. It's green!"
|
||||
icon_state = "gbear_green"
|
||||
filling_color = "#365E30"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/green/New()
|
||||
..()
|
||||
reagents.add_reagent("limejuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "limejuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/yellow
|
||||
name = "gummy bear"
|
||||
desc = "A small edible bear. It's yellow!"
|
||||
icon_state = "gbear_yellow"
|
||||
filling_color = "#863333"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/yellow/New()
|
||||
..()
|
||||
reagents.add_reagent("lemonjuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "lemonjuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/orange
|
||||
name = "gummy bear"
|
||||
desc = "A small edible bear. It's orange!"
|
||||
icon_state = "gbear_orange"
|
||||
filling_color = "#E78108"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/orange/New()
|
||||
..()
|
||||
reagents.add_reagent("orangejuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "orangejuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/purple
|
||||
name = "gummy bear"
|
||||
desc = "A small edible bear. It's purple!"
|
||||
icon_state = "gbear_purple"
|
||||
filling_color = "#993399"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/purple/New()
|
||||
..()
|
||||
reagents.add_reagent("grapejuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "grapejuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/wtf
|
||||
name = "gummy bear"
|
||||
desc = "A small bear. Wait... what?"
|
||||
icon_state = "gbear_wtf"
|
||||
filling_color = "#60A584"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/wtf/New()
|
||||
..()
|
||||
reagents.add_reagent("space_drugs", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "space_drugs" = 2)
|
||||
|
||||
// ***********************************************************
|
||||
// Gummy Worm Flavors
|
||||
@@ -387,91 +277,56 @@
|
||||
desc = "An edible worm, made from gelatin. It's red!"
|
||||
icon_state = "gworm_red"
|
||||
filling_color = "#801E28"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/red/New()
|
||||
..()
|
||||
reagents.add_reagent("cherryjelly", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "cherryjelly" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/blue
|
||||
name = "gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's blue!"
|
||||
icon_state = "gworm_blue"
|
||||
filling_color = "#863333"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/blue/New()
|
||||
..()
|
||||
reagents.add_reagent("berryjuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "berryjuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/poison
|
||||
name = "gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's blue!"
|
||||
icon_state = "gworm_blue"
|
||||
filling_color = "#863353"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/poison/New()
|
||||
..()
|
||||
reagents.add_reagent("poisonberryjuice", 12)
|
||||
spawn(1)
|
||||
reagents.del_reagent("sugar")
|
||||
reagents.update_total()
|
||||
bitesize = 3
|
||||
list_reagents = list("poisonberryjuice" = 12)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/green
|
||||
name = "gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's green!"
|
||||
icon_state = "gworm_green"
|
||||
filling_color = "#365E30"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/green/New()
|
||||
..()
|
||||
reagents.add_reagent("limejuice", 10)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "limejuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/yellow
|
||||
name = "gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's yellow!"
|
||||
icon_state = "gworm_yellow"
|
||||
filling_color = "#863333"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/yellow/New()
|
||||
..()
|
||||
reagents.add_reagent("lemonjuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "lemonjuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/orange
|
||||
name = "gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's orange!"
|
||||
icon_state = "gworm_orange"
|
||||
filling_color = "#E78108"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/orange/New()
|
||||
..()
|
||||
reagents.add_reagent("orangejuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "orangejuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/purple
|
||||
name = "gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's purple!"
|
||||
icon_state = "gworm_purple"
|
||||
filling_color = "#993399"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/purple/New()
|
||||
..()
|
||||
reagents.add_reagent("grapejuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "grapejuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/wtf
|
||||
name = "gummy worm"
|
||||
desc = "An edible worm. Did it just move?"
|
||||
icon_state = "gworm_wtf"
|
||||
filling_color = "#60A584"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/wtf/New()
|
||||
..()
|
||||
reagents.add_reagent("space_drugs", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "space_drugs" = 2)
|
||||
|
||||
// ***********************************************************
|
||||
// Jelly Bean Flavors
|
||||
@@ -482,146 +337,91 @@
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's red!"
|
||||
icon_state = "jbean_red"
|
||||
filling_color = "#801E28"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/red/New()
|
||||
..()
|
||||
reagents.add_reagent("cherryjelly", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "cherryjelly" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/blue
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's blue!"
|
||||
icon_state = "jbean_blue"
|
||||
filling_color = "#863333"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/blue/New()
|
||||
..()
|
||||
reagents.add_reagent("berryjuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "berryjuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/poison
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's blue!"
|
||||
icon_state = "jbean_blue"
|
||||
filling_color = "#863353"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/poison/New()
|
||||
..()
|
||||
reagents.add_reagent("poisonberryjuice", 12)
|
||||
spawn(1)
|
||||
reagents.del_reagent("sugar")
|
||||
reagents.update_total()
|
||||
bitesize = 3
|
||||
list_reagents = list("poisonberryjuice" = 12)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/green
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's green!"
|
||||
icon_state = "jbean_green"
|
||||
filling_color = "#365E30"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/green/New()
|
||||
..()
|
||||
reagents.add_reagent("limejuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "limejuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/yellow
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's yellow!"
|
||||
icon_state = "jbean_yellow"
|
||||
filling_color = "#863333"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/yellow/New()
|
||||
..()
|
||||
reagents.add_reagent("lemonjuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "lemonjuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/orange
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's orange!"
|
||||
icon_state = "jbean_orange"
|
||||
filling_color = "#E78108"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/orange/New()
|
||||
..()
|
||||
reagents.add_reagent("orangejuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "orangejuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/purple
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's purple!"
|
||||
icon_state = "jbean_purple"
|
||||
filling_color = "#993399"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/purple/New()
|
||||
..()
|
||||
reagents.add_reagent("grapejuice", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "grapejuice" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/chocolate
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's chocolate!"
|
||||
icon_state = "jbean_choc"
|
||||
filling_color = "#302000"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/chocolate/New()
|
||||
..()
|
||||
reagents.add_reagent("chocolate",2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "chocolate" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/popcorn
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's popcorn flavored!"
|
||||
icon_state = "jbean_popcorn"
|
||||
filling_color = "#664330"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/popcorn/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "nutriment" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/cola
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's Cola flavored!"
|
||||
icon_state = "jbean_cola"
|
||||
filling_color = "#102000"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/cola/New()
|
||||
..()
|
||||
reagents.add_reagent("cola", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "cola" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/drgibb
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's Dr. Gibb flavored!"
|
||||
icon_state = "jbean_cola"
|
||||
filling_color = "#102000"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/drgibb/New()
|
||||
..()
|
||||
reagents.add_reagent("dr_gibb", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "dr_gibb" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/coffee
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. It's Coffee flavored!"
|
||||
icon_state = "jbean_choc"
|
||||
filling_color = "#482000"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/coffee/New()
|
||||
..()
|
||||
reagents.add_reagent("coffee", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "coffee" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/wtf
|
||||
name = "jelly bean"
|
||||
desc = "A candy bean, guarenteed to not give you gas. You aren't sure what color it is."
|
||||
icon_state = "jbean_wtf"
|
||||
filling_color = "#60A584"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/wtf/New()
|
||||
..()
|
||||
reagents.add_reagent("space_drugs", 2)
|
||||
bitesize = 3
|
||||
list_reagents = list("sugar" = 10, "space_drugs" = 2)
|
||||
|
||||
// ***********************************************************
|
||||
// Cotton Candy Flavors
|
||||
@@ -633,11 +433,7 @@
|
||||
icon_state = "cottoncandy_red"
|
||||
trash = /obj/item/weapon/c_tube
|
||||
filling_color = "#801E28"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/red/New()
|
||||
..()
|
||||
reagents.add_reagent("cherryjelly", 5)
|
||||
bitesize = 4
|
||||
list_reagents = list("sugar" = 15, "cherryjelly" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/blue
|
||||
name = "cotton candy"
|
||||
@@ -645,11 +441,7 @@
|
||||
icon_state = "cottoncandy_blue"
|
||||
trash = /obj/item/weapon/c_tube
|
||||
filling_color = "#863333"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/blue/New()
|
||||
..()
|
||||
reagents.add_reagent("berryjuice", 5)
|
||||
bitesize = 4
|
||||
list_reagents = list("sugar" = 15, "berryjuice" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/poison
|
||||
name = "cotton candy"
|
||||
@@ -657,14 +449,7 @@
|
||||
icon_state = "cottoncandy_blue"
|
||||
trash = /obj/item/weapon/c_tube
|
||||
filling_color = "#863353"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/poison/New()
|
||||
..()
|
||||
reagents.add_reagent("poisonberryjuice", 20)
|
||||
spawn(1)
|
||||
reagents.del_reagent("sugar")
|
||||
reagents.update_total()
|
||||
bitesize = 4
|
||||
list_reagents = list("poisonberryjuice" = 20)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/green
|
||||
name = "cotton candy"
|
||||
@@ -672,11 +457,7 @@
|
||||
icon_state = "cottoncandy_green"
|
||||
trash = /obj/item/weapon/c_tube
|
||||
filling_color = "#365E30"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/green/New()
|
||||
..()
|
||||
reagents.add_reagent("limejuice", 5)
|
||||
bitesize = 4
|
||||
list_reagents = list("sugar" = 15, "limejuice" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/yellow
|
||||
name = "cotton candy"
|
||||
@@ -684,11 +465,7 @@
|
||||
icon_state = "cottoncandy_yellow"
|
||||
trash = /obj/item/weapon/c_tube
|
||||
filling_color = "#863333"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/yellow/New()
|
||||
..()
|
||||
reagents.add_reagent("lemonjuice", 5)
|
||||
bitesize = 4
|
||||
list_reagents = list("sugar" = 15, "lemonjuice" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/orange
|
||||
name = "cotton candy"
|
||||
@@ -696,11 +473,7 @@
|
||||
icon_state = "cottoncandy_orange"
|
||||
trash = /obj/item/weapon/c_tube
|
||||
filling_color = "#E78108"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/orange/New()
|
||||
..()
|
||||
reagents.add_reagent("orangejuice", 5)
|
||||
bitesize = 4
|
||||
list_reagents = list("sugar" = 15, "orangejuice" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/purple
|
||||
name = "cotton candy"
|
||||
@@ -708,11 +481,7 @@
|
||||
icon_state = "cottoncandy_purple"
|
||||
trash = /obj/item/weapon/c_tube
|
||||
filling_color = "#993399"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/purple/New()
|
||||
..()
|
||||
reagents.add_reagent("grapejuice", 5)
|
||||
bitesize = 4
|
||||
list_reagents = list("sugar" = 15, "grapejuice" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/pink
|
||||
name = "cotton candy"
|
||||
@@ -720,11 +489,7 @@
|
||||
icon_state = "cottoncandy_pink"
|
||||
trash = /obj/item/weapon/c_tube
|
||||
filling_color = "#863333"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/pink/New()
|
||||
..()
|
||||
reagents.add_reagent("watermelonjuice", 5)
|
||||
bitesize = 4
|
||||
list_reagents = list("sugar" = 15, "watermelonjuice" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/rainbow
|
||||
name = "cotton candy"
|
||||
@@ -732,14 +497,7 @@
|
||||
icon_state = "cottoncandy_rainbow"
|
||||
trash = /obj/item/weapon/c_tube
|
||||
filling_color = "#C8A5DC"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/rainbow/New()
|
||||
..()
|
||||
reagents.add_reagent("omnizine", 20)
|
||||
spawn(1)
|
||||
reagents.del_reagent("sugar")
|
||||
reagents.update_total()
|
||||
bitesize = 4
|
||||
list_reagents = list("omnizine" = 20)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/bad_rainbow
|
||||
name = "cotton candy"
|
||||
@@ -747,14 +505,7 @@
|
||||
icon_state = "cottoncandy_rainbow"
|
||||
trash = /obj/item/weapon/c_tube
|
||||
filling_color = "#32127A"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/bad_rainbow/New()
|
||||
..()
|
||||
reagents.add_reagent("sulfonal", 20)
|
||||
spawn(1)
|
||||
reagents.del_reagent("sugar")
|
||||
reagents.update_total()
|
||||
bitesize = 4
|
||||
list_reagents = list("sulfonal" = 20)
|
||||
|
||||
// ***********************************************************
|
||||
// Candybar Flavors
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
to_chat(user, "<span class='warning'>you can't add anymore to [target]!</span>")
|
||||
return
|
||||
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
var/trans = reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
to_chat(user, "<span class='notice'>You transfer [trans] units of the condiment to [target].</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/on_reagent_change()
|
||||
@@ -223,7 +223,7 @@
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You tear open [src] above [target] and the condiments drip onto it.</span>")
|
||||
src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/pack/on_reagent_change()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich/S = new(get_turf(user))
|
||||
S.attackby(W,user, params)
|
||||
@@ -6,13 +6,13 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/customizable/burger/S = new(get_turf(user))
|
||||
S.attackby(W,user, params)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza/S = new(get_turf(user))
|
||||
S.attackby(W,user, params)
|
||||
@@ -21,7 +21,7 @@
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/customizable/pasta/S = new(get_turf(user))
|
||||
S.attackby(W,user, params)
|
||||
@@ -30,7 +30,7 @@
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/trash/plate/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
/obj/item/trash/plate/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/customizable/fullycustom/S = new(get_turf(user))
|
||||
S.attackby(W,user, params)
|
||||
@@ -44,7 +44,7 @@
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "soup"
|
||||
|
||||
/obj/item/trash/bowl/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
/obj/item/trash/bowl/attackby(obj/item/W, mob/user, params)
|
||||
|
||||
if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/customizable/soup/S = new(get_turf(user))
|
||||
@@ -54,7 +54,6 @@
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable
|
||||
name = "sandwich"
|
||||
desc = "A sandwich! A timeless classic."
|
||||
icon_state = "breadslice"
|
||||
@@ -79,12 +78,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
bitesize = 2
|
||||
var/list/ingredients = list()
|
||||
|
||||
New()
|
||||
..()
|
||||
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
|
||||
list_reagents = list("nutriment" = 8)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza
|
||||
name = "personal pizza"
|
||||
@@ -323,7 +317,7 @@
|
||||
toptype = new /obj/item/weapon/reagent_containers/food/snacks/bun()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/attackby(obj/item/I, mob/user, params)
|
||||
if(src.contents.len > sandwich_limit)
|
||||
if(contents.len > sandwich_limit)
|
||||
to_chat(user, "<span class='warning'>If you put anything else in or on [src] it's going to make a mess.</span>")
|
||||
return
|
||||
if(!istype(I, /obj/item/weapon/reagent_containers/food/snacks))
|
||||
@@ -351,7 +345,7 @@
|
||||
for(var/obj/item/O in ingredients)
|
||||
i++
|
||||
if(!fullycustom)
|
||||
var/image/I = new(src.icon, "[baseicon]_filling")
|
||||
var/image/I = new(icon, "[baseicon]_filling")
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/food = O
|
||||
if(!food.filling_color == "#FFFFFF")
|
||||
@@ -372,7 +366,7 @@
|
||||
overlays += O.overlays
|
||||
|
||||
if(top)
|
||||
var/image/T = new(src.icon, "[baseicon]_top")
|
||||
var/image/T = new(icon, "[baseicon]_top")
|
||||
T.pixel_x = pick(list(-1,0,1))
|
||||
T.pixel_y = (ingredients.len * 2)+1
|
||||
overlays += T
|
||||
@@ -388,24 +382,6 @@
|
||||
|
||||
to_chat(user, "<span class='notice'> You think you can see [whatsinside] in there.</span>")
|
||||
|
||||
/*
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/attack(mob/M as mob, mob/user as mob, def_zone) //SNOOOOOOOWFLAAAAAAAAAAAAAAAAAKES
|
||||
|
||||
var/obj/item/shard
|
||||
for(var/obj/item/O in contents)
|
||||
if(istype(O,/obj/item/weapon/shard))
|
||||
shard = O
|
||||
break
|
||||
|
||||
var/mob/living/H
|
||||
if(istype(M,/mob/living))
|
||||
H = M
|
||||
|
||||
if(H && shard && M == user) //This needs a check for feeding the food to other people, but that could be abusable.
|
||||
to_chat(H, "\red You lacerate your mouth on a [shard.name] in the sandwich!")
|
||||
H.adjustBruteLoss(5) //TODO: Target head if human.
|
||||
..()
|
||||
*/
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/newname()
|
||||
var/unsorteditems[0]
|
||||
@@ -487,7 +463,7 @@
|
||||
sendback = "[pick(list("absurd","colossal","enormous","ridiculous","massive","oversized","cardiac-arresting","pipe-clogging","edible but sickening","sickening","gargantuan","mega","belly-burster","chest-burster"))] [basename]"
|
||||
return sendback
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/sortlist(var/list/unsorted, var/highest)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/sortlist(list/unsorted, highest)
|
||||
var/sorted[0]
|
||||
for(var/i = 1, i<= highest, i++)
|
||||
for(var/it in unsorted)
|
||||
|
||||
@@ -4,16 +4,11 @@
|
||||
icon_state = "meat"
|
||||
health = 180
|
||||
filling_color = "#FF1C1C"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("protein", 3)
|
||||
src.bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("protein" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if( \
|
||||
istype(W, /obj/item/weapon/kitchen/knife) || \
|
||||
istype(W, /obj/item/weapon/scalpel) \
|
||||
)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/kitchen/knife) || istype(W, /obj/item/weapon/scalpel))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
|
||||
@@ -49,6 +44,4 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/ham
|
||||
name = "Ham"
|
||||
desc = "Taste like bacon."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("porktonium", 10)
|
||||
list_reagents = list("protein" = 3, "porktonium" = 10)
|
||||
@@ -5,12 +5,8 @@
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "fishfillet"
|
||||
filling_color = "#FFDEFE"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
src.bitesize = 6
|
||||
bitesize = 6
|
||||
list_reagents = list("protein" = 3, "carpotoxin" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salmonmeat
|
||||
name = "raw salmon"
|
||||
@@ -18,11 +14,8 @@
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "fishfillet"
|
||||
filling_color = "#FFDEFE"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("protein", 3)
|
||||
src.bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("protein" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salmonsteak
|
||||
name = "Salmon steak"
|
||||
@@ -31,14 +24,8 @@
|
||||
icon_state = "salmonsteak"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#7A3D11"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("sodiumchloride", 1)
|
||||
reagents.add_reagent("blackpepper", 1)
|
||||
bitesize = 3
|
||||
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 4, "sodiumchloride" = 1, "blackpepper" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/catfishmeat
|
||||
name = "raw catfish"
|
||||
@@ -46,11 +33,8 @@
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "fishfillet"
|
||||
filling_color = "#FFDEFE"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("protein", 3)
|
||||
src.bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("protein" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fishfingers
|
||||
name = "Fish Fingers"
|
||||
@@ -58,15 +42,8 @@
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "fishfingers"
|
||||
filling_color = "#FFDEFE"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
spawn(1)
|
||||
reagents.del_reagent("egg")
|
||||
reagents.update_total()
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 4, "carpotoxin" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fishburger
|
||||
name = "Fillet -o- Carp Sandwich"
|
||||
@@ -74,12 +51,8 @@
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "fishburger"
|
||||
filling_color = "#FFDEFE"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "carpotoxin" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cubancarp
|
||||
name = "Cuban Carp"
|
||||
@@ -88,13 +61,8 @@
|
||||
icon_state = "cubancarp"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#E9ADFF"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
reagents.add_reagent("capsaicin", 3)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "carpotoxin" = 3, "capsaicin" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fishandchips
|
||||
name = "Fish and Chips"
|
||||
@@ -102,168 +70,117 @@
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "fishandchips"
|
||||
filling_color = "#E3D796"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "carpotoxin" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sashimi
|
||||
name = "carp sashimi"
|
||||
desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sashimi"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("toxin", 5)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "toxin" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fried_shrimp
|
||||
name = "fried shrimp"
|
||||
desc = "Just one of the many things you can do with shrimp!"
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "shrimp_fried"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
src.bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiled_shrimp
|
||||
name = "boiled shrimp"
|
||||
desc = "Just one of the many things you can do with shrimp!"
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "shrimp_cooked"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
src.bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_Ebi
|
||||
name = "Ebi Sushi"
|
||||
desc = "A simple sushi consisting of cooked shrimp and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Ebi"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_Ikura
|
||||
name = "Ikura Sushi"
|
||||
desc = "A simple sushi consisting of salmon roe."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Ikura"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("protein", 1)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_Sake
|
||||
name = "Sake Sushi"
|
||||
desc = "A simple sushi consisting of raw salmon and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Sake"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_SmokedSalmon
|
||||
name = "Smoked Salmon Sushi"
|
||||
desc = "A simple sushi consisting of cooked salmon and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_SmokedSalmon"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_Tamago
|
||||
name = "Tamago Sushi"
|
||||
desc = "A simple sushi consisting of egg and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Tamago"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_Inari
|
||||
name = "Inari Sushi"
|
||||
desc = "A piece of fried tofu stuffed with rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Inari"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_Masago
|
||||
name = "Masago Sushi"
|
||||
desc = "A simple sushi consisting of goldfish roe."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Masago"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("protein", 1)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_Tobiko
|
||||
name = "Tobiko Sushi"
|
||||
desc = "A simple sushi consisting of shark roe."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Masago"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("protein", 1)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_TobikoEgg
|
||||
name = "Tobiko and Egg Sushi"
|
||||
desc = "A sushi consisting of shark roe and an egg."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_TobikoEgg"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("protein", 1)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_Tai
|
||||
name = "Tai Sushi"
|
||||
desc = "A simple sushi consisting of catfish and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Tai"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_Unagi
|
||||
name = "Unagi Sushi"
|
||||
desc = "A simple sushi consisting of eel and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Hokki"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
bitesize = 3
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -52,13 +52,13 @@
|
||||
else
|
||||
overlays += image('icons/obj/kitchen.dmi', "gridle")
|
||||
|
||||
/obj/machinery/gibber/relaymove(mob/user as mob)
|
||||
/obj/machinery/gibber/relaymove(mob/user)
|
||||
if(locked)
|
||||
return
|
||||
|
||||
go_out()
|
||||
|
||||
/obj/machinery/gibber/attack_hand(mob/user as mob)
|
||||
/obj/machinery/gibber/attack_hand(mob/user)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
else
|
||||
startgibbing(user)
|
||||
|
||||
/obj/machinery/gibber/attackby(obj/item/P as obj, mob/user as mob, params)
|
||||
/obj/machinery/gibber/attackby(obj/item/P, mob/user, params)
|
||||
if(istype(P, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = P
|
||||
if(G.state < 2)
|
||||
@@ -126,7 +126,7 @@
|
||||
return
|
||||
|
||||
user.visible_message("<span class='danger'>[user] starts to put [victim] into the gibber!</span>")
|
||||
src.add_fingerprint(user)
|
||||
add_fingerprint(user)
|
||||
if(do_after(user, 30, target = victim) && user.Adjacent(src) && victim.Adjacent(user) && !occupant)
|
||||
user.visible_message("<span class='danger'>[user] stuffs [victim] into the gibber!</span>")
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
return
|
||||
|
||||
for(var/obj/O in src)
|
||||
O.loc = src.loc
|
||||
O.loc = loc
|
||||
|
||||
occupant.forceMove(get_turf(src))
|
||||
occupant = null
|
||||
@@ -212,11 +212,11 @@
|
||||
|
||||
/obj/machinery/gibber/proc/startgibbing(var/mob/user, var/UserOverride=0)
|
||||
if(!istype(user) && !UserOverride)
|
||||
log_debug("Some shit just went down with the gibber at X[x], Y[y], Z[z] with an invalid user. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
log_debug("Some shit just went down with the gibber at X[x], Y[y], Z[z] with an invalid user. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
|
||||
return
|
||||
|
||||
if(UserOverride)
|
||||
msg_admin_attack("[key_name_admin(occupant)] was gibbed by an autogibber (\the [src]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
msg_admin_attack("[key_name_admin(occupant)] was gibbed by an autogibber (\the [src]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
|
||||
|
||||
if(operating)
|
||||
return
|
||||
@@ -236,7 +236,7 @@
|
||||
var/slab_name = occupant.name
|
||||
var/slab_count = 3
|
||||
var/slab_type = /obj/item/weapon/reagent_containers/food/snacks/meat/human //gibber can only gib humans on paracode, no need to check meat type
|
||||
var/slab_nutrition = src.occupant.nutrition / 15
|
||||
var/slab_nutrition = occupant.nutrition / 15
|
||||
|
||||
slab_nutrition /= slab_count
|
||||
|
||||
@@ -352,7 +352,7 @@
|
||||
feedinTopanim()
|
||||
return 1
|
||||
|
||||
/obj/machinery/gibber/autogibber/proc/ejectclothes(var/mob/living/carbon/human/H)
|
||||
/obj/machinery/gibber/autogibber/proc/ejectclothes(mob/living/carbon/human/H)
|
||||
if(!istype(H)) return 0
|
||||
if(H != occupant) return 0 //only using H as a shortcut to typecast
|
||||
for(var/obj/O in H)
|
||||
@@ -367,7 +367,7 @@
|
||||
if(O.flags & NODROP)
|
||||
qdel(O) //they are already dead by now
|
||||
H.unEquip(O)
|
||||
O.loc = src.loc
|
||||
O.loc = loc
|
||||
O.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15)
|
||||
sleep(1)
|
||||
|
||||
@@ -375,7 +375,7 @@
|
||||
if(C.flags & NODROP)
|
||||
qdel(C)
|
||||
H.unEquip(C)
|
||||
C.loc = src.loc
|
||||
C.loc = loc
|
||||
C.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15)
|
||||
sleep(1)
|
||||
|
||||
@@ -385,7 +385,7 @@
|
||||
var/spats = 0 //keeps track of how many items get spit out. Don't show a message if none are found.
|
||||
for(var/obj/O in src)
|
||||
if(istype(O))
|
||||
O.loc = src.loc
|
||||
O.loc = loc
|
||||
O.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15)
|
||||
spats++
|
||||
sleep(1)
|
||||
|
||||
@@ -63,11 +63,11 @@ var/list/ingredients_source = list(
|
||||
while(ingredients.len < 11)
|
||||
ingredients.Add(5)
|
||||
|
||||
/obj/machinery/icecream_vat/attack_hand(mob/user as mob)
|
||||
/obj/machinery/icecream_vat/attack_hand(mob/user)
|
||||
user.set_machine(src)
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/icecream_vat/interact(mob/user as mob)
|
||||
/obj/machinery/icecream_vat/interact(mob/user)
|
||||
var/dat
|
||||
dat += "<a href='?src=[UID()];dispense=[ICECREAM_VANILLA]'><b>Dispense vanilla icecream</b></a> There is [ingredients[ICECREAM_VANILLA]] scoops of vanilla icecream left (made from milk and ice).<br>"
|
||||
dat += "<a href='?src=[UID()];dispense=[FLAVOUR_STRAWBERRY]'><b>Dispense strawberry icecream</b></a> There is [ingredients[FLAVOUR_STRAWBERRY]] dollops of strawberry flavouring left (obtained from berry juice.<br>"
|
||||
@@ -91,7 +91,7 @@ var/list/ingredients_source = list(
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
|
||||
/obj/machinery/icecream_vat/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
/obj/machinery/icecream_vat/attackby(obj/item/O, mob/user, params)
|
||||
if(istype(O, /obj/item/weapon/reagent_containers))
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/icecream))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = O
|
||||
@@ -99,7 +99,7 @@ var/list/ingredients_source = list(
|
||||
if(ingredients[ICECREAM_VANILLA] > 0)
|
||||
var/flavour_name = get_icecream_flavour_string(dispense_flavour)
|
||||
if(dispense_flavour < 11 && ingredients[dispense_flavour] > 0)
|
||||
src.visible_message("[bicon(src)] <span class='info'>[user] scoops delicious [flavour_name] flavoured icecream into [I].</span>")
|
||||
visible_message("[bicon(src)] <span class='info'>[user] scoops delicious [flavour_name] flavoured icecream into [I].</span>")
|
||||
ingredients[dispense_flavour] -= 1
|
||||
ingredients[ICECREAM_VANILLA] -= 1
|
||||
|
||||
@@ -127,7 +127,7 @@ var/list/ingredients_source = list(
|
||||
else
|
||||
var/obj/item/weapon/reagent_containers/R = O
|
||||
if(R.reagents)
|
||||
src.visible_message("<span class='info'>[user] has emptied all of [R] into [src].</span>")
|
||||
visible_message("<span class='info'>[user] has emptied all of [R] into [src].</span>")
|
||||
for(var/datum/reagent/current_reagent in R.reagents.reagent_list)
|
||||
if(ingredients_source[current_reagent.id])
|
||||
add(ingredients_source[current_reagent.id], current_reagent.volume / 2)
|
||||
@@ -151,7 +151,7 @@ var/list/ingredients_source = list(
|
||||
ingredients[INGR_FLOUR] -= amount
|
||||
ingredients[INGR_SUGAR] -= amount
|
||||
ingredients[CONE_WAFFLE] += amount
|
||||
src.visible_message("<span class='info'>[user] cooks up some waffle cones.</span>")
|
||||
visible_message("<span class='info'>[user] cooks up some waffle cones.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You require sugar and flour to make waffle cones.</span>")
|
||||
if(CONE_CHOC)
|
||||
@@ -160,7 +160,7 @@ var/list/ingredients_source = list(
|
||||
ingredients[CONE_WAFFLE] -= amount
|
||||
ingredients[FLAVOUR_CHOCOLATE] -= amount
|
||||
ingredients[CONE_CHOC] += amount
|
||||
src.visible_message("<span class='info'>[user] cooks up some chocolate cones.</span>")
|
||||
visible_message("<span class='info'>[user] cooks up some chocolate cones.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You require waffle cones and chocolate flavouring to make chocolate cones.</span>")
|
||||
if(ICECREAM_VANILLA)
|
||||
@@ -169,7 +169,7 @@ var/list/ingredients_source = list(
|
||||
ingredients[INGR_ICE] -= amount
|
||||
ingredients[INGR_MILK] -= amount
|
||||
ingredients[ICECREAM_VANILLA] += amount
|
||||
src.visible_message("<span class='info'>[user] whips up some vanilla icecream.</span>")
|
||||
visible_message("<span class='info'>[user] whips up some vanilla icecream.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You require milk and ice to make vanilla icecream.</span>")
|
||||
updateDialog()
|
||||
@@ -179,7 +179,7 @@ var/list/ingredients_source = list(
|
||||
return
|
||||
if(href_list["dispense"])
|
||||
dispense_flavour = text2num(href_list["dispense"])
|
||||
src.visible_message("\blue[usr] sets [src] to dispense [get_icecream_flavour_string(dispense_flavour)] flavoured icecream.")
|
||||
visible_message("\blue[usr] sets [src] to dispense [get_icecream_flavour_string(dispense_flavour)] flavoured icecream.")
|
||||
|
||||
if(href_list["cone"])
|
||||
var/dispense_cone = text2num(href_list["cone"])
|
||||
@@ -187,11 +187,11 @@ var/list/ingredients_source = list(
|
||||
var/cone_name = get_icecream_flavour_string(dispense_cone)
|
||||
if(ingredients[dispense_cone] >= 1)
|
||||
ingredients[dispense_cone] -= 1
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = new(src.loc)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = new(loc)
|
||||
I.cone_type = cone_name
|
||||
I.icon_state = "icecream_cone_[cone_name]"
|
||||
I.desc = "Delicious [cone_name] cone, but no ice cream."
|
||||
src.visible_message("<span class='info'>[usr] dispenses a crunchy [cone_name] cone from [src].</span>")
|
||||
visible_message("<span class='info'>[usr] dispenses a crunchy [cone_name] cone from [src].</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>There are no [cone_name] cones left!</span>")
|
||||
updateDialog()
|
||||
@@ -202,7 +202,7 @@ var/list/ingredients_source = list(
|
||||
|
||||
if(href_list["eject"])
|
||||
if(held_container)
|
||||
held_container.forceMove(src.loc)
|
||||
held_container.forceMove(loc)
|
||||
held_container = null
|
||||
updateDialog()
|
||||
|
||||
@@ -231,7 +231,7 @@ var/list/ingredients_source = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/icecream/proc/add_ice_cream(var/flavour)
|
||||
var/flavour_name = get_icecream_flavour_string(flavour)
|
||||
name = "[flavour_name] icecream"
|
||||
src.overlays += "icecream_[flavour_name]"
|
||||
overlays += "icecream_[flavour_name]"
|
||||
desc = "Delicious [cone_type] cone with a dollop of [flavour_name] ice cream."
|
||||
ice_creamed = 1
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/juicer/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
/obj/machinery/juicer/attackby(obj/item/O, mob/user, params)
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
|
||||
istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
|
||||
if(beaker)
|
||||
@@ -46,9 +46,9 @@
|
||||
return 0
|
||||
O.forceMove(src)
|
||||
beaker = O
|
||||
src.verbs += /obj/machinery/juicer/verb/detach
|
||||
verbs += /obj/machinery/juicer/verb/detach
|
||||
update_icon()
|
||||
src.updateUsrDialog()
|
||||
updateUsrDialog()
|
||||
return 0
|
||||
if(!is_type_in_list(O, allowed_items))
|
||||
to_chat(user, "It doesn't look like that contains any juice.")
|
||||
@@ -57,24 +57,24 @@
|
||||
to_chat(user, "<span class='notice'>\the [O] is stuck to your hand, you cannot put it in \the [src]</span>")
|
||||
return 0
|
||||
O.forceMove(src)
|
||||
src.updateUsrDialog()
|
||||
updateUsrDialog()
|
||||
return 0
|
||||
|
||||
/obj/machinery/juicer/attack_ai(mob/user as mob)
|
||||
/obj/machinery/juicer/attack_ai(mob/user)
|
||||
return 0
|
||||
|
||||
/obj/machinery/juicer/attack_hand(mob/user as mob)
|
||||
/obj/machinery/juicer/attack_hand(mob/user)
|
||||
user.set_machine(src)
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/juicer/interact(mob/user as mob) // The microwave Menu
|
||||
/obj/machinery/juicer/interact(mob/user) // The microwave Menu
|
||||
var/is_chamber_empty = 0
|
||||
var/is_beaker_ready = 0
|
||||
var/processing_chamber = ""
|
||||
var/beaker_contents = ""
|
||||
|
||||
for(var/i in allowed_items)
|
||||
for(var/obj/item/O in src.contents)
|
||||
for(var/obj/item/O in contents)
|
||||
if(!istype(O,i))
|
||||
continue
|
||||
processing_chamber+= "some <B>[O]</B><BR>"
|
||||
@@ -119,7 +119,7 @@
|
||||
|
||||
if("detach")
|
||||
detach()
|
||||
src.updateUsrDialog()
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/juicer/verb/detach()
|
||||
@@ -130,8 +130,8 @@
|
||||
return
|
||||
if(!beaker)
|
||||
return
|
||||
src.verbs -= /obj/machinery/juicer/verb/detach
|
||||
beaker.forceMove(src.loc)
|
||||
verbs -= /obj/machinery/juicer/verb/detach
|
||||
beaker.forceMove(loc)
|
||||
beaker = null
|
||||
update_icon()
|
||||
|
||||
@@ -159,8 +159,8 @@
|
||||
return
|
||||
if(!beaker || beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
return
|
||||
playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1)
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/O in src.contents)
|
||||
playsound(loc, 'sound/machines/juicer.ogg', 50, 1)
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/O in contents)
|
||||
var/r_id = get_juice_id(O)
|
||||
beaker.reagents.add_reagent(r_id,get_juice_amount(O))
|
||||
qdel(O)
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
* Item Adding
|
||||
********************/
|
||||
|
||||
/obj/machinery/kitchen_machine/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
/obj/machinery/kitchen_machine/attackby(obj/item/O, mob/user, params)
|
||||
if(operating)
|
||||
return
|
||||
if(!broken && dirty < 100)
|
||||
@@ -77,8 +77,8 @@
|
||||
|
||||
default_deconstruction_crowbar(O)
|
||||
|
||||
if(src.broken > 0)
|
||||
if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver
|
||||
if(broken > 0)
|
||||
if(broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver
|
||||
user.visible_message( \
|
||||
"<span class='notice'>[user] starts to fix part of \the [src].</span>", \
|
||||
"<span class='notice'>You start to fix part of \the [src].</span>" \
|
||||
@@ -88,8 +88,8 @@
|
||||
"<span class='notice'>[user] fixes part of \the [src].</span>", \
|
||||
"<span class='notice'>You have fixed part of \the [src].</span>" \
|
||||
)
|
||||
src.broken = 1 // Fix it a bit
|
||||
else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench
|
||||
broken = 1 // Fix it a bit
|
||||
else if(broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench
|
||||
user.visible_message( \
|
||||
"<span class='notice'>[user] starts to fix part of \the [src].</span>", \
|
||||
"<span class='notice'>You start to fix part of \the [src].</span>" \
|
||||
@@ -99,14 +99,14 @@
|
||||
"<span class='notice'>[user] fixes \the [src].</span>", \
|
||||
"<span class='notice'>You have fixed \the [src].</span>" \
|
||||
)
|
||||
src.icon_state = off_icon
|
||||
src.broken = 0 // Fix it!
|
||||
src.dirty = 0 // just to be sure
|
||||
src.flags = OPENCONTAINER
|
||||
icon_state = off_icon
|
||||
broken = 0 // Fix it!
|
||||
dirty = 0 // just to be sure
|
||||
flags = OPENCONTAINER
|
||||
else
|
||||
to_chat(user, "<span class='alert'>It's broken!</span>")
|
||||
return 1
|
||||
else if(src.dirty==100) // The machine is all dirty so can't be used!
|
||||
else if(dirty==100) // The machine is all dirty so can't be used!
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them
|
||||
user.visible_message( \
|
||||
"<span class='notice'>[user] starts to clean \the [src].</span>", \
|
||||
@@ -117,10 +117,10 @@
|
||||
"<span class='notice'>[user] has cleaned \the [src].</span>", \
|
||||
"<span class='notice'>You have cleaned \the [src].</span>" \
|
||||
)
|
||||
src.dirty = 0 // It's clean!
|
||||
src.broken = 0 // just to be sure
|
||||
src.icon_state = off_icon
|
||||
src.flags = OPENCONTAINER
|
||||
dirty = 0 // It's clean!
|
||||
broken = 0 // just to be sure
|
||||
icon_state = off_icon
|
||||
flags = OPENCONTAINER
|
||||
else //Otherwise bad luck!!
|
||||
to_chat(user, "<span class='alert'>It's dirty!</span>")
|
||||
return 1
|
||||
@@ -161,12 +161,12 @@
|
||||
else
|
||||
to_chat(user, "<span class='alert'>You have no idea what you can cook with this [O].</span>")
|
||||
return 1
|
||||
src.updateUsrDialog()
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/kitchen_machine/attack_ai(mob/user as mob)
|
||||
/obj/machinery/kitchen_machine/attack_ai(mob/user)
|
||||
return 0
|
||||
|
||||
/obj/machinery/kitchen_machine/attack_hand(mob/user as mob)
|
||||
/obj/machinery/kitchen_machine/attack_hand(mob/user)
|
||||
user.set_machine(src)
|
||||
interact(user)
|
||||
|
||||
@@ -174,15 +174,15 @@
|
||||
* Machine Menu *
|
||||
********************/
|
||||
|
||||
/obj/machinery/kitchen_machine/interact(mob/user as mob) // The microwave Menu
|
||||
/obj/machinery/kitchen_machine/interact(mob/user) // The microwave Menu
|
||||
if(panel_open || !anchored)
|
||||
return
|
||||
var/dat = ""
|
||||
if(src.broken > 0)
|
||||
if(broken > 0)
|
||||
dat = {"<TT>Bzzzzttttt</TT>"}
|
||||
else if(src.operating)
|
||||
dat = {"<TT>[pick(src.cook_verbs)] in progress!<BR>Please wait...!</TT>"}
|
||||
else if(src.dirty==100)
|
||||
else if(operating)
|
||||
dat = {"<TT>[pick(cook_verbs)] in progress!<BR>Please wait...!</TT>"}
|
||||
else if(dirty==100)
|
||||
dat = {"<TT>This [src] is dirty!<BR>Please clean it before use!</TT>"}
|
||||
else
|
||||
var/list/items_counts = new
|
||||
@@ -237,7 +237,7 @@
|
||||
var/datum/browser/popup = new(user, name, name, 400, 400)
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
onclose(user, "[src.name]")
|
||||
onclose(user, "[name]")
|
||||
return
|
||||
|
||||
|
||||
@@ -298,14 +298,14 @@
|
||||
byproduct = recipe.get_byproduct()
|
||||
stop()
|
||||
if(cooked)
|
||||
cooked.forceMove(src.loc)
|
||||
cooked.forceMove(loc)
|
||||
for(var/i=1,i<efficiency,i++)
|
||||
cooked = new cooked.type(loc)
|
||||
if(byproduct)
|
||||
new byproduct(loc)
|
||||
return
|
||||
|
||||
/obj/machinery/kitchen_machine/proc/wzhzhzh(var/seconds as num)
|
||||
/obj/machinery/kitchen_machine/proc/wzhzhzh(seconds)
|
||||
for(var/i=1 to seconds)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return 0
|
||||
@@ -323,54 +323,54 @@
|
||||
return 0
|
||||
|
||||
/obj/machinery/kitchen_machine/proc/start()
|
||||
src.visible_message("<span class='notice'>\The [src] turns on.</span>", "<span class='notice'>You hear \a [src].</span>")
|
||||
src.operating = 1
|
||||
src.icon_state = on_icon
|
||||
src.updateUsrDialog()
|
||||
visible_message("<span class='notice'>\The [src] turns on.</span>", "<span class='notice'>You hear \a [src].</span>")
|
||||
operating = 1
|
||||
icon_state = on_icon
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/kitchen_machine/proc/abort()
|
||||
src.operating = 0 // Turn it off again aferwards
|
||||
src.icon_state = off_icon
|
||||
src.updateUsrDialog()
|
||||
operating = 0 // Turn it off again aferwards
|
||||
icon_state = off_icon
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/kitchen_machine/proc/stop()
|
||||
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
src.operating = 0 // Turn it off again aferwards
|
||||
src.icon_state = off_icon
|
||||
src.updateUsrDialog()
|
||||
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
operating = 0 // Turn it off again aferwards
|
||||
icon_state = off_icon
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/kitchen_machine/proc/dispose()
|
||||
for(var/obj/O in contents)
|
||||
O.forceMove(src.loc)
|
||||
if(src.reagents.total_volume)
|
||||
src.dirty++
|
||||
src.reagents.clear_reagents()
|
||||
O.forceMove(loc)
|
||||
if(reagents.total_volume)
|
||||
dirty++
|
||||
reagents.clear_reagents()
|
||||
to_chat(usr, "<span class='notice'>You dispose of \the [src]'s contents.</span>")
|
||||
src.updateUsrDialog()
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/kitchen_machine/proc/muck_start()
|
||||
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound
|
||||
src.icon_state = dirty_icon // Make it look dirty!!
|
||||
playsound(loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound
|
||||
icon_state = dirty_icon // Make it look dirty!!
|
||||
|
||||
/obj/machinery/kitchen_machine/proc/muck_finish()
|
||||
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
src.visible_message("<span class='alert'>\The [src] gets covered in muck!</span>")
|
||||
src.dirty = 100 // Make it dirty so it can't be used util cleaned
|
||||
src.flags = null //So you can't add condiments
|
||||
src.icon_state = dirty_icon // Make it look dirty too
|
||||
src.operating = 0 // Turn it off again aferwards
|
||||
src.updateUsrDialog()
|
||||
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
visible_message("<span class='alert'>\The [src] gets covered in muck!</span>")
|
||||
dirty = 100 // Make it dirty so it can't be used util cleaned
|
||||
flags = null //So you can't add condiments
|
||||
icon_state = dirty_icon // Make it look dirty too
|
||||
operating = 0 // Turn it off again aferwards
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/kitchen_machine/proc/broke()
|
||||
var/datum/effect/system/spark_spread/s = new
|
||||
s.set_up(2, 1, src)
|
||||
s.start()
|
||||
src.icon_state = broken_icon // Make it look all busted up and shit
|
||||
src.visible_message("<span class='alert'>The [src] breaks!</span>") //Let them know they're stupid
|
||||
src.broken = 2 // Make it broken so it can't be used util fixed
|
||||
src.flags = null //So you can't add condiments
|
||||
src.operating = 0 // Turn it off again aferwards
|
||||
src.updateUsrDialog()
|
||||
icon_state = broken_icon // Make it look all busted up and shit
|
||||
visible_message("<span class='alert'>The [src] breaks!</span>") //Let them know they're stupid
|
||||
broken = 2 // Make it broken so it can't be used util fixed
|
||||
flags = null //So you can't add condiments
|
||||
operating = 0 // Turn it off again aferwards
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/kitchen_machine/proc/fail()
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src)
|
||||
@@ -382,7 +382,7 @@
|
||||
if(id)
|
||||
amount+=O.reagents.get_reagent_amount(id)
|
||||
qdel(O)
|
||||
src.reagents.clear_reagents()
|
||||
reagents.clear_reagents()
|
||||
ffuu.reagents.add_reagent("carbon", amount)
|
||||
ffuu.reagents.add_reagent("????", amount/10)
|
||||
ffuu.forceMove(get_turf(src))
|
||||
@@ -392,8 +392,8 @@
|
||||
return
|
||||
|
||||
usr.set_machine(src)
|
||||
if(src.operating)
|
||||
src.updateUsrDialog()
|
||||
if(operating)
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
switch(href_list["action"])
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
cube_production = cubes_made
|
||||
required_grind = req_grind
|
||||
|
||||
/obj/machinery/monkey_recycler/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
/obj/machinery/monkey_recycler/attackby(obj/item/O, mob/user, params)
|
||||
if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", O))
|
||||
return
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
cycle_through = 0
|
||||
to_chat(user, "<span class='notice'>You change the monkeycube type to [initial(cube_type.name)].</span>")
|
||||
|
||||
if(src.stat != 0) //NOPOWER etc
|
||||
if(stat != 0) //NOPOWER etc
|
||||
return
|
||||
if(istype(O, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = O
|
||||
@@ -76,11 +76,11 @@
|
||||
user.drop_item()
|
||||
qdel(target)
|
||||
to_chat(user, "<span class='notice'>You stuff the monkey in the machine.</span>")
|
||||
playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1)
|
||||
playsound(loc, 'sound/machines/juicer.ogg', 50, 1)
|
||||
var/offset = prob(50) ? -2 : 2
|
||||
animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = 200) //start shaking
|
||||
use_power(500)
|
||||
src.grinded++
|
||||
grinded++
|
||||
sleep(50)
|
||||
pixel_x = initial(pixel_x)
|
||||
to_chat(user, "<span class='notice'>The machine now has [grinded] monkey\s worth of material stored.</span>")
|
||||
@@ -90,15 +90,15 @@
|
||||
to_chat(user, "<span class='warning'>The machine only accepts monkeys!</span>")
|
||||
return
|
||||
|
||||
/obj/machinery/monkey_recycler/attack_hand(var/mob/user as mob)
|
||||
if(src.stat != 0) //NOPOWER etc
|
||||
/obj/machinery/monkey_recycler/attack_hand(mob/user)
|
||||
if(stat != 0) //NOPOWER etc
|
||||
return
|
||||
if(grinded >= required_grind)
|
||||
to_chat(user, "<span class='notice'>The machine hisses loudly as it condenses the grinded monkey meat. After a moment, it dispenses a brand new monkey cube.</span>")
|
||||
playsound(src.loc, 'sound/machines/hiss.ogg', 50, 1)
|
||||
playsound(loc, 'sound/machines/hiss.ogg', 50, 1)
|
||||
grinded -= required_grind
|
||||
for(var/i = 0, i < cube_production, i++) // Forgot to fix this bit the first time through
|
||||
new cube_type(src.loc)
|
||||
new cube_type(loc)
|
||||
to_chat(user, "<span class='notice'>The machine's display flashes that it has [grinded] monkey\s worth of material left.</span>")
|
||||
else // I'm not sure if the \s macro works with a word in between; I'll play it safe
|
||||
to_chat(user, "<span class='warning'>The machine needs at least [required_grind] monkey\s worth of material to compress [cube_production] monkey\s. It only has [grinded].</span>")
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
food_choices.Remove(U)
|
||||
for(var/U in subtypesof(/obj/item/weapon/reagent_containers/food/snacks/customizable/cook))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/V = new U
|
||||
src.food_choices += V
|
||||
food_choices += V
|
||||
return
|
||||
|
||||
/obj/machinery/cooking/candy
|
||||
@@ -75,5 +75,5 @@
|
||||
food_choices.Remove(U)
|
||||
for(var/U in subtypesof(/obj/item/weapon/reagent_containers/food/snacks/customizable/candy))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/V = new U
|
||||
src.food_choices += V
|
||||
food_choices += V
|
||||
return
|
||||
|
||||
@@ -58,9 +58,9 @@
|
||||
var/time = 40
|
||||
|
||||
/datum/food_processor_process/proc/process_food(loc, what, obj/machinery/processor/processor)
|
||||
if(src.output && loc && processor)
|
||||
if(output && loc && processor)
|
||||
for(var/i = 0, i < processor.rating_amount, i++)
|
||||
new src.output(loc)
|
||||
new output(loc)
|
||||
if(what)
|
||||
qdel(what)
|
||||
|
||||
@@ -154,9 +154,9 @@
|
||||
return P
|
||||
return 0
|
||||
|
||||
/obj/machinery/processor/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
/obj/machinery/processor/attackby(obj/item/O, mob/user, params)
|
||||
|
||||
if(src.processing)
|
||||
if(processing)
|
||||
to_chat(user, "<span class='warning'>\the [src] is already processing something!</span>")
|
||||
return 1
|
||||
|
||||
@@ -191,25 +191,25 @@
|
||||
what.loc = src
|
||||
return
|
||||
|
||||
/obj/machinery/processor/attack_hand(var/mob/user as mob)
|
||||
/obj/machinery/processor/attack_hand(mob/user)
|
||||
if(stat & (NOPOWER|BROKEN)) //no power or broken
|
||||
return
|
||||
|
||||
if(src.processing)
|
||||
if(processing)
|
||||
to_chat(user, "<span class='warning'>\the [src] is already processing something!</span>")
|
||||
return 1
|
||||
|
||||
if(src.contents.len == 0)
|
||||
if(contents.len == 0)
|
||||
to_chat(user, "<span class='warning'>\the [src] is empty.</span>")
|
||||
return 1
|
||||
src.processing = 1
|
||||
processing = 1
|
||||
user.visible_message("[user] turns on [src].", \
|
||||
"<span class='notice'>You turn on [src].</span>", \
|
||||
"<span class='italics'>You hear a food processor.</span>")
|
||||
playsound(src.loc, 'sound/machines/blender.ogg', 50, 1)
|
||||
playsound(loc, 'sound/machines/blender.ogg', 50, 1)
|
||||
use_power(500)
|
||||
var/total_time = 0
|
||||
for(var/O in src.contents)
|
||||
for(var/O in contents)
|
||||
var/datum/food_processor_process/P = select_recipe(O)
|
||||
if(!P)
|
||||
log_debug("The [O] in processor([src]) does not have a suitable recipe, but it was somehow put inside of the processor anyways.")
|
||||
@@ -217,14 +217,14 @@
|
||||
total_time += P.time
|
||||
sleep(total_time / rating_speed)
|
||||
|
||||
for(var/O in src.contents)
|
||||
for(var/O in contents)
|
||||
var/datum/food_processor_process/P = select_recipe(O)
|
||||
if(!P)
|
||||
log_debug("The [O] in processor([src]) does not have a suitable recipe, but it was somehow put inside of the processor anyways.")
|
||||
continue
|
||||
P.process_food(src.loc, O, src)
|
||||
src.processing = 0
|
||||
P.process_food(loc, O, src)
|
||||
processing = 0
|
||||
|
||||
src.visible_message("<span class='notice'>\the [src] has finished processing.</span>", \
|
||||
visible_message("<span class='notice'>\the [src] has finished processing.</span>", \
|
||||
"<span class='notice'>\the [src] has finished processing.</span>", \
|
||||
"<span class='notice'>You hear a food processor stopping.</span>")
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
A.forceMove(loc)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj)
|
||||
/obj/machinery/smartfridge/proc/accept_check(obj/item/O)
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/))
|
||||
return 1
|
||||
return 0
|
||||
@@ -66,7 +66,7 @@
|
||||
icon_on = "seeds"
|
||||
icon_off = "seeds-off"
|
||||
|
||||
/obj/machinery/smartfridge/seeds/accept_check(var/obj/item/O as obj)
|
||||
/obj/machinery/smartfridge/seeds/accept_check(obj/item/O)
|
||||
if(istype(O,/obj/item/seeds/))
|
||||
return 1
|
||||
return 0
|
||||
@@ -77,7 +77,7 @@
|
||||
icon_state = "smartfridge" //To fix the icon in the map editor.
|
||||
icon_on = "smartfridge_chem"
|
||||
|
||||
/obj/machinery/smartfridge/medbay/accept_check(var/obj/item/O as obj)
|
||||
/obj/machinery/smartfridge/medbay/accept_check(obj/item/O)
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/glass/))
|
||||
return 1
|
||||
if(istype(O,/obj/item/weapon/storage/pill_bottle/))
|
||||
@@ -91,7 +91,7 @@
|
||||
desc = "A refrigerated storage unit for slime extracts"
|
||||
req_access_txt = "47"
|
||||
|
||||
/obj/machinery/smartfridge/secure/extract/accept_check(var/obj/item/O as obj)
|
||||
/obj/machinery/smartfridge/secure/extract/accept_check(obj/item/O)
|
||||
if(istype(O,/obj/item/slime_extract))
|
||||
return 1
|
||||
return 0
|
||||
@@ -103,7 +103,7 @@
|
||||
icon_on = "smartfridge_chem"
|
||||
req_one_access_txt = "5;33"
|
||||
|
||||
/obj/machinery/smartfridge/secure/medbay/accept_check(var/obj/item/O as obj)
|
||||
/obj/machinery/smartfridge/secure/medbay/accept_check(obj/item/O)
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/glass/))
|
||||
return 1
|
||||
if(istype(O,/obj/item/weapon/storage/pill_bottle/))
|
||||
@@ -134,7 +134,7 @@
|
||||
nanomanager.update_uis(src)
|
||||
amount--
|
||||
|
||||
/obj/machinery/smartfridge/chemistry/accept_check(var/obj/item/O as obj)
|
||||
/obj/machinery/smartfridge/chemistry/accept_check(obj/item/O)
|
||||
if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers))
|
||||
return 1
|
||||
return 0
|
||||
@@ -154,7 +154,7 @@
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/plasma = 1,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/diphenhydramine = 1)
|
||||
|
||||
/obj/machinery/smartfridge/secure/chemistry/virology/accept_check(var/obj/item/O as obj)
|
||||
/obj/machinery/smartfridge/secure/chemistry/virology/accept_check(obj/item/O)
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/syringe) || istype(O, /obj/item/weapon/reagent_containers/glass/bottle) || istype(O, /obj/item/weapon/reagent_containers/glass/beaker))
|
||||
return 1
|
||||
return 0
|
||||
@@ -163,17 +163,17 @@
|
||||
name = "\improper Drink Showcase"
|
||||
desc = "A refrigerated storage unit for tasty tasty alcohol."
|
||||
|
||||
/obj/machinery/smartfridge/drinks/accept_check(var/obj/item/O as obj)
|
||||
/obj/machinery/smartfridge/drinks/accept_check(obj/item/O)
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment))
|
||||
return 1
|
||||
|
||||
/obj/machinery/smartfridge/process()
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
if(src.seconds_electrified > 0)
|
||||
src.seconds_electrified--
|
||||
if(src.shoot_inventory && prob(2))
|
||||
src.throw_item()
|
||||
if(seconds_electrified > 0)
|
||||
seconds_electrified--
|
||||
if(shoot_inventory && prob(2))
|
||||
throw_item()
|
||||
|
||||
/obj/machinery/smartfridge/power_change()
|
||||
var/old_stat = stat
|
||||
@@ -192,9 +192,9 @@
|
||||
* Item Adding
|
||||
********************/
|
||||
|
||||
/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
/obj/machinery/smartfridge/attackby(obj/item/O, mob/user)
|
||||
if(istype(O, /obj/item/weapon/screwdriver) && anchored)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
panel_open = !panel_open
|
||||
to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
|
||||
overlays.Cut()
|
||||
@@ -271,20 +271,20 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/smartfridge/attack_ai(mob/user as mob)
|
||||
/obj/machinery/smartfridge/attack_ai(mob/user)
|
||||
return 0
|
||||
|
||||
/obj/machinery/smartfridge/attack_ghost(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
/obj/machinery/smartfridge/attack_ghost(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/smartfridge/attack_hand(mob/user as mob)
|
||||
/obj/machinery/smartfridge/attack_hand(mob/user)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
wires.Interact(user)
|
||||
ui_interact(user)
|
||||
|
||||
//Drag pill bottle to fridge to empty it into the fridge
|
||||
/obj/machinery/smartfridge/MouseDrop_T(obj/over_object as obj, mob/user as mob)
|
||||
/obj/machinery/smartfridge/MouseDrop_T(obj/over_object, mob/user)
|
||||
if(!istype(over_object, /obj/item/weapon/storage/pill_bottle)) //Only pill bottles, please
|
||||
return
|
||||
|
||||
@@ -305,7 +305,7 @@
|
||||
to_chat(user, "<span class='notice'>Some items are refused.</span>")
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
/obj/machinery/smartfridge/secure/emag_act(user as mob)
|
||||
/obj/machinery/smartfridge/secure/emag_act(user)
|
||||
emagged = 1
|
||||
locked = -1
|
||||
to_chat(user, "You short out the product lock on [src].")
|
||||
@@ -314,7 +314,7 @@
|
||||
* SmartFridge Menu
|
||||
********************/
|
||||
|
||||
/obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
/obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
|
||||
user.set_machine(src)
|
||||
|
||||
var/data[0]
|
||||
@@ -336,7 +336,7 @@
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "smartfridge.tmpl", src.name, 400, 500)
|
||||
ui = new(user, src, ui_key, "smartfridge.tmpl", name, 400, 500)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
|
||||
@@ -346,7 +346,7 @@
|
||||
var/mob/user = usr
|
||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
||||
|
||||
src.add_fingerprint(user)
|
||||
add_fingerprint(user)
|
||||
|
||||
if(href_list["close"])
|
||||
user.unset_machine()
|
||||
@@ -387,7 +387,7 @@
|
||||
item_quants[O]--
|
||||
for(var/obj/T in contents)
|
||||
if(T.name == O)
|
||||
T.forceMove(src.loc)
|
||||
T.forceMove(loc)
|
||||
throw_item = T
|
||||
break
|
||||
break
|
||||
@@ -395,7 +395,7 @@
|
||||
return 0
|
||||
spawn(0)
|
||||
throw_item.throw_at(target,16,3,src)
|
||||
src.visible_message("<span class='warning'>[src] launches [throw_item.name] at [target.name]!</span>")
|
||||
visible_message("<span class='warning'>[src] launches [throw_item.name] at [target.name]!</span>")
|
||||
return 1
|
||||
|
||||
/************************
|
||||
|
||||
@@ -78,6 +78,11 @@
|
||||
items = list(/obj/item/weapon/reagent_containers/food/snacks/egg)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/candy/nougat
|
||||
|
||||
/datum/recipe/candy/nougat/make_food(obj/container)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/candy/nougat/being_cooked = ..()
|
||||
being_cooked.reagents.del_reagent("egg")
|
||||
return being_cooked
|
||||
|
||||
// ***********************************************************
|
||||
// Base Candy Recipes (unflavored / plain)
|
||||
// ***********************************************************
|
||||
|
||||
@@ -89,6 +89,11 @@
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers
|
||||
|
||||
/datum/recipe/grill/fishfingers/make_food(obj/container)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/fishfingers/being_cooked = ..()
|
||||
being_cooked.reagents.del_reagent("egg")
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/grill/cutlet
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/rawcutlet
|
||||
|
||||
@@ -205,10 +205,11 @@
|
||||
reagents = list("water" = 5, "vodka" = 5)
|
||||
fruit = list("amanita" = 3)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/amanitajelly
|
||||
make_food(var/obj/container as obj)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/being_cooked = ..(container)
|
||||
being_cooked.reagents.del_reagent("amanitin")
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/microwave/amanitajelly/make_food(obj/container)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/being_cooked = ..()
|
||||
being_cooked.reagents.del_reagent("amanitin")
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/microwave/meatballsoup
|
||||
reagents = list("water" = 10)
|
||||
@@ -538,10 +539,11 @@ datum/recipe/microwave/slimesandwich
|
||||
/datum/recipe/microwave/herbsalad
|
||||
fruit = list("ambrosia" = 3, "apple" = 1)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/herbsalad
|
||||
make_food(var/obj/container as obj)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/herbsalad/being_cooked = ..(container)
|
||||
being_cooked.reagents.del_reagent("toxin")
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/microwave/herbsalad/make_food(obj/container)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/herbsalad/being_cooked = ..()
|
||||
being_cooked.reagents.del_reagent("toxin")
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/microwave/aesirsalad
|
||||
fruit = list("ambrosiadeus" = 3, "goldapple" = 1)
|
||||
@@ -553,10 +555,11 @@ datum/recipe/microwave/slimesandwich
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatball,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/validsalad
|
||||
make_food(var/obj/container as obj)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/validsalad/being_cooked = ..(container)
|
||||
being_cooked.reagents.del_reagent("toxin")
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/microwave/validsalad/make_food(obj/container)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/validsalad/being_cooked = ..()
|
||||
being_cooked.reagents.del_reagent("toxin")
|
||||
return being_cooked
|
||||
|
||||
////////////////////////////FOOD ADDITTIONS///////////////////////////////
|
||||
|
||||
|
||||
@@ -176,20 +176,22 @@
|
||||
/obj/item/weapon/paper,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie
|
||||
make_food(var/obj/container as obj)
|
||||
|
||||
/datum/recipe/oven/fortunecookie/make_food(obj/container)
|
||||
var/obj/item/weapon/paper/paper = locate() in container
|
||||
paper.loc = null //prevent deletion
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/being_cooked = ..()
|
||||
paper.loc = being_cooked
|
||||
being_cooked.trash = paper //so the paper is left behind as trash without special-snowflake(TM Nodrak) code ~carn
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/oven/fortunecookie/check_items(obj/container)
|
||||
. = ..()
|
||||
if(.)
|
||||
var/obj/item/weapon/paper/paper = locate() in container
|
||||
paper.loc = null //prevent deletion
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/being_cooked = ..(container)
|
||||
paper.loc = being_cooked
|
||||
being_cooked.trash = paper //so the paper is left behind as trash without special-snowflake(TM Nodrak) code ~carn
|
||||
return being_cooked
|
||||
check_items(var/obj/container as obj)
|
||||
. = ..()
|
||||
if(.)
|
||||
var/obj/item/weapon/paper/paper = locate() in container
|
||||
if(!paper || !paper.info)
|
||||
return -1
|
||||
return .
|
||||
if(!paper || !paper.info)
|
||||
return -1
|
||||
return .
|
||||
|
||||
/datum/recipe/oven/pizzamargherita
|
||||
fruit = list("tomato" = 1)
|
||||
@@ -293,6 +295,11 @@
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread
|
||||
|
||||
/datum/recipe/oven/bread/make_food(obj/container)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread/being_cooked = ..()
|
||||
being_cooked.reagents.del_reagent("egg")
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/oven/applepie
|
||||
fruit = list("apple" = 1)
|
||||
items = list(
|
||||
@@ -377,6 +384,11 @@
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/appletart
|
||||
|
||||
/datum/recipe/oven/appletart/make_food(obj/container)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/appletart/being_cooked = ..()
|
||||
being_cooked.reagents.del_reagent("egg")
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/oven/cracker
|
||||
reagents = list("sodiumchloride" = 1)
|
||||
items = list(
|
||||
@@ -392,6 +404,11 @@
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sugarcookie
|
||||
|
||||
/datum/recipe/oven/sugarcookie/make_food(obj/container)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/being_cooked = ..()
|
||||
being_cooked.reagents.del_reagent("egg")
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/oven/flatbread
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
to_chat(M, "<span class='danger'>You are stunned by the powerful acid of the Deathnettle!</span>")
|
||||
add_logs(user, M, "attacked", src)
|
||||
|
||||
M.eye_blurry += force/7
|
||||
M.AdjustEyeBlurry(force/7)
|
||||
if(prob(20))
|
||||
M.Paralyse(force / 6)
|
||||
M.Weaken(force / 15)
|
||||
|
||||
@@ -13,19 +13,23 @@
|
||||
origin_tech = "magnets=1;biotech=1"
|
||||
var/form_title
|
||||
var/last_data
|
||||
var/print_cooldown = 0
|
||||
var/cooldown_length = 50 // Five seconds
|
||||
|
||||
/obj/item/device/analyzer/plant_analyzer/proc/print_report_verb()
|
||||
set name = "Print Plant Report"
|
||||
set category = "Object"
|
||||
set src = usr
|
||||
|
||||
if(usr.stat || usr.restrained() || usr.lying)
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
|
||||
print_report(usr)
|
||||
|
||||
/obj/item/device/analyzer/plant_analyzer/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
|
||||
if(href_list["print"])
|
||||
print_report(usr)
|
||||
|
||||
@@ -33,6 +37,11 @@
|
||||
if(!last_data)
|
||||
to_chat(user, "There is no scan data to print.")
|
||||
return
|
||||
if(print_cooldown > world.time)
|
||||
to_chat(user, "<span class='warning'>The printer is still cooling down.</span>")
|
||||
return
|
||||
print_cooldown = world.time + cooldown_length
|
||||
|
||||
playsound(loc, "sound/goonstation/machines/printer_thermal.ogg", 50, 1)
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src))
|
||||
P.name = "paper - [form_title]"
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
D.visible_message("<span class='warning'>[A] pounds [D] on the chest!</span>", \
|
||||
"<span class='userdanger'>[A] slams your chest! You can't breathe!</span>")
|
||||
playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1)
|
||||
D.losebreath += 5
|
||||
D.AdjustLoseBreath(5)
|
||||
D.adjustOxyLoss(10)
|
||||
return 1
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
"<span class='userdanger'>[A] karate chops your neck, rendering you unable to speak for a short time!</span>")
|
||||
playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1)
|
||||
D.apply_damage(5, BRUTE)
|
||||
D.silent += 10
|
||||
D.AdjustSilence(10)
|
||||
return 1
|
||||
|
||||
datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
@@ -170,4 +170,4 @@ datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/livi
|
||||
name = "krav maga gloves"
|
||||
desc = "These gloves can teach you to perform Krav Maga using nanochips."
|
||||
icon_state = "fightgloves"
|
||||
item_state = "fightgloves"
|
||||
item_state = "fightgloves"
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
D.visible_message("<span class='warning'>[A] knees [D] in the stomach!</span>", \
|
||||
"<span class='userdanger'>[A] winds you with a knee in the stomach!</span>")
|
||||
D.audible_message("<b>[D]</b> gags!")
|
||||
D.losebreath += 3
|
||||
D.AdjustLoseBreath(3)
|
||||
D.Stun(2)
|
||||
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1)
|
||||
if(prob(80))
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
//non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet.
|
||||
if(language && (language.flags & NONVERBAL))
|
||||
if(disabilities & BLIND || blinded) //blind people can't see dumbass
|
||||
if(!can_see()) //blind people can't see dumbass
|
||||
message = stars(message)
|
||||
|
||||
if(!speaker || !(speaker in view(src)))
|
||||
@@ -65,7 +65,7 @@
|
||||
if(client.prefs.toggles & CHAT_GHOSTEARS && speaker in view(src))
|
||||
message = "<b>[message]</b>"
|
||||
|
||||
if(disabilities & DEAF || ear_deaf)
|
||||
if(!can_hear())
|
||||
if(!language || !(language.flags & INNATE)) // INNATE is the flag for audible-emote-language, so we don't want to show an "x talks but you cannot hear them" message if it's set
|
||||
if(speaker == src)
|
||||
to_chat(src, "<span class='warning'>You cannot hear yourself speak!</span>")
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
//non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet.
|
||||
if(language && (language.flags & NONVERBAL))
|
||||
if(disabilities & BLIND || blinded) //blind people can't see dumbass
|
||||
if(!can_see()) //blind people can't see dumbass
|
||||
message = stars(message)
|
||||
|
||||
if(!speaker || !(speaker in view(src)))
|
||||
@@ -182,7 +182,7 @@
|
||||
formatted = language.format_message_radio(message, verb)
|
||||
else
|
||||
formatted = "[verb], <span class=\"body\">\"[message]\"</span>"
|
||||
if(disabilities & DEAF || ear_deaf)
|
||||
if(!can_hear())
|
||||
if(prob(20))
|
||||
to_chat(src, "<span class='warning'>You feel your headset vibrate but can hear nothing from it!</span>")
|
||||
else if(track)
|
||||
|
||||
@@ -605,7 +605,7 @@
|
||||
return ..()
|
||||
|
||||
// Can we speak this language, as opposed to just understanding it?
|
||||
/mob/proc/can_speak(datum/language/speaking)
|
||||
/mob/proc/can_speak_language(datum/language/speaking)
|
||||
|
||||
return (universal_speak || (speaking && speaking.flags & INNATE) || speaking in src.languages)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ In all, this is a lot like the monkey code. /N
|
||||
|
||||
switch(M.a_intent)
|
||||
if(I_HELP)
|
||||
sleeping = max(0,sleeping-5)
|
||||
AdjustSleeping(-5)
|
||||
resting = 0
|
||||
AdjustParalysis(-3)
|
||||
AdjustStunned(-3)
|
||||
|
||||
@@ -96,13 +96,15 @@
|
||||
|
||||
f_loss += 60
|
||||
|
||||
adjustEarDamage(30, 120)
|
||||
AdjustEarDamage(30)
|
||||
AdjustEarDeaf(120)
|
||||
|
||||
if(3.0)
|
||||
b_loss += 30
|
||||
if(prob(50) && !shielded)
|
||||
Paralyse(1)
|
||||
adjustEarDamage(15,60)
|
||||
AdjustEarDamage(15)
|
||||
AdjustEarDeaf(60)
|
||||
|
||||
adjustBruteLoss(b_loss)
|
||||
adjustFireLoss(f_loss)
|
||||
@@ -298,4 +300,4 @@
|
||||
return initial(pixel_x)
|
||||
|
||||
/mob/living/carbon/alien/humanoid/get_permeability_protection()
|
||||
return 0.8
|
||||
return 0.8
|
||||
|
||||
@@ -57,13 +57,12 @@
|
||||
|
||||
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
|
||||
blinded = 1
|
||||
silent = 0
|
||||
SetSilence(0)
|
||||
else //ALIVE. LIGHTS ARE ON
|
||||
if(health < config.health_threshold_dead || !get_int_organ(/obj/item/organ/internal/brain))
|
||||
death()
|
||||
blinded = 1
|
||||
stat = DEAD
|
||||
silent = 0
|
||||
SetSilence(0)
|
||||
return 1
|
||||
|
||||
//UNCONSCIOUS. NO-ONE IS HOME
|
||||
@@ -80,7 +79,7 @@
|
||||
blinded = 1
|
||||
stat = UNCONSCIOUS
|
||||
else if(sleeping)
|
||||
sleeping = max(sleeping-1, 0)
|
||||
AdjustSleeping(-1)
|
||||
blinded = 1
|
||||
stat = UNCONSCIOUS
|
||||
if( prob(10) && health )
|
||||
@@ -98,18 +97,18 @@
|
||||
if(disabilities & BLIND) //disabled-blind, doesn't get better on its own
|
||||
blinded = 1
|
||||
else if(eye_blind) //blindness, heals slowly over time
|
||||
eye_blind = max(eye_blind-1,0)
|
||||
AdjustEyeBlind(-1)
|
||||
blinded = 1
|
||||
else if(eye_blurry) //blurry eyes heal slowly
|
||||
eye_blurry = max(eye_blurry-1, 0)
|
||||
AdjustEyeBlurry(-1)
|
||||
|
||||
//Ears
|
||||
if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own
|
||||
setEarDamage(-1, max(ear_deaf, 1))
|
||||
EarDeaf(1)
|
||||
else if(ear_deaf) //deafness, heals slowly over time
|
||||
adjustEarDamage(0,-1)
|
||||
AdjustEarDeaf(-1)
|
||||
else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs
|
||||
adjustEarDamage(-0.05, 0)
|
||||
AdjustEarDamage(-0.05)
|
||||
|
||||
//Other
|
||||
if(stunned)
|
||||
@@ -123,11 +122,11 @@
|
||||
update_icons()
|
||||
|
||||
if(stuttering)
|
||||
stuttering = max(stuttering-1, 0)
|
||||
AdjustStuttering(-1)
|
||||
|
||||
if(silent)
|
||||
silent = max(silent-1, 0)
|
||||
AdjustSilence(-1)
|
||||
|
||||
if(druggy)
|
||||
druggy = max(druggy-1, 0)
|
||||
return 1
|
||||
AdjustDruggy(-1)
|
||||
return 1
|
||||
|
||||
@@ -88,13 +88,15 @@
|
||||
|
||||
f_loss += 60
|
||||
|
||||
adjustEarDamage(30,120)
|
||||
AdjustEarDamage(30)
|
||||
AdjustEarDeaf(120)
|
||||
|
||||
if(3.0)
|
||||
b_loss += 30
|
||||
if(prob(50))
|
||||
Paralyse(1)
|
||||
adjustEarDamage(15,60)
|
||||
AdjustEarDamage(15)
|
||||
AdjustEarDeaf(60)
|
||||
|
||||
adjustBruteLoss(b_loss)
|
||||
adjustFireLoss(f_loss)
|
||||
|
||||
@@ -17,12 +17,12 @@
|
||||
|
||||
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
|
||||
blinded = 1
|
||||
silent = 0
|
||||
SetSilence(0)
|
||||
else //ALIVE. LIGHTS ARE ON
|
||||
if(health < -25 || !get_int_organ(/obj/item/organ/internal/brain))
|
||||
death()
|
||||
blinded = 1
|
||||
silent = 0
|
||||
SetSilence(0)
|
||||
return 1
|
||||
|
||||
//UNCONSCIOUS. NO-ONE IS HOME
|
||||
@@ -39,7 +39,7 @@
|
||||
blinded = 1
|
||||
stat = UNCONSCIOUS
|
||||
else if(sleeping)
|
||||
sleeping = max(sleeping-1, 0)
|
||||
AdjustSleeping(-1)
|
||||
blinded = 1
|
||||
stat = UNCONSCIOUS
|
||||
if( prob(10) && health )
|
||||
@@ -57,32 +57,32 @@
|
||||
if(disabilities & BLIND) //disabled-blind, doesn't get better on its own
|
||||
blinded = 1
|
||||
else if(eye_blind) //blindness, heals slowly over time
|
||||
eye_blind = max(eye_blind-1,0)
|
||||
AdjustEyeBlind(-1)
|
||||
blinded = 1
|
||||
else if(eye_blurry) //blurry eyes heal slowly
|
||||
eye_blurry = max(eye_blurry-1, 0)
|
||||
AdjustEyeBlurry(-1)
|
||||
|
||||
//Ears
|
||||
if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own
|
||||
setEarDamage(-1, max(ear_deaf, 1))
|
||||
EarDeaf(1)
|
||||
else if(ear_deaf) //deafness, heals slowly over time
|
||||
adjustEarDamage(0,-1)
|
||||
AdjustEarDeaf(-1)
|
||||
else if(ear_damage < 25) //ear damage heals slowly under this threshold.
|
||||
adjustEarDamage(-0.05,0)
|
||||
AdjustEarDamage(-0.05)
|
||||
|
||||
//Other
|
||||
if(stunned)
|
||||
AdjustStunned(-1)
|
||||
|
||||
if(weakened)
|
||||
weakened = max(weakened-1,0)
|
||||
AdjustWeakened(-1)
|
||||
|
||||
if(stuttering)
|
||||
stuttering = max(stuttering-1, 0)
|
||||
AdjustStuttering(-1)
|
||||
|
||||
if(silent)
|
||||
silent = max(silent-1, 0)
|
||||
AdjustSilence(-1)
|
||||
|
||||
if(druggy)
|
||||
druggy = max(druggy-1, 0)
|
||||
return 1
|
||||
AdjustDruggy(-1)
|
||||
return 1
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user