# Conflicts:
#	code/defines/procs/announce.dm
#	code/modules/events/mass_hallucination.dm
This commit is contained in:
Markolie
2016-10-31 14:46:58 +01:00
191 changed files with 3112 additions and 3434 deletions
@@ -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"})
+1 -1
View File
@@ -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
+15
View File
@@ -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
+1 -3
View File
@@ -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()
-6
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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
+4 -4
View File
@@ -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
+2 -2
View File
@@ -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
+1 -2
View File
@@ -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
+3 -3
View File
@@ -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)
+6 -6
View File
@@ -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
+3 -3
View File
@@ -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"
+3 -3
View File
@@ -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)
+3 -4
View File
@@ -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"
+1 -1
View File
@@ -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))
+3 -3
View File
@@ -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
+3 -3
View File
@@ -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
+9 -9
View File
@@ -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)
+4 -12
View File
@@ -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")
+1 -1
View File
@@ -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))
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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))
+5 -5
View File
@@ -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
+1 -1
View File
@@ -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
+26 -1
View File
@@ -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
+2 -2
View File
@@ -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*
+3 -3
View File
@@ -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)
+2 -2
View File
@@ -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")
+21 -33
View File
@@ -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
+1
View File
@@ -215,6 +215,7 @@
desc = "Green squishy mess."
icon = 'icons/effects/effects.dmi'
icon_state = "greenshatter"
anchored = 1
/obj/effect/spider/cocoon
name = "cocoon"
+5 -4
View File
@@ -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()
+3 -3
View File
@@ -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()
+4 -4
View File
@@ -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
+2 -2
View File
@@ -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))
+3 -3
View File
@@ -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>")
+1 -1
View File
@@ -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)
+153 -163
View File
@@ -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)
+1 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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)
+5 -5
View File
@@ -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)
+2 -2
View File
@@ -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
+6 -5
View File
@@ -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
+11 -8
View File
@@ -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
+10 -1
View File
@@ -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."
+2 -2
View File
@@ -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")
+5 -5
View File
@@ -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
+62 -311
View File
@@ -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)
+5 -12
View File
@@ -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)
+44 -127
View File
@@ -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
+1 -1
View File
@@ -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)
+11 -2
View File
@@ -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]"
+3 -3
View File
@@ -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"
+1 -1
View File
@@ -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))
+4 -4
View File
@@ -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)
+1 -1
View File
@@ -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