diff --git a/code/modules/mob/living/carbon/amorph/amorph.dm b/code/WorkInProgress/Cib/amorph/amorph.dm
similarity index 96%
rename from code/modules/mob/living/carbon/amorph/amorph.dm
rename to code/WorkInProgress/Cib/amorph/amorph.dm
index c2af2ff75d4..dd1a678f47a 100644
--- a/code/modules/mob/living/carbon/amorph/amorph.dm
+++ b/code/WorkInProgress/Cib/amorph/amorph.dm
@@ -1,590 +1,590 @@
-/mob/living/carbon/amorph
- name = "amorph"
- real_name = "amorph"
- voice_name = "amorph"
- icon = 'icons/mob/amorph.dmi'
- icon_state = ""
-
-
- var/species = "Amorph"
- age = 30.0
-
- var/used_skillpoints = 0
- var/skill_specialization = null
- var/list/skills = null
-
- var/obj/item/l_ear = null
-
- // might use this later to recolor armorphs with icon.SwapColor
- var/slime_color = null
-
- var/examine_text = ""
-
-
-/mob/living/carbon/amorph/New()
-
- ..()
-
- // Amorphs don't have a blood vessel, but they can have reagents in their body
- var/datum/reagents/R = new/datum/reagents(1000)
- reagents = R
- R.my_atom = src
-
- // Amorphs have no DNA(they're more like carbon-based machines)
-
- // Amorphs don't have organs
- ..()
-
-/mob/living/carbon/amorph/Bump(atom/movable/AM as mob|obj, yes)
- if ((!( yes ) || now_pushing))
- return
- now_pushing = 1
- if (ismob(AM))
- var/mob/tmob = AM
-
-//BubbleWrap - Should stop you pushing a restrained person out of the way
-
- if(istype(tmob, /mob/living/carbon/human))
-
- for(var/mob/M in range(tmob, 1))
- if( ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) )
- if ( !(world.time % 5) )
- src << "\red [tmob] is restrained, you cannot push past"
- now_pushing = 0
- return
- if( tmob.pulling == M && ( M.restrained() && !( tmob.restrained() ) && tmob.stat == 0) )
- if ( !(world.time % 5) )
- src << "\red [tmob] is restraining [M], you cannot push past"
- now_pushing = 0
- return
-
- //BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
- if((tmob.a_intent == "help" || tmob.restrained()) && (a_intent == "help" || src.restrained()) && tmob.canmove && canmove) // mutual brohugs all around!
- var/turf/oldloc = loc
- loc = tmob.loc
- tmob.loc = oldloc
- now_pushing = 0
- for(var/mob/living/carbon/metroid/Metroid in view(1,tmob))
- if(Metroid.Victim == tmob)
- Metroid.UpdateFeed()
- return
-
- if(tmob.r_hand && istype(tmob.r_hand, /obj/item/weapon/shield/riot))
- if(prob(99))
- now_pushing = 0
- return
- if(tmob.l_hand && istype(tmob.l_hand, /obj/item/weapon/shield/riot))
- if(prob(99))
- now_pushing = 0
- return
- if(tmob.nopush)
- now_pushing = 0
- return
-
- tmob.LAssailant = src
-
- now_pushing = 0
- spawn(0)
- ..()
- if (!istype(AM, /atom/movable))
- return
- if (!now_pushing)
- now_pushing = 1
-
- if (!AM.anchored)
- var/t = get_dir(src, AM)
- if (istype(AM, /obj/structure/window))
- if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST)
- for(var/obj/structure/window/win in get_step(AM,t))
- now_pushing = 0
- return
- step(AM, t)
- now_pushing = 0
- return
- return
-
-/mob/living/carbon/amorph/movement_delay()
- var/tally = 2 // amorphs are a bit slower than humans
- var/mob/M = pulling
-
- if(reagents.has_reagent("hyperzine")) return -1
-
- if(reagents.has_reagent("nuka_cola")) return -1
-
- if(analgesic) return -1
-
- if (istype(loc, /turf/space)) return -1 // It's hard to be slowed down in space by... anything
-
- var/health_deficiency = traumatic_shock
- if(health_deficiency >= 40) tally += (health_deficiency / 25)
-
- var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80
- if (hungry >= 70) tally += hungry/300
-
- if (bodytemperature < 283.222)
- tally += (283.222 - bodytemperature) / 10 * 1.75
- if (stuttering < 10)
- stuttering = 10
-
- if(shock_stage >= 10) tally += 3
-
- if(tally < 0)
- tally = 0
-
- if(istype(M) && M.lying) //Pulling lying down people is slower
- tally += 3
-
- if(mRun in mutations)
- tally = 0
-
- return tally
-
-/mob/living/carbon/amorph/Stat()
- ..()
- statpanel("Status")
-
- stat(null, "Intent: [a_intent]")
- stat(null, "Move Mode: [m_intent]")
- if(ticker && ticker.mode && ticker.mode.name == "AI malfunction")
- if(ticker.mode:malf_mode_declared)
- stat(null, "Time left: [max(ticker.mode:AI_win_timeleft/(ticker.mode:apcs/3), 0)]")
- if(emergency_shuttle)
- if(emergency_shuttle.online && emergency_shuttle.location < 2)
- var/timeleft = emergency_shuttle.timeleft()
- if (timeleft)
- stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
-
- if (client.statpanel == "Status")
- if (internal)
- if (!internal.air_contents)
- del(internal)
- else
- stat("Internal Atmosphere Info", internal.name)
- stat("Tank Pressure", internal.air_contents.return_pressure())
- stat("Distribution Pressure", internal.distribute_pressure)
- if (mind)
- if (mind.special_role == "Changeling" && changeling)
- stat("Chemical Storage", changeling.chem_charges)
- stat("Genetic Damage Time", changeling.geneticdamage)
-
-/mob/living/carbon/amorph/ex_act(severity)
- flick("flash", flash)
-
- var/shielded = 0
- var/b_loss = null
- var/f_loss = null
- switch (severity)
- if (1.0)
- b_loss += 500
- if (!prob(getarmor(null, "bomb")))
- gib()
- return
- else
- var/atom/target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src)))
- throw_at(target, 200, 4)
-
- if (2.0)
- if (!shielded)
- b_loss += 60
-
- f_loss += 60
-
- if (!prob(getarmor(null, "bomb")))
- b_loss = b_loss/1.5
- f_loss = f_loss/1.5
-
- if(3.0)
- b_loss += 30
- if (!prob(getarmor(null, "bomb")))
- b_loss = b_loss/2
- if (prob(50) && !shielded)
- Paralyse(10)
-
- src.bruteloss += b_loss
- src.fireloss += f_loss
-
- UpdateDamageIcon()
-
-
-/mob/living/carbon/amorph/blob_act()
- if(stat == 2) return
- show_message("\red The blob attacks you!")
- src.bruteloss += rand(30,40)
- UpdateDamageIcon()
- return
-
-/mob/living/carbon/amorph/u_equip(obj/item/W as obj)
- // These are the only slots an amorph has
- if (W == l_ear)
- l_ear = null
- else if (W == r_hand)
- r_hand = null
-
- update_clothing()
-
-/mob/living/carbon/amorph/db_click(text, t1)
- var/obj/item/W = equipped()
- var/emptyHand = (W == null)
- if ((!emptyHand) && (!istype(W, /obj/item)))
- return
- if (emptyHand)
- usr.next_move = usr.prev_move
- usr:lastDblClick -= 3 //permit the double-click redirection to proceed.
- switch(text)
- if("l_ear")
- if (l_ear)
- if (emptyHand)
- l_ear.DblClick()
- return
- else if(emptyHand)
- return
- if (!( istype(W, /obj/item/clothing/ears) ) && !( istype(W, /obj/item/device/radio/headset) ) && W.w_class != 1)
- return
- u_equip(W)
- l_ear = W
- W.equipped(src, text)
-
- update_clothing()
-
- return
-
-/mob/living/carbon/amorph/meteorhit(O as obj)
- for(var/mob/M in viewers(src, null))
- if ((M.client && !( M.blinded )))
- M.show_message(text("\red [] has been hit by []", src, O), 1)
- if (health > 0)
- if (istype(O, /obj/effect/immovablerod))
- src.bruteloss += 101
- else
- src.bruteloss += 25
- UpdateDamageIcon()
- updatehealth()
- return
-
-/mob/living/carbon/amorph/Move(a, b, flag)
-
- if (buckled)
- return
-
- if (restrained())
- pulling = null
-
-
- var/t7 = 1
- if (restrained())
- for(var/mob/M in range(src, 1))
- if ((M.pulling == src && M.stat == 0 && !( M.restrained() )))
- t7 = null
- if ((t7 && (pulling && ((get_dist(src, pulling) <= 1 || pulling.loc == loc) && (client && client.moving)))))
- var/turf/T = loc
- . = ..()
-
- if (pulling && pulling.loc)
- if(!( isturf(pulling.loc) ))
- pulling = null
- return
- else
- if(Debug)
- diary <<"pulling disappeared? at [__LINE__] in mob.dm - pulling = [pulling]"
- diary <<"REPORT THIS"
-
- /////
- if(pulling && pulling.anchored)
- pulling = null
- return
-
- if (!restrained())
- var/diag = get_dir(src, pulling)
- if ((diag - 1) & diag)
- else
- diag = null
- if ((get_dist(src, pulling) > 1 || diag))
- if (ismob(pulling))
- var/mob/M = pulling
- var/ok = 1
- if (locate(/obj/item/weapon/grab, M.grabbed_by))
- if (prob(75))
- var/obj/item/weapon/grab/G = pick(M.grabbed_by)
- if (istype(G, /obj/item/weapon/grab))
- for(var/mob/O in viewers(M, null))
- O.show_message(text("\red [] has been pulled from []'s grip by []", G.affecting, G.assailant, src), 1)
- //G = null
- del(G)
- else
- ok = 0
- if (locate(/obj/item/weapon/grab, M.grabbed_by.len))
- ok = 0
- if (ok)
- var/t = M.pulling
- M.pulling = null
-
- //this is the gay blood on floor shit -- Added back -- Skie
- if (M.lying && (prob(M.getBruteLoss() / 6)))
- var/turf/location = M.loc
- if (istype(location, /turf/simulated))
- location.add_blood(M)
- if(ishuman(M))
- var/mob/living/carbon/H = M
- var/blood_volume = round(H:vessel.get_reagent_amount("blood"))
- if(blood_volume > 0)
- H:vessel.remove_reagent("blood",1)
- if(prob(5))
- M.adjustBruteLoss(1)
- visible_message("\red \The [M]'s wounds open more from being dragged!")
- if(M.pull_damage())
- if(prob(25))
- M.adjustBruteLoss(2)
- visible_message("\red \The [M]'s wounds worsen terribly from being dragged!")
- var/turf/location = M.loc
- if (istype(location, /turf/simulated))
- location.add_blood(M)
- if(ishuman(M))
- var/mob/living/carbon/H = M
- var/blood_volume = round(H:vessel.get_reagent_amount("blood"))
- if(blood_volume > 0)
- H:vessel.remove_reagent("blood",1)
-
- step(pulling, get_dir(pulling.loc, T))
- M.pulling = t
- else
- if (pulling)
- if (istype(pulling, /obj/structure/window))
- if(pulling:ini_dir == NORTHWEST || pulling:ini_dir == NORTHEAST || pulling:ini_dir == SOUTHWEST || pulling:ini_dir == SOUTHEAST)
- for(var/obj/structure/window/win in get_step(pulling,get_dir(pulling.loc, T)))
- pulling = null
- if (pulling)
- step(pulling, get_dir(pulling.loc, T))
- else
- pulling = null
- . = ..()
- if ((s_active && !( s_active in contents ) ))
- s_active.close(src)
-
- for(var/mob/living/carbon/metroid/M in view(1,src))
- M.UpdateFeed(src)
- return
-
-/mob/living/carbon/amorph/proc/misc_clothing_updates()
- // Temporary proc to shove stuff in that was put into update_clothing()
- // for questionable reasons
-
- if (client)
- if (i_select)
- if (intent)
- client.screen += hud_used.intents
-
- var/list/L = dd_text2list(intent, ",")
- L[1] += ":-11"
- i_select.screen_loc = dd_list2text(L,",") //ICONS4
- else
- i_select.screen_loc = null
- if (m_select)
- if (m_int)
- client.screen += hud_used.mov_int
-
- var/list/L = dd_text2list(m_int, ",")
- L[1] += ":-11"
- m_select.screen_loc = dd_list2text(L,",") //ICONS4
- else
- m_select.screen_loc = null
-
- // Probably a lazy way to make sure all items are on the screen exactly once
- if (client)
- client.screen -= contents
- client.screen += contents
-
-/mob/living/carbon/amorph/rebuild_appearance()
- // Lazy method: Just rebuild everything.
- // This can be called when the mob is created, but on other occasions, rebuild_body_overlays(),
- // rebuild_clothing_overlays() etc. should be called individually.
-
- misc_clothing_updates() // silly stuff
-
-/mob/living/carbon/amorph/update_body_appearance()
- // Should be called whenever something about the body appearance itself changes.
-
- misc_clothing_updates() // silly stuff
-
- if(lying)
- icon_state = "lying"
- else
- icon_state = "standing"
-
-/mob/living/carbon/amorph/update_lying()
- // Should be called whenever something about the lying status of the mob might have changed.
-
- if(lying)
- icon_state = "lying"
- else
- icon_state = "standing"
-
-/mob/living/carbon/amorph/hand_p(mob/M as mob)
- // not even sure what this is meant to do
- return
-
-/mob/living/carbon/amorph/restrained()
- if (handcuffed)
- return 0 // handcuffs don't work on amorphs
- return 0
-
-/mob/living/carbon/amorph/var/co2overloadtime = null
-/mob/living/carbon/amorph/var/temperature_resistance = T0C+75
-
-/mob/living/carbon/amorph/show_inv(mob/user as mob)
- // TODO: add a window for extracting stuff from an amorph's mouth
-
-// called when something steps onto an amorph
-// this could be made more general, but for now just handle mulebot
-/mob/living/carbon/amorph/HasEntered(var/atom/movable/AM)
- var/obj/machinery/bot/mulebot/MB = AM
- if(istype(MB))
- MB.RunOver(src)
-
-//gets assignment from ID or ID inside PDA or PDA itself
-//Useful when player do something with computers
-/mob/living/carbon/amorph/proc/get_assignment(var/if_no_id = "No id", var/if_no_job = "No job")
- // TODO: get the ID from the amorph's contents
- return
-
-//gets name from ID or ID inside PDA or PDA itself
-//Useful when player do something with computers
-/mob/living/carbon/amorph/proc/get_authentification_name(var/if_no_id = "Unknown")
- // TODO: get the ID from the amorph's contents
- return
-
-//repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a seperate proc as it'll be useful elsewhere
-/mob/living/carbon/amorph/proc/get_visible_name()
- // amorphs can't wear clothes or anything, so always return face_name
- return get_face_name()
-
-//Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when polyacided or when updating a human's name variable
-/mob/living/carbon/amorph/proc/get_face_name()
- // there might later be ways for amorphs to change the appearance of their face
- return "[real_name]"
-
-
-//gets ID card object from special clothes slot or null.
-/mob/living/carbon/amorph/proc/get_idcard()
- // TODO: get the ID from the amorph's contents
-
-
-// heal the amorph
-/mob/living/carbon/amorph/heal_overall_damage(var/brute, var/burn)
- bruteloss -= brute
- fireloss -= burn
- bruteloss = max(bruteloss, 0)
- fireloss = max(fireloss, 0)
-
- updatehealth()
- UpdateDamageIcon()
-
-// damage MANY external organs, in random order
-/mob/living/carbon/amorph/take_overall_damage(var/brute, var/burn, var/used_weapon = null)
- bruteloss += brute
- fireloss += burn
-
- updatehealth()
- UpdateDamageIcon()
-
-/mob/living/carbon/amorph/Topic(href, href_list)
- if (href_list["refresh"])
- if((machine)&&(in_range(src, usr)))
- show_inv(machine)
-
- if (href_list["mach_close"])
- var/t1 = text("window=[]", href_list["mach_close"])
- machine = null
- src << browse(null, t1)
-
- if ((href_list["item"] && !( usr.stat ) && usr.canmove && !( usr.restrained() ) && in_range(src, usr) && ticker)) //if game hasn't started, can't make an equip_e
- var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
- O.source = usr
- O.target = src
- O.item = usr.equipped()
- O.s_loc = usr.loc
- O.t_loc = loc
- O.place = href_list["item"]
- if(href_list["loc"])
- O.internalloc = href_list["loc"]
- requests += O
- spawn( 0 )
- O.process()
- return
-
- if (href_list["criminal"])
- if(istype(usr, /mob/living/carbon/human))
- var/mob/living/carbon/human/H = usr
- if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud))
- var/perpname = "wot"
- var/modified = 0
-
- /*if(wear_id)
- if(istype(wear_id,/obj/item/weapon/card/id))
- perpname = wear_id:registered_name
- else if(istype(wear_id,/obj/item/device/pda))
- var/obj/item/device/pda/tempPda = wear_id
- perpname = tempPda.owner
- else*/
- perpname = src.name
-
- for (var/datum/data/record/E in data_core.general)
- if (E.fields["name"] == perpname)
- for (var/datum/data/record/R in data_core.security)
- if (R.fields["id"] == E.fields["id"])
-
- var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Released", "Cancel")
-
- if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud))
- if(setcriminal != "Cancel")
- R.fields["criminal"] = setcriminal
- modified = 1
-
- spawn()
- H.handle_regular_hud_updates()
-
- if(!modified)
- usr << "\red Unable to locate a data core entry for this person."
- ..()
- return
-
-
-///eyecheck()
-///Returns a number between -1 to 2
-/mob/living/carbon/amorph/eyecheck()
- return 1
-
-
-/mob/living/carbon/amorph/IsAdvancedToolUser()
- return 1//Amorphs can use guns and such
-
-
-/mob/living/carbon/amorph/updatehealth()
- if(src.nodamage)
- src.health = 100
- src.stat = 0
- return
- src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss() - src.getCloneLoss() -src.halloss
- return
-
-/mob/living/carbon/amorph/abiotic(var/full_body = 0)
- return 0
-
-/mob/living/carbon/amorph/abiotic2(var/full_body2 = 0)
- return 0
-
-/mob/living/carbon/amorph/getBruteLoss()
- return src.bruteloss
-
-/mob/living/carbon/amorph/adjustBruteLoss(var/amount, var/used_weapon = null)
- src.bruteloss += amount
- if(bruteloss < 0) bruteloss = 0
-
-/mob/living/carbon/amorph/getFireLoss()
- return src.fireloss
-
-/mob/living/carbon/amorph/adjustFireLoss(var/amount,var/used_weapon = null)
- src.fireloss += amount
- if(fireloss < 0) fireloss = 0
-
-/mob/living/carbon/amorph/get_visible_gender()
- return gender
+/mob/living/carbon/amorph
+ name = "amorph"
+ real_name = "amorph"
+ voice_name = "amorph"
+ icon = 'icons/mob/amorph.dmi'
+ icon_state = ""
+
+
+ var/species = "Amorph"
+ age = 30.0
+
+ var/used_skillpoints = 0
+ var/skill_specialization = null
+ var/list/skills = null
+
+ var/obj/item/l_ear = null
+
+ // might use this later to recolor armorphs with icon.SwapColor
+ var/slime_color = null
+
+ var/examine_text = ""
+
+
+/mob/living/carbon/amorph/New()
+
+ ..()
+
+ // Amorphs don't have a blood vessel, but they can have reagents in their body
+ var/datum/reagents/R = new/datum/reagents(1000)
+ reagents = R
+ R.my_atom = src
+
+ // Amorphs have no DNA(they're more like carbon-based machines)
+
+ // Amorphs don't have organs
+ ..()
+
+/mob/living/carbon/amorph/Bump(atom/movable/AM as mob|obj, yes)
+ if ((!( yes ) || now_pushing))
+ return
+ now_pushing = 1
+ if (ismob(AM))
+ var/mob/tmob = AM
+
+//BubbleWrap - Should stop you pushing a restrained person out of the way
+
+ if(istype(tmob, /mob/living/carbon/human))
+
+ for(var/mob/M in range(tmob, 1))
+ if( ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) )
+ if ( !(world.time % 5) )
+ src << "\red [tmob] is restrained, you cannot push past"
+ now_pushing = 0
+ return
+ if( tmob.pulling == M && ( M.restrained() && !( tmob.restrained() ) && tmob.stat == 0) )
+ if ( !(world.time % 5) )
+ src << "\red [tmob] is restraining [M], you cannot push past"
+ now_pushing = 0
+ return
+
+ //BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
+ if((tmob.a_intent == "help" || tmob.restrained()) && (a_intent == "help" || src.restrained()) && tmob.canmove && canmove) // mutual brohugs all around!
+ var/turf/oldloc = loc
+ loc = tmob.loc
+ tmob.loc = oldloc
+ now_pushing = 0
+ for(var/mob/living/carbon/metroid/Metroid in view(1,tmob))
+ if(Metroid.Victim == tmob)
+ Metroid.UpdateFeed()
+ return
+
+ if(tmob.r_hand && istype(tmob.r_hand, /obj/item/weapon/shield/riot))
+ if(prob(99))
+ now_pushing = 0
+ return
+ if(tmob.l_hand && istype(tmob.l_hand, /obj/item/weapon/shield/riot))
+ if(prob(99))
+ now_pushing = 0
+ return
+ if(tmob.nopush)
+ now_pushing = 0
+ return
+
+ tmob.LAssailant = src
+
+ now_pushing = 0
+ spawn(0)
+ ..()
+ if (!istype(AM, /atom/movable))
+ return
+ if (!now_pushing)
+ now_pushing = 1
+
+ if (!AM.anchored)
+ var/t = get_dir(src, AM)
+ if (istype(AM, /obj/structure/window))
+ if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST)
+ for(var/obj/structure/window/win in get_step(AM,t))
+ now_pushing = 0
+ return
+ step(AM, t)
+ now_pushing = 0
+ return
+ return
+
+/mob/living/carbon/amorph/movement_delay()
+ var/tally = 2 // amorphs are a bit slower than humans
+ var/mob/M = pulling
+
+ if(reagents.has_reagent("hyperzine")) return -1
+
+ if(reagents.has_reagent("nuka_cola")) return -1
+
+ if(analgesic) return -1
+
+ if (istype(loc, /turf/space)) return -1 // It's hard to be slowed down in space by... anything
+
+ var/health_deficiency = traumatic_shock
+ if(health_deficiency >= 40) tally += (health_deficiency / 25)
+
+ var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80
+ if (hungry >= 70) tally += hungry/300
+
+ if (bodytemperature < 283.222)
+ tally += (283.222 - bodytemperature) / 10 * 1.75
+ if (stuttering < 10)
+ stuttering = 10
+
+ if(shock_stage >= 10) tally += 3
+
+ if(tally < 0)
+ tally = 0
+
+ if(istype(M) && M.lying) //Pulling lying down people is slower
+ tally += 3
+
+ if(mRun in mutations)
+ tally = 0
+
+ return tally
+
+/mob/living/carbon/amorph/Stat()
+ ..()
+ statpanel("Status")
+
+ stat(null, "Intent: [a_intent]")
+ stat(null, "Move Mode: [m_intent]")
+ if(ticker && ticker.mode && ticker.mode.name == "AI malfunction")
+ if(ticker.mode:malf_mode_declared)
+ stat(null, "Time left: [max(ticker.mode:AI_win_timeleft/(ticker.mode:apcs/3), 0)]")
+ if(emergency_shuttle)
+ if(emergency_shuttle.online && emergency_shuttle.location < 2)
+ var/timeleft = emergency_shuttle.timeleft()
+ if (timeleft)
+ stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
+
+ if (client.statpanel == "Status")
+ if (internal)
+ if (!internal.air_contents)
+ del(internal)
+ else
+ stat("Internal Atmosphere Info", internal.name)
+ stat("Tank Pressure", internal.air_contents.return_pressure())
+ stat("Distribution Pressure", internal.distribute_pressure)
+ if (mind)
+ if (mind.special_role == "Changeling" && changeling)
+ stat("Chemical Storage", changeling.chem_charges)
+ stat("Genetic Damage Time", changeling.geneticdamage)
+
+/mob/living/carbon/amorph/ex_act(severity)
+ flick("flash", flash)
+
+ var/shielded = 0
+ var/b_loss = null
+ var/f_loss = null
+ switch (severity)
+ if (1.0)
+ b_loss += 500
+ if (!prob(getarmor(null, "bomb")))
+ gib()
+ return
+ else
+ var/atom/target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src)))
+ throw_at(target, 200, 4)
+
+ if (2.0)
+ if (!shielded)
+ b_loss += 60
+
+ f_loss += 60
+
+ if (!prob(getarmor(null, "bomb")))
+ b_loss = b_loss/1.5
+ f_loss = f_loss/1.5
+
+ if(3.0)
+ b_loss += 30
+ if (!prob(getarmor(null, "bomb")))
+ b_loss = b_loss/2
+ if (prob(50) && !shielded)
+ Paralyse(10)
+
+ src.bruteloss += b_loss
+ src.fireloss += f_loss
+
+ UpdateDamageIcon()
+
+
+/mob/living/carbon/amorph/blob_act()
+ if(stat == 2) return
+ show_message("\red The blob attacks you!")
+ src.bruteloss += rand(30,40)
+ UpdateDamageIcon()
+ return
+
+/mob/living/carbon/amorph/u_equip(obj/item/W as obj)
+ // These are the only slots an amorph has
+ if (W == l_ear)
+ l_ear = null
+ else if (W == r_hand)
+ r_hand = null
+
+ update_clothing()
+
+/mob/living/carbon/amorph/db_click(text, t1)
+ var/obj/item/W = equipped()
+ var/emptyHand = (W == null)
+ if ((!emptyHand) && (!istype(W, /obj/item)))
+ return
+ if (emptyHand)
+ usr.next_move = usr.prev_move
+ usr:lastDblClick -= 3 //permit the double-click redirection to proceed.
+ switch(text)
+ if("l_ear")
+ if (l_ear)
+ if (emptyHand)
+ l_ear.DblClick()
+ return
+ else if(emptyHand)
+ return
+ if (!( istype(W, /obj/item/clothing/ears) ) && !( istype(W, /obj/item/device/radio/headset) ) && W.w_class != 1)
+ return
+ u_equip(W)
+ l_ear = W
+ W.equipped(src, text)
+
+ update_clothing()
+
+ return
+
+/mob/living/carbon/amorph/meteorhit(O as obj)
+ for(var/mob/M in viewers(src, null))
+ if ((M.client && !( M.blinded )))
+ M.show_message(text("\red [] has been hit by []", src, O), 1)
+ if (health > 0)
+ if (istype(O, /obj/effect/immovablerod))
+ src.bruteloss += 101
+ else
+ src.bruteloss += 25
+ UpdateDamageIcon()
+ updatehealth()
+ return
+
+/mob/living/carbon/amorph/Move(a, b, flag)
+
+ if (buckled)
+ return
+
+ if (restrained())
+ pulling = null
+
+
+ var/t7 = 1
+ if (restrained())
+ for(var/mob/M in range(src, 1))
+ if ((M.pulling == src && M.stat == 0 && !( M.restrained() )))
+ t7 = null
+ if ((t7 && (pulling && ((get_dist(src, pulling) <= 1 || pulling.loc == loc) && (client && client.moving)))))
+ var/turf/T = loc
+ . = ..()
+
+ if (pulling && pulling.loc)
+ if(!( isturf(pulling.loc) ))
+ pulling = null
+ return
+ else
+ if(Debug)
+ diary <<"pulling disappeared? at [__LINE__] in mob.dm - pulling = [pulling]"
+ diary <<"REPORT THIS"
+
+ /////
+ if(pulling && pulling.anchored)
+ pulling = null
+ return
+
+ if (!restrained())
+ var/diag = get_dir(src, pulling)
+ if ((diag - 1) & diag)
+ else
+ diag = null
+ if ((get_dist(src, pulling) > 1 || diag))
+ if (ismob(pulling))
+ var/mob/M = pulling
+ var/ok = 1
+ if (locate(/obj/item/weapon/grab, M.grabbed_by))
+ if (prob(75))
+ var/obj/item/weapon/grab/G = pick(M.grabbed_by)
+ if (istype(G, /obj/item/weapon/grab))
+ for(var/mob/O in viewers(M, null))
+ O.show_message(text("\red [] has been pulled from []'s grip by []", G.affecting, G.assailant, src), 1)
+ //G = null
+ del(G)
+ else
+ ok = 0
+ if (locate(/obj/item/weapon/grab, M.grabbed_by.len))
+ ok = 0
+ if (ok)
+ var/t = M.pulling
+ M.pulling = null
+
+ //this is the gay blood on floor shit -- Added back -- Skie
+ if (M.lying && (prob(M.getBruteLoss() / 6)))
+ var/turf/location = M.loc
+ if (istype(location, /turf/simulated))
+ location.add_blood(M)
+ if(ishuman(M))
+ var/mob/living/carbon/H = M
+ var/blood_volume = round(H:vessel.get_reagent_amount("blood"))
+ if(blood_volume > 0)
+ H:vessel.remove_reagent("blood",1)
+ if(prob(5))
+ M.adjustBruteLoss(1)
+ visible_message("\red \The [M]'s wounds open more from being dragged!")
+ if(M.pull_damage())
+ if(prob(25))
+ M.adjustBruteLoss(2)
+ visible_message("\red \The [M]'s wounds worsen terribly from being dragged!")
+ var/turf/location = M.loc
+ if (istype(location, /turf/simulated))
+ location.add_blood(M)
+ if(ishuman(M))
+ var/mob/living/carbon/H = M
+ var/blood_volume = round(H:vessel.get_reagent_amount("blood"))
+ if(blood_volume > 0)
+ H:vessel.remove_reagent("blood",1)
+
+ step(pulling, get_dir(pulling.loc, T))
+ M.pulling = t
+ else
+ if (pulling)
+ if (istype(pulling, /obj/structure/window))
+ if(pulling:ini_dir == NORTHWEST || pulling:ini_dir == NORTHEAST || pulling:ini_dir == SOUTHWEST || pulling:ini_dir == SOUTHEAST)
+ for(var/obj/structure/window/win in get_step(pulling,get_dir(pulling.loc, T)))
+ pulling = null
+ if (pulling)
+ step(pulling, get_dir(pulling.loc, T))
+ else
+ pulling = null
+ . = ..()
+ if ((s_active && !( s_active in contents ) ))
+ s_active.close(src)
+
+ for(var/mob/living/carbon/metroid/M in view(1,src))
+ M.UpdateFeed(src)
+ return
+
+/mob/living/carbon/amorph/proc/misc_clothing_updates()
+ // Temporary proc to shove stuff in that was put into update_clothing()
+ // for questionable reasons
+
+ if (client)
+ if (i_select)
+ if (intent)
+ client.screen += hud_used.intents
+
+ var/list/L = dd_text2list(intent, ",")
+ L[1] += ":-11"
+ i_select.screen_loc = dd_list2text(L,",") //ICONS4
+ else
+ i_select.screen_loc = null
+ if (m_select)
+ if (m_int)
+ client.screen += hud_used.mov_int
+
+ var/list/L = dd_text2list(m_int, ",")
+ L[1] += ":-11"
+ m_select.screen_loc = dd_list2text(L,",") //ICONS4
+ else
+ m_select.screen_loc = null
+
+ // Probably a lazy way to make sure all items are on the screen exactly once
+ if (client)
+ client.screen -= contents
+ client.screen += contents
+
+/mob/living/carbon/amorph/rebuild_appearance()
+ // Lazy method: Just rebuild everything.
+ // This can be called when the mob is created, but on other occasions, rebuild_body_overlays(),
+ // rebuild_clothing_overlays() etc. should be called individually.
+
+ misc_clothing_updates() // silly stuff
+
+/mob/living/carbon/amorph/update_body_appearance()
+ // Should be called whenever something about the body appearance itself changes.
+
+ misc_clothing_updates() // silly stuff
+
+ if(lying)
+ icon_state = "lying"
+ else
+ icon_state = "standing"
+
+/mob/living/carbon/amorph/update_lying()
+ // Should be called whenever something about the lying status of the mob might have changed.
+
+ if(lying)
+ icon_state = "lying"
+ else
+ icon_state = "standing"
+
+/mob/living/carbon/amorph/hand_p(mob/M as mob)
+ // not even sure what this is meant to do
+ return
+
+/mob/living/carbon/amorph/restrained()
+ if (handcuffed)
+ return 0 // handcuffs don't work on amorphs
+ return 0
+
+/mob/living/carbon/amorph/var/co2overloadtime = null
+/mob/living/carbon/amorph/var/temperature_resistance = T0C+75
+
+/mob/living/carbon/amorph/show_inv(mob/user as mob)
+ // TODO: add a window for extracting stuff from an amorph's mouth
+
+// called when something steps onto an amorph
+// this could be made more general, but for now just handle mulebot
+/mob/living/carbon/amorph/HasEntered(var/atom/movable/AM)
+ var/obj/machinery/bot/mulebot/MB = AM
+ if(istype(MB))
+ MB.RunOver(src)
+
+//gets assignment from ID or ID inside PDA or PDA itself
+//Useful when player do something with computers
+/mob/living/carbon/amorph/proc/get_assignment(var/if_no_id = "No id", var/if_no_job = "No job")
+ // TODO: get the ID from the amorph's contents
+ return
+
+//gets name from ID or ID inside PDA or PDA itself
+//Useful when player do something with computers
+/mob/living/carbon/amorph/proc/get_authentification_name(var/if_no_id = "Unknown")
+ // TODO: get the ID from the amorph's contents
+ return
+
+//repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a seperate proc as it'll be useful elsewhere
+/mob/living/carbon/amorph/proc/get_visible_name()
+ // amorphs can't wear clothes or anything, so always return face_name
+ return get_face_name()
+
+//Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when polyacided or when updating a human's name variable
+/mob/living/carbon/amorph/proc/get_face_name()
+ // there might later be ways for amorphs to change the appearance of their face
+ return "[real_name]"
+
+
+//gets ID card object from special clothes slot or null.
+/mob/living/carbon/amorph/proc/get_idcard()
+ // TODO: get the ID from the amorph's contents
+
+
+// heal the amorph
+/mob/living/carbon/amorph/heal_overall_damage(var/brute, var/burn)
+ bruteloss -= brute
+ fireloss -= burn
+ bruteloss = max(bruteloss, 0)
+ fireloss = max(fireloss, 0)
+
+ updatehealth()
+ UpdateDamageIcon()
+
+// damage MANY external organs, in random order
+/mob/living/carbon/amorph/take_overall_damage(var/brute, var/burn, var/used_weapon = null)
+ bruteloss += brute
+ fireloss += burn
+
+ updatehealth()
+ UpdateDamageIcon()
+
+/mob/living/carbon/amorph/Topic(href, href_list)
+ if (href_list["refresh"])
+ if((machine)&&(in_range(src, usr)))
+ show_inv(machine)
+
+ if (href_list["mach_close"])
+ var/t1 = text("window=[]", href_list["mach_close"])
+ machine = null
+ src << browse(null, t1)
+
+ if ((href_list["item"] && !( usr.stat ) && usr.canmove && !( usr.restrained() ) && in_range(src, usr) && ticker)) //if game hasn't started, can't make an equip_e
+ var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
+ O.source = usr
+ O.target = src
+ O.item = usr.equipped()
+ O.s_loc = usr.loc
+ O.t_loc = loc
+ O.place = href_list["item"]
+ if(href_list["loc"])
+ O.internalloc = href_list["loc"]
+ requests += O
+ spawn( 0 )
+ O.process()
+ return
+
+ if (href_list["criminal"])
+ if(istype(usr, /mob/living/carbon/human))
+ var/mob/living/carbon/human/H = usr
+ if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud))
+ var/perpname = "wot"
+ var/modified = 0
+
+ /*if(wear_id)
+ if(istype(wear_id,/obj/item/weapon/card/id))
+ perpname = wear_id:registered_name
+ else if(istype(wear_id,/obj/item/device/pda))
+ var/obj/item/device/pda/tempPda = wear_id
+ perpname = tempPda.owner
+ else*/
+ perpname = src.name
+
+ for (var/datum/data/record/E in data_core.general)
+ if (E.fields["name"] == perpname)
+ for (var/datum/data/record/R in data_core.security)
+ if (R.fields["id"] == E.fields["id"])
+
+ var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Released", "Cancel")
+
+ if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud))
+ if(setcriminal != "Cancel")
+ R.fields["criminal"] = setcriminal
+ modified = 1
+
+ spawn()
+ H.handle_regular_hud_updates()
+
+ if(!modified)
+ usr << "\red Unable to locate a data core entry for this person."
+ ..()
+ return
+
+
+///eyecheck()
+///Returns a number between -1 to 2
+/mob/living/carbon/amorph/eyecheck()
+ return 1
+
+
+/mob/living/carbon/amorph/IsAdvancedToolUser()
+ return 1//Amorphs can use guns and such
+
+
+/mob/living/carbon/amorph/updatehealth()
+ if(src.nodamage)
+ src.health = 100
+ src.stat = 0
+ return
+ src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss() - src.getCloneLoss() -src.halloss
+ return
+
+/mob/living/carbon/amorph/abiotic(var/full_body = 0)
+ return 0
+
+/mob/living/carbon/amorph/abiotic2(var/full_body2 = 0)
+ return 0
+
+/mob/living/carbon/amorph/getBruteLoss()
+ return src.bruteloss
+
+/mob/living/carbon/amorph/adjustBruteLoss(var/amount, var/used_weapon = null)
+ src.bruteloss += amount
+ if(bruteloss < 0) bruteloss = 0
+
+/mob/living/carbon/amorph/getFireLoss()
+ return src.fireloss
+
+/mob/living/carbon/amorph/adjustFireLoss(var/amount,var/used_weapon = null)
+ src.fireloss += amount
+ if(fireloss < 0) fireloss = 0
+
+/mob/living/carbon/amorph/get_visible_gender()
+ return gender
diff --git a/code/modules/mob/living/carbon/amorph/amorph_attack.dm b/code/WorkInProgress/Cib/amorph/amorph_attack.dm
similarity index 96%
rename from code/modules/mob/living/carbon/amorph/amorph_attack.dm
rename to code/WorkInProgress/Cib/amorph/amorph_attack.dm
index b8c4aa8b603..c103d1be67c 100644
--- a/code/modules/mob/living/carbon/amorph/amorph_attack.dm
+++ b/code/WorkInProgress/Cib/amorph/amorph_attack.dm
@@ -1,248 +1,248 @@
-
-
-/mob/living/carbon/amorph/attack_paw(mob/living/carbon/monkey/M as mob)
- if (!ticker)
- M << "You cannot attack people before the game has started."
- return
-
- ..()
-
- switch(M.a_intent)
-
- if ("help")
- help_shake_act(M)
- else
- if (istype(wear_mask, /obj/item/clothing/mask/muzzle))
- return
- if (health > 0)
- attacked += 10
- playsound(loc, 'bite.ogg', 50, 1, -1)
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\red [M.name] has bit [src]!"), 1)
- adjustBruteLoss(rand(0, 1))
- updatehealth()
- return
-
-/mob/living/carbon/amorph/attack_hand(mob/living/carbon/human/M as mob)
-
- if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves))
- var/obj/item/clothing/gloves/G = M.gloves
- if(G.cell)
- if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien.
- if(G.cell.charge >= 2500)
- G.cell.charge -= 2500
- Weaken(5)
- if (stuttering < 5)
- stuttering = 5
- Stun(5)
-
- for(var/mob/O in viewers(src, null))
- if (O.client)
- O.show_message("\red [src] has been touched with the stun gloves by [M]!", 1, "\red You hear someone fall", 2)
- return
- else
- M << "\red Not enough charge! "
- return
-
- if (M.a_intent == "help")
- help_shake_act(M)
- else
- if (M.a_intent == "hurt")
- var/attack_verb
- switch(M.mutantrace)
- if("lizard")
- attack_verb = "scratch"
- if("plant")
- attack_verb = "slash"
- else
- attack_verb = "punch"
-
- if(M.type == /mob/living/carbon/human/tajaran)
- attack_verb = "slash"
-
- if ((prob(75) && health > 0))
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\red [] has [attack_verb]ed [name]!", M), 1)
-
- var/damage = rand(5, 10)
- if(M.type != /mob/living/carbon/human/tajaran)
- playsound(loc, "punch", 25, 1, -1)
- else if(M.type == /mob/living/carbon/human/tajaran)
- damage += 10
- playsound(loc, 'slice.ogg', 25, 1, -1)
- adjustBruteLoss(damage/10)
- updatehealth()
- else
- if(M.type != /mob/living/carbon/human/tajaran)
- playsound(loc, 'punchmiss.ogg', 25, 1, -1)
- else if(M.type == /mob/living/carbon/human/tajaran)
- playsound(loc, 'slashmiss.ogg', 25, 1, -1)
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\red [] has attempted to [attack_verb] [name]!", M), 1)
- else
- if (M.a_intent == "grab")
- if (M == src)
- return
-
- var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M )
- G.assailant = M
- if (M.hand)
- M.l_hand = G
- else
- M.r_hand = G
- G.layer = 20
- G.affecting = src
- grabbed_by += G
- G.synch()
-
- LAssailant = M
-
- playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\red [] has grabbed [name] passively!", M), 1)
-
- else
- if (!( paralysis ))
- drop_item()
- playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\red [] has disarmed [name]!", M), 1)
- return
-
-
-
-/mob/living/carbon/amorph/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
-
- switch(M.a_intent)
- if ("help")
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\blue [M] caresses [src] with its scythe like arm."), 1)
-
- if ("hurt")
- if ((prob(95) && health > 0))
- playsound(loc, 'slice.ogg', 25, 1, -1)
- var/damage = rand(15, 30)
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\red [] has slashed [name]!", M), 1)
- adjustBruteLoss(damage/10)
- updatehealth()
- react_to_attack(M)
- else
- playsound(loc, 'slashmiss.ogg', 25, 1, -1)
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\red [] has attempted to lunge at [name]!", M), 1)
-
- if ("grab")
- if (M == src)
- return
- var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M )
- G.assailant = M
- if (M.hand)
- M.l_hand = G
- else
- M.r_hand = G
- G.layer = 20
- G.affecting = src
- grabbed_by += G
- G.synch()
-
- LAssailant = M
-
- playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\red [] has grabbed [name] passively!", M), 1)
-
- if ("disarm")
- playsound(loc, 'pierce.ogg', 25, 1, -1)
- var/damage = 5
- if(prob(95))
- Weaken(rand(10,15))
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\red [] has tackled down [name]!", M), 1)
- else
- drop_item()
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\red [] has disarmed [name]!", M), 1)
- adjustBruteLoss(damage)
- react_to_attack(M)
- updatehealth()
- return
-
-
-
-/mob/living/carbon/amorph/attack_animal(mob/living/simple_animal/M as mob)
- if(M.melee_damage_upper == 0)
- M.emote("[M.friendly] [src]")
- else
- for(var/mob/O in viewers(src, null))
- O.show_message("\red [M] [M.attacktext] [src]!", 1)
- var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
- bruteloss += damage
-
-/mob/living/carbon/amorph/attack_metroid(mob/living/carbon/metroid/M as mob)
- if(M.Victim) return // can't attack while eating!
-
- if (health > -100)
-
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\red The [M.name] has [pick("bit","slashed")] []!", src), 1)
-
- var/damage = rand(1, 3)
-
- if(istype(M, /mob/living/carbon/metroid/adult))
- damage = rand(10, 35)
- else
- damage = rand(5, 25)
-
- src.cloneloss += damage
-
- UpdateDamageIcon()
-
-
- if(M.powerlevel > 0)
- var/stunprob = 10
- var/power = M.powerlevel + rand(0,3)
-
- switch(M.powerlevel)
- if(1 to 2) stunprob = 20
- if(3 to 4) stunprob = 30
- if(5 to 6) stunprob = 40
- if(7 to 8) stunprob = 60
- if(9) stunprob = 70
- if(10) stunprob = 95
-
- if(prob(stunprob))
- M.powerlevel -= 3
- if(M.powerlevel < 0)
- M.powerlevel = 0
-
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\red The [M.name] has shocked []!", src), 1)
-
- Weaken(power)
- if (stuttering < power)
- stuttering = power
- Stun(power)
-
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(5, 1, src)
- s.start()
-
- if (prob(stunprob) && M.powerlevel >= 8)
- adjustFireLoss(M.powerlevel * rand(6,10))
-
-
- updatehealth()
-
- return
+
+
+/mob/living/carbon/amorph/attack_paw(mob/living/carbon/monkey/M as mob)
+ if (!ticker)
+ M << "You cannot attack people before the game has started."
+ return
+
+ ..()
+
+ switch(M.a_intent)
+
+ if ("help")
+ help_shake_act(M)
+ else
+ if (istype(wear_mask, /obj/item/clothing/mask/muzzle))
+ return
+ if (health > 0)
+ attacked += 10
+ playsound(loc, 'bite.ogg', 50, 1, -1)
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [M.name] has bit [src]!"), 1)
+ adjustBruteLoss(rand(0, 1))
+ updatehealth()
+ return
+
+/mob/living/carbon/amorph/attack_hand(mob/living/carbon/human/M as mob)
+
+ if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves))
+ var/obj/item/clothing/gloves/G = M.gloves
+ if(G.cell)
+ if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien.
+ if(G.cell.charge >= 2500)
+ G.cell.charge -= 2500
+ Weaken(5)
+ if (stuttering < 5)
+ stuttering = 5
+ Stun(5)
+
+ for(var/mob/O in viewers(src, null))
+ if (O.client)
+ O.show_message("\red [src] has been touched with the stun gloves by [M]!", 1, "\red You hear someone fall", 2)
+ return
+ else
+ M << "\red Not enough charge! "
+ return
+
+ if (M.a_intent == "help")
+ help_shake_act(M)
+ else
+ if (M.a_intent == "hurt")
+ var/attack_verb
+ switch(M.mutantrace)
+ if("lizard")
+ attack_verb = "scratch"
+ if("plant")
+ attack_verb = "slash"
+ else
+ attack_verb = "punch"
+
+ if(M.type == /mob/living/carbon/human/tajaran)
+ attack_verb = "slash"
+
+ if ((prob(75) && health > 0))
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has [attack_verb]ed [name]!", M), 1)
+
+ var/damage = rand(5, 10)
+ if(M.type != /mob/living/carbon/human/tajaran)
+ playsound(loc, "punch", 25, 1, -1)
+ else if(M.type == /mob/living/carbon/human/tajaran)
+ damage += 10
+ playsound(loc, 'slice.ogg', 25, 1, -1)
+ adjustBruteLoss(damage/10)
+ updatehealth()
+ else
+ if(M.type != /mob/living/carbon/human/tajaran)
+ playsound(loc, 'punchmiss.ogg', 25, 1, -1)
+ else if(M.type == /mob/living/carbon/human/tajaran)
+ playsound(loc, 'slashmiss.ogg', 25, 1, -1)
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has attempted to [attack_verb] [name]!", M), 1)
+ else
+ if (M.a_intent == "grab")
+ if (M == src)
+ return
+
+ var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M )
+ G.assailant = M
+ if (M.hand)
+ M.l_hand = G
+ else
+ M.r_hand = G
+ G.layer = 20
+ G.affecting = src
+ grabbed_by += G
+ G.synch()
+
+ LAssailant = M
+
+ playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("\red [] has grabbed [name] passively!", M), 1)
+
+ else
+ if (!( paralysis ))
+ drop_item()
+ playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has disarmed [name]!", M), 1)
+ return
+
+
+
+/mob/living/carbon/amorph/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
+
+ switch(M.a_intent)
+ if ("help")
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\blue [M] caresses [src] with its scythe like arm."), 1)
+
+ if ("hurt")
+ if ((prob(95) && health > 0))
+ playsound(loc, 'slice.ogg', 25, 1, -1)
+ var/damage = rand(15, 30)
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has slashed [name]!", M), 1)
+ adjustBruteLoss(damage/10)
+ updatehealth()
+ react_to_attack(M)
+ else
+ playsound(loc, 'slashmiss.ogg', 25, 1, -1)
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has attempted to lunge at [name]!", M), 1)
+
+ if ("grab")
+ if (M == src)
+ return
+ var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M )
+ G.assailant = M
+ if (M.hand)
+ M.l_hand = G
+ else
+ M.r_hand = G
+ G.layer = 20
+ G.affecting = src
+ grabbed_by += G
+ G.synch()
+
+ LAssailant = M
+
+ playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("\red [] has grabbed [name] passively!", M), 1)
+
+ if ("disarm")
+ playsound(loc, 'pierce.ogg', 25, 1, -1)
+ var/damage = 5
+ if(prob(95))
+ Weaken(rand(10,15))
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has tackled down [name]!", M), 1)
+ else
+ drop_item()
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has disarmed [name]!", M), 1)
+ adjustBruteLoss(damage)
+ react_to_attack(M)
+ updatehealth()
+ return
+
+
+
+/mob/living/carbon/amorph/attack_animal(mob/living/simple_animal/M as mob)
+ if(M.melee_damage_upper == 0)
+ M.emote("[M.friendly] [src]")
+ else
+ for(var/mob/O in viewers(src, null))
+ O.show_message("\red [M] [M.attacktext] [src]!", 1)
+ var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
+ bruteloss += damage
+
+/mob/living/carbon/amorph/attack_metroid(mob/living/carbon/metroid/M as mob)
+ if(M.Victim) return // can't attack while eating!
+
+ if (health > -100)
+
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red The [M.name] has [pick("bit","slashed")] []!", src), 1)
+
+ var/damage = rand(1, 3)
+
+ if(istype(M, /mob/living/carbon/metroid/adult))
+ damage = rand(10, 35)
+ else
+ damage = rand(5, 25)
+
+ src.cloneloss += damage
+
+ UpdateDamageIcon()
+
+
+ if(M.powerlevel > 0)
+ var/stunprob = 10
+ var/power = M.powerlevel + rand(0,3)
+
+ switch(M.powerlevel)
+ if(1 to 2) stunprob = 20
+ if(3 to 4) stunprob = 30
+ if(5 to 6) stunprob = 40
+ if(7 to 8) stunprob = 60
+ if(9) stunprob = 70
+ if(10) stunprob = 95
+
+ if(prob(stunprob))
+ M.powerlevel -= 3
+ if(M.powerlevel < 0)
+ M.powerlevel = 0
+
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red The [M.name] has shocked []!", src), 1)
+
+ Weaken(power)
+ if (stuttering < power)
+ stuttering = power
+ Stun(power)
+
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(5, 1, src)
+ s.start()
+
+ if (prob(stunprob) && M.powerlevel >= 8)
+ adjustFireLoss(M.powerlevel * rand(6,10))
+
+
+ updatehealth()
+
+ return
diff --git a/code/modules/mob/living/carbon/amorph/amorph_damage.dm b/code/WorkInProgress/Cib/amorph/amorph_damage.dm
similarity index 90%
rename from code/modules/mob/living/carbon/amorph/amorph_damage.dm
rename to code/WorkInProgress/Cib/amorph/amorph_damage.dm
index 8e52d042920..d49d679069c 100644
--- a/code/modules/mob/living/carbon/amorph/amorph_damage.dm
+++ b/code/WorkInProgress/Cib/amorph/amorph_damage.dm
@@ -1,12 +1,12 @@
-/mob/living/carbon/amorph/proc/HealDamage(zone, brute, burn)
- return heal_overall_damage(brute, burn)
-
-/mob/living/carbon/amorph/UpdateDamageIcon()
- // no damage sprites for amorphs yet
- return
-
-/mob/living/carbon/amorph/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/sharp = 0, var/used_weapon = null)
- if(damagetype == BRUTE)
- take_overall_damage(damage, 0)
- else
+/mob/living/carbon/amorph/proc/HealDamage(zone, brute, burn)
+ return heal_overall_damage(brute, burn)
+
+/mob/living/carbon/amorph/UpdateDamageIcon()
+ // no damage sprites for amorphs yet
+ return
+
+/mob/living/carbon/amorph/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/sharp = 0, var/used_weapon = null)
+ if(damagetype == BRUTE)
+ take_overall_damage(damage, 0)
+ else
take_overall_damage(0, damage)
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/amorph/amorph_hud.dm b/code/WorkInProgress/Cib/amorph/amorph_hud.dm
similarity index 96%
rename from code/modules/mob/living/carbon/amorph/amorph_hud.dm
rename to code/WorkInProgress/Cib/amorph/amorph_hud.dm
index 7236790bb79..2f3390342aa 100644
--- a/code/modules/mob/living/carbon/amorph/amorph_hud.dm
+++ b/code/WorkInProgress/Cib/amorph/amorph_hud.dm
@@ -1,300 +1,300 @@
-/obj/hud/proc/amorph_hud(var/ui_style='screen1_old.dmi')
-
- src.adding = list( )
- src.other = list( )
- src.intents = list( )
- src.mon_blo = list( )
- src.m_ints = list( )
- src.mov_int = list( )
- src.vimpaired = list( )
- src.darkMask = list( )
- src.intent_small_hud_objects = list( )
-
- src.g_dither = new /obj/screen( src )
- src.g_dither.screen_loc = "WEST,SOUTH to EAST,NORTH"
- src.g_dither.name = "Mask"
- src.g_dither.icon = ui_style
- src.g_dither.icon_state = "dither12g"
- src.g_dither.layer = 18
- src.g_dither.mouse_opacity = 0
-
- src.alien_view = new /obj/screen(src)
- src.alien_view.screen_loc = "WEST,SOUTH to EAST,NORTH"
- src.alien_view.name = "Alien"
- src.alien_view.icon = ui_style
- src.alien_view.icon_state = "alien"
- src.alien_view.layer = 18
- src.alien_view.mouse_opacity = 0
-
- src.blurry = new /obj/screen( src )
- src.blurry.screen_loc = "WEST,SOUTH to EAST,NORTH"
- src.blurry.name = "Blurry"
- src.blurry.icon = ui_style
- src.blurry.icon_state = "blurry"
- src.blurry.layer = 17
- src.blurry.mouse_opacity = 0
-
- src.druggy = new /obj/screen( src )
- src.druggy.screen_loc = "WEST,SOUTH to EAST,NORTH"
- src.druggy.name = "Druggy"
- src.druggy.icon = ui_style
- src.druggy.icon_state = "druggy"
- src.druggy.layer = 17
- src.druggy.mouse_opacity = 0
-
- var/obj/screen/using
-
- using = new /obj/screen( src )
- using.name = "act_intent"
- using.dir = SOUTHWEST
- using.icon = ui_style
- using.icon_state = (mymob.a_intent == "hurt" ? "harm" : mymob.a_intent)
- using.screen_loc = ui_acti
- using.layer = 20
- src.adding += using
- action_intent = using
-
-//intent small hud objects
- var/icon/ico
-
- ico = new(ui_style, "black")
- ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
- ico.DrawBox(rgb(255,255,255,1),1,ico.Height()/2,ico.Width()/2,ico.Height())
- using = new /obj/screen( src )
- using.name = "help"
- using.icon = ico
- using.screen_loc = ui_acti
- using.layer = 21
- src.adding += using
- help_intent = using
-
- ico = new(ui_style, "black")
- ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
- ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,ico.Height()/2,ico.Width(),ico.Height())
- using = new /obj/screen( src )
- using.name = "disarm"
- using.icon = ico
- using.screen_loc = ui_acti
- using.layer = 21
- src.adding += using
- disarm_intent = using
-
- ico = new(ui_style, "black")
- ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
- ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,1,ico.Width(),ico.Height()/2)
- using = new /obj/screen( src )
- using.name = "grab"
- using.icon = ico
- using.screen_loc = ui_acti
- using.layer = 21
- src.adding += using
- grab_intent = using
-
- ico = new(ui_style, "black")
- ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
- ico.DrawBox(rgb(255,255,255,1),1,1,ico.Width()/2,ico.Height()/2)
- using = new /obj/screen( src )
- using.name = "harm"
- using.icon = ico
- using.screen_loc = ui_acti
- using.layer = 21
- src.adding += using
- hurt_intent = using
-
-//end intent small hud objects
-
- using = new /obj/screen( src )
- using.name = "mov_intent"
- using.dir = SOUTHWEST
- using.icon = ui_style
- using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
- using.screen_loc = ui_movi
- using.layer = 20
- src.adding += using
- move_intent = using
-
- using = new /obj/screen( src )
- using.name = "drop"
- using.icon = ui_style
- using.icon_state = "act_drop"
- using.screen_loc = ui_dropbutton
- using.layer = 19
- src.adding += using
-
- using = new /obj/screen( src )
- using.name = "r_hand"
- using.dir = WEST
- using.icon = ui_style
- using.icon_state = "hand_inactive"
- if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use
- using.icon_state = "hand_active"
- using.screen_loc = ui_rhand
- using.layer = 19
- src.r_hand_hud_object = using
- src.adding += using
-
- using = new /obj/screen( src )
- using.name = "l_hand"
- using.dir = EAST
- using.icon = ui_style
- using.icon_state = "hand_inactive"
- if(mymob && mymob.hand) //This being 1 means the left hand is in use
- using.icon_state = "hand_active"
- using.screen_loc = ui_lhand
- using.layer = 19
- src.l_hand_hud_object = using
- src.adding += using
-
- using = new /obj/screen( src )
- using.name = "hand"
- using.dir = SOUTH
- using.icon = ui_style
- using.icon_state = "hand1"
- using.screen_loc = ui_swaphand1
- using.layer = 19
- src.adding += using
-
- using = new /obj/screen( src )
- using.name = "hand"
- using.dir = SOUTH
- using.icon = ui_style
- using.icon_state = "hand2"
- using.screen_loc = ui_swaphand2
- using.layer = 19
- src.adding += using
-
- using = new /obj/screen( src )
- using.name = "mask"
- using.dir = NORTH
- using.icon = ui_style
- using.icon_state = "equip"
- using.screen_loc = ui_monkey_mask
- using.layer = 19
- src.adding += using
-
- using = new /obj/screen( src )
- using.name = "back"
- using.dir = NORTHEAST
- using.icon = ui_style
- using.icon_state = "equip"
- using.screen_loc = ui_back
- using.layer = 19
- src.adding += using
-
- using = new /obj/screen( src )
- using.name = null
- using.icon = ui_style
- using.icon_state = "dither50"
- using.screen_loc = "1,1 to 5,15"
- using.layer = 17
- using.mouse_opacity = 0
- src.vimpaired += using
- using = new /obj/screen( src )
- using.name = null
- using.icon = ui_style
- using.icon_state = "dither50"
- using.screen_loc = "5,1 to 10,5"
- using.layer = 17
- using.mouse_opacity = 0
- src.vimpaired += using
- using = new /obj/screen( src )
- using.name = null
- using.icon = ui_style
- using.icon_state = "dither50"
- using.screen_loc = "6,11 to 10,15"
- using.layer = 17
- using.mouse_opacity = 0
- src.vimpaired += using
- using = new /obj/screen( src )
- using.name = null
- using.icon = ui_style
- using.icon_state = "dither50"
- using.screen_loc = "11,1 to 15,15"
- using.layer = 17
- using.mouse_opacity = 0
- src.vimpaired += using
-
- mymob.throw_icon = new /obj/screen(null)
- mymob.throw_icon.icon = ui_style
- mymob.throw_icon.icon_state = "act_throw_off"
- mymob.throw_icon.name = "throw"
- mymob.throw_icon.screen_loc = ui_throw
-
- mymob.oxygen = new /obj/screen( null )
- mymob.oxygen.icon = ui_style
- mymob.oxygen.icon_state = "oxy0"
- mymob.oxygen.name = "oxygen"
- mymob.oxygen.screen_loc = ui_oxygen
-
- mymob.pressure = new /obj/screen( null )
- mymob.pressure.icon = ui_style
- mymob.pressure.icon_state = "pressure0"
- mymob.pressure.name = "pressure"
- mymob.pressure.screen_loc = ui_pressure
-
- mymob.toxin = new /obj/screen( null )
- mymob.toxin.icon = ui_style
- mymob.toxin.icon_state = "tox0"
- mymob.toxin.name = "toxin"
- mymob.toxin.screen_loc = ui_toxin
-
- mymob.internals = new /obj/screen( null )
- mymob.internals.icon = ui_style
- mymob.internals.icon_state = "internal0"
- mymob.internals.name = "internal"
- mymob.internals.screen_loc = ui_internal
-
- mymob.fire = new /obj/screen( null )
- mymob.fire.icon = ui_style
- mymob.fire.icon_state = "fire0"
- mymob.fire.name = "fire"
- mymob.fire.screen_loc = ui_fire
-
- mymob.bodytemp = new /obj/screen( null )
- mymob.bodytemp.icon = ui_style
- mymob.bodytemp.icon_state = "temp1"
- mymob.bodytemp.name = "body temperature"
- mymob.bodytemp.screen_loc = ui_temp
-
- mymob.healths = new /obj/screen( null )
- mymob.healths.icon = ui_style
- mymob.healths.icon_state = "health0"
- mymob.healths.name = "health"
- mymob.healths.screen_loc = ui_health
-
- mymob.pullin = new /obj/screen( null )
- mymob.pullin.icon = ui_style
- mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
- mymob.pullin.screen_loc = ui_pull
-
- mymob.blind = new /obj/screen( null )
- mymob.blind.icon = ui_style
- mymob.blind.icon_state = "blackanimate"
- mymob.blind.name = " "
- mymob.blind.screen_loc = "1,1 to 15,15"
- mymob.blind.layer = 0
- mymob.blind.mouse_opacity = 0
-
- mymob.flash = new /obj/screen( null )
- mymob.flash.icon = ui_style
- mymob.flash.icon_state = "blank"
- mymob.flash.name = "flash"
- mymob.flash.screen_loc = "1,1 to 15,15"
- mymob.flash.layer = 17
-
- mymob.zone_sel = new /obj/screen/zone_sel( null )
- mymob.zone_sel.overlays = null
- mymob.zone_sel.overlays += image("icon" = 'zone_sel.dmi', "icon_state" = text("[]", mymob.zone_sel.selecting))
-
- mymob.gun_setting_icon = new /obj/screen/gun/mode(null)
-
- mymob.client.screen = null
-
- //, mymob.i_select, mymob.m_select
- mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.gun_setting_icon) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach, mymob.hands, )
- mymob.client.screen += src.adding + src.other
-
- //if(istype(mymob,/mob/living/carbon/monkey)) mymob.client.screen += src.mon_blo
-
- return
+/obj/hud/proc/amorph_hud(var/ui_style='screen1_old.dmi')
+
+ src.adding = list( )
+ src.other = list( )
+ src.intents = list( )
+ src.mon_blo = list( )
+ src.m_ints = list( )
+ src.mov_int = list( )
+ src.vimpaired = list( )
+ src.darkMask = list( )
+ src.intent_small_hud_objects = list( )
+
+ src.g_dither = new /obj/screen( src )
+ src.g_dither.screen_loc = "WEST,SOUTH to EAST,NORTH"
+ src.g_dither.name = "Mask"
+ src.g_dither.icon = ui_style
+ src.g_dither.icon_state = "dither12g"
+ src.g_dither.layer = 18
+ src.g_dither.mouse_opacity = 0
+
+ src.alien_view = new /obj/screen(src)
+ src.alien_view.screen_loc = "WEST,SOUTH to EAST,NORTH"
+ src.alien_view.name = "Alien"
+ src.alien_view.icon = ui_style
+ src.alien_view.icon_state = "alien"
+ src.alien_view.layer = 18
+ src.alien_view.mouse_opacity = 0
+
+ src.blurry = new /obj/screen( src )
+ src.blurry.screen_loc = "WEST,SOUTH to EAST,NORTH"
+ src.blurry.name = "Blurry"
+ src.blurry.icon = ui_style
+ src.blurry.icon_state = "blurry"
+ src.blurry.layer = 17
+ src.blurry.mouse_opacity = 0
+
+ src.druggy = new /obj/screen( src )
+ src.druggy.screen_loc = "WEST,SOUTH to EAST,NORTH"
+ src.druggy.name = "Druggy"
+ src.druggy.icon = ui_style
+ src.druggy.icon_state = "druggy"
+ src.druggy.layer = 17
+ src.druggy.mouse_opacity = 0
+
+ var/obj/screen/using
+
+ using = new /obj/screen( src )
+ using.name = "act_intent"
+ using.dir = SOUTHWEST
+ using.icon = ui_style
+ using.icon_state = (mymob.a_intent == "hurt" ? "harm" : mymob.a_intent)
+ using.screen_loc = ui_acti
+ using.layer = 20
+ src.adding += using
+ action_intent = using
+
+//intent small hud objects
+ var/icon/ico
+
+ ico = new(ui_style, "black")
+ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
+ ico.DrawBox(rgb(255,255,255,1),1,ico.Height()/2,ico.Width()/2,ico.Height())
+ using = new /obj/screen( src )
+ using.name = "help"
+ using.icon = ico
+ using.screen_loc = ui_acti
+ using.layer = 21
+ src.adding += using
+ help_intent = using
+
+ ico = new(ui_style, "black")
+ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
+ ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,ico.Height()/2,ico.Width(),ico.Height())
+ using = new /obj/screen( src )
+ using.name = "disarm"
+ using.icon = ico
+ using.screen_loc = ui_acti
+ using.layer = 21
+ src.adding += using
+ disarm_intent = using
+
+ ico = new(ui_style, "black")
+ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
+ ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,1,ico.Width(),ico.Height()/2)
+ using = new /obj/screen( src )
+ using.name = "grab"
+ using.icon = ico
+ using.screen_loc = ui_acti
+ using.layer = 21
+ src.adding += using
+ grab_intent = using
+
+ ico = new(ui_style, "black")
+ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
+ ico.DrawBox(rgb(255,255,255,1),1,1,ico.Width()/2,ico.Height()/2)
+ using = new /obj/screen( src )
+ using.name = "harm"
+ using.icon = ico
+ using.screen_loc = ui_acti
+ using.layer = 21
+ src.adding += using
+ hurt_intent = using
+
+//end intent small hud objects
+
+ using = new /obj/screen( src )
+ using.name = "mov_intent"
+ using.dir = SOUTHWEST
+ using.icon = ui_style
+ using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
+ using.screen_loc = ui_movi
+ using.layer = 20
+ src.adding += using
+ move_intent = using
+
+ using = new /obj/screen( src )
+ using.name = "drop"
+ using.icon = ui_style
+ using.icon_state = "act_drop"
+ using.screen_loc = ui_dropbutton
+ using.layer = 19
+ src.adding += using
+
+ using = new /obj/screen( src )
+ using.name = "r_hand"
+ using.dir = WEST
+ using.icon = ui_style
+ using.icon_state = "hand_inactive"
+ if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use
+ using.icon_state = "hand_active"
+ using.screen_loc = ui_rhand
+ using.layer = 19
+ src.r_hand_hud_object = using
+ src.adding += using
+
+ using = new /obj/screen( src )
+ using.name = "l_hand"
+ using.dir = EAST
+ using.icon = ui_style
+ using.icon_state = "hand_inactive"
+ if(mymob && mymob.hand) //This being 1 means the left hand is in use
+ using.icon_state = "hand_active"
+ using.screen_loc = ui_lhand
+ using.layer = 19
+ src.l_hand_hud_object = using
+ src.adding += using
+
+ using = new /obj/screen( src )
+ using.name = "hand"
+ using.dir = SOUTH
+ using.icon = ui_style
+ using.icon_state = "hand1"
+ using.screen_loc = ui_swaphand1
+ using.layer = 19
+ src.adding += using
+
+ using = new /obj/screen( src )
+ using.name = "hand"
+ using.dir = SOUTH
+ using.icon = ui_style
+ using.icon_state = "hand2"
+ using.screen_loc = ui_swaphand2
+ using.layer = 19
+ src.adding += using
+
+ using = new /obj/screen( src )
+ using.name = "mask"
+ using.dir = NORTH
+ using.icon = ui_style
+ using.icon_state = "equip"
+ using.screen_loc = ui_monkey_mask
+ using.layer = 19
+ src.adding += using
+
+ using = new /obj/screen( src )
+ using.name = "back"
+ using.dir = NORTHEAST
+ using.icon = ui_style
+ using.icon_state = "equip"
+ using.screen_loc = ui_back
+ using.layer = 19
+ src.adding += using
+
+ using = new /obj/screen( src )
+ using.name = null
+ using.icon = ui_style
+ using.icon_state = "dither50"
+ using.screen_loc = "1,1 to 5,15"
+ using.layer = 17
+ using.mouse_opacity = 0
+ src.vimpaired += using
+ using = new /obj/screen( src )
+ using.name = null
+ using.icon = ui_style
+ using.icon_state = "dither50"
+ using.screen_loc = "5,1 to 10,5"
+ using.layer = 17
+ using.mouse_opacity = 0
+ src.vimpaired += using
+ using = new /obj/screen( src )
+ using.name = null
+ using.icon = ui_style
+ using.icon_state = "dither50"
+ using.screen_loc = "6,11 to 10,15"
+ using.layer = 17
+ using.mouse_opacity = 0
+ src.vimpaired += using
+ using = new /obj/screen( src )
+ using.name = null
+ using.icon = ui_style
+ using.icon_state = "dither50"
+ using.screen_loc = "11,1 to 15,15"
+ using.layer = 17
+ using.mouse_opacity = 0
+ src.vimpaired += using
+
+ mymob.throw_icon = new /obj/screen(null)
+ mymob.throw_icon.icon = ui_style
+ mymob.throw_icon.icon_state = "act_throw_off"
+ mymob.throw_icon.name = "throw"
+ mymob.throw_icon.screen_loc = ui_throw
+
+ mymob.oxygen = new /obj/screen( null )
+ mymob.oxygen.icon = ui_style
+ mymob.oxygen.icon_state = "oxy0"
+ mymob.oxygen.name = "oxygen"
+ mymob.oxygen.screen_loc = ui_oxygen
+
+ mymob.pressure = new /obj/screen( null )
+ mymob.pressure.icon = ui_style
+ mymob.pressure.icon_state = "pressure0"
+ mymob.pressure.name = "pressure"
+ mymob.pressure.screen_loc = ui_pressure
+
+ mymob.toxin = new /obj/screen( null )
+ mymob.toxin.icon = ui_style
+ mymob.toxin.icon_state = "tox0"
+ mymob.toxin.name = "toxin"
+ mymob.toxin.screen_loc = ui_toxin
+
+ mymob.internals = new /obj/screen( null )
+ mymob.internals.icon = ui_style
+ mymob.internals.icon_state = "internal0"
+ mymob.internals.name = "internal"
+ mymob.internals.screen_loc = ui_internal
+
+ mymob.fire = new /obj/screen( null )
+ mymob.fire.icon = ui_style
+ mymob.fire.icon_state = "fire0"
+ mymob.fire.name = "fire"
+ mymob.fire.screen_loc = ui_fire
+
+ mymob.bodytemp = new /obj/screen( null )
+ mymob.bodytemp.icon = ui_style
+ mymob.bodytemp.icon_state = "temp1"
+ mymob.bodytemp.name = "body temperature"
+ mymob.bodytemp.screen_loc = ui_temp
+
+ mymob.healths = new /obj/screen( null )
+ mymob.healths.icon = ui_style
+ mymob.healths.icon_state = "health0"
+ mymob.healths.name = "health"
+ mymob.healths.screen_loc = ui_health
+
+ mymob.pullin = new /obj/screen( null )
+ mymob.pullin.icon = ui_style
+ mymob.pullin.icon_state = "pull0"
+ mymob.pullin.name = "pull"
+ mymob.pullin.screen_loc = ui_pull
+
+ mymob.blind = new /obj/screen( null )
+ mymob.blind.icon = ui_style
+ mymob.blind.icon_state = "blackanimate"
+ mymob.blind.name = " "
+ mymob.blind.screen_loc = "1,1 to 15,15"
+ mymob.blind.layer = 0
+ mymob.blind.mouse_opacity = 0
+
+ mymob.flash = new /obj/screen( null )
+ mymob.flash.icon = ui_style
+ mymob.flash.icon_state = "blank"
+ mymob.flash.name = "flash"
+ mymob.flash.screen_loc = "1,1 to 15,15"
+ mymob.flash.layer = 17
+
+ mymob.zone_sel = new /obj/screen/zone_sel( null )
+ mymob.zone_sel.overlays = null
+ mymob.zone_sel.overlays += image("icon" = 'zone_sel.dmi', "icon_state" = text("[]", mymob.zone_sel.selecting))
+
+ mymob.gun_setting_icon = new /obj/screen/gun/mode(null)
+
+ mymob.client.screen = null
+
+ //, mymob.i_select, mymob.m_select
+ mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.gun_setting_icon) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach, mymob.hands, )
+ mymob.client.screen += src.adding + src.other
+
+ //if(istype(mymob,/mob/living/carbon/monkey)) mymob.client.screen += src.mon_blo
+
+ return
diff --git a/code/modules/mob/living/carbon/amorph/life.dm b/code/WorkInProgress/Cib/amorph/life.dm
similarity index 96%
rename from code/modules/mob/living/carbon/amorph/life.dm
rename to code/WorkInProgress/Cib/amorph/life.dm
index 1a1812a6342..14c4d41ccab 100644
--- a/code/modules/mob/living/carbon/amorph/life.dm
+++ b/code/WorkInProgress/Cib/amorph/life.dm
@@ -1,516 +1,516 @@
-/mob/living/carbon/amorph
- var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
-
- var/oxygen_alert = 0
- var/toxins_alert = 0
- var/fire_alert = 0
-
- var/temperature_alert = 0
-
-
-/mob/living/carbon/amorph/Life()
- set invisibility = 0
- set background = 1
-
- if (src.monkeyizing)
- return
-
- ..()
-
- var/datum/gas_mixture/environment // Added to prevent null location errors-- TLE
- if(src.loc)
- environment = loc.return_air()
-
- if (src.stat != 2) //still breathing
-
- //First, resolve location and get a breath
-
- if(air_master.current_cycle%4==2)
- //Only try to take a breath every 4 seconds, unless suffocating
- breathe()
-
- else //Still give containing object the chance to interact
- if(istype(loc, /obj/))
- var/obj/location_as_object = loc
- location_as_object.handle_internal_lifeform(src, 0)
-
- //Apparently, the person who wrote this code designed it so that
- //blinded get reset each cycle and then get activated later in the
- //code. Very ugly. I dont care. Moving this stuff here so its easy
- //to find it.
- src.blinded = null
-
- //Disease Check
- handle_virus_updates()
-
- //Handle temperature/pressure differences between body and environment
- if(environment) // More error checking -- TLE
- handle_environment(environment)
-
- //Mutations and radiation
- handle_mutations_and_radiation()
-
- //Chemicals in the body
- handle_chemicals_in_body()
-
- //Disabilities
- handle_disabilities()
-
- //Status updates, death etc.
-// UpdateLuminosity()
- handle_regular_status_updates()
-
- if(client)
- handle_regular_hud_updates()
-
- //Being buckled to a chair or bed
- check_if_buckled()
-
- // Yup.
- update_canmove()
-
- clamp_values()
-
- // Grabbing
- for(var/obj/item/weapon/grab/G in src)
- G.process()
-
-/mob/living/carbon/amorph
- proc
-
- clamp_values()
-
- AdjustStunned(0)
- AdjustParalysis(0)
- AdjustWeakened(0)
-
- handle_disabilities()
- if (src.disabilities & 4)
- if ((prob(5) && src.paralysis <= 1 && src.r_ch_cou < 1))
- src.drop_item()
- spawn( 0 )
- emote("cough")
- return
- if (src.disabilities & 8)
- if ((prob(10) && src.paralysis <= 1 && src.r_Tourette < 1))
- Stun(10)
- spawn( 0 )
- emote("twitch")
- return
- if (src.disabilities & 16)
- if (prob(10))
- src.stuttering = max(10, src.stuttering)
-
- update_mind()
- if(!mind && client)
- mind = new
- mind.current = src
- mind.key = key
-
- handle_mutations_and_radiation()
- // amorphs are immune to this stuff
-
- breathe()
- if(src.reagents)
-
- if(src.reagents.has_reagent("lexorin")) return
-
- if(!loc) return //probably ought to make a proper fix for this, but :effort: --NeoFite
-
- var/datum/gas_mixture/environment = loc.return_air()
- var/datum/gas_mixture/breath
-
- if(losebreath>0) //Suffocating so do not take a breath
- src.losebreath--
- if (prob(75)) //High chance of gasping for air
- spawn emote("gasp")
- if(istype(loc, /obj/))
- var/obj/location_as_object = loc
- location_as_object.handle_internal_lifeform(src, 0)
- else
- //First, check for air from internal atmosphere (using an air tank and mask generally)
- breath = get_breath_from_internal(BREATH_VOLUME)
-
- //No breath from internal atmosphere so get breath from location
- if(!breath)
- if(istype(loc, /obj/))
- var/obj/location_as_object = loc
- breath = location_as_object.handle_internal_lifeform(src, BREATH_VOLUME)
- else if(istype(loc, /turf/))
- var/breath_moles = environment.total_moles()*BREATH_PERCENTAGE
- breath = loc.remove_air(breath_moles)
-
- // Handle chem smoke effect -- Doohl
- var/block = 0
- if(wear_mask)
- if(istype(wear_mask, /obj/item/clothing/mask/gas))
- block = 1
-
- if(!block)
-
- for(var/obj/effect/effect/chem_smoke/smoke in view(1, src))
- if(smoke.reagents.total_volume)
- smoke.reagents.reaction(src, INGEST)
- spawn(5)
- if(smoke)
- smoke.reagents.copy_to(src, 10) // I dunno, maybe the reagents enter the blood stream through the lungs?
- break // If they breathe in the nasty stuff once, no need to continue checking
-
-
- else //Still give containing object the chance to interact
- if(istype(loc, /obj/))
- var/obj/location_as_object = loc
- location_as_object.handle_internal_lifeform(src, 0)
-
- handle_breath(breath)
-
- if(breath)
- loc.assume_air(breath)
-
-
- get_breath_from_internal(volume_needed)
- if(internal)
- if (!contents.Find(src.internal))
- internal = null
- if (!wear_mask || !(wear_mask.flags|MASKINTERNALS) )
- internal = null
- if(internal)
- if (src.internals)
- src.internals.icon_state = "internal1"
- return internal.remove_air_volume(volume_needed)
- else
- if (src.internals)
- src.internals.icon_state = "internal0"
- return null
-
- update_canmove()
- if(paralysis || stunned || weakened || buckled || (changeling && changeling.changeling_fakedeath)) canmove = 0
- else canmove = 1
-
- handle_breath(datum/gas_mixture/breath)
- if(src.nodamage)
- return
-
- if(!breath || (breath.total_moles == 0))
- adjustOxyLoss(7)
-
- oxygen_alert = max(oxygen_alert, 1)
-
- return 0
-
- var/safe_oxygen_min = 8 // Minimum safe partial pressure of O2, in kPa
- //var/safe_oxygen_max = 140 // Maximum safe partial pressure of O2, in kPa (Not used for now)
- var/SA_para_min = 0.5
- var/SA_sleep_min = 5
- var/oxygen_used = 0
- var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.temperature)/BREATH_VOLUME
-
- //Partial pressure of the O2 in our breath
- var/O2_pp = (breath.oxygen/breath.total_moles())*breath_pressure
-
- if(O2_pp < safe_oxygen_min) // Too little oxygen
- if(prob(20))
- spawn(0) emote("gasp")
- if (O2_pp == 0)
- O2_pp = 0.01
- var/ratio = safe_oxygen_min/O2_pp
- adjustOxyLoss(min(5*ratio, 7)) // Don't fuck them up too fast (space only does 7 after all!)
- oxygen_used = breath.oxygen*ratio/6
- oxygen_alert = max(oxygen_alert, 1)
- else // We're in safe limits
- adjustOxyLoss(-5)
- oxygen_used = breath.oxygen/6
- oxygen_alert = 0
-
- breath.oxygen -= oxygen_used
- breath.carbon_dioxide += oxygen_used
-
- if(breath.trace_gases.len) // If there's some other shit in the air lets deal with it here.
- for(var/datum/gas/sleeping_agent/SA in breath.trace_gases)
- var/SA_pp = (SA.moles/breath.total_moles())*breath_pressure
- if(SA_pp > SA_para_min) // Enough to make us paralysed for a bit
- Paralyse(3) // 3 gives them one second to wake up and run away a bit!
- if(SA_pp > SA_sleep_min) // Enough to make us sleep as well
- src.sleeping = max(src.sleeping+2, 10)
- else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning
- if(prob(20))
- spawn(0) emote(pick("giggle", "laugh"))
-
- return 1
-
- handle_environment(datum/gas_mixture/environment)
- if(!environment)
- return
- var/environment_heat_capacity = environment.heat_capacity()
- if(istype(loc, /turf/space))
- environment_heat_capacity = loc:heat_capacity
-
- if((environment.temperature > (T0C + 50)) || (environment.temperature < (T0C + 10)))
- var/transfer_coefficient
-
- transfer_coefficient = 1
- if(wear_mask && (wear_mask.body_parts_covered & HEAD) && (environment.temperature < wear_mask.protective_temperature))
- transfer_coefficient *= wear_mask.heat_transfer_coefficient
-
- handle_temperature_damage(HEAD, environment.temperature, environment_heat_capacity*transfer_coefficient)
-
- if(stat==2)
- bodytemperature += 0.1*(environment.temperature - bodytemperature)*environment_heat_capacity/(environment_heat_capacity + 270000)
-
- //Account for massive pressure differences
-
-
- var/pressure = environment.return_pressure()
-
- // if(!wear_suit) Monkies cannot into space.
- // if(!istype(wear_suit, /obj/item/clothing/suit/space))
-
- /*if(pressure < 20)
- if(prob(25))
- src << "You feel the splittle on your lips and the fluid on your eyes boiling away, the capillteries in your skin breaking."
- adjustBruteLoss(5)
- */
-
- if(pressure > HAZARD_HIGH_PRESSURE)
-
- adjustBruteLoss(min((10+(round(pressure/(HIGH_STEP_PRESSURE)-2)*5)),MAX_PRESSURE_DAMAGE))
-
-
-
- return //TODO: DEFERRED
-
- handle_temperature_damage(body_part, exposed_temperature, exposed_intensity)
- if(src.nodamage) return
- var/discomfort = min( abs(exposed_temperature - bodytemperature)*(exposed_intensity)/2000000, 1.0)
- if(exposed_temperature > bodytemperature)
- adjustFireLoss(20.0*discomfort)
-
- else
- adjustFireLoss(5.0*discomfort)
-
- handle_chemicals_in_body()
- // most chemicals will have no effect on amorphs
- //if(reagents) reagents.metabolize(src)
-
- if (src.drowsyness)
- src.drowsyness--
- src.eye_blurry = max(2, src.eye_blurry)
- if (prob(5))
- src.sleeping += 1
- Paralyse(5)
-
- confused = max(0, confused - 1)
- // decrement dizziness counter, clamped to 0
- if(resting)
- dizziness = max(0, dizziness - 5)
- else
- dizziness = max(0, dizziness - 1)
-
- src.updatehealth()
-
- return //TODO: DEFERRED
-
- handle_regular_status_updates()
-
- health = 100 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
-
- if(getOxyLoss() > 25) Paralyse(3)
-
- if(src.sleeping)
- Paralyse(5)
- if (prob(1) && health) spawn(0) emote("snore")
-
- if(src.resting)
- Weaken(5)
-
- if(health < config.health_threshold_dead && stat != 2)
- death()
- else if(src.health < config.health_threshold_crit)
- if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
-
- // shuffle around the chemical effects for amorphs a little ;)
- if(!src.reagents.has_reagent("antitoxin") && src.stat != 2) src.adjustOxyLoss(2)
-
- if(src.stat != 2) src.stat = 1
- Paralyse(5)
-
- if (src.stat != 2) //Alive.
-
- if (src.paralysis || src.stunned || src.weakened) //Stunned etc.
- if (src.stunned > 0)
- AdjustStunned(-1)
- src.stat = 0
- if (src.weakened > 0)
- AdjustWeakened(-1)
- src.lying = 1
- src.stat = 0
- if (src.paralysis > 0)
- AdjustParalysis(-1)
- src.blinded = 1
- src.lying = 1
- src.stat = 1
- var/h = src.hand
- src.hand = 0
- drop_item()
- src.hand = 1
- drop_item()
- src.hand = h
-
- else //Not stunned.
- src.lying = 0
- src.stat = 0
-
- else //Dead.
- src.lying = 1
- src.blinded = 1
- src.stat = 2
-
- if (src.stuttering) src.stuttering--
- if (src.slurring) src.slurring--
-
- if (src.eye_blind)
- src.eye_blind--
- src.blinded = 1
-
- if (src.ear_deaf > 0) src.ear_deaf--
- if (src.ear_damage < 25)
- src.ear_damage -= 0.05
- src.ear_damage = max(src.ear_damage, 0)
-
- src.density = !( src.lying )
-
- if (src.disabilities & 128)
- src.blinded = 1
- if (src.disabilities & 32)
- src.ear_deaf = 1
-
- if (src.eye_blurry > 0)
- src.eye_blurry--
- src.eye_blurry = max(0, src.eye_blurry)
-
- if (src.druggy > 0)
- src.druggy--
- src.druggy = max(0, src.druggy)
-
- return 1
-
- handle_regular_hud_updates()
-
- if (src.stat == 2 || (XRAY in mutations))
- src.sight |= SEE_TURFS
- src.sight |= SEE_MOBS
- src.sight |= SEE_OBJS
- src.see_in_dark = 8
- src.see_invisible = 2
- else if (src.stat != 2)
- src.sight &= ~SEE_TURFS
- src.sight &= ~SEE_MOBS
- src.sight &= ~SEE_OBJS
- src.see_in_dark = 2
- src.see_invisible = 0
-
- if (src.sleep)
- src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0)
- src.sleep.overlays = null
- if(src.sleeping_willingly)
- src.sleep.overlays += icon(src.sleep.icon, "sleep_willing")
- if (src.rest) src.rest.icon_state = text("rest[]", src.resting)
-
- if (src.healths)
- if (src.stat != 2)
- switch(health)
- if(100 to INFINITY)
- src.healths.icon_state = "health0"
- if(80 to 100)
- src.healths.icon_state = "health1"
- if(60 to 80)
- src.healths.icon_state = "health2"
- if(40 to 60)
- src.healths.icon_state = "health3"
- if(20 to 40)
- src.healths.icon_state = "health4"
- if(0 to 20)
- src.healths.icon_state = "health5"
- else
- src.healths.icon_state = "health6"
- else
- src.healths.icon_state = "health7"
-
- if (pressure)
- var/datum/gas_mixture/environment = loc.return_air()
- if(environment)
- switch(environment.return_pressure())
-
- if(HAZARD_HIGH_PRESSURE to INFINITY)
- pressure.icon_state = "pressure2"
- if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE)
- pressure.icon_state = "pressure1"
- if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE)
- pressure.icon_state = "pressure0"
- if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE)
- pressure.icon_state = "pressure-1"
- else
- pressure.icon_state = "pressure-2"
-
- if(src.pullin) src.pullin.icon_state = "pull[src.pulling ? 1 : 0]"
-
-
- if (src.toxin) src.toxin.icon_state = "tox[src.toxins_alert ? 1 : 0]"
- if (src.oxygen) src.oxygen.icon_state = "oxy[src.oxygen_alert ? 1 : 0]"
- if (src.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]"
- //NOTE: the alerts dont reset when youre out of danger. dont blame me,
- //blame the person who coded them. Temporary fix added.
-
- if(bodytemp)
- switch(src.bodytemperature) //310.055 optimal body temp
- if(345 to INFINITY)
- src.bodytemp.icon_state = "temp4"
- if(335 to 345)
- src.bodytemp.icon_state = "temp3"
- if(327 to 335)
- src.bodytemp.icon_state = "temp2"
- if(316 to 327)
- src.bodytemp.icon_state = "temp1"
- if(300 to 316)
- src.bodytemp.icon_state = "temp0"
- if(295 to 300)
- src.bodytemp.icon_state = "temp-1"
- if(280 to 295)
- src.bodytemp.icon_state = "temp-2"
- if(260 to 280)
- src.bodytemp.icon_state = "temp-3"
- else
- src.bodytemp.icon_state = "temp-4"
-
- src.client.screen -= src.hud_used.blurry
- src.client.screen -= src.hud_used.druggy
- src.client.screen -= src.hud_used.vimpaired
-
- if ((src.blind && src.stat != 2))
- if ((src.blinded))
- src.blind.layer = 18
- else
- src.blind.layer = 0
-
- if (src.disabilities & 1)
- src.client.screen += src.hud_used.vimpaired
-
- if (src.eye_blurry)
- src.client.screen += src.hud_used.blurry
-
- if (src.druggy)
- src.client.screen += src.hud_used.druggy
-
- if (src.stat != 2)
- if (src.machine)
- if (!( src.machine.check_eye(src) ))
- src.reset_view(null)
- else
- if(!client.adminobs)
- reset_view(null)
-
- return 1
-
- handle_virus_updates()
- // amorphs can't come down with human diseases
+/mob/living/carbon/amorph
+ var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
+
+ var/oxygen_alert = 0
+ var/toxins_alert = 0
+ var/fire_alert = 0
+
+ var/temperature_alert = 0
+
+
+/mob/living/carbon/amorph/Life()
+ set invisibility = 0
+ set background = 1
+
+ if (src.monkeyizing)
+ return
+
+ ..()
+
+ var/datum/gas_mixture/environment // Added to prevent null location errors-- TLE
+ if(src.loc)
+ environment = loc.return_air()
+
+ if (src.stat != 2) //still breathing
+
+ //First, resolve location and get a breath
+
+ if(air_master.current_cycle%4==2)
+ //Only try to take a breath every 4 seconds, unless suffocating
+ breathe()
+
+ else //Still give containing object the chance to interact
+ if(istype(loc, /obj/))
+ var/obj/location_as_object = loc
+ location_as_object.handle_internal_lifeform(src, 0)
+
+ //Apparently, the person who wrote this code designed it so that
+ //blinded get reset each cycle and then get activated later in the
+ //code. Very ugly. I dont care. Moving this stuff here so its easy
+ //to find it.
+ src.blinded = null
+
+ //Disease Check
+ handle_virus_updates()
+
+ //Handle temperature/pressure differences between body and environment
+ if(environment) // More error checking -- TLE
+ handle_environment(environment)
+
+ //Mutations and radiation
+ handle_mutations_and_radiation()
+
+ //Chemicals in the body
+ handle_chemicals_in_body()
+
+ //Disabilities
+ handle_disabilities()
+
+ //Status updates, death etc.
+// UpdateLuminosity()
+ handle_regular_status_updates()
+
+ if(client)
+ handle_regular_hud_updates()
+
+ //Being buckled to a chair or bed
+ check_if_buckled()
+
+ // Yup.
+ update_canmove()
+
+ clamp_values()
+
+ // Grabbing
+ for(var/obj/item/weapon/grab/G in src)
+ G.process()
+
+/mob/living/carbon/amorph
+ proc
+
+ clamp_values()
+
+ AdjustStunned(0)
+ AdjustParalysis(0)
+ AdjustWeakened(0)
+
+ handle_disabilities()
+ if (src.disabilities & 4)
+ if ((prob(5) && src.paralysis <= 1 && src.r_ch_cou < 1))
+ src.drop_item()
+ spawn( 0 )
+ emote("cough")
+ return
+ if (src.disabilities & 8)
+ if ((prob(10) && src.paralysis <= 1 && src.r_Tourette < 1))
+ Stun(10)
+ spawn( 0 )
+ emote("twitch")
+ return
+ if (src.disabilities & 16)
+ if (prob(10))
+ src.stuttering = max(10, src.stuttering)
+
+ update_mind()
+ if(!mind && client)
+ mind = new
+ mind.current = src
+ mind.key = key
+
+ handle_mutations_and_radiation()
+ // amorphs are immune to this stuff
+
+ breathe()
+ if(src.reagents)
+
+ if(src.reagents.has_reagent("lexorin")) return
+
+ if(!loc) return //probably ought to make a proper fix for this, but :effort: --NeoFite
+
+ var/datum/gas_mixture/environment = loc.return_air()
+ var/datum/gas_mixture/breath
+
+ if(losebreath>0) //Suffocating so do not take a breath
+ src.losebreath--
+ if (prob(75)) //High chance of gasping for air
+ spawn emote("gasp")
+ if(istype(loc, /obj/))
+ var/obj/location_as_object = loc
+ location_as_object.handle_internal_lifeform(src, 0)
+ else
+ //First, check for air from internal atmosphere (using an air tank and mask generally)
+ breath = get_breath_from_internal(BREATH_VOLUME)
+
+ //No breath from internal atmosphere so get breath from location
+ if(!breath)
+ if(istype(loc, /obj/))
+ var/obj/location_as_object = loc
+ breath = location_as_object.handle_internal_lifeform(src, BREATH_VOLUME)
+ else if(istype(loc, /turf/))
+ var/breath_moles = environment.total_moles()*BREATH_PERCENTAGE
+ breath = loc.remove_air(breath_moles)
+
+ // Handle chem smoke effect -- Doohl
+ var/block = 0
+ if(wear_mask)
+ if(istype(wear_mask, /obj/item/clothing/mask/gas))
+ block = 1
+
+ if(!block)
+
+ for(var/obj/effect/effect/chem_smoke/smoke in view(1, src))
+ if(smoke.reagents.total_volume)
+ smoke.reagents.reaction(src, INGEST)
+ spawn(5)
+ if(smoke)
+ smoke.reagents.copy_to(src, 10) // I dunno, maybe the reagents enter the blood stream through the lungs?
+ break // If they breathe in the nasty stuff once, no need to continue checking
+
+
+ else //Still give containing object the chance to interact
+ if(istype(loc, /obj/))
+ var/obj/location_as_object = loc
+ location_as_object.handle_internal_lifeform(src, 0)
+
+ handle_breath(breath)
+
+ if(breath)
+ loc.assume_air(breath)
+
+
+ get_breath_from_internal(volume_needed)
+ if(internal)
+ if (!contents.Find(src.internal))
+ internal = null
+ if (!wear_mask || !(wear_mask.flags|MASKINTERNALS) )
+ internal = null
+ if(internal)
+ if (src.internals)
+ src.internals.icon_state = "internal1"
+ return internal.remove_air_volume(volume_needed)
+ else
+ if (src.internals)
+ src.internals.icon_state = "internal0"
+ return null
+
+ update_canmove()
+ if(paralysis || stunned || weakened || buckled || (changeling && changeling.changeling_fakedeath)) canmove = 0
+ else canmove = 1
+
+ handle_breath(datum/gas_mixture/breath)
+ if(src.nodamage)
+ return
+
+ if(!breath || (breath.total_moles == 0))
+ adjustOxyLoss(7)
+
+ oxygen_alert = max(oxygen_alert, 1)
+
+ return 0
+
+ var/safe_oxygen_min = 8 // Minimum safe partial pressure of O2, in kPa
+ //var/safe_oxygen_max = 140 // Maximum safe partial pressure of O2, in kPa (Not used for now)
+ var/SA_para_min = 0.5
+ var/SA_sleep_min = 5
+ var/oxygen_used = 0
+ var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.temperature)/BREATH_VOLUME
+
+ //Partial pressure of the O2 in our breath
+ var/O2_pp = (breath.oxygen/breath.total_moles())*breath_pressure
+
+ if(O2_pp < safe_oxygen_min) // Too little oxygen
+ if(prob(20))
+ spawn(0) emote("gasp")
+ if (O2_pp == 0)
+ O2_pp = 0.01
+ var/ratio = safe_oxygen_min/O2_pp
+ adjustOxyLoss(min(5*ratio, 7)) // Don't fuck them up too fast (space only does 7 after all!)
+ oxygen_used = breath.oxygen*ratio/6
+ oxygen_alert = max(oxygen_alert, 1)
+ else // We're in safe limits
+ adjustOxyLoss(-5)
+ oxygen_used = breath.oxygen/6
+ oxygen_alert = 0
+
+ breath.oxygen -= oxygen_used
+ breath.carbon_dioxide += oxygen_used
+
+ if(breath.trace_gases.len) // If there's some other shit in the air lets deal with it here.
+ for(var/datum/gas/sleeping_agent/SA in breath.trace_gases)
+ var/SA_pp = (SA.moles/breath.total_moles())*breath_pressure
+ if(SA_pp > SA_para_min) // Enough to make us paralysed for a bit
+ Paralyse(3) // 3 gives them one second to wake up and run away a bit!
+ if(SA_pp > SA_sleep_min) // Enough to make us sleep as well
+ src.sleeping = max(src.sleeping+2, 10)
+ else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning
+ if(prob(20))
+ spawn(0) emote(pick("giggle", "laugh"))
+
+ return 1
+
+ handle_environment(datum/gas_mixture/environment)
+ if(!environment)
+ return
+ var/environment_heat_capacity = environment.heat_capacity()
+ if(istype(loc, /turf/space))
+ environment_heat_capacity = loc:heat_capacity
+
+ if((environment.temperature > (T0C + 50)) || (environment.temperature < (T0C + 10)))
+ var/transfer_coefficient
+
+ transfer_coefficient = 1
+ if(wear_mask && (wear_mask.body_parts_covered & HEAD) && (environment.temperature < wear_mask.protective_temperature))
+ transfer_coefficient *= wear_mask.heat_transfer_coefficient
+
+ handle_temperature_damage(HEAD, environment.temperature, environment_heat_capacity*transfer_coefficient)
+
+ if(stat==2)
+ bodytemperature += 0.1*(environment.temperature - bodytemperature)*environment_heat_capacity/(environment_heat_capacity + 270000)
+
+ //Account for massive pressure differences
+
+
+ var/pressure = environment.return_pressure()
+
+ // if(!wear_suit) Monkies cannot into space.
+ // if(!istype(wear_suit, /obj/item/clothing/suit/space))
+
+ /*if(pressure < 20)
+ if(prob(25))
+ src << "You feel the splittle on your lips and the fluid on your eyes boiling away, the capillteries in your skin breaking."
+ adjustBruteLoss(5)
+ */
+
+ if(pressure > HAZARD_HIGH_PRESSURE)
+
+ adjustBruteLoss(min((10+(round(pressure/(HIGH_STEP_PRESSURE)-2)*5)),MAX_PRESSURE_DAMAGE))
+
+
+
+ return //TODO: DEFERRED
+
+ handle_temperature_damage(body_part, exposed_temperature, exposed_intensity)
+ if(src.nodamage) return
+ var/discomfort = min( abs(exposed_temperature - bodytemperature)*(exposed_intensity)/2000000, 1.0)
+ if(exposed_temperature > bodytemperature)
+ adjustFireLoss(20.0*discomfort)
+
+ else
+ adjustFireLoss(5.0*discomfort)
+
+ handle_chemicals_in_body()
+ // most chemicals will have no effect on amorphs
+ //if(reagents) reagents.metabolize(src)
+
+ if (src.drowsyness)
+ src.drowsyness--
+ src.eye_blurry = max(2, src.eye_blurry)
+ if (prob(5))
+ src.sleeping += 1
+ Paralyse(5)
+
+ confused = max(0, confused - 1)
+ // decrement dizziness counter, clamped to 0
+ if(resting)
+ dizziness = max(0, dizziness - 5)
+ else
+ dizziness = max(0, dizziness - 1)
+
+ src.updatehealth()
+
+ return //TODO: DEFERRED
+
+ handle_regular_status_updates()
+
+ health = 100 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
+
+ if(getOxyLoss() > 25) Paralyse(3)
+
+ if(src.sleeping)
+ Paralyse(5)
+ if (prob(1) && health) spawn(0) emote("snore")
+
+ if(src.resting)
+ Weaken(5)
+
+ if(health < config.health_threshold_dead && stat != 2)
+ death()
+ else if(src.health < config.health_threshold_crit)
+ if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
+
+ // shuffle around the chemical effects for amorphs a little ;)
+ if(!src.reagents.has_reagent("antitoxin") && src.stat != 2) src.adjustOxyLoss(2)
+
+ if(src.stat != 2) src.stat = 1
+ Paralyse(5)
+
+ if (src.stat != 2) //Alive.
+
+ if (src.paralysis || src.stunned || src.weakened) //Stunned etc.
+ if (src.stunned > 0)
+ AdjustStunned(-1)
+ src.stat = 0
+ if (src.weakened > 0)
+ AdjustWeakened(-1)
+ src.lying = 1
+ src.stat = 0
+ if (src.paralysis > 0)
+ AdjustParalysis(-1)
+ src.blinded = 1
+ src.lying = 1
+ src.stat = 1
+ var/h = src.hand
+ src.hand = 0
+ drop_item()
+ src.hand = 1
+ drop_item()
+ src.hand = h
+
+ else //Not stunned.
+ src.lying = 0
+ src.stat = 0
+
+ else //Dead.
+ src.lying = 1
+ src.blinded = 1
+ src.stat = 2
+
+ if (src.stuttering) src.stuttering--
+ if (src.slurring) src.slurring--
+
+ if (src.eye_blind)
+ src.eye_blind--
+ src.blinded = 1
+
+ if (src.ear_deaf > 0) src.ear_deaf--
+ if (src.ear_damage < 25)
+ src.ear_damage -= 0.05
+ src.ear_damage = max(src.ear_damage, 0)
+
+ src.density = !( src.lying )
+
+ if (src.disabilities & 128)
+ src.blinded = 1
+ if (src.disabilities & 32)
+ src.ear_deaf = 1
+
+ if (src.eye_blurry > 0)
+ src.eye_blurry--
+ src.eye_blurry = max(0, src.eye_blurry)
+
+ if (src.druggy > 0)
+ src.druggy--
+ src.druggy = max(0, src.druggy)
+
+ return 1
+
+ handle_regular_hud_updates()
+
+ if (src.stat == 2 || (XRAY in mutations))
+ src.sight |= SEE_TURFS
+ src.sight |= SEE_MOBS
+ src.sight |= SEE_OBJS
+ src.see_in_dark = 8
+ src.see_invisible = 2
+ else if (src.stat != 2)
+ src.sight &= ~SEE_TURFS
+ src.sight &= ~SEE_MOBS
+ src.sight &= ~SEE_OBJS
+ src.see_in_dark = 2
+ src.see_invisible = 0
+
+ if (src.sleep)
+ src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0)
+ src.sleep.overlays = null
+ if(src.sleeping_willingly)
+ src.sleep.overlays += icon(src.sleep.icon, "sleep_willing")
+ if (src.rest) src.rest.icon_state = text("rest[]", src.resting)
+
+ if (src.healths)
+ if (src.stat != 2)
+ switch(health)
+ if(100 to INFINITY)
+ src.healths.icon_state = "health0"
+ if(80 to 100)
+ src.healths.icon_state = "health1"
+ if(60 to 80)
+ src.healths.icon_state = "health2"
+ if(40 to 60)
+ src.healths.icon_state = "health3"
+ if(20 to 40)
+ src.healths.icon_state = "health4"
+ if(0 to 20)
+ src.healths.icon_state = "health5"
+ else
+ src.healths.icon_state = "health6"
+ else
+ src.healths.icon_state = "health7"
+
+ if (pressure)
+ var/datum/gas_mixture/environment = loc.return_air()
+ if(environment)
+ switch(environment.return_pressure())
+
+ if(HAZARD_HIGH_PRESSURE to INFINITY)
+ pressure.icon_state = "pressure2"
+ if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE)
+ pressure.icon_state = "pressure1"
+ if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE)
+ pressure.icon_state = "pressure0"
+ if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE)
+ pressure.icon_state = "pressure-1"
+ else
+ pressure.icon_state = "pressure-2"
+
+ if(src.pullin) src.pullin.icon_state = "pull[src.pulling ? 1 : 0]"
+
+
+ if (src.toxin) src.toxin.icon_state = "tox[src.toxins_alert ? 1 : 0]"
+ if (src.oxygen) src.oxygen.icon_state = "oxy[src.oxygen_alert ? 1 : 0]"
+ if (src.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]"
+ //NOTE: the alerts dont reset when youre out of danger. dont blame me,
+ //blame the person who coded them. Temporary fix added.
+
+ if(bodytemp)
+ switch(src.bodytemperature) //310.055 optimal body temp
+ if(345 to INFINITY)
+ src.bodytemp.icon_state = "temp4"
+ if(335 to 345)
+ src.bodytemp.icon_state = "temp3"
+ if(327 to 335)
+ src.bodytemp.icon_state = "temp2"
+ if(316 to 327)
+ src.bodytemp.icon_state = "temp1"
+ if(300 to 316)
+ src.bodytemp.icon_state = "temp0"
+ if(295 to 300)
+ src.bodytemp.icon_state = "temp-1"
+ if(280 to 295)
+ src.bodytemp.icon_state = "temp-2"
+ if(260 to 280)
+ src.bodytemp.icon_state = "temp-3"
+ else
+ src.bodytemp.icon_state = "temp-4"
+
+ src.client.screen -= src.hud_used.blurry
+ src.client.screen -= src.hud_used.druggy
+ src.client.screen -= src.hud_used.vimpaired
+
+ if ((src.blind && src.stat != 2))
+ if ((src.blinded))
+ src.blind.layer = 18
+ else
+ src.blind.layer = 0
+
+ if (src.disabilities & 1)
+ src.client.screen += src.hud_used.vimpaired
+
+ if (src.eye_blurry)
+ src.client.screen += src.hud_used.blurry
+
+ if (src.druggy)
+ src.client.screen += src.hud_used.druggy
+
+ if (src.stat != 2)
+ if (src.machine)
+ if (!( src.machine.check_eye(src) ))
+ src.reset_view(null)
+ else
+ if(!client.adminobs)
+ reset_view(null)
+
+ return 1
+
+ handle_virus_updates()
+ // amorphs can't come down with human diseases
return
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/amorph/say.dm b/code/WorkInProgress/Cib/amorph/say.dm
similarity index 97%
rename from code/modules/mob/living/carbon/amorph/say.dm
rename to code/WorkInProgress/Cib/amorph/say.dm
index 4663a847a1b..a73c9de5d39 100644
--- a/code/modules/mob/living/carbon/amorph/say.dm
+++ b/code/WorkInProgress/Cib/amorph/say.dm
@@ -1,6 +1,6 @@
-/mob/living/carbon/amorph/emote(var/act,var/m_type=1,var/message = null)
- if(act == "me")
- return custom_emote(m_type, message)
-
-/mob/living/carbon/amorph/say_quote(var/text)
- return "[src.say_message], \"[text]\"";
+/mob/living/carbon/amorph/emote(var/act,var/m_type=1,var/message = null)
+ if(act == "me")
+ return custom_emote(m_type, message)
+
+/mob/living/carbon/amorph/say_quote(var/text)
+ return "[src.say_message], \"[text]\"";
diff --git a/code/modules/mob/living/parasite/meme.dm b/code/WorkInProgress/Cib/meme.dm
similarity index 100%
rename from code/modules/mob/living/parasite/meme.dm
rename to code/WorkInProgress/Cib/meme.dm
diff --git a/code/defines/atom.dm b/code/defines/atom.dm
deleted file mode 100644
index 7bf9958693a..00000000000
--- a/code/defines/atom.dm
+++ /dev/null
@@ -1,248 +0,0 @@
-/atom
- layer = 2
- var/level = 2
- var/flags = FPRINT
- var/list/fingerprints
- var/list/fingerprintshidden
- var/fingerprintslast = null
- var/list/blood_DNA
- var/last_bumped = 0
- var/pass_flags = 0
-
- ///Chemistry.
- var/datum/reagents/reagents = null
-
- //var/chem_is_open_container = 0
- // replaced by OPENCONTAINER flags and atom/proc/is_open_container()
- ///Chemistry.
-
- //Detective Work, used for the duplicate data points kept in the scanners
- var/list/original_atom
-
- proc/assume_air(datum/gas_mixture/giver)
- del(giver)
- return null
-
- proc/remove_air(amount)
- return null
-
- proc/return_air()
- if(loc)
- return loc.return_air()
- else
- return null
-
-
-
-// Convenience proc to see if a container is open for chemistry handling
-// returns true if open
-// false if closed
- proc/is_open_container()
- return flags & OPENCONTAINER
-
-/*//Convenience proc to see whether a container can be accessed in a certain way.
-
- proc/can_subract_container()
- return flags & EXTRACT_CONTAINER
-
- proc/can_add_container()
- return flags & INSERT_CONTAINER
-*/
-
-obj
- assume_air(datum/gas_mixture/giver)
- if(loc)
- return loc.assume_air(giver)
- else
- return null
-
- remove_air(amount)
- if(loc)
- return loc.remove_air(amount)
- else
- return null
-
- return_air()
- if(loc)
- return loc.return_air()
- else
- return null
-
-/atom/proc/meteorhit(obj/meteor as obj)
- return
-
-/atom/proc/allow_drop()
- return 1
-
-/atom/proc/CheckExit()
- return 1
-
-/atom/proc/HasEntered(atom/movable/AM as mob|obj)
- return
-
-/atom/proc/HasProximity(atom/movable/AM as mob|obj)
- return
-
-/atom/proc/emp_act(var/severity)
- return
-
-/atom/proc/bullet_act(var/obj/item/projectile/Proj)
- return 0
-
-/atom/proc/in_contents_of(container)//can take class or object instance as argument
- if(ispath(container))
- if(istype(src.loc, container))
- return 1
- else if(src in container)
- return 1
- return
-
-/*
- * atom/proc/search_contents_for(path,list/filter_path=null)
- * Recursevly searches all atom contens (including contents contents and so on).
- *
- * ARGS: path - search atom contents for atoms of this type
- * list/filter_path - if set, contents of atoms not of types in this list are excluded from search.
- *
- * RETURNS: list of found atoms
- */
-
-/atom/proc/search_contents_for(path,list/filter_path=null)
- var/list/found = list()
- for(var/atom/A in src)
- if(istype(A, path))
- found += A
- if(filter_path)
- var/pass = 0
- for(var/type in filter_path)
- pass |= istype(A, type)
- if(!pass)
- continue
- if(A.contents.len)
- found += A.search_contents_for(path,filter_path)
- return found
-
-/atom/movable/overlay/attackby(a, b)
- if (src.master)
- return src.master.attackby(a, b)
- return
-
-/atom/movable/overlay/attack_paw(a, b, c)
- if (src.master)
- return src.master.attack_paw(a, b, c)
- return
-
-/atom/movable/overlay/attack_hand(a, b, c)
- if (src.master)
- return src.master.attack_hand(a, b, c)
- return
-
-/atom/movable/overlay/New()
- for(var/x in src.verbs)
- src.verbs -= x
- return
-
-
-/atom/movable
- layer = 3
- var/last_move = null
- var/anchored = 0
- // var/elevation = 2 - not used anywhere
- var/move_speed = 10
- var/l_move_time = 1
- var/m_flag = 1
- var/throwing = 0
- var/throw_speed = 2
- var/throw_range = 7
- var/moved_recently = 0
-
-/atom/movable/overlay
- var/atom/master = null
- anchored = 1
-
-/atom/movable/Move()
- var/atom/A = src.loc
- . = ..()
- src.move_speed = world.timeofday - src.l_move_time
- src.l_move_time = world.timeofday
- src.m_flag = 1
- if ((A != src.loc && A && A.z == src.z))
- src.last_move = get_dir(A, src.loc)
- return
-
-/*
-Beam code by Gunbuddy
-
-Beam() proc will only allow one beam to come from a source at a time. Attempting to call it more than
-once at a time per source will cause graphical errors.
-Also, the icon used for the beam will have to be vertical and 32x32.
-The math involved assumes that the icon is vertical to begin with so unless you want to adjust the math,
-its easier to just keep the beam vertical.
-*/
-/atom/proc/Beam(atom/BeamTarget,icon_state="b_beam",icon='icons/effects/beam.dmi',time=50, maxdistance=10)
- //BeamTarget represents the target for the beam, basically just means the other end.
- //Time is the duration to draw the beam
- //Icon is obviously which icon to use for the beam, default is beam.dmi
- //Icon_state is what icon state is used. Default is b_beam which is a blue beam.
- //Maxdistance is the longest range the beam will persist before it gives up.
- var/EndTime=world.time+time
- while(BeamTarget&&world.timelength)
- var/icon/II=new(icon,icon_state)
- II.DrawBox(null,1,(length-N),32,32)
- II.Turn(Angle)
- X.icon=II
- else X.icon=I
- var/Pixel_x=round(sin(Angle)+32*sin(Angle)*(N+16)/32)
- var/Pixel_y=round(cos(Angle)+32*cos(Angle)*(N+16)/32)
- if(DX==0) Pixel_x=0
- if(DY==0) Pixel_y=0
- if(Pixel_x>32)
- for(var/a=0, a<=Pixel_x,a+=32)
- X.x++
- Pixel_x-=32
- if(Pixel_x<-32)
- for(var/a=0, a>=Pixel_x,a-=32)
- X.x--
- Pixel_x+=32
- if(Pixel_y>32)
- for(var/a=0, a<=Pixel_y,a+=32)
- X.y++
- Pixel_y-=32
- if(Pixel_y<-32)
- for(var/a=0, a>=Pixel_y,a-=32)
- X.y--
- Pixel_y+=32
- X.pixel_x=Pixel_x
- X.pixel_y=Pixel_y
- sleep(3) //Changing this to a lower value will cause the beam to follow more smoothly with movement, but it will also be more laggy.
- //I've found that 3 ticks provided a nice balance for my use.
- for(var/obj/effect/overlay/beam/O in orange(10,src)) if(O.BeamSource==src) del O
-
-atom/movable/proc/forceMove(atom/destination)
- if(destination)
- if(loc)
- loc.Exited(src)
- loc = destination
- loc.Entered(src)
- return 1
- return 0
\ No newline at end of file
diff --git a/code/defines/global.dm b/code/defines/global.dm
deleted file mode 100644
index 14eff68194c..00000000000
--- a/code/defines/global.dm
+++ /dev/null
@@ -1,238 +0,0 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
-var/global/obj/effect/datacore/data_core = null
-var/global/obj/effect/overlay/plmaster = null
-var/global/obj/effect/overlay/slmaster = null
-
- //obj/hud/main_hud1 = null
-
-var/global/list/machines = list()
-var/global/list/processing_objects = list()
-var/global/list/active_diseases = list()
- //items that ask to be called every cycle
-
-var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event
-
- //list/global_map = null //Borked, do not touch. DMTG
- //list/global_map = list(list(1,5),list(4,3))//an array of map Z levels.
- //Resulting sector map looks like
- //|_1_|_4_|
- //|_5_|_3_|
- //
- //1 - SS13
- //4 - Derelict
- //3 - AI satellite
- //5 - empty space
-
-
- //////////////
-
-var/BLINDBLOCK = 0
-var/DEAFBLOCK = 0
-var/HULKBLOCK = 0
-var/TELEBLOCK = 0
-var/FIREBLOCK = 0
-var/XRAYBLOCK = 0
-var/CLUMSYBLOCK = 0
-var/FAKEBLOCK = 0
-var/BLOCKADD = 0
-var/DIFFMUT = 0
-var/HEADACHEBLOCK = 0
-var/COUGHBLOCK = 0
-var/TWITCHBLOCK = 0
-var/NERVOUSBLOCK = 0
-var/NOBREATHBLOCK = 0
-var/REMOTEVIEWBLOCK = 0
-var/REGENERATEBLOCK = 0
-var/INCREASERUNBLOCK = 0
-var/REMOTETALKBLOCK = 0
-var/MORPHBLOCK = 0
-var/BLENDBLOCK = 0
-var/HALLUCINATIONBLOCK = 0
-var/NOPRINTSBLOCK = 0
-var/SHOCKIMMUNITYBLOCK = 0
-var/SMALLSIZEBLOCK = 0
-var/GLASSESBLOCK = 0
-var/MONKEYBLOCK = 27
-
-var/skipupdate = 0
- ///////////////
-var/eventchance = 1 //% per 2 mins
-var/EventsOn = 1
-var/hadevent = 0
-var/blobevent = 0
- ///////////////
-
-var/diary = null
-var/diaryofmeanpeople = null
-var/href_logfile = null
-var/station_name = null
-var/game_version = "Baystation 12"
-
-var/datum/air_tunnel/air_tunnel1/SS13_airtunnel = null
-var/going = 1.0
-var/master_mode = "traitor"//"extended"
-var/secret_force_mode = "secret" // if this is anything but "secret", the secret rotation will forceably choose this mode
-
-var/datum/engine_eject/engine_eject_control = null
-var/host = null
-var/aliens_allowed = 1
-var/ooc_allowed = 1
-var/dooc_allowed = 1
-var/traitor_scaling = 1
-//var/goonsay_allowed = 0
-var/dna_ident = 1
-var/abandon_allowed = 1
-var/enter_allowed = 1
-var/guests_allowed = 0
-var/shuttle_frozen = 0
-var/shuttle_left = 0
-var/tinted_weldhelh = 1
-
-var/list/jobMax = list()
-var/list/bombers = list( )
-var/list/admin_log = list ( )
-var/list/lastsignalers = list( ) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]"
-var/list/lawchanges = list( ) //Stores who uploaded laws to which silicon-based lifeform, and what the law was
-var/list/admins = list( )
-var/list/shuttles = list( )
-var/list/reg_dna = list( )
-// list/traitobj = list( )
-
-
-var/CELLRATE = 0.002 // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second)
-var/CHARGELEVEL = 0.001 // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second)
-
-var/shuttle_z = 2 //default
-var/airtunnel_start = 68 // default
-var/airtunnel_stop = 68 // default
-var/airtunnel_bottom = 72 // default
-var/list/monkeystart = list()
-var/list/wizardstart = list()
-var/list/newplayer_start = list()
-var/list/latejoin = 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.
-// list/mazewarp = list()
-var/list/tdome1 = list()
-var/list/tdome2 = list()
-var/list/tdomeobserve = list()
-var/list/tdomeadmin = list()
-var/list/prisonsecuritywarp = list() //prison security goes to these
-var/list/prisonwarped = list() //list of players already warped
-var/list/blobstart = list()
-// list/traitors = list() //traitor list
-var/list/cardinal = list( NORTH, SOUTH, EAST, WEST )
-var/list/alldirs = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)
-var/list/emclosets = list() //random emergency closets woo
-
-var/datum/station_state/start_state = null
-var/datum/configuration/config = null
-var/datum/vote/vote = null
-var/datum/sun/sun = null
-
-var/list/combatlog = list()
-var/list/IClog = list()
-var/list/OOClog = list()
-var/list/adminlog = list()
-
-
-var/list/powernets = null
-
-var/Debug = 0 // global debug switch
-var/Debug2 = 0
-
-var/datum/debug/debugobj
-
-var/datum/moduletypes/mods = new()
-
-var/wavesecret = 0
-
-var/shuttlecoming = 0
-
-var/join_motd = null
-var/forceblob = 0
-
-var/custom_event_msg = null
-
- //airlockWireColorToIndex takes a number representing the wire color, e.g. the orange wire is always 1, the dark red wire is always 2, etc. It returns the index for whatever that wire does.
- //airlockIndexToWireColor does the opposite thing - it takes the index for what the wire does, for example AIRLOCK_WIRE_IDSCAN is 1, AIRLOCK_WIRE_POWER1 is 2, etc. It returns the wire color number.
- //airlockWireColorToFlag takes the wire color number and returns the flag for it (1, 2, 4, 8, 16, etc)
-var/list/airlockWireColorToFlag = RandomAirlockWires()
-var/list/airlockIndexToFlag
-var/list/airlockIndexToWireColor
-var/list/airlockWireColorToIndex
-var/list/APCWireColorToFlag = RandomAPCWires()
-var/list/APCIndexToFlag
-var/list/APCIndexToWireColor
-var/list/APCWireColorToIndex
-var/list/BorgWireColorToFlag = RandomBorgWires()
-var/list/BorgIndexToFlag
-var/list/BorgIndexToWireColor
-var/list/BorgWireColorToIndex
-var/list/ScrambledFrequencies = list( ) //These are used for electrical storms, and anything else that jams radios.
-var/list/UnscrambledFrequencies = list( )
-var/list/AAlarmWireColorToFlag = RandomAAlarmWires() // Air Alarm hacking wires.
-var/list/AAlarmIndexToFlag
-var/list/AAlarmIndexToWireColor
-var/list/AAlarmWireColorToIndex
-
-var/list/paper_blacklist = list("script","frame","iframe","input","button","a","embed","object")
-
-#define shuttle_time_in_station 1800 // 3 minutes in the station
-#define shuttle_time_to_arrive 6000 // 10 minutes to arrive
-
-
-
- // MySQL configuration. You can also use the config/dbconfig.txt file.
-
-var/sqladdress = "localhost"
-var/sqlport = "3306"
-var/sqldb = "tgstation"
-var/sqllogin = "root"
-var/sqlpass = ""
-
- // Feedback gathering sql connection
-
-var/sqlfdbkdb = "test"
-var/sqlfdbklogin = "root"
-var/sqlfdbkpass = ""
-
-var/sqllogging = 0 // Should we log deaths, population stats, etc?
-
-
-
- // Forum MySQL configuration (for use with forum account/key authentication)
- // These are all default values that will load should the forumdbconfig.txt
- // file fail to read for whatever reason.
-
-/* forumsqladdress = "localhost"
- forumsqlport = "3306"
- forumsqldb = "tgstation"
- forumsqllogin = "root"
- forumsqlpass = ""
- forum_activated_group = "2"
- forum_authenticated_group = "10"*/
-
- // For FTP requests. (i.e. downloading runtime logs.)
- // However it'd be ok to use for accessing attack logs and such too, which are even laggier.
-var/fileaccess_timer = 1800 //Cannot access files by ftp until the game is finished setting up and stuff.
-
-// It turns out that /var/const can't handle lists, because lists use
-// an initializer. Sigh. That's no reason that we shouldn't make
-// actual "constant" lists explicit via naming convention and a
-// separate location, though, so: below are all lists that should not
-// ever be changed in code.
-
-/var/global/AI_VERB_LIST = list(
- /mob/living/silicon/ai/proc/ai_call_shuttle,
- /mob/living/silicon/ai/proc/show_laws_verb,
- /mob/living/silicon/ai/proc/ai_camera_track,
- /mob/living/silicon/ai/proc/ai_alerts,
- /mob/living/silicon/ai/proc/ai_camera_list,
- /mob/living/silicon/ai/proc/ai_network_change,
- /mob/living/silicon/ai/proc/ai_statuschange,
- /mob/living/silicon/ai/proc/ai_hologram_change,
- /mob/living/silicon/ai/proc/ai_roster,
- )
diff --git a/code/defines/obj/clothing/costume.dm b/code/defines/obj/clothing/costume.dm
deleted file mode 100644
index f6015a345b0..00000000000
--- a/code/defines/obj/clothing/costume.dm
+++ /dev/null
@@ -1,139 +0,0 @@
-//Costume spawner
-
-/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears
-
- var/list/options = typesof(/obj/effect/landmark/costume)
- var/PICK= options[rand(1,options.len)]
- new PICK(src.loc)
- del(src)
-
-//SUBCLASSES. Spawn a bunch of items and disappear likewise
-/obj/effect/landmark/costume/chicken/New()
- new /obj/item/clothing/suit/chickensuit(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/gladiator/New()
- new /obj/item/clothing/under/gladiator(src.loc)
- new /obj/item/clothing/head/helmet/gladiator(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/madscientist/New()
- new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
- new /obj/item/clothing/head/flatcap(src.loc)
- new /obj/item/clothing/suit/storage/labcoat/mad(src.loc)
- new /obj/item/clothing/glasses/gglasses(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/elpresidente/New()
- new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
- new /obj/item/clothing/head/flatcap(src.loc)
- new /obj/item/clothing/mask/cigarette/cigar/havana(src.loc)
- new /obj/item/clothing/shoes/jackboots(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/nyangirl/New()
- new /obj/item/clothing/under/schoolgirl(src.loc)
- new /obj/item/clothing/head/kitty(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/maid/New()
- new /obj/item/clothing/under/blackskirt(src.loc)
- var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
- new CHOICE(src.loc)
- new /obj/item/clothing/glasses/blindfold(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/butler/New()
- new /obj/item/clothing/suit/wcoat(src.loc)
- new /obj/item/clothing/under/suit_jacket(src.loc)
- new /obj/item/clothing/head/that(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/scratch/New()
- new /obj/item/clothing/gloves/white(src.loc)
- new /obj/item/clothing/shoes/white(src.loc)
- new /obj/item/clothing/under/scratch(src.loc)
- if (prob(30))
- new /obj/item/clothing/head/cueball(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/highlander/New()
- new /obj/item/clothing/under/kilt(src.loc)
- new /obj/item/clothing/head/beret(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/prig/New()
- new /obj/item/clothing/suit/wcoat(src.loc)
- new /obj/item/clothing/glasses/monocle(src.loc)
- var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that)
- new CHOICE(src.loc)
- new /obj/item/clothing/shoes/black(src.loc)
- new /obj/item/weapon/cane(src.loc)
- new /obj/item/clothing/under/sl_suit(src.loc)
- new /obj/item/clothing/mask/fakemoustache(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/plaguedoctor/New()
- new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc)
- new /obj/item/clothing/head/plaguedoctorhat(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/nightowl/New()
- new /obj/item/clothing/under/owl(src.loc)
- new /obj/item/clothing/mask/owl_mask(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/waiter/New()
- new /obj/item/clothing/under/waiter(src.loc)
- var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears)
- new CHOICE(src.loc)
- new /obj/item/clothing/suit/apron(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/pirate/New()
- new /obj/item/clothing/under/pirate(src.loc)
- new /obj/item/clothing/suit/pirate(src.loc)
- var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana )
- new CHOICE(src.loc)
- new /obj/item/clothing/glasses/eyepatch(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/commie/New()
- new /obj/item/clothing/under/soviet(src.loc)
- new /obj/item/clothing/head/ushanka(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/imperium_monk/New()
- new /obj/item/clothing/suit/imperium_monk(src.loc)
- if (prob(25))
- new /obj/item/clothing/mask/gas/cyborg(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/holiday_priest/New()
- new /obj/item/clothing/suit/holidaypriest(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/marisawizard/fake/New()
- new /obj/item/clothing/head/wizard/marisa/fake(src.loc)
- new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/fakewizard/New()
- new /obj/item/clothing/suit/wizrobe/fake(src.loc)
- new /obj/item/clothing/head/wizard/fake(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/sexyclown/New()
- new /obj/item/clothing/mask/gas/sexyclown(src.loc)
- new /obj/item/clothing/under/sexyclown(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/sexymime/New()
- new /obj/item/clothing/mask/gas/sexymime(src.loc)
- new /obj/item/clothing/under/sexymime(src.loc)
- del(src)
-
-///obj/effect/landmark/costume/hidden/master/New()
-// var/list/templist = list()
-// templist += src
-// for(var/obj/effect/landmark/costume/hidden/H in z1
\ No newline at end of file
diff --git a/code/defines/obj/costume.dm b/code/defines/obj/costume.dm
deleted file mode 100644
index f6015a345b0..00000000000
--- a/code/defines/obj/costume.dm
+++ /dev/null
@@ -1,139 +0,0 @@
-//Costume spawner
-
-/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears
-
- var/list/options = typesof(/obj/effect/landmark/costume)
- var/PICK= options[rand(1,options.len)]
- new PICK(src.loc)
- del(src)
-
-//SUBCLASSES. Spawn a bunch of items and disappear likewise
-/obj/effect/landmark/costume/chicken/New()
- new /obj/item/clothing/suit/chickensuit(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/gladiator/New()
- new /obj/item/clothing/under/gladiator(src.loc)
- new /obj/item/clothing/head/helmet/gladiator(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/madscientist/New()
- new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
- new /obj/item/clothing/head/flatcap(src.loc)
- new /obj/item/clothing/suit/storage/labcoat/mad(src.loc)
- new /obj/item/clothing/glasses/gglasses(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/elpresidente/New()
- new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
- new /obj/item/clothing/head/flatcap(src.loc)
- new /obj/item/clothing/mask/cigarette/cigar/havana(src.loc)
- new /obj/item/clothing/shoes/jackboots(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/nyangirl/New()
- new /obj/item/clothing/under/schoolgirl(src.loc)
- new /obj/item/clothing/head/kitty(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/maid/New()
- new /obj/item/clothing/under/blackskirt(src.loc)
- var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
- new CHOICE(src.loc)
- new /obj/item/clothing/glasses/blindfold(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/butler/New()
- new /obj/item/clothing/suit/wcoat(src.loc)
- new /obj/item/clothing/under/suit_jacket(src.loc)
- new /obj/item/clothing/head/that(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/scratch/New()
- new /obj/item/clothing/gloves/white(src.loc)
- new /obj/item/clothing/shoes/white(src.loc)
- new /obj/item/clothing/under/scratch(src.loc)
- if (prob(30))
- new /obj/item/clothing/head/cueball(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/highlander/New()
- new /obj/item/clothing/under/kilt(src.loc)
- new /obj/item/clothing/head/beret(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/prig/New()
- new /obj/item/clothing/suit/wcoat(src.loc)
- new /obj/item/clothing/glasses/monocle(src.loc)
- var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that)
- new CHOICE(src.loc)
- new /obj/item/clothing/shoes/black(src.loc)
- new /obj/item/weapon/cane(src.loc)
- new /obj/item/clothing/under/sl_suit(src.loc)
- new /obj/item/clothing/mask/fakemoustache(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/plaguedoctor/New()
- new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc)
- new /obj/item/clothing/head/plaguedoctorhat(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/nightowl/New()
- new /obj/item/clothing/under/owl(src.loc)
- new /obj/item/clothing/mask/owl_mask(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/waiter/New()
- new /obj/item/clothing/under/waiter(src.loc)
- var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears)
- new CHOICE(src.loc)
- new /obj/item/clothing/suit/apron(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/pirate/New()
- new /obj/item/clothing/under/pirate(src.loc)
- new /obj/item/clothing/suit/pirate(src.loc)
- var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana )
- new CHOICE(src.loc)
- new /obj/item/clothing/glasses/eyepatch(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/commie/New()
- new /obj/item/clothing/under/soviet(src.loc)
- new /obj/item/clothing/head/ushanka(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/imperium_monk/New()
- new /obj/item/clothing/suit/imperium_monk(src.loc)
- if (prob(25))
- new /obj/item/clothing/mask/gas/cyborg(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/holiday_priest/New()
- new /obj/item/clothing/suit/holidaypriest(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/marisawizard/fake/New()
- new /obj/item/clothing/head/wizard/marisa/fake(src.loc)
- new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/fakewizard/New()
- new /obj/item/clothing/suit/wizrobe/fake(src.loc)
- new /obj/item/clothing/head/wizard/fake(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/sexyclown/New()
- new /obj/item/clothing/mask/gas/sexyclown(src.loc)
- new /obj/item/clothing/under/sexyclown(src.loc)
- del(src)
-
-/obj/effect/landmark/costume/sexymime/New()
- new /obj/item/clothing/mask/gas/sexymime(src.loc)
- new /obj/item/clothing/under/sexymime(src.loc)
- del(src)
-
-///obj/effect/landmark/costume/hidden/master/New()
-// var/list/templist = list()
-// templist += src
-// for(var/obj/effect/landmark/costume/hidden/H in z1
\ No newline at end of file
diff --git a/code/defines/obj/door.dm b/code/defines/obj/door.dm
deleted file mode 100644
index 355cfeda644..00000000000
--- a/code/defines/obj/door.dm
+++ /dev/null
@@ -1,228 +0,0 @@
-/obj/machinery/door
- name = "Door"
- desc = "It opens and closes."
- icon = 'doorint.dmi'
- icon_state = "door1"
- opacity = 1
- density = 1
- layer = 2.7
- anchored = 1
- var/secondsElectrified = 0
- var/visible = 1
- var/p_open = 0
- var/operating = 0
- var/autoclose = 0
- var/glass = 0
- var/forcecrush = 0
- var/holdopen = 0
-
-
-/obj/machinery/door/firedoor
- name = "Firelock"
- desc = "Apply crowbar to open."
- icon = 'Doorfire.dmi'
- icon_state = "door0"
- var/blocked = null
- opacity = 0
- density = 0
- var/nextstate = null
-
-/obj/machinery/door/firedoor/border_only
- name = "Firelock"
- desc = "Apply crowbar to open."
- icon = 'door_fire2.dmi'
- icon_state = "door0"
-
-/obj/machinery/door/poddoor
- name = "Podlock"
- desc = "A type of powerful blast door."
- icon = 'rapid_pdoor.dmi'
- icon_state = "pdoor1"
- var/id = 1.0
- var/networkTag = ""
-
-/obj/machinery/door/poddoor/two_tile_hor
- var/obj/machinery/door/poddoor/filler_object/f1
- var/obj/machinery/door/poddoor/filler_object/f2
- icon = '1x2blast_hor.dmi'
-
- New()
- ..()
- f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
- f2 = new/obj/machinery/door/poddoor/filler_object (get_step(src,EAST))
- f1.density = density
- f2.density = density
- f1.sd_SetOpacity(opacity)
- f2.sd_SetOpacity(opacity)
-
- Del()
- del f1
- del f2
- ..()
-
-/obj/machinery/door/poddoor/two_tile_ver
- var/obj/machinery/door/poddoor/filler_object/f1
- var/obj/machinery/door/poddoor/filler_object/f2
- icon = '1x2blast_vert.dmi'
-
- New()
- ..()
- f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
- f2 = new/obj/machinery/door/poddoor/filler_object (get_step(src,NORTH))
- f1.density = density
- f2.density = density
- f1.sd_SetOpacity(opacity)
- f2.sd_SetOpacity(opacity)
-
- Del()
- del f1
- del f2
- ..()
-
-/obj/machinery/door/poddoor/four_tile_hor
- var/obj/machinery/door/poddoor/filler_object/f1
- var/obj/machinery/door/poddoor/filler_object/f2
- var/obj/machinery/door/poddoor/filler_object/f3
- var/obj/machinery/door/poddoor/filler_object/f4
- icon = '1x4blast_hor.dmi'
-
- New()
- ..()
- f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
- f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,EAST))
- f3 = new/obj/machinery/door/poddoor/filler_object (get_step(f2,EAST))
- f4 = new/obj/machinery/door/poddoor/filler_object (get_step(f3,EAST))
- f1.density = density
- f2.density = density
- f3.density = density
- f4.density = density
- f1.sd_SetOpacity(opacity)
- f2.sd_SetOpacity(opacity)
- f4.sd_SetOpacity(opacity)
- f3.sd_SetOpacity(opacity)
-
- Del()
- del f1
- del f2
- del f3
- del f4
- ..()
-
-/obj/machinery/door/poddoor/four_tile_ver
- var/obj/machinery/door/poddoor/filler_object/f1
- var/obj/machinery/door/poddoor/filler_object/f2
- var/obj/machinery/door/poddoor/filler_object/f3
- var/obj/machinery/door/poddoor/filler_object/f4
- icon = '1x4blast_vert.dmi'
-
- New()
- ..()
- f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
- f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,NORTH))
- f3 = new/obj/machinery/door/poddoor/filler_object (get_step(f2,NORTH))
- f4 = new/obj/machinery/door/poddoor/filler_object (get_step(f3,NORTH))
- f1.density = density
- f2.density = density
- f3.density = density
- f4.density = density
- f1.sd_SetOpacity(opacity)
- f2.sd_SetOpacity(opacity)
- f4.sd_SetOpacity(opacity)
- f3.sd_SetOpacity(opacity)
-
- Del()
- del f1
- del f2
- del f3
- del f4
- ..()
-
-/obj/machinery/door/poddoor/filler_object
- name = ""
- icon_state = ""
-
-/obj/machinery/door/window
- name = "interior door"
- desc = "A door made from a window, yet it can not break nor be depowered."
- icon = 'windoor.dmi'
- icon_state = "left"
- var/base_state = "left"
- visible = 0.0
- flags = ON_BORDER
- opacity = 0
-
-/obj/machinery/door/window/brigdoor
- name = "Brig Door"
- desc = "A stronger door made from window, even though it can not break."
- icon = 'windoor.dmi'
- icon_state = "leftsecure"
- base_state = "leftsecure"
- req_access = list(ACCESS_SECURITY)
- var/id = null
-
-
-/obj/machinery/door/window/northleft
- dir = NORTH
-
-/obj/machinery/door/window/eastleft
- dir = EAST
-
-/obj/machinery/door/window/westleft
- dir = WEST
-
-/obj/machinery/door/window/southleft
- dir = SOUTH
-
-/obj/machinery/door/window/northright
- dir = NORTH
- icon_state = "right"
- base_state = "right"
-
-/obj/machinery/door/window/eastright
- dir = EAST
- icon_state = "right"
- base_state = "right"
-
-/obj/machinery/door/window/westright
- dir = WEST
- icon_state = "right"
- base_state = "right"
-
-/obj/machinery/door/window/southright
- dir = SOUTH
- icon_state = "right"
- base_state = "right"
-
-
-/obj/machinery/door/window/brigdoor/northleft
- dir = NORTH
-
-/obj/machinery/door/window/brigdoor/eastleft
- dir = EAST
-
-/obj/machinery/door/window/brigdoor/westleft
- dir = WEST
-
-/obj/machinery/door/window/brigdoor/southleft
- dir = SOUTH
-
-/obj/machinery/door/window/brigdoor/northright
- dir = NORTH
- icon_state = "rightsecure"
- base_state = "rightsecure"
-
-/obj/machinery/door/window/brigdoor/eastright
- dir = EAST
- icon_state = "rightsecure"
- base_state = "rightsecure"
-
-/obj/machinery/door/window/brigdoor/westright
- dir = WEST
- icon_state = "rightsecure"
- base_state = "rightsecure"
-
-/obj/machinery/door/window/brigdoor/southright
- dir = SOUTH
- icon_state = "rightsecure"
- base_state = "rightsecure"
-
diff --git a/code/defines/obj/storage.dm b/code/defines/obj/storage.dm
deleted file mode 100644
index bb9783f1aee..00000000000
--- a/code/defines/obj/storage.dm
+++ /dev/null
@@ -1,586 +0,0 @@
-/obj/item/weapon/storage/backpack
- name = "backpack"
- desc = "You wear this on your back and put items into it."
- icon_state = "backpack"
- item_state = "backpack"
- w_class = 4.0
- flags = FPRINT|TABLEPASS
- slot_flags = SLOT_BACK //ERROOOOO
- max_w_class = 3
- max_combined_w_class = 21
-
-/obj/item/weapon/storage/backpack/cultpack
- name = "trophy rack"
- desc = "It's useful for both carrying extra gear and proudly declaring your insanity."
- icon_state = "cultpack"
-
-/*
-/obj/item/weapon/storage/lbe
- name = "Load Bearing Equipment"
- desc = "You wear these on your thighs, they help carry heavy loads."
- icon_state = "backpack" //PLACEHOLDER
- w_class = 2.0
- max_combined_w_class = 17
-*/
-
-/obj/item/weapon/storage/pill_bottle
- name = "pill bottle"
- desc = "It's an airtight container for storing medication."
- icon_state = "pill_canister"
- icon = 'icons/obj/chemical.dmi'
- item_state = "contsolid"
- w_class = 2.0
- can_hold = list("/obj/item/weapon/reagent_containers/pill")
- var/mode = 1 // pickup mode
-
-/obj/item/weapon/storage/dice
- name = "pack of dice"
- desc = "It's a small container with dice inside."
- icon_state = "pill_canister"
- icon = 'icons/obj/chemical.dmi'
- item_state = "contsolid"
- w_class = 2.0
- can_hold = list("/obj/item/weapon/dice")
-
-/obj/item/weapon/storage/box
- name = "box"
- desc = "It's just an ordinary box."
- icon_state = "box"
- item_state = "syringe_kit"
-
-/obj/item/weapon/storage/box/engineer
-
-/obj/item/weapon/storage/box/syndicate
-
-/obj/item/weapon/storage/cupbox
- name = "box of paper cups"
- desc = "It has pictures of paper cups on the front."
- icon_state = "box"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
- New()
- ..()
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
-
-/obj/item/weapon/storage/pillbottlebox
- name = "box of pill bottles"
- desc = "It has pictures of pill bottles on its front."
- icon_state = "pillbox"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/blankbox
- name = "box of blank shells"
- desc = "It has a picture of a gun and several warning symbols on the front."
- icon_state = "box"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/backpack/clown
- name = "Giggles Von Honkerton"
- desc = "It's a backpack made by Honk! Co."
- icon_state = "clownpack"
- item_state = "clownpack"
-
-/obj/item/weapon/storage/backpack/medic
- name = "medical backpack"
- desc = "It's a backpack especially designed for use in a sterile environment."
- icon_state = "medicalpack"
- item_state = "medicalpack"
-
-/obj/item/weapon/storage/backpack/security
- name = "security backpack"
- desc = "It's a very robust backpack."
- icon_state = "securitypack"
- item_state = "securitypack"
-
-/obj/item/weapon/storage/backpack/captain
- name = "captain's backpack"
- desc = "It's a special backpack made exclusively for Nanotrasen officers."
- icon_state = "captainpack"
- item_state = "captainpack"
-
-/obj/item/weapon/storage/backpack/satchel
- name = "leather satchel"
- desc = "It's a very fancy satchel made with fine leather."
- icon_state = "satchel"
-
-/obj/item/weapon/storage/backpack/satchel/withwallet
- New()
- ..()
- new /obj/item/weapon/storage/wallet/random( src )
-
-// Belt Bags/Satchels
-
-/obj/item/weapon/storage/backpack/satchel_norm
- name = "satchel"
- desc = "A trendy looking satchel."
- icon_state = "satchel-norm"
-
-/obj/item/weapon/storage/backpack/satchel_eng
- name = "industrial satchel"
- desc = "A tough satchel with extra pockets."
- icon_state = "satchel-eng"
- item_state = "engiepack"
-
-/obj/item/weapon/storage/backpack/satchel_med
- name = "medical satchel"
- desc = "A sterile satchel used in medical departments."
- icon_state = "satchel-med"
- item_state = "medicalpack"
-
-/obj/item/weapon/storage/backpack/satchel_vir
- name = "virologist satchel"
- desc = "A sterile satchel with virologist colours."
- icon_state = "satchel-vir"
-
-/obj/item/weapon/storage/backpack/satchel_chem
- name = "chemist satchel"
- desc = "A sterile satchel with chemist colours."
- icon_state = "satchel-chem"
-
-/obj/item/weapon/storage/backpack/satchel_gen
- name = "geneticist satchel"
- desc = "A sterile satchel with geneticist colours."
- icon_state = "satchel-gen"
-
-/obj/item/weapon/storage/backpack/satchel_tox
- name = "scientist satchel"
- desc = "Useful for holding research materials."
- icon_state = "satchel-tox"
-
-/obj/item/weapon/storage/backpack/satchel_sec
- name = "security satchel"
- desc = "A robust satchel for security related needs."
- icon_state = "satchel-sec"
- item_state = "securitypack"
-
-/obj/item/weapon/storage/backpack/satchel_hyd
- name = "hydroponics satchel"
- desc = "A green satchel for plant related work."
- icon_state = "satchel_hyd"
-
-/obj/item/weapon/storage/backpack/satchel_cap
- name = "captain's satchel"
- desc = "An exclusive satchel for Nanotrasen officers."
- icon_state = "satchel-cap"
- item_state = "captainpack"
-
-/obj/item/weapon/storage/backpack/industrial
- name = "industrial backpack"
- desc = "It's a tough backpack for the daily grind of station life."
- icon_state = "engiepack"
- item_state = "engiepack"
-
-/obj/item/weapon/storage/briefcase
- name = "briefcase"
- desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
- icon_state = "briefcase"
- flags = FPRINT | TABLEPASS| CONDUCT
- force = 8.0
- throw_speed = 1
- throw_range = 4
- w_class = 4.0
- max_w_class = 3
- max_combined_w_class = 16
-
-/obj/item/weapon/storage/wallet
- name = "wallet"
- desc = "It can hold a few small and personal things."
- storage_slots = 4
- icon_state = "wallet"
- w_class = 2
- can_hold = list(
- "/obj/item/weapon/spacecash",
- "/obj/item/weapon/card",
- "/obj/item/clothing/mask/cigarette",
- "/obj/item/device/flashlight/pen",
- "/obj/item/seeds",
- "/obj/item/stack/medical",
- "/obj/item/toy/crayon",
- "/obj/item/weapon/coin",
- "/obj/item/weapon/dice",
- "/obj/item/weapon/disk",
- "/obj/item/weapon/implanter",
- "/obj/item/weapon/lighter",
- "/obj/item/weapon/match",
- "/obj/item/weapon/paper",
- "/obj/item/weapon/pen",
- "/obj/item/weapon/photo",
- "/obj/item/weapon/reagent_containers/dropper",
- "/obj/item/weapon/screwdriver",
- "/obj/item/weapon/stamp")
-
- attackby(obj/item/A as obj, mob/user as mob)
- ..()
- update_icon()
- return
-
- update_icon()
- for(var/obj/item/weapon/card/id/ID in contents)
- switch(ID.icon_state)
- if("id")
- icon_state = "walletid"
- return
- if("silver")
- icon_state = "walletid_silver"
- return
- if("gold")
- icon_state = "walletid_gold"
- return
- if("centcom")
- icon_state = "walletid_centcom"
- return
- icon_state = "wallet"
-
-
-
- proc/get_id()
- for(var/obj/item/weapon/card/id/ID in contents)
- if(istype(ID))
- return ID
-
-/obj/item/weapon/storage/wallet/random/New()
- ..()
- var/item1_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500)
- var/item2_type
- if(prob(50))
- item2_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500)
- var/item3_type = pick( /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/gold, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron )
-
- spawn(2)
- if(item1_type)
- new item1_type(src)
- if(item2_type)
- new item2_type(src)
- if(item3_type)
- new item3_type(src)
-
-
-/obj/item/weapon/storage/disk_kit
- name = "box of data disks"
- desc = "It has a picture of a data disk on it."
- icon_state = "id"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/disk_kit/disks
-
-/obj/item/weapon/storage/disk_kit/disks2
-
-/obj/item/weapon/storage/fcard_kit
- name = "box of fingerprint cards"
- desc = "It has a picture of a fingerprint on each of its faces."
- icon_state = "id"
- item_state = "syringe_kit"
-
-/obj/item/weapon/storage/firstaid
- name = "first-aid kit"
- desc = "It's an emergency medical kit for those serious boo-boos."
- icon_state = "firstaid"
- throw_speed = 2
- throw_range = 8
- var/empty = 0
-
-/obj/item/weapon/storage/firstaid/fire
- name = "fire first-aid kit"
- desc = "It's an emergency medical kit for when the toxins lab -spontaneously- burns down."
- icon_state = "ointment"
- item_state = "firstaid-ointment"
-
-/obj/item/weapon/storage/firstaid/regular
- icon_state = "firstaid"
-
-/obj/item/weapon/storage/syringes
- name = "syringes"
- desc = "A box full of syringes."
- desc = "A biohazard alert warning is printed on the box"
- icon_state = "syringe"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/firstaid/toxin
- name = "toxin first aid"
- desc = "Used to treat when you have a high amoutn of toxins in your body."
- icon_state = "antitoxin"
- item_state = "firstaid-toxin"
-
-/obj/item/weapon/storage/firstaid/o2
- name = "oxygen deprivation first aid"
- desc = "A box full of oxygen goodies."
- icon_state = "o2"
- item_state = "firstaid-o2"
-
-/obj/item/weapon/storage/flashbang_kit
- name = "flashbangs (WARNING)"
- desc = "WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use."
- icon_state = "flashbang"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/emp_kit
- name = "emp grenades"
- desc = "A box with 5 emp grenades."
- icon_state = "flashbang"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/gl_kit
- name = "Prescription Glasses"
- desc = "This box contains nerd glasses."
- icon_state = "glasses"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/seccart_kit
- name = "Spare R.O.B.U.S.T. Cartridges"
- desc = "A box full of R.O.B.U.S.T. Cartridges, used by Security."
- icon = 'icons/obj/pda.dmi'
- icon_state = "pdabox"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/handcuff_kit
- name = "Spare Handcuffs"
- desc = "A box full of handcuffs."
- icon_state = "handcuff"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/id_kit
- name = "Spare IDs"
- desc = "Has so many empty IDs."
- icon_state = "id"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/lglo_kit
- name = "Latex Gloves"
- desc = "Contains white gloves."
- icon_state = "latex"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/injectbox
- name = "DNA-Injectors"
- desc = "This box contains injectors it seems."
- icon_state = "box"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/stma_kit
- name = "Sterile Masks"
- desc = "This box contains masks of sterility."
- icon_state = "sterile"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/trackimp_kit
- name = "Tracking Implant Kit"
- desc = "Box full of scum-bag tracking utensils."
- icon_state = "implant"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/chemimp_kit
- name = "Chemical Implant Kit"
- desc = "Box of stuff used to implant chemicals."
- icon_state = "implant"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/toolbox
- name = "toolbox"
- desc = "Danger. Very robust."
- icon = 'icons/obj/storage.dmi'
- icon_state = "red"
- item_state = "toolbox_red"
- flags = FPRINT | TABLEPASS| CONDUCT
- force = 5.0
- throwforce = 10.0
- throw_speed = 1
- throw_range = 7
- w_class = 4.0
- origin_tech = "combat=1"
- attack_verb = list("robusted")
-
-/obj/item/weapon/storage/toolbox/emergency
- name = "emergency toolbox"
- icon_state = "red"
- item_state = "toolbox_red"
-
-/obj/item/weapon/storage/toolbox/mechanical
- name = "mechanical toolbox"
- icon_state = "blue"
- item_state = "toolbox_blue"
-
-/obj/item/weapon/storage/toolbox/electrical
- name = "electrical toolbox"
- icon_state = "yellow"
- item_state = "toolbox_yellow"
-
-/obj/item/weapon/storage/toolbox/syndicate
- name = "suspicious looking toolbox"
- icon_state = "syndicate"
- item_state = "toolbox_syndi"
- origin_tech = "combat=1;syndicate=1"
- force = 7.0
-
-/obj/item/weapon/storage/bible
- name = "bible"
- desc = "A holy book." //BS12 EDIT
- icon_state ="bible"
- throw_speed = 1
- throw_range = 5
- w_class = 3.0
- flags = FPRINT | TABLEPASS
- var/mob/affecting = null
- var/deity_name = "Christ"
-
-/obj/item/weapon/storage/bible/booze
- name = "bible"
- desc = "A holy book. Smells faintly of alcohol" //BS12 EDIT
-
-/obj/item/weapon/storage/mousetraps
- name = "box of Pest-B-Gon Mousetraps"
- desc = "WARNING: Keep out of reach of children."
- icon_state = "mousetraps"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/donkpocket_kit
- name = "box of donk-pockets"
- desc = "Instructions: Heat in microwave. Product will cool if not eaten within seven minutes."
- icon_state = "donk_kit"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/condimentbottles
- name = "box of condiment bottles"
- desc = "It has a large ketchup smear on it."
- icon_state = "box"
- item_state = "syringe_kit"
- foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
-
-/obj/item/weapon/storage/drinkingglasses
- name = "box of drinking glasses"
- desc = "It has a picture of drinking glasses on it."
- icon_state = "box"
- item_state = "syringe_kit"
-
-
-
-
-/obj/structure/closet/syndicate/resources/
- desc = "An old, dusty locker."
-
-/obj/structure/closet/syndicate/resources/New()
- ..()
- var/common_min = 30 //Minimum amount of minerals in the stack for common minerals
- var/common_max = 50 //Maximum amount of HONK in the stack for HONK common minerals
- var/rare_min = 5 //Minimum HONK of HONK in the stack HONK HONK rare minerals
- var/rare_max = 20 //Maximum HONK HONK HONK in the HONK for HONK rare HONK
-
-
- sleep(2)
-
- var/pickednum = rand(1, 50)
-
- //Sad trombone
- if(pickednum == 1)
- var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src)
- P.name = "IOU"
- P.info = "Sorry man, we needed the money so we sold your stash. It's ok, we'll double our money for sure this time!"
-
- //Metal (common ore)
- if(pickednum >= 2)
- new /obj/item/stack/sheet/metal(src, rand(common_min, common_max))
-
- //Glass (common ore)
- if(pickednum >= 5)
- new /obj/item/stack/sheet/glass(src, rand(common_min, common_max))
-
- //Plasteel (common ore) Because it has a million more uses then plasma
- if(pickednum >= 10)
- new /obj/item/stack/sheet/plasteel(src, rand(common_min, common_max))
-
- //Plasma (rare ore)
- if(pickednum >= 15)
- new /obj/item/stack/sheet/mineral/plasma(src, rand(rare_min, rare_max))
-
- //Silver (rare ore)
- if(pickednum >= 20)
- new /obj/item/stack/sheet/mineral/silver(src, rand(rare_min, rare_max))
-
- //Gold (rare ore)
- if(pickednum >= 30)
- new /obj/item/stack/sheet/mineral/gold(src, rand(rare_min, rare_max))
-
- //Uranium (rare ore)
- if(pickednum >= 40)
- new /obj/item/stack/sheet/mineral/uranium(src, rand(rare_min, rare_max))
-
- //Diamond (rare HONK)
- if(pickednum >= 45)
- new /obj/item/stack/sheet/mineral/diamond(src, rand(rare_min, rare_max))
-
- //Jetpack (You hit the jackpot!)
- if(pickednum == 50)
- new /obj/item/weapon/tank/jetpack/carbondioxide(src)
-
- return
-
-/obj/structure/closet/syndicate/resources/everything
- desc = "It's an emergency storage closet for repairs."
-
-/obj/structure/closet/syndicate/resources/everything/New()
-
-
- var/list/resources = list(
-
- /obj/item/stack/sheet/metal,
- /obj/item/stack/sheet/glass,
- /obj/item/stack/sheet/mineral/gold,
- /obj/item/stack/sheet/mineral/silver,
- /obj/item/stack/sheet/mineral/plasma,
- /obj/item/stack/sheet/mineral/uranium,
- /obj/item/stack/sheet/mineral/diamond,
- /obj/item/stack/sheet/mineral/clown,
- /obj/item/stack/sheet/plasteel,
- /obj/item/stack/rods
-
- )
-
- sleep(2)
-
- for(var/i = 0, i<2, i++)
- for(var/res in resources)
- var/obj/item/stack/R = new res(src)
- R.amount = R.max_amount
-
- return
-
-
-/obj/item/weapon/storage/satchel
- name = "Mining Satchel"
- desc = "This little bugger can be used to store and transport ores."
- icon = 'icons/obj/mining.dmi'
- icon_state = "satchel"
- slot_flags = SLOT_BELT | SLOT_POCKET
- w_class = 3
- storage_slots = 50
- max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class
- use_to_pickup = 1
- max_w_class = 3
- display_contents_with_number = 1
- allow_quick_empty = 1
- allow_quick_gather = 1
-
- can_hold = list(
- "/obj/item/weapon/ore"
- )
\ No newline at end of file
diff --git a/code/defines/obj/vending.dm b/code/defines/obj/vending.dm
deleted file mode 100755
index efd1d0b5bd6..00000000000
--- a/code/defines/obj/vending.dm
+++ /dev/null
@@ -1,334 +0,0 @@
-/obj/machinery/vending
- name = "Vendomat"
- desc = "A generic vending machine."
- icon = 'icons/obj/vending.dmi'
- icon_state = "generic"
- layer = 2.9
- anchored = 1
- density = 1
- var/active = 1 //No sales pitches if off!
- var/vend_ready = 1 //Are we ready to vend?? Is it time??
- var/vend_delay = 10 //How long does it take to vend?
- var/product_paths = "" //String of product paths separated by semicolons. No spaces!
- var/product_amounts = "" //String of product amounts separated by semicolons, must have amount for every path in product_paths
- var/product_slogans = "" //String of slogans separated by semicolons, optional
- var/product_ads = "" //String of small ad messages in the vending screen - random chance
- var/product_hidden = "" //String of products that are hidden unless hacked.
- var/product_hideamt = "" //String of hidden product amounts, separated by semicolons. Exact same as amounts. Must be left blank if hidden is.
- var/product_coin = ""
- var/product_coin_amt = ""
- var/list/product_records = list()
- var/list/hidden_records = list()
- var/list/coin_records = list()
- var/list/slogan_list = list()
- var/list/small_ads = list() // small ad messages in the vending screen - random chance of popping up whenever you open it
- var/vend_reply //Thank you for shopping!
- var/last_reply = 0
- var/last_slogan = 0 //When did we last pitch?
- var/slogan_delay = 6000 //How long until we can pitch again?
- var/icon_vend //Icon_state when vending!
- var/icon_deny //Icon_state when vending!
- //var/emagged = 0 //Ignores if somebody doesn't have card access to that machine.
- var/seconds_electrified = 0 //Shock customers like an airlock.
- var/shoot_inventory = 0 //Fire items at customers! We're broken!
- var/shut_up = 1 //Stop spouting those godawful pitches!
- var/extended_inventory = 0 //can we access the hidden inventory?
- var/panel_open = 0 //Hacking that vending machine. Gonna get a free candy bar.
- var/wires = 15
- var/obj/item/weapon/coin/coin
-
-/*
-
-/obj/machinery/vending/[vendors name here] // --vending machine template :)
- name = ""
- desc = ""
- icon = ''
- icon_state = ""
- product_paths = ""
- product_amounts = ""
- vend_delay = 15
- product_hidden = ""
- product_hideamt = ""
- product_slogans = ""
- product_ads = ""
-
-*/
-
-/*
-/obj/machinery/vending/atmospherics //Commenting this out until someone ponies up some actual working, broken, and unpowered sprites - Quarxink
- name = "Tank Vendor"
- desc = "A vendor with a wide variety of masks and gas tanks."
- icon = 'icons/obj/objects.dmi'
- icon_state = "dispenser"
- product_paths = "/obj/item/weapon/tank/oxygen;/obj/item/weapon/tank/plasma;/obj/item/weapon/tank/emergency_oxygen;/obj/item/weapon/tank/emergency_oxygen/engi;/obj/item/clothing/mask/breath"
- product_amounts = "10;10;10;5;25"
- vend_delay = 0
-*/
-
-/obj/machinery/vending/boozeomat
- name = "Booze-O-Mat"
- desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one."
- icon_state = "boozeomat" //////////////18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles
- icon_deny = "boozeomat-deny"
- product_paths = "/obj/item/weapon/reagent_containers/food/drinks/bottle/gin;/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey;/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla;/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka;/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth;/obj/item/weapon/reagent_containers/food/drinks/bottle/rum;/obj/item/weapon/reagent_containers/food/drinks/bottle/wine;/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac;/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua;/obj/item/weapon/reagent_containers/food/drinks/beer;/obj/item/weapon/reagent_containers/food/drinks/ale;/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice;/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice;/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice;/obj/item/weapon/reagent_containers/food/drinks/bottle/cream;/obj/item/weapon/reagent_containers/food/drinks/tonic;/obj/item/weapon/reagent_containers/food/drinks/cola;/obj/item/weapon/reagent_containers/food/drinks/sodawater;/obj/item/weapon/reagent_containers/food/drinks/drinkingglass;/obj/item/weapon/reagent_containers/food/drinks/ice"
- product_amounts = "5;5;5;5;5;5;5;5;5;6;6;4;4;4;4;8;8;15;30;9"
- vend_delay = 15
- product_hidden = "/obj/item/weapon/reagent_containers/food/drinks/tea"
- product_hideamt = "10"
- product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?"
- product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!"
- req_access_txt = "25"
-
-/obj/machinery/vending/assist
- product_amounts = "5;3;4;1;4"
- product_hidden = "/obj/item/device/flashlight;obj/item/device/assembly/timer"
- product_paths = "/obj/item/device/assembly/prox_sensor;/obj/item/device/assembly/igniter;/obj/item/device/assembly/signaler;/obj/item/weapon/wirecutters;/obj/item/weapon/cartridge/signal"
- product_hideamt = "5;2"
- product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!"
-
-/obj/machinery/vending/coffee
- name = "Hot Drinks machine"
- desc = "A vending machine which dispenses hot drinks."
- icon_state = "coffee"
- icon_vend = "coffee-vend"
- product_paths = "/obj/item/weapon/reagent_containers/food/drinks/coffee;/obj/item/weapon/reagent_containers/food/drinks/tea;/obj/item/weapon/reagent_containers/food/drinks/h_chocolate"
- product_amounts = "25;25;25"
- vend_delay = 34
- product_hidden = "/obj/item/weapon/reagent_containers/food/drinks/ice"
- product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies"
- product_hideamt = "10"
-
-/obj/machinery/vending/snack
- name = "Getmore Chocolate Corp"
- desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars"
- icon_state = "snack"
- product_paths = "/obj/item/weapon/reagent_containers/food/snacks/candy;/obj/item/weapon/reagent_containers/food/drinks/dry_ramen;/obj/item/weapon/reagent_containers/food/snacks/chips;/obj/item/weapon/reagent_containers/food/snacks/sosjerky;/obj/item/weapon/reagent_containers/food/snacks/no_raisin;/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie;/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers"
- product_amounts = "6;6;6;6;6;6;6"
- product_slogans = "Try our new nougat bar!;Twice the calories for half the price!"
- product_hidden = "/obj/item/weapon/reagent_containers/food/snacks/syndicake"
- product_hideamt = "6"
- product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!"
-
-
-/obj/machinery/vending/cola
- name = "Robust Softdrinks"
- desc = "A softdrink vendor provided by Robust Industries, LLC."
- icon_state = "Cola_Machine"
- product_paths = "/obj/item/weapon/reagent_containers/food/drinks/cola;/obj/item/weapon/reagent_containers/food/drinks/space_mountain_wind;/obj/item/weapon/reagent_containers/food/drinks/dr_gibb;/obj/item/weapon/reagent_containers/food/drinks/starkist;/obj/item/weapon/reagent_containers/food/drinks/space_up"
- product_amounts = "10;10;10;10;10"
- product_slogans = "Robust Softdrinks: More robust than a toolbox to the head!"
- product_hidden = "/obj/item/weapon/reagent_containers/food/drinks/thirteenloko"
- product_hideamt = "5"
- product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space."
-
-//This one's from bay12
-/obj/machinery/vending/cart
- name = "PTech"
- desc = "Cartridges for PDAs"
- icon_state = "cart"
- icon_deny = "cart-deny"
- product_paths = "/obj/item/weapon/cartridge/medical;/obj/item/weapon/cartridge/engineering;/obj/item/weapon/cartridge/security;/obj/item/weapon/cartridge/janitor;/obj/item/weapon/cartridge/signal/toxins;/obj/item/device/pda/heads;/obj/item/weapon/cartridge/captain;/obj/item/weapon/cartridge/quartermaster"
- product_amounts = "10;10;10;10;10;10;3;10"
- product_slogans = "Carts to go!"
- product_hidden = ""
- product_hideamt = ""
- product_coin = ""
- product_coin_amt = ""
-
-/obj/machinery/vending/cigarette
- name = "Cigarette machine" //OCD had to be uppercase to look nice with the new formating
- desc = "If you want to get cancer, might as well do it in style"
- icon_state = "cigs"
- product_paths = "/obj/item/weapon/cigpacket;/obj/item/weapon/storage/matchbox;/obj/item/weapon/lighter/random"
- product_amounts = "10;10;4"
- product_slogans = "Space cigs taste good like a cigarette should.;I'd rather toolbox than switch.;Smoke!;Don't believe the reports - smoke today!"
- vend_delay = 34
- product_hidden = "/obj/item/weapon/lighter/zippo"
- product_hideamt = "4"
- product_coin = "/obj/item/clothing/mask/cigarette/cigar/havana"
- product_coin_amt = "2"
- product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs."
-
-/obj/machinery/vending/medical
- name = "NanoMed Plus"
- desc = "Medical drug dispenser."
- icon_state = "med"
- icon_deny = "med-deny"
- req_access_txt = "5"
- product_paths = "/obj/item/weapon/reagent_containers/glass/bottle/antitoxin;/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline;/obj/item/weapon/reagent_containers/glass/bottle/stoxin;/obj/item/weapon/reagent_containers/glass/bottle/toxin;/obj/item/weapon/reagent_containers/syringe/antiviral;/obj/item/weapon/reagent_containers/syringe;/obj/item/device/healthanalyzer;/obj/item/weapon/reagent_containers/glass/beaker;/obj/item/weapon/reagent_containers/dropper"
- product_amounts = "4;4;4;4;4;12;5;4;2"
- product_hidden = "/obj/item/weapon/reagent_containers/pill/tox;/obj/item/weapon/reagent_containers/pill/stox;/obj/item/weapon/reagent_containers/pill/antitox"
- product_hideamt = "3;4;6"
- product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!"
-
-//This one's from bay12
-/obj/machinery/vending/plasmaresearch
- name = "Toximate 3000"
- desc = "All the fine parts you need in one vending machine!"
- product_paths = "/obj/item/clothing/under/rank/scientist;/obj/item/clothing/suit/bio_suit;/obj/item/clothing/head/bio_hood;/obj/item/device/transfer_valve;/obj/item/device/assembly/signaler;/obj/item/device/assembly/prox_sensor;/obj/item/device/assembly/igniter;/obj/item/device/assembly/timer"
- product_amounts = "6;6;6;6;6"
- product_hidden = ""
- product_hideamt = ""
- product_coin = ""
- product_coin_amt = ""
-
-/obj/machinery/vending/wallmed1
- name = "NanoMed"
- desc = "Wall-mounted Medical Equipment dispenser."
- icon_state = "wallmed"
- icon_deny = "wallmed-deny"
- req_access_txt = "5"
- product_paths = "/obj/item/stack/medical/bruise_pack;/obj/item/stack/medical/ointment;/obj/item/weapon/reagent_containers/syringe/inaprovaline;/obj/item/device/healthanalyzer"
- product_amounts = "2;2;4;1"
- product_hidden = "/obj/item/weapon/reagent_containers/syringe/antitoxin;/obj/item/weapon/reagent_containers/syringe/antiviral;/obj/item/weapon/reagent_containers/pill/tox"
- product_hideamt = "4;4;1"
- density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude
- product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?"
-
-/obj/machinery/vending/wallmed2
- name = "NanoMed"
- desc = "Wall-mounted Medical Equipment dispenser."
- icon_state = "wallmed"
- icon_deny = "wallmed-deny"
- req_access_txt = "5"
- product_paths = "/obj/item/weapon/reagent_containers/syringe/inaprovaline;/obj/item/weapon/reagent_containers/syringe/antitoxin;/obj/item/stack/medical/bruise_pack;/obj/item/stack/medical/ointment;/obj/item/device/healthanalyzer"
- product_amounts = "5;3;3;3;3"
- product_hidden = "/obj/item/weapon/reagent_containers/pill/tox"
- product_hideamt = "3"
- density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude
-
-/obj/machinery/vending/security
- name = "SecTech"
- desc = "A security equipment vendor"
- icon_state = "sec"
- icon_deny = "sec-deny"
- req_access_txt = "1"
- product_paths = "/obj/item/weapon/handcuffs;/obj/item/weapon/grenade/flashbang;/obj/item/device/flash;/obj/item/weapon/reagent_containers/food/snacks/donut/normal;/obj/item/weapon/storage/box/evidence"
- product_amounts = "8;4;5;12;6"
- product_hidden = "/obj/item/clothing/glasses/sunglasses;/obj/item/weapon/storage/fancy/donut_box"
- product_hideamt = "2;2"
- product_ads = "Crack capitalist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?"
-
-/obj/machinery/vending/hydronutrients
- name = "NutriMax"
- desc = "A plant nutrients vendor"
- icon_state = "nutri"
- icon_deny = "nutri-deny"
- product_paths = "/obj/item/nutrient/ez;/obj/item/nutrient/l4z;/obj/item/nutrient/rh;/obj/item/weapon/pestspray;/obj/item/weapon/reagent_containers/syringe;/obj/item/weapon/plantbag;/obj/item/weapon/seedbag"
- product_amounts = "35;25;15;20;5;5;5"
- product_slogans = "Aren't you glad you don't have to fertilize the natural way?;Now with 50% less stink!;Plants are people too!"
- product_hidden = "/obj/item/weapon/reagent_containers/glass/bottle/ammonia;/obj/item/weapon/reagent_containers/glass/bottle/diethylamine"
- product_hideamt = "10;5"
- product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..."
-
-/obj/machinery/vending/hydroseeds
- name = "MegaSeed Servitor"
- desc = "When you need seeds fast!"
- icon_state = "seeds"
- product_paths = "/obj/item/seeds/bananaseed;/obj/item/seeds/berryseed;/obj/item/seeds/carrotseed;/obj/item/seeds/chantermycelium;/obj/item/seeds/chiliseed;/obj/item/seeds/cornseed;/obj/item/seeds/eggplantseed;/obj/item/seeds/potatoseed;/obj/item/seeds/replicapod;/obj/item/seeds/soyaseed;/obj/item/seeds/sunflowerseed;/obj/item/seeds/tomatoseed;/obj/item/seeds/towermycelium;/obj/item/seeds/wheatseed;/obj/item/seeds/appleseed;/obj/item/seeds/poppyseed;/obj/item/seeds/ambrosiavulgarisseed;/obj/item/seeds/whitebeetseed;/obj/item/seeds/watermelonseed;/obj/item/seeds/limeseed;/obj/item/seeds/lemonseed;/obj/item/seeds/orangeseed;/obj/item/seeds/grassseed;/obj/item/seeds/cocoapodseed;/obj/item/seeds/cabbageseed;/obj/item/seeds/grapeseed;/obj/item/seeds/pumpkinseed;/obj/item/seeds/cherryseed"
- product_amounts = "3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3"
- product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!"
- product_hidden = "/obj/item/seeds/amanitamycelium;/obj/item/seeds/glowshroom;/obj/item/seeds/libertymycelium;/obj/item/seeds/nettleseed;/obj/item/seeds/plumpmycelium;/obj/item/seeds/reishimycelium"
- product_hideamt = "2;2;2;2;2;2"
- product_coin = "/obj/item/toy/waterflower"
- product_coin_amt = "1"
- product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!"
-
-/obj/machinery/vending/liquid
- name = "LiquidRation Dispenser"
- desc = "All the food you'll ever need to survive!"
- icon_state = "liquidfood"
- product_paths = "/obj/item/weapon/reagent_containers/food/snacks/liquidfood;/obj/item/weapon/flavor/red;/obj/item/weapon/flavor/blue"
- product_amounts = "20;10;10"
- product_slogans = "Enjoy your NanoTrasen \"LiquidFood\" Ration! Now with a choice of TWO delicious flavors!"
- product_ads = "Think of it as free survival!;It's even healthy!;Take a quick break, enjoy your ration!"
-
-/obj/machinery/vending/magivend
- name = "MagiVend"
- desc = "A magic vending machine."
- icon_state = "MagiVend"
- product_amounts = "1;1;1;1;1;2"
- product_slogans = "Sling spells the proper way with MagiVend!;Be your own Houdini! Use MagiVend!"
- product_paths = "/obj/item/clothing/head/wizard;/obj/item/clothing/suit/wizrobe;/obj/item/clothing/head/wizard/red;/obj/item/clothing/suit/wizrobe/red;/obj/item/clothing/shoes/sandal;/obj/item/weapon/staff"
- vend_delay = 15
- vend_reply = "Have an enchanted evening!"
- product_hidden = "/obj/item/weapon/reagent_containers/glass/bottle/wizarditis" //No one can get to the machine to hack it anyways
- product_hideamt = "1" //Just one, for the lulz, not like anyone can get it - Microwave
- product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!"
-
-/obj/machinery/vending/dinnerware
- name = "Dinnerware"
- desc = "A kitchen and restaurant equipment vendor"
- icon_state = "dinnerware"
- product_paths = "/obj/item/weapon/tray;/obj/item/weapon/kitchen/utensil/fork;/obj/item/weapon/kitchenknife;/obj/item/weapon/reagent_containers/food/drinks/drinkingglass;/obj/item/clothing/suit/chef/classic"
- product_amounts = "8;6;3;8;2"
- //product_amounts = "8;5;4" Old totals
- product_hidden = "/obj/item/weapon/kitchen/utensil/spoon;/obj/item/weapon/kitchen/utensil/knife;/obj/item/weapon/kitchen/rollingpin;/obj/item/weapon/butch"
- product_hideamt = "2;2;2;2"
- product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..."
-
-
-/obj/machinery/vending/sovietsoda
- name = "BODA"
- desc = "Old sweet water vending machine"
- icon_state = "sovietsoda"
- product_paths = "/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/soda"
- product_amounts = "30"
- //product_amounts = "8;5;4" Old totals
- product_hidden = "/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/cola"
- product_hideamt = "20"
- product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem."
-
-/obj/machinery/vending/tool
- name = "YouTool"
- desc = "Tools for tools."
- icon_state = "tool"
- icon_deny = "tool-deny"
- //req_access_txt = "12" //Maintenance access
- product_paths = "/obj/item/weapon/cable_coil/random;/obj/item/weapon/crowbar;/obj/item/weapon/weldingtool;/obj/item/weapon/wirecutters;/obj/item/weapon/wrench;/obj/item/device/analyzer;/obj/item/device/t_scanner"
- product_amounts = "10;5;3;5;5;5;5"
- product_hidden = "/obj/item/weapon/weldingtool/hugeetank;/obj/item/clothing/gloves/fyellow"
- product_hideamt = "2;2"
- product_coin = "/obj/item/clothing/gloves/yellow"
- product_coin_amt = "1"
-
-/obj/machinery/vending/engivend
- name = "Engi-Vend"
- desc = "Spare tool vending. What? Did you expect some witty description?"
- icon_state = "engivend"
- icon_deny = "engivend-deny"
- req_access_txt = "10" //Engineering access
- product_paths = "/obj/item/clothing/glasses/meson;/obj/item/device/multitool;/obj/item/weapon/airlock_electronics;/obj/item/weapon/module/power_control;/obj/item/weapon/cell/high"
- product_amounts = "2;4;10;10;10"
- product_hidden = "/obj/item/weapon/cell/potato"
- product_hideamt = "3"
- product_coin = "/obj/item/weapon/storage/belt/utility"
- product_coin_amt = "3"
-
-//This one's from bay12
-/obj/machinery/vending/engineering
- name = "Robco Tool Maker"
- desc = "Everything you need for do-it-yourself station repair."
- icon_state = "engi"
- icon_deny = "engi-deny"
- req_access_txt = "10"
- product_paths = "/obj/item/clothing/under/rank/chief_engineer;/obj/item/clothing/under/rank/engineer;/obj/item/clothing/shoes/orange;/obj/item/clothing/head/helmet/hardhat;/obj/item/weapon/storage/belt/utility;/obj/item/clothing/glasses/meson;/obj/item/clothing/gloves/yellow;/obj/item/weapon/screwdriver;/obj/item/weapon/crowbar;/obj/item/weapon/wirecutters;/obj/item/device/multitool;/obj/item/weapon/wrench;/obj/item/device/t_scanner;/obj/item/weapon/CableCoil/power;/obj/item/weapon/circuitry;/obj/item/weapon/cell;/obj/item/weapon/weldingtool;/obj/item/clothing/head/helmet/welding;/obj/item/weapon/light/tube;/obj/item/clothing/suit/fire;/obj/item/weapon/stock_parts/scanning_module;/obj/item/weapon/stock_parts/micro_laser;/obj/item/weapon/stock_parts/matter_bin;/obj/item/weapon/stock_parts/manipulator;/obj/item/weapon/stock_parts/console_screen"
-// product_amounts = "4;4;4;4;4;4;4;12;12;12;12;12;12;8;4;8;8;8;10;4"
- product_hidden = ""
- product_hideamt = ""
- product_coin = ""
- product_coin_amt = ""
-
-//This one's from bay12
-/obj/machinery/vending/robotics
- name = "Robotech Deluxe"
- desc = "All the tools you need to create your own robot army."
- icon_state = "robotics"
- icon_deny = "robotics-deny"
- req_access_txt = "29"
- product_paths = "/obj/item/clothing/suit/storage/labcoat;/obj/item/clothing/under/rank/roboticist;/obj/item/weapon/cable_coil;/obj/item/device/flash;/obj/item/weapon/cell/high;/obj/item/device/assembly/prox_sensor;/obj/item/device/assembly/signaler;/obj/item/device/healthanalyzer;/obj/item/weapon/scalpel;/obj/item/weapon/circular_saw;/obj/item/weapon/tank/anesthetic;/obj/item/clothing/mask/medical;/obj/item/weapon/screwdriver;/obj/item/weapon/crowbar"
- product_amounts = "4;4;4;4;12"
- product_hidden = ""
- product_hideamt = ""
- product_coin = ""
- product_coin_amt = ""
diff --git a/code/defines/sd_procs/atom.dm b/code/defines/sd_procs/atom.dm
deleted file mode 100644
index 54cbe0ff1d5..00000000000
--- a/code/defines/sd_procs/atom.dm
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Atom procs
- These procs expand on the basic built in procs.
-
- Bumped(O)
- Automatically called whenever a movable atom O Bump()s into src.
- Proc protype designed to be overridden for specific objects.
-
- Trigger(O)
- Automatically called whenever a movable atom O steps into the same
- turf with src.
- Proc protype designed to be overridden for specific objects.
-*/
-
-atom
- proc
- Bumped(O)
- // O just Bump()ed into src.
- // prototype Bumped() proc for all atoms
- Trigger(O)
-
-atom/movable
-
- Bump(atom/A)
- if(istype(A)) A.Bumped(src) // tell A that src bumped into it
- ..()
-
-turf
- Entered(atom/O)
- for(var/atom/A in contents - O)
- if(O)
- O.Trigger(A)
- ..()
\ No newline at end of file
diff --git a/code/defines/sd_procs/base64.dm b/code/defines/sd_procs/base64.dm
deleted file mode 100644
index c285142ca0c..00000000000
--- a/code/defines/sd_procs/base64.dm
+++ /dev/null
@@ -1,131 +0,0 @@
-//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:04
-
-/* base 64 procs
- These procs convert plain text to a hexidecimal string to 64 encoded text and vice versa.
-
- sd_base64toHex(encode64, pad_code = 67)
- Accepts a base 64 encoded text and returns the hexidecimal equivalent.
- ARGS:
- encode64 = the base64 text to convert
- pad_code = the character or ASCII code used to pad the base64 text.
- DEFAULT: 67 (= sign)
- RETURNS: the hexidecimal text
-
- sd_hex2base64(hextext, pad_char = "=")
- Accepts a hexidecimal string and returns the base 64 encoded text equivalent.
- ARGS:
- hextext = hex text to convert
- pad_char = the character or ASCII code used to pad the base64 text.
- DEFAULT: "=" (ASCII 67)
- RETURNS: the base64 text
-
- sd_hex2text(hex)
- Accepts a hexidecimal string and returns the plain text equivalent.
-
- sd_text2hex(txt)
- Accepts a plain text string and returns the hexidecimal equivalent.
-*/
-
-/*********************************************
-* Implimentation: No need to read further. *
-*********************************************/
-proc
- sd_base64toHex(encode64, pad_code = 67)
- /* convert the base 64 text encode64 to hexidecimal text
- pad_code = the character or ASCII code used to pad the base64 text.
- DEFAULT: 67 (= sign)
- RETURNS: the hexidecimal text */
- var/pos = 1
- var/offset = 2
- var/current = 0
- var/padding = 0
- var/hextext = ""
- if(istext(pad_code)) pad_code = text2ascii(pad_code)
- while(pos <= length(encode64))
- var/val = text2ascii(encode64, pos++)
- if((val >= 65) && (val <= 90)) // A to Z
- val -= 65
- else if((val >= 97) && (val <= 122)) // a to z
- val -= 71
- else if((val >= 48) && (val <= 57)) // 0 to 9
- val += 4
- else if(val == 43) // + sign
- val = 62
- else if(val == 47) // / symbol
- val = 63
- else if(pad_code) // padding
- // the = sign indicates that some 0 bits were appended to pad the original string to
- val = -1
- padding ++
- else // anything else (presumably whitespace)
- val = -1
- if(val < 0) continue // whitespace and padding ignored
-
- if(offset>2)
- var/lft = val >> (8 - offset)
- current |= lft
- hextext += sd_dec2base(current,,2)
-
- current = (val << offset) & 0xFF
-
- offset += 2
- if(offset > 8)
- offset = 2
-
- if(padding)
- hextext = copytext(hextext, 1, length(hextext) + 1 - padding * 2)
- return hextext
-
- sd_hex2base64(hextext, pad_char = "=")
- /* convert the hexidecimal string hextext to base 64 encoded text
- pad_char = the character or ASCII code used to pad the base64 text.
- DEFAULT: "=" (ASCII 67)
- RETURNS: the base 64 encoded text */
- var/key64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
- var/encode64 = ""
- var/pos = 1
- var/offset = 2
- var/current = 0
- var/len = length(hextext)
- var/end = len
- var/padding = end%6
- if(padding)
- padding = 6 - padding
- end += padding
- padding >>= 1
- if(isnum(pad_char)) pad_char = ascii2text(pad_char)
- while(pos <= end)
- var/val = 0 // pad with 0s
- if(pos < len) val = sd_base2dec(copytext(hextext, pos, pos+2))
- pos+=2
-
- var/lft = val >> offset
- current |= lft
- encode64 += copytext(key64,current+1,current+2)
-
- current = (val << (6-offset)) & 0x3F
-
- offset += 2
- if(offset>6)
- encode64 += copytext(key64,current+1,current+2)
- offset = 2
- current = 0
- for(var/x = 1 to padding)
- encode64 += pad_char
- return encode64
-
- sd_hex2text(hex)
- /* convert hexidecimal text to a plain text string
- RETURNS: the plain text */
- var/txt = ""
- for(var/loop = 1 to length(hex) step 2)
- txt += ascii2text(sd_base2dec(copytext(hex,loop, loop+2)))
- return txt
-
- sd_text2hex(txt)
- /* convert plain text to a hexidecimal string
- RETURNS: the hexidecimal text */
- var/hex = ""
- for(var/loop = 1 to length(txt))
- hex += sd_dec2base(text2ascii(txt,loop),,2)
- return hex
diff --git a/code/defines/sd_procs/color.dm b/code/defines/sd_procs/color.dm
deleted file mode 100644
index 205ebecd3f7..00000000000
--- a/code/defines/sd_procs/color.dm
+++ /dev/null
@@ -1,75 +0,0 @@
-//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:04
-
-/* sd_color and procs
- sd_color is a special datum that contains color data in various
- formats. Sample colors are available in samplecolors.dm.
-
-sd_color
- var/name // the name of the color
- var/red // red componant of the color
- var/green // green componant of the color
- var/blue // red componant of the color
- var/html // html string for the color
- var/icon/Icon // contains the icon produced by the rgb2icon() proc
-
- PROCS
- brightness()
- Returns the grayscale brightness of the RGB color set.
-
- html2rgb()
- Calculates the rgb colors from the html colors.
-
- rgb2html()
- Calculates the html color from the rbg colors.
-
- rgb2icon()
- Converts the rgb value to a solid icon stored as src.Icon
-
-*/
-
-/*********************************************
-* Implimentation: No need to read further. *
-*********************************************/
-sd_color
- var/name // the name of the color
- var/red = 0 // red componant of the color
- var/green = 0 // green componant of the color
- var/blue = 0 // red componant of the color
- var/html // html string for the color
- var/icon/Icon // contains the icon produced by the rgb2icon() proc
-
- proc
- brightness()
- /* returns the grayscale brightness of the RGB colors. */
- return round((red*30 + green*59 + blue*11)/100,1)
-
- html2rgb()
- /* Calculates the rgb colors from the html colors */
- red = sd_base2dec(copytext(html,1,3))
- green = sd_base2dec(copytext(html,3,5))
- blue = sd_base2dec(copytext(html,5,7))
-
- rgb2html()
- /* Calculates the html color from the rbg colors */
- html = sd_dec2base(red,,2) + sd_dec2base(green,,2) + sd_dec2base(blue,,2)
- return html
-
- rgb2icon()
- /* Converts the rgb value to a solid icon stored as src.Icon */
- Icon = 'Black.dmi' + rgb(red,green,blue)
- return Icon
-
- New()
- ..()
- // if this is an unnamed subtype, name it according to it's type
- if(!name)
- name = "[type]"
- var/slash = sd_findlast(name,"/")
- if(slash)
- name = copytext(name,slash+1)
- name = sd_replacetext(name,"_"," ")
-
- if(html) // if there is an html string
- html2rgb() // convert the html to red, green, & blue values
- else
- rgb2html() // convert the red, green, & blue values to html
diff --git a/code/defines/sd_procs/constants.dm b/code/defines/sd_procs/constants.dm
deleted file mode 100644
index bb3664aabbc..00000000000
--- a/code/defines/sd_procs/constants.dm
+++ /dev/null
@@ -1 +0,0 @@
-#define PI 3.141592654
diff --git a/code/defines/sd_procs/direction.dm b/code/defines/sd_procs/direction.dm
deleted file mode 100644
index 45a38173fd4..00000000000
--- a/code/defines/sd_procs/direction.dm
+++ /dev/null
@@ -1,154 +0,0 @@
-/* Direction procs
- These procs deal with BYOND directions.
-
- sd_get_approx_dir(atom/ref,atom/target)
- returns the approximate direction from ref to target.
-
- sd_degrees2dir(degrees as num)
- Accepts an angle in degrees and returns the closest BYOND
- direction value.
-
- sd_dir2degrees(dir as num)
- Accepts a BYOND direction value and returns the angle North of
- East in degrees.
-
- sd_dir2radial(dir as num)
- Accepts a BYOND direction value and returns the radial direction
- (0-7) North of East.
-
- sd_dir2radians(dir as num)
- Accepts a BYOND direction value and returns the angle North of
- East in radians.
-
- sd_dir2text(dir as num)
- Accepts a BYOND direction value and returns the lowercase text
- name of the direction.
-
- sd_dir2Text(dir as num)
- Accepts a BYOND direction value and returns the Capitalized text
- name of the direction
-
- sd_radial2dir(radial as num)
- Accepts a radial direction (0-7) and returns the BYOND direction
- value.
-*/
-
-/*********************************************
-* Implimentation: No need to read further. *
-*********************************************/
-proc
- sd_get_approx_dir(atom/ref,atom/target)
- /* returns the approximate direction from ref to target.
- Code by Lummox JR
- http://www.byond.com/forum/forum.cgi?action=message_list&query=Post+ID%3A153964#153964
- */
- var/d=get_dir(ref,target)
- if(d&d-1) // diagonal
- var/ax=abs(ref.x-target.x)
- var/ay=abs(ref.y-target.y)
- if(ax>=ay<<1) return d&12 // keep east/west (4 and 8)
- else if(ay>=ax<<1) return d&3 // keep north/south (1 and 2)
- return d
-
- sd_degrees2dir(degrees as num)
- /* accepts an angle in degrees and returns the closest BYOND
- direction value */
- var/error_report = degrees // for error tracking
-
- // force angle into a range between 0 and 360
- degrees %= 360
- if(degrees < 0)
- degrees += 360
-
- // BYOND dirs are at 45 degree angles
- degrees = round(degrees,45)
-
- switch(degrees)
- if(0,360) return EAST
- if(45) return NORTHEAST
- if(90) return NORTH
- if(135) return NORTHWEST
- if(180) return WEST
- if(225) return SOUTHWEST
- if(270) return SOUTH
- if(315) return SOUTHEAST
- else
- world.log << "Error in sd_degrees2dir(): [error_report] -> [degrees]"
-
- sd_dir2degrees(dir as num)
- /* accepts a BYOND direction value and returns the angle North of
- East in degrees */
- switch(dir)
- if(EAST) return 0
- if(NORTHEAST) return 45
- if(NORTH) return 90
- if(NORTHWEST) return 135
- if(WEST) return 180
- if(SOUTHWEST) return 225
- if(SOUTH) return 270
- if(SOUTHEAST) return 315
-
- sd_dir2radial(dir as num)
- /* accepts a BYOND direction value and returns the radial direction
- (0-7) North of East */
- switch(dir)
- if(EAST) return 0
- if(NORTHEAST) return 1
- if(NORTH) return 2
- if(NORTHWEST) return 3
- if(WEST) return 4
- if(SOUTHWEST) return 5
- if(SOUTH) return 6
- if(SOUTHEAST) return 7
-
- sd_dir2radians(dir as num)
- /* accepts a BYOND direction value and returns the angle North of
- East in radians */
- switch(dir)
- if(EAST) return 0
- if(NORTHEAST) return PI/4
- if(NORTH) return PI/2
- if(NORTHWEST) return PI*3/4
- if(WEST) return PI
- if(SOUTHWEST) return PI*5/4
- if(SOUTH) return PI*3/2
- if(SOUTHEAST) return PI*7/4
-
- sd_dir2text(dir as num)
- /* accepts a direction and returns the lowercase text name of
- the direction */
- switch(dir)
- if(NORTH) return "north"
- if(SOUTH) return "south"
- if(EAST) return "east"
- if(WEST) return "west"
- if(NORTHEAST) return "northeast"
- if(SOUTHEAST) return "southeast"
- if(NORTHWEST) return "northwest"
- if(SOUTHWEST) return "southwest"
-
- sd_dir2Text(dir as num)
- /* accepts a direction and returns the Capitalized text name of
- the direction */
- switch(dir)
- if(NORTH) return "North"
- if(SOUTH) return "South"
- if(EAST) return "East"
- if(WEST) return "West"
- if(NORTHEAST) return "Northeast"
- if(SOUTHEAST) return "Southeast"
- if(NORTHWEST) return "Northwest"
- if(SOUTHWEST) return "Southwest"
-
- sd_radial2dir(radial as num)
- /* accepts a radial direction (0-7) and returns the BYOND direction
- value */
- switch(radial)
- if(0) return EAST
- if(1) return NORTHEAST
- if(2) return NORTH
- if(3) return NORTHWEST
- if(4) return WEST
- if(5) return SOUTHWEST
- if(6) return SOUTH
- if(7) return SOUTHEAST
diff --git a/code/defines/sd_procs/hsl.dm b/code/defines/sd_procs/hsl.dm
deleted file mode 100644
index 7bea3d52807..00000000000
--- a/code/defines/sd_procs/hsl.dm
+++ /dev/null
@@ -1,185 +0,0 @@
-//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:04
-
-/* HSL procs
- These procs convert between RGB (red, green, blu) and HSL (hue, saturation, light)
- color spaces. The algorithms used for these procs were found at
- http://www.paris-pc-gis.com/MI_Enviro/Colors/color_models.htm
-
- hsl2rgb(hue, sat, lgh, scale = 240)
- Returns the RRGGBB format of an HSL color.
-
- ALTERNATE FORMAT:
- hsl2rgb(HSL, scale)
- ARGS:
- hue - hue
- sat - saturation
- lgh - light/dark
- HSL - a hex string in format HHSSLL where:
- HH = Hue from
- SS = Saturation
- LL = light
- scale - high end of the HSL values. Some programs (like BYOND Dream Maker)
- use 240, others use 255. The H {0-360}, S {0-100}, L {0-100}
- scale is not supported.
- DEFAULT: 240
- RETURNS:
- RGB color string in RRGGBB format.
-
- rgb2hsl(red, grn, blu, scale = 240)
- Returns the HSL color string of an RGB color
-
- ALTERNATE FORMAT:
- rgb2hsl(RGB, scale)
- ARGS:
- red - red componant {0-255}
- grn - green componant {0-255}
- blu - blue componant {0-255}
- RGB - a hex string in format RRGGBB
- scale - high end of the HSL values. Some programs (like BYOND Dream Maker)
- use 240, others use 255. The H {0-360}, S {0-100}, L {0-100}
- scale is not supported.
- DEFAULT: 240
- RETURNS:
- HHSSLL color string
-*/
-
-/*********************************************
-* Implimentation: No need to read further. *
-*********************************************/
-
-proc
- hsl2rgb(hue, sat, lgh, scale = 240)
- /* Returns the RRGGBB format of an HSL color string
- algorithm from http://www.paris-pc-gis.com/MI_Enviro/Colors/color_models.htm
- ALTERNATE FORMAT:
- hsl2rgb(HSL, scale)
- ARGS:
- hue - hue
- sat - saturation
- lgh - light/dark
- HSL - a hex string in format HHSSLL where:
- HH = Hue from
- SS = Saturation
- LL = light
- scale - high end of the HSL values. Some programs (like BYOND Dream Maker)
- use 240, others use 255. The H {0-360}, S {0-100}, L {0-100}
- scale is not supported.
- DEFAULT: 240
- RETURNS:
- RGB color string in RRGGBB format. */
-
- if(istext(hue)) // used alternate hsl2rgb("HHSSLL", scale)
- if(length(hue)!=6)
- CRASH("hsl2rbg('[hue]'): text argument must be a 6 character hex code.")
- return
- if(isnum(sat)) scale = sat
- lgh = sd_base2dec(copytext(hue,5))
- sat = sd_base2dec(copytext(hue,3,5))
- hue = sd_base2dec(copytext(hue,1,3))
-
- // scale decimal {0-1}
- hue /= scale
- sat /= scale
- lgh /= scale
-
- var/red
- var/grn
- var/blu
-
- if(!sat) // greyscale
- red = lgh
- grn = lgh
- blu = lgh
- else
- var/temp1
- var/temp2
- var/temp3
- if(lgh < 0.5) temp2 = lgh * (1 + sat)
- else temp2 = lgh + sat - lgh * sat
- temp1 = 2 * lgh - temp2
-
- // red
- temp3 = hue + 1/3
- if(temp3 > 1) temp3--
- if(6*temp3<1) red = temp1 + (temp2 - temp1) * 6 * temp3
- else if(2*temp3<1) red = temp2
- else if(3*temp3<2) red = temp1 + (temp2 - temp1) * ((2/3) - temp3) * 6
- else red = temp1
-
- // green
- temp3 = hue
- if(6*temp3<1) grn = temp1 + (temp2 - temp1) * 6 * temp3
- else if(2*temp3<1) grn = temp2
- else if(3*temp3<2) grn = temp1 + (temp2 - temp1) * ((2/3) - temp3) * 6
- else grn = temp1
-
- // blue
- temp3 = hue - 1/3
- if(temp3 < 0) temp3++
- if(6*temp3<1) blu = temp1 + (temp2 - temp1) * 6 * temp3
- else if(2*temp3<1) blu = temp2
- else if(3*temp3<2) blu = temp1 + (temp2 - temp1) * ((2/3) - temp3) * 6
- else blu = temp1
-
- // shift from {0-1} scale to integers {0-255}
- red = round(red*255, 1)
- grn = round(grn*255, 1)
- blu = round(blu*255, 1)
-
- // return 6 digit hex string
- return sd_dec2base(red,16, 2) + sd_dec2base(grn,16, 2) + sd_dec2base(blu,16, 2)
-
-
- rgb2hsl(red, grn, blu, scale = 240)
- /* Returns the HSL color string of a RGB color
- algorithm from http://www.paris-pc-gis.com/MI_Enviro/Colors/color_models.htm
- ALTERNATE FORMAT:
- rgb2hsl(RGB, scale)
- ARGS:
- red - red componant {0-255}
- grn - green componant {0-255}
- blu - blue componant {0-255}
- RGB - a hex string in format RRGGBB
- scale - high end of the HSL values. Some programs (like BYOND Dream Maker)
- use 240, others use 255. The H {0-360}, S {0-100}, L {0-100}
- scale is not supported.
- DEFAULT: 240
- RETURNS:
- HHSSLL color string */
-
- if(istext(red)) // used alternate rgb2hsl("RRGGBB", scale) format
- if(length(red)!=6)
- CRASH("rbg2hsl('[red]'): text argument must be a 6 character hex code.")
- return
- if(isnum(grn)) scale = grn
- blu = sd_base2dec(copytext(red,5))
- grn = sd_base2dec(copytext(red,3,5))
- red = sd_base2dec(copytext(red,1,3))
-
- // scale decimal {0-1}
- red /= 255
- grn /= 255
- blu /= 255
- var/lo = min(red, grn, blu)
- var/hi = max(red, grn, blu)
- var/hue = 0
- var/sat = 0
- var/lgh = (lo + hi)/2
-
- if(lo != hi) // if equal, hue and sat may both stay 0
- if(lgh < 0.5) sat = (hi - lo) / (hi + lo)
- else sat = (hi - lo) / (2 - hi - lo)
- // produce hue as value from 0-6
- if(red == hi) hue = (grn - blu) / (hi - lo)
- else if(grn == hi) hue = 2 + (blu - red) / (hi - lo)
- else hue = 4 + (red - grn) / (hi - lo)
- if(hue<0) hue += 6
-
- // convert decimal {0-1} to integer {0-scale}
- lgh = round(lgh * scale, 1)
- sat = round(sat * scale, 1)
- // convert hue as decimal 0-6 to integer {0-scale}
- hue = round((hue / 6) * scale, 1)
-
- // return 6 digit hex string
- return sd_dec2base(hue,16, 2) + sd_dec2base(sat,16, 2) + sd_dec2base(lgh,16, 2)
diff --git a/code/defines/sd_procs/math.dm b/code/defines/sd_procs/math.dm
deleted file mode 100644
index cd3f4ea6ce3..00000000000
--- a/code/defines/sd_procs/math.dm
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Math procs
- These procs contain basic math routines.
-
- sd_base2dec(number as text, base = 16 as num)
- Accepts a number in any base (2 to 36) and returns the equivelent
- value in decimal.
- ARGS:
- number - number to convert as a text string
- base - number base
- RETURNS:
- decimal value of the number
-
- sd_dec2base(decimal,base = 16 as num,digits = 0 as num)
- Accepts a decimal number and returns the equivelent value in the
- new base as a string.
- ARGS:
- decimal - number to convert
- base - new number base
- digits - if output is less than digits, it will add
- preceeding 0s to pad it out
- RETURNS:
- equivelent value in the new base as a string
-
- sd_get_dist(atom/A, atom/B)
- Returns the mathematical 3D distance between two atoms.
-
- sd_get_dist_squared(atom/A, atom/B)
- Returns the square of the mathematical 3D distance between two atoms. (More processor
- friendly than sd_get_dist() and useful for modelling realworld physics.)
-*/
-
-/*********************************************
-* Implimentation: No need to read further. *
-*********************************************/
-proc
- sd_base2dec(number as text, base = 16 as num)
- /* Accepts a number in any base (2 to 36) and returns the equivelent
- value in decimal.
- ARGS:
- number - number to convert as a text string
- base - number base
- RETURNS:
- decimal value of the number
- */
- if(!istext(number))
- world.log << "sd_base2dec: invalid number string- [number]"
- return null
- if(!isnum(base) || (base < 2) || (base > 36))
- world.log << "sd_base2dec: invalid base - [base]"
- return null
-
- var/decimal = 0
- number = uppertext(number)
-
- for(var/loop = 1, loop <= lentext(number))
- var/digit = copytext(number,loop,++loop)
- if((digit >= "0") && (digit <= "9"))
- decimal = decimal * base + text2num(digit)
- else if((digit >= "A") && (digit <= "Z"))
- decimal = decimal * base + (text2ascii(digit) - 55)
- else
- break // terminate when it encounters an invalid character
-
- return decimal
-
-
- sd_dec2base(decimal,base = 16 as num,digits = 0 as num)
- /* Accepts a decimal number and returns the equivelent value in the
- new base as a string.
- ARGS:
- decimal - number to convert
- base - new number base
- digits - if output is less than digits, it will add
- preceeding 0s to pad it out
- RETURNS:
- equivelent value in the new base as a string
- */
- if(istext(decimal)) decimal = text2num(decimal)
- decimal = round(decimal)
- if(!isnum(decimal) || (decimal < 0))
- world.log << "sd_dec2base: invalid decimal number - [decimal]"
- return null
- if(!isnum(base) || (base < 2) || (base > 36))
- world.log << "sd_dec2base: invalid base - [base]"
- return null
-
- var/text = ""
- if(!decimal) text = "0"
- while(decimal)
- var/n = decimal%base
- if(n<10)
- text = num2text(n) + text
- else
- text = ascii2text(55+n) + text
-
- decimal = (decimal - n)/base
-
- while(lentext(text) < digits)
- text = "0" + text
-
- return text
-
-
- sd_get_dist(atom/A, atom/B)
- /* Returns the mathematical 3D distance between two atoms. */
- var/X = (A.x - B.x)
- var/Y = (A.y - B.y)
- var/Z = (A.z - B.z)
- return sqrt(X * X + Y * Y + Z * Z)
-
- sd_get_dist_squared(atom/A, atom/B)
- /* Returns the square of the mathematical 3D distance between two atoms. (More processor
- friendly than sd_get_dist() and useful for modelling realworld physics.) */
- var/X = (A.x - B.x)
- var/Y = (A.y - B.y)
- var/Z = (A.z - B.z)
- return X * X + Y * Y + Z * Z
diff --git a/code/defines/sd_procs/nybble.dm b/code/defines/sd_procs/nybble.dm
deleted file mode 100644
index eca85c49ec7..00000000000
--- a/code/defines/sd_procs/nybble.dm
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Nybble Colors
- Nybble colors is used to compact RGB colors to "nybble" (4 bits, 1 hex
- digit, or decimal numbers 0 to 15.) Since BYOND allows up to 16 bits in
- bitwise mathematics, you could store up to 4 color values in a single
- number. (The project inspiring these procs stores a foreground nybble
- color, background nybble color, and 8 bit text character in each 16 bit
- number.)
-
- The value of each bit is:
- Bit: 4 3 2 1
- Component: Intensity Red Green Blue
-
- Nybble color values are:
- Dec Hex Bin Color
- 0 0 0000 null color. See the note below.
- 1 1 0001 dark blue (navy)
- 2 2 0010 dark green
- 3 3 0011 dark cyan
- 4 4 0100 dark red
- 5 5 0101 dark magenta
- 6 6 0110 brown
- 7 7 0111 grey
- 8 8 1000 black
- 9 9 1001 blue
- 10 A 1010 green
- 11 B 1011 cyan
- 12 C 1100 red
- 13 D 1101 magenta
- 14 E 1110 yellow
- 15 F 1111 white
-
- Null color note: rgb2nybble() will return a value of 8 for black, so
- that you may use 0 value nybbles for special cases in your own code.
- For example, in the project that inspired these procs, color 0
- indicates the default background, which is a textured image.
- nybble2rgb() will convert values of 0 or 8 to "000000" (or "000" if
- you specify short rgb.)
-
-PROCS
- sd_nybble2rgb(original, bit = 8, short = 0)
- Converts a nybble color to an RGB hex color string.
- ARGS:
- value - the number containing the nibble
- bit - the MSB (most significant bit) of the nybble. The
- default value of 8 uses the lowest 4 bits of original.
- DEFAULT: 8
- short - short RGB flag. If this is set, the proc returns a
- 3 character RGB string. Otherwise it returns a 6
- character RGB string.
- DEFAULT: 0 (return 6 characters)
- RETURNS:
- A 3 or 6 character hexidecimal RGB color string.
-
- sd_rgb2nybble(rgb, bit = 8)
- Converts an rgb color string to a nybble color.
- ARGS:
- rgb - The color string to be converted. This may be a 3 or 6
- character color code with or without a leading "#".
- Examples: "000", "000000", "#000", "#000000" all
- indicate black.
- bit - the MSB (most significant bit) of the nybble. You can
- use this to shift the position of your nybble within
- the return value. The default value of 8 uses the
- lowest 4 bits.
- DEFAULT: 8
- RETURNS:
- A nybble color value or null if the proc failed.
-*/
-
-/*********************************************
-* Implimentation: No need to read further. *
-*********************************************/
-proc
- sd_nybble2rgb(original, bit = 8, short = 0)
- /* Converts a nybble color to an RGB hex color string.
- ARGS:
- value - the number containing the nibble
- bit - the MSB (most significant bit) of the nybble. The
- default value of 8 uses the lowest 4 bits of original.
- DEFAULT: 8
- short - short RGB flag. If this is set, the proc returns a
- 3 character RGB string. Otherwise it returns a 6
- character RGB string.
- DEFAULT: 0 (return 6 characters)
- RETURNS:
- A 3 or 6 character hexidecimal RGB color string. */
- var {intensity = "9"; off = "0"}
- if(original & bit) intensity = "F"
- if(!short)
- intensity += intensity
- off = "00"
- . = ""
- for(var/loop = 1 to 3)
- bit >>= 1
- if(original & bit) . += intensity
- else . += off
- if(. == "990") . = "940"
- else if(. == "999900") . = "994400"
- if(intensity == "F" && . == "000000") . = "00FF99"
-
- sd_rgb2nybble(rgb, bit = 8)
- /* Converts an rgb color string to a nybble color.
- ARGS:
- rgb - The color string to be converted. This may be a 3 or 6
- character color code with or without a leading "#".
- Examples: "000", "000000", "#000", "#000000" all
- indicate black.
- bit - the MSB (most significant bit) of the nybble. You can
- use this to shift the position of your nybble within
- the return value. The default value of 8 uses the
- lowest 4 bits.
- DEFAULT: 8
- RETURNS:
- A nybble color value or null if the proc failed. */
- if(!istext(rgb)) return
- if(text2ascii(rgb) == 35) // leading "#"
- rgb = copytext(rgb,2)
- var{char; cmp[3]; cmp_size; hi = 0; loop; pos = 1}
- switch(length(rgb))
- if(3) cmp_size = 1
- if(6) cmp_size = 2
- else return
- for(loop = 1 to 3)
- char = copytext(rgb, pos, pos+1)
- // char 0 to 3 => 0, 4 to 9 => 1, A to F => 2
- // cmp[loop] = round(sd_base2dec(char, 16) * 0.15, 1)
- // previous line takes over twice as long as switch() method below
- switch(char)
- if("0", "1", "2", "3") cmp[loop] = 0
- if("4", "5", "6", "7", "8", "9") cmp[loop] = 1
- else cmp[loop] = 2
- if(cmp[loop] > hi) hi = cmp[loop]
- pos += cmp_size
- switch(hi)
- if(0) return bit // color 8: black
- if(2) . = bit // high intensity
- else . = 0 // low intensity
- for(loop = 1 to 3)
- bit >>= 1
- if(cmp[loop] == hi) . |= bit
diff --git a/code/defines/sd_procs/samplecolors.dm b/code/defines/sd_procs/samplecolors.dm
deleted file mode 100644
index 96a6bebebdb..00000000000
--- a/code/defines/sd_procs/samplecolors.dm
+++ /dev/null
@@ -1,310 +0,0 @@
-/* Sample sd_colors. This file will not automatically be included in your
- projects, since you may want to define them differently.
-
-Colors can be defined by rgb values:
- sd_color/blue
- red = 0
- green = 0
- blue = 255
-
-Colors can be defined by HTML values:
- sd_color/green
- html = "00FF00"
-
-Colors can be defined by just overriding selective rgb values:
- sd_color/red
- red = 255
- magenta
- // still has red = 255, since it is a child of red
- blue = 255
-*/
-
-/******************************************************
-* Here 142 colors you might like to use from *
-* http://www.w3schools.com/html/html_colornames.asp *
-******************************************************/
-sd_color
- AliceBlue
- html = "F0F8FF"
- AntiqueWhite
- html = "FAEBD7"
- Aqua
- html = "00FFFF"
- Aquamarine
- html = "7FFFD4"
- Azure
- html = "F0FFFF"
- Beige
- html = "F5F5DC"
- Bisque
- html = "FFE4C4"
- Black
- html = "000000"
- BlanchedAlmond
- html = "FFEBCD"
- Blue
- html = "0000FF"
- BlueViolet
- html = "8A2BE2"
- Brown
- html = "A52A2A"
- BurlyWood
- html = "DEB887"
- CadetBlue
- html = "5F9EA0"
- Chartreuse
- html = "7FFF00"
- Chocolate
- html = "D2691E"
- Coral
- html = "FF7F50"
- CornflowerBlue
- html = "6495ED"
- Cornsilk
- html = "FFF8DC"
- Crimson
- html = "DC143C"
- Cyan
- html = "00FFFF"
- DarkBlue
- html = "00008B"
- DarkCyan
- html = "008B8B"
- DarkGoldenRod
- html = "B8860B"
- DarkGray
- html = "A9A9A9"
- DarkGreen
- html = "006400"
- DarkKhaki
- html = "BDB76B"
- DarkMagenta
- html = "8B008B"
- DarkOliveGreen
- html = "556B2F"
- Darkorange
- html = "FF8C00"
- DarkOrchid
- html = "9932CC"
- DarkRed
- html = "8B0000"
- DarkSalmon
- html = "E9967A"
- DarkSeaGreen
- html = "8FBC8F"
- DarkSlateBlue
- html = "483D8B"
- DarkSlateGray
- html = "2F4F4F"
- DarkTurquoise
- html = "00CED1"
- DarkViolet
- html = "9400D3"
- DeepPink
- html = "FF1493"
- DeepSkyBlue
- html = "00BFFF"
- DimGray
- html = "696969"
- DodgerBlue
- html = "1E90FF"
- FireBrick
- html = "B22222"
- FloralWhite
- html = "FFFAF0"
- ForestGreen
- html = "228B22"
- Fuchsia
- html = "FF00FF"
- Gainsboro
- html = "DCDCDC"
- GhostWhite
- html = "F8F8FF"
- Gold
- html = "FFD700"
- GoldenRod
- html = "DAA520"
- Gray
- html = "808080"
- Green
- html = "008000"
- GreenYellow
- html = "ADFF2F"
- HoneyDew
- html = "F0FFF0"
- HotPink
- html = "FF69B4"
- IndianRed
- html = "CD5C5C"
- Indigo
- html = "4B0082"
- Ivory
- html = "FFFFF0"
- Khaki
- html = "F0E68C"
- Lavender
- html = "E6E6FA"
- LavenderBlush
- html = "FFF0F5"
- LawnGreen
- html = "7CFC00"
- LemonChiffon
- html = "FFFACD"
- LightBlue
- html = "ADD8E6"
- LightCoral
- html = "F08080"
- LightCyan
- html = "E0FFFF"
- LightGoldenRodYellow
- html = "FAFAD2"
- LightGrey
- html = "D3D3D3"
- LightGreen
- html = "90EE90"
- LightPink
- html = "FFB6C1"
- LightSalmon
- html = "FFA07A"
- LightSeaGreen
- html = "20B2AA"
- LightSkyBlue
- html = "87CEFA"
- LightSlateBlue
- html = "8470FF"
- LightSlateGray
- html = "778899"
- LightSteelBlue
- html = "B0C4DE"
- LightYellow
- html = "FFFFE0"
- Lime
- html = "00FF00"
- LimeGreen
- html = "32CD32"
- Linen
- html = "FAF0E6"
- Magenta
- html = "FF00FF"
- Maroon
- html = "800000"
- MediumAquaMarine
- html = "66CDAA"
- MediumBlue
- html = "0000CD"
- MediumOrchid
- html = "BA55D3"
- MediumPurple
- html = "9370D8"
- MediumSeaGreen
- html = "3CB371"
- MediumSlateBlue
- html = "7B68EE"
- MediumSpringGreen
- html = "00FA9A"
- MediumTurquoise
- html = "48D1CC"
- MediumVioletRed
- html = "C71585"
- MidnightBlue
- html = "191970"
- MintCream
- html = "F5FFFA"
- MistyRose
- html = "FFE4E1"
- Moccasin
- html = "FFE4B5"
- NavajoWhite
- html = "FFDEAD"
- Navy
- html = "000080"
- OldLace
- html = "FDF5E6"
- Olive
- html = "808000"
- OliveDrab
- html = "6B8E23"
- Orange
- html = "FFA500"
- OrangeRed
- html = "FF4500"
- Orchid
- html = "DA70D6"
- PaleGoldenRod
- html = "EEE8AA"
- PaleGreen
- html = "98FB98"
- PaleTurquoise
- html = "AFEEEE"
- PaleVioletRed
- html = "D87093"
- PapayaWhip
- html = "FFEFD5"
- PeachPuff
- html = "FFDAB9"
- Peru
- html = "CD853F"
- Pink
- html = "FFC0CB"
- Plum
- html = "DDA0DD"
- PowderBlue
- html = "B0E0E6"
- Purple
- html = "800080"
- Red
- html = "FF0000"
- RosyBrown
- html = "BC8F8F"
- RoyalBlue
- html = "4169E1"
- SaddleBrown
- html = "8B4513"
- Salmon
- html = "FA8072"
- SandyBrown
- html = "F4A460"
- SeaGreen
- html = "2E8B57"
- SeaShell
- html = "FFF5EE"
- Sienna
- html = "A0522D"
- Silver
- html = "C0C0C0"
- SkyBlue
- html = "87CEEB"
- SlateBlue
- html = "6A5ACD"
- SlateGray
- html = "708090"
- Snow
- html = "FFFAFA"
- SpringGreen
- html = "00FF7F"
- SteelBlue
- html = "4682B4"
- Tan
- html = "D2B48C"
- Teal
- html = "008080"
- Thistle
- html = "D8BFD8"
- Tomato
- html = "FF6347"
- Turquoise
- html = "40E0D0"
- Violet
- html = "EE82EE"
- VioletRed
- html = "D02090"
- Wheat
- html = "F5DEB3"
- White
- html = "FFFFFF"
- WhiteSmoke
- html = "F5F5F5"
- Yellow
- html = "FFFF00"
- YellowGreen
- html = "9ACD32"
diff --git a/code/defines/sd_procs/sd_procs.dm b/code/defines/sd_procs/sd_procs.dm
deleted file mode 100644
index 16de19f4743..00000000000
--- a/code/defines/sd_procs/sd_procs.dm
+++ /dev/null
@@ -1,161 +0,0 @@
-/* sd_procs
- by: Shadowdarke (shadowdarke@hotmail.com)
-
- A collection of general purpose procs I use often in
- other projects.
-
-The following is a summary of all the procs and other additions included in
-the sd_procs library. Please refer to the specific file for detailed information.
-
-
-Atom (atom.dm)
- These procs expand on the basic built in procs.
-
- Bumped(O)
- Automatically called whenever a movable atom O Bump()s into src.
- Proc protype designed to be overridden for specific objects.
-
- Trigger(O)
- Automatically called whenever a movable atom O steps into the same
- turf with src.
- Proc protype designed to be overridden for specific objects.
-
-
-Base 64 (base64.dm)
- These procs convert plain text to a hexidecimal string to 64 encoded text and vice versa.
-
- sd_base64toHex(encode64, pad_code = 67)
- Accepts a base 64 encoded text and returns the hexidecimal equivalent.
-
- sd_hex2base64(hextext, pad_char = "=")
- Accepts a hexidecimal string and returns the base 64 encoded text equivalent.
-
- sd_hex2text(hex)
- Accepts a hexidecimal string and returns the plain text equivalent.
-
- sd_text2hex(txt)
- Accepts a plain text string and returns the hexidecimal equivalent.
-
-
-Colors(color.dm)
- sd_color
- sd_color is a special datum that contains color data in various
- formats. Sample colors are available in samplecolors.dm.
- VARS
- name // the name of the color
- red // red componant of the color
- green // green componant of the color
- blue // red componant of the color
- html // html string for the color
- icon/Icon // contains the icon produced by rgb2icon() proc
-
- PROCS
- brightness()
- Returns the grayscale brightness of the RGB color set.
-
- html2rgb()
- Calculates the rgb colors from the html colors.
-
- rgb2html()
- Calculates the html color from the rbg colors.
-
- rgb2icon()
- Converts the rgb value to a solid icon stored as src.Icon
-
-Direction procs (direction.dm)
- sd_get_approx_dir(atom/ref,atom/target)
- returns the approximate direction from ref to target.
-
- sd_degrees2dir(degrees as num)
- Accepts an angle in degrees and returns the closest BYOND
- direction value.
-
- sd_dir2degrees(dir as num)
- Accepts a BYOND direction value and returns the angle North of
- East in degrees.
-
- sd_dir2radial(dir as num)
- Accepts a BYOND direction value and returns the radial direction
- (0-7) North of East.
-
- sd_dir2radians(dir as num)
- Accepts a BYOND direction value and returns the angle North of
- East in radians.
-
- sd_dir2text(dir as num)
- Accepts a BYOND direction value and returns the lowercase text
- name of the direction.
-
- sd_dir2Text(dir as num)
- Accepts a BYOND direction value and returns the Capitalized text
- name of the direction
-
- sd_radial2dir(radial as num)
- Accepts a radial direction (0-7) and returns the BYOND direction
- value.
-
-HSL procs (hsl.dm)
- hsl2rgb(hue, sat, lgh, scale = 240)
- Returns the RRGGBB format of an HSL color.
- ALTERNATE FORMAT: hsl2rgb(HSL, scale)
-
- rgb2hsl(red, grn, blu, scale = 240)
- Returns the HHSSLL string of an RGB color
- ALTERNATE FORMAT: rgb2hsl(RGB, scale)
-
-Math procs (math.dm)
- sd_base2dec(number as text, base = 16 as num)
- Accepts a number in any base (2 to 36) and returns the equivelent
- value in decimal.
-
- sd_dec2base(decimal,base = 16 as num,digits = 0 as num)
- Accepts a decimal number and returns the equivelent value in the
- new base as a string.
-
- sd_get_dist(atom/A, atom/B)
- Returns the mathematical 3D distance between two atoms.
-
- sd_get_dist_squared(atom/A, atom/B)
- Returns the square of the mathematical 3D distance between two atoms. (More processor
- friendly than sd_get_dist() and useful for modelling realworld physics.)
-
-Nybble Color procs (nybble.dm)
- sd_nybble2rgb(original, bit = 8, short = 0)
- Converts a nybble color to a hexidecimal RGB color string.
-
- sd_rgb2nybble(rgb, bit = 8)
- Converts an RGB color string to a nybble color.
-
-
-Sample sd_colors. (samplecolors.dm)
- This file includes 142 predefined sd_colors. It will not automatically
- be included in your projects, since you may want to define them differently.
-
-
-Test program (test.dm)
- This file provides a brief demo of some library functions.
- It is not included in your projects.
-
-
-Text procs (text.dm)
- sd_findlast(maintext as text, searchtext as text)
- Returns the location of the last instance of searchtext in
- maintext. sd_findlast is not case sensitive.
-
- sd_findLast(maintext as text, searchtext as text)
- Returns the location of the last instance of searchtext in
- maintext. sd_findLast is case sensitive.
-
- sd_htmlremove(T as text)
- Returns the text string with all potential html tags (anything
- between < and >) removed.
-
- sd_replacetext(maintext as text, oldtext as text, newtext as text)
- Replaces all instances of oldtext within maintext with newtext.
- sd_replacetext is not case sensitive.
-
- sd_replaceText(maintext as text, oldtext as text, newtext as text)
- Replaces all instances of oldtext within maintext with newtext.
- sd_replaceText is case sensitive.
-
-*/
\ No newline at end of file
diff --git a/code/defines/sd_procs/text.dm b/code/defines/sd_procs/text.dm
deleted file mode 100644
index 88b410bd2b7..00000000000
--- a/code/defines/sd_procs/text.dm
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Text procs
- These procs manipulate text strings.
-
- sd_findlast(maintext as text, searchtext as text)
- Returns the location of the last instance of searchtext in
- maintext. sd_findlast is not case sensitive.
-
- sd_findLast(maintext as text, searchtext as text)
- Returns the location of the last instance of searchtext in
- maintext. sd_findLast is case sensitive.
-
- sd_htmlremove(T as text)
- Returns the text string with all potential html tags (anything
- between < and >) removed.
-
- sd_replacetext(maintext as text, oldtext as text, newtext as text)
- Replaces all instances of oldtext within maintext with newtext.
- sd_replacetext is not case sensitive.
-
- sd_replaceText(maintext as text, oldtext as text, newtext as text)
- Replaces all instances of oldtext within maintext with newtext.
- sd_replaceText is case sensitive.
-*/
-
-/*********************************************
-* Implimentation: No need to read further. *
-*********************************************/
-proc
- sd_findlast(maintext as text, searchtext as text)
- /* Returns the location of the last instance of searchtext in
- maintext. sd_findlast is not case sensitive. */
- var/loc = 0
- var/looking = findtext(maintext, searchtext)
- while(looking)
- loc = looking
- looking = findtext(maintext, searchtext, looking + 1)
- return loc
-
- sd_findLast(maintext as text, searchtext as text)
- /* Returns the location of the last instance of searchtext in
- maintext. sd_findLast is case sensitive. */
- var/loc = 0
- var/looking = findText(maintext, searchtext)
- while(looking)
- loc = looking
- looking = findText(maintext, searchtext, looking + 1)
- return loc
-
-
- sd_htmlremove(T as text)
- /* Returns the text string with all potential html tags (anything
- between < and >) removed. */
- T = sd_replacetext(T, " ","")
- var/open = findtext(T,"<")
- while(open)
- var/close = findtext(T,">",open)
- if(close)
- if(close last_event+15)
- active = 1
- for(var/mob/living/L in range(3,src))
- L.apply_effect(12,IRRADIATE,0)
- for(var/turf/simulated/wall/mineral/T in range(3,src))
- if(T.mineral == "uranium")
- T.radiate()
- last_event = world.time
- active = null
- return
- return
-
-/*/turf/simulated/wall/mineral/proc/shock()
- if (electrocute_mob(user, C, src))
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(5, 1, src)
- s.start()
- return 1
- else
- return 0
- */
-
-/turf/simulated/wall/cult
- name = "wall"
- desc = "The patterns engraved on the wall seem to shift as you try to focus on them. You feel sick"
- icon_state = "cult"
- walltype = "cult"
-
-/turf/simulated/shuttle
- name = "shuttle"
- icon = 'icons/turf/shuttle.dmi'
- thermal_conductivity = 0.05
- heat_capacity = 0
- layer = 2
-
-/turf/simulated/shuttle/wall
- name = "wall"
- icon_state = "wall1"
- opacity = 1
- density = 1
- blocks_air = 1
-
-/turf/simulated/shuttle/floor
- name = "floor"
- icon_state = "floor"
-
-/turf/simulated/shuttle/plating
- name = "plating"
- icon = 'icons/turf/floors.dmi'
- icon_state = "plating"
-
-/turf/simulated/shuttle/floor4 // Added this floor tile so that I have a seperate turf to check in the shuttle -- Polymorph
- name = "Brig floor" // Also added it into the 2x3 brig area of the shuttle.
- icon_state = "floor4"
-
-/turf/unsimulated
- intact = 1
- name = "command"
- oxygen = MOLES_O2STANDARD
- nitrogen = MOLES_N2STANDARD
-
-/turf/unsimulated/floor
- name = "floor"
- icon = 'icons/turf/floors.dmi'
- icon_state = "Floor3"
-
-/turf/unsimulated/wall
- name = "wall"
- icon = 'icons/turf/walls.dmi'
- icon_state = "riveted"
- opacity = 1
- density = 1
-
-turf/unsimulated/wall/splashscreen
- name = "Space Station 13"
- icon = 'icons/misc/fullscreen.dmi'
- icon_state = "title"
- layer = FLY_LAYER
-
-/turf/unsimulated/wall/other
- icon_state = "r_wall"
-
-/turf/proc/AdjacentTurfs()
- var/L[] = new()
- for(var/turf/simulated/t in oview(src,1))
- if(!t.density)
- if(!LinkBlocked(src, t) && !TurfBlockedNonWindow(t))
- L.Add(t)
- return L
-/turf/proc/Distance(turf/t)
- if(get_dist(src,t) == 1)
- var/cost = (src.x - t.x) * (src.x - t.x) + (src.y - t.y) * (src.y - t.y)
- cost *= (pathweight+t.pathweight)/2
- return cost
- else
- return get_dist(src,t)
-/turf/proc/AdjacentTurfsSpace()
- var/L[] = new()
- for(var/turf/t in oview(src,1))
- if(!t.density)
- if(!LinkBlocked(src, t) && !TurfBlockedNonWindow(t))
- L.Add(t)
- return L
-
-
-/*
-/turf/simulated/wall/mineral
- icon = 'icons/turf/mineral_walls.dmi'
- walltype = "iron"
-
- var/oreAmount = 1
- var/hardness = 1
-
- New()
- ..()
- name = "[walltype] wall"
-
- dismantle_wall(devastated = 0)
- if(!devastated)
- var/ore = text2path("/obj/item/weapon/ore/[walltype]")
- for(var/i = 1, i <= oreAmount, i++)
- new ore(src)
- ReplaceWithFloor()
- else
- ReplaceWithSpace()
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W,/obj/item/weapon/pickaxe))
- var/obj/item/weapon/pickaxe/digTool = W
- user << "You start digging the [name]."
- if(do_after(user,digTool.digspeed*hardness) && src)
- user << "You finished digging."
- dismantle_wall()
- else if(istype(W,/obj/item/weapon)) //not sure, can't not just weapons get passed to this proc?
- hardness -= W.force/100
- user << "You hit the [name] with your [W.name]!"
- CheckHardness()
- else
- attack_hand(user)
- return
-
- proc/CheckHardness()
- if(hardness <= 0)
- dismantle_wall()
-
-/turf/simulated/wall/mineral/iron
- walltype = "iron"
- hardness = 3
-
-/turf/simulated/wall/mineral/silver
- walltype = "silver"
- hardness = 3
-
-/turf/simulated/wall/mineral/uranium
- walltype = "uranium"
- hardness = 3
-
- New()
- ..()
- sd_SetLuminosity(3)
-
-/turf/simulated/wall/mineral/gold
- walltype = "gold"
-
-/turf/simulated/wall/mineral/sand
- walltype = "sand"
- hardness = 0.5
-
-/turf/simulated/wall/mineral/transparent
- opacity = 0
-
-/turf/simulated/wall/mineral/transparent/diamond
- walltype = "diamond"
- hardness = 10
-
-/turf/simulated/wall/mineral/transparent/plasma
- walltype = "plasma"
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W,/obj/item/weapon/weldingtool))
- var/obj/item/weapon/weldingtool/WT = W
- if(WT.remove_fuel(0, user))
- return TemperatureAct(100)
- ..()
-
- temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
- if(exposed_temperature > 300)
- TemperatureAct(exposed_temperature)
-
- proc/TemperatureAct(temperature)
- for(var/turf/simulated/floor/target_tile in range(2,loc))
- if(target_tile.parent && target_tile.parent.group_processing)
- target_tile.parent.suspend_group_processing()
-
- var/datum/gas_mixture/napalm = new
-
- var/toxinsToDeduce = temperature/10
-
- napalm.toxins = toxinsToDeduce
- napalm.temperature = 400+T0C
-
- target_tile.assume_air(napalm)
- spawn (0) target_tile.hotspot_expose(temperature, 400)
-
- hardness -= toxinsToDeduce/100
- CheckHardness()
-*/
diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm
deleted file mode 100755
index a5a3e15262c..00000000000
--- a/code/game/objects/items/item.dm
+++ /dev/null
@@ -1,422 +0,0 @@
-
-/obj/item/proc/attack_self()
- return
-
-/obj/item/proc/talk_into(mob/M as mob, text)
- return
-
-/obj/item/proc/moved(mob/user as mob, old_loc as turf)
- return
-
-/obj/item/proc/dropped(mob/user as mob)
- ..()
-
-// called just as an item is picked up (loc is not yet changed)
-/obj/item/proc/pickup(mob/user)
- return
-
-// called when this item is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called.
-/obj/item/proc/on_exit_storage(obj/item/weapon/storage/S as obj)
- return
-
-// called when this item is added into a storage item, which is passed on as S. The loc variable is already set to the storage item.
-/obj/item/proc/on_enter_storage(obj/item/weapon/storage/S as obj)
- return
-
-// called after an item is placed in an equipment slot
-// user is mob that equipped it
-// slot uses the slot_X defines found in setup.dm
-// for items that can be placed in multiple slots
-// note this isn't called during the initial dressing of a player
-/obj/item/proc/equipped(var/mob/user, var/slot)
- return
-
-/obj/item/proc/afterattack()
-
- return
-
-/obj/item/weapon/dummy/ex_act()
- return
-
-/obj/item/weapon/dummy/blob_act()
- return
-
-/obj/item/ex_act(severity)
- switch(severity)
- if(1.0)
- del(src)
- return
- if(2.0)
- if (prob(50))
- del(src)
- return
- if(3.0)
- if (prob(5))
- del(src)
- return
- else
- return
-
-/obj/item/blob_act()
- return
-
-/obj/item/verb/move_to_top()
- set name = "Move To Top"
- set category = "Object"
- set src in oview(1)
-
- if(!istype(src.loc, /turf) || usr.stat || usr.restrained() )
- return
-
- var/turf/T = src.loc
-
- src.loc = null
-
- src.loc = T
-
-/obj/item/examine()
- set src in view()
-
- var/t
- switch(src.w_class)
- if(1.0)
- t = "tiny"
- if(2.0)
- t = "small"
- if(3.0)
- t = "normal-sized"
- if(4.0)
- t = "bulky"
- if(5.0)
- t = "huge"
- else
- if ((CLUMSY in usr.mutations) && prob(50)) t = "funny-looking"
- usr << text("This is a []\icon[][]. It is a [] item.", !src.blood_DNA ? "" : "bloody ",src, src.name, t)
- if(src.desc)
- usr << src.desc
- return
-
-/obj/item/attack_hand(mob/user as mob)
- if (!user) return
- if (istype(src.loc, /obj/item/weapon/storage))
- var/obj/item/weapon/storage/S = src.loc
- S.remove_from_storage(src)
-
- src.throwing = 0
- if (src.loc == user)
- //canremove==0 means that object may not be removed. You can still wear it. This only applies to clothing. /N
- if(!src.canremove)
- return
- else
- user.u_equip(src)
- else
- if(isliving(src.loc))
- return
- src.pickup(user)
- user.lastDblClick = world.time + 2
- user.next_move = world.time + 2
- add_fingerprint(user)
- user.put_in_active_hand(src)
- return
-
-
-/obj/item/attack_paw(mob/user as mob)
-
- if(isalien(user)) // -- TLE
- var/mob/living/carbon/alien/A = user
-
- if(!A.has_fine_manipulation || w_class >= 4)
- if(src in A.contents) // To stop Aliens having items stuck in their pockets
- A.drop_from_inventory(src)
- user << "Your claws aren't capable of such fine manipulation."
- return
-
- if (istype(src.loc, /obj/item/weapon/storage))
- for(var/mob/M in range(1, src.loc))
- if (M.s_active == src.loc)
- if (M.client)
- M.client.screen -= src
- src.throwing = 0
- if (src.loc == user)
- //canremove==0 means that object may not be removed. You can still wear it. This only applies to clothing. /N
- if(istype(src, /obj/item/clothing) && !src:canremove)
- return
- else
- user.u_equip(src)
- else
- if(istype(src.loc, /mob/living))
- return
- src.pickup(user)
- user.lastDblClick = world.time + 2
- user.next_move = world.time + 2
-
- user.put_in_active_hand(src)
- return
-
-/obj/item/attackby(obj/item/weapon/W as obj, mob/user as mob)
-
- if(istype(W,/obj/item/weapon/storage))
- var/obj/item/weapon/storage/S = W
- if(S.use_to_pickup)
- if(!S.can_be_inserted(src))
- return
- if(S.collection_mode) //Mode is set to collect all items on a tile and we clicked on a valid one.
- if(isturf(src.loc))
- for(var/obj/item/I in src.loc)
- if(I != src) //We'll do the one we clicked on last.
- if(!S.can_be_inserted(src))
- continue
- S.handle_item_insertion(I, 1) //The 1 stops the "You put the [src] into [S]" insertion message from being displayed.
- S.handle_item_insertion(src)
-
-
- return
-
-mob/proc/flash_weak_pain()
- flick("weak_pain",pain)
-
-/obj/item/proc/attack(mob/living/M as mob, mob/living/user as mob, def_zone)
-
- if (!istype(M)) // not sure if this is the right thing...
- return
- var/messagesource = M
-
- if (istype(M,/mob/living/carbon/brain))
- messagesource = M:container
- if (src.hitsound)
- playsound(src.loc, hitsound, 50, 1, -1)
- M.flash_weak_pain()
- /////////////////////////
- user.lastattacked = M
- M.lastattacker = user
-
- var/power = src.force
-
- // EXPERIMENTAL: scale power and time to the weight class
- if(w_class >= 4.0 && !istype(src,/obj/item/weapon/melee/energy/blade)) // eswords are an exception, they only have a w_class of 4 to not fit into pockets
- power = power * 2.5
-
- user.visible_message("\red [user.name] swings at [M.name] with \the [src]!")
- user.next_move = max(user.next_move, world.time + 30)
-
- // if the mob didn't move, he has a 100% chance to hit(given the enemy also didn't move)
- // otherwise, the chance to hit is lower
- var/unmoved = 0
- spawn
- unmoved = do_after(user, 4)
- sleep(4)
- if( (!unmoved && !prob(70)) || (get_dist(user, M) != 1 && user != M))
- user.visible_message("\red [user.name] misses with \the [src]!")
- return
-
-
- user.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])"
- M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])"
-
- log_admin("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)]")
- msg_admin_attack("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)]")
-
- log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" )
-
- //spawn(1800) // this wont work right
- // M.lastattacker = null
- /////////////////////////
-
- if((HULK in user.mutations) || (SUPRSTR in user.augmentations))
- power *= 2
-
- if(!istype(M, /mob/living/carbon/human))
- if(istype(M, /mob/living/carbon/metroid))
- var/mob/living/carbon/metroid/Metroid = M
- if(prob(25))
- user << "\red [src] passes right through [M]!"
- return
-
- if(power > 0)
- Metroid.attacked += 10
-
- if(Metroid.Discipline && prob(50)) // wow, buddy, why am I getting attacked??
- Metroid.Discipline = 0
-
- if(power >= 3)
- if(istype(Metroid, /mob/living/carbon/metroid/adult))
- if(prob(5 + round(power/2)))
-
- if(Metroid.Victim)
- if(prob(80) && !Metroid.client)
- Metroid.Discipline++
- Metroid.Victim = null
- Metroid.anchored = 0
-
- spawn()
- if(Metroid)
- Metroid.SStun = 1
- sleep(rand(5,20))
- if(Metroid)
- Metroid.SStun = 0
-
- spawn(0)
- if(Metroid)
- Metroid.canmove = 0
- step_away(Metroid, user)
- if(prob(25 + power))
- sleep(2)
- if(Metroid && user)
- step_away(Metroid, user)
- Metroid.canmove = 1
-
- else
- if(prob(10 + power*2))
- if(Metroid)
- if(Metroid.Victim)
- if(prob(80) && !Metroid.client)
- Metroid.Discipline++
-
- if(Metroid.Discipline == 1)
- Metroid.attacked = 0
-
- spawn()
- if(Metroid)
- Metroid.SStun = 1
- sleep(rand(5,20))
- if(Metroid)
- Metroid.SStun = 0
-
- Metroid.Victim = null
- Metroid.anchored = 0
-
-
- spawn(0)
- if(Metroid && user)
- step_away(Metroid, user)
- Metroid.canmove = 0
- if(prob(25 + power*4))
- sleep(2)
- if(Metroid && user)
- step_away(Metroid, user)
- Metroid.canmove = 1
-
-
- var/showname = "."
- if(user)
- showname = " by [user]."
- if(!(user in viewers(M, null)))
- showname = "."
-
- for(var/mob/O in viewers(messagesource, null))
- if(src.attack_verb.len)
- O.show_message("\red [M] has been [pick(src.attack_verb)] with [src][showname] ", 1)
- else
- O.show_message("\red [M] has been attacked with [src][showname] ", 1)
-
- if(!showname && user)
- if(user.client)
- user << "\red You attack [M] with [src]. "
-
-
-
- if(istype(M, /mob/living/carbon/human))
- M:attacked_by(src, user, def_zone)
- else
- switch(src.damtype)
- if("brute")
- if(istype(src, /mob/living/carbon/metroid))
- M.adjustBrainLoss(power)
-
- else
-
- M.take_organ_damage(power)
- if (prob(33)) // Added blood for whacking non-humans too
- var/turf/location = M.loc
- if (istype(location, /turf/simulated))
- location.add_blood_floor(M)
- if("fire")
- if (!(COLD_RESISTANCE in M.mutations))
- M.take_organ_damage(0, power)
- M << "Aargh it burns!"
- M.updatehealth()
- src.add_fingerprint(user)
- return 1
-
-
-/obj/item/proc/IsShield()
- return 0
-
-/obj/item/proc/eyestab(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
-
- var/mob/living/carbon/human/H = M
- if(istype(H) && ( \
- (H.head && H.head.flags & HEADCOVERSEYES) || \
- (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \
- (H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \
- ))
- // you can't stab someone in the eyes wearing a mask!
- user << "\red You're going to need to remove that mask/helmet/glasses first."
- return
-
- var/mob/living/carbon/monkey/Mo = M
- if(istype(Mo) && ( \
- (Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \
- ))
- // you can't stab someone in the eyes wearing a mask!
- user << "\red You're going to need to remove that mask/helmet/glasses first."
- return
-
- if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/metroid))//Aliens don't have eyes./N Metroids also don't have eyes!
- user << "\red You cannot locate any eyes on this creature!"
- return
-
- user.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])"
- M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])"
-
- log_attack(" [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
-
- log_admin("ATTACK: [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
- msg_admin_attack("ATTACK: [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") //BS12 EDIT ALG
-
- src.add_fingerprint(user)
- //if((CLUMSY in user.mutations) && prob(50))
- // M = user
- /*
- M << "\red You stab yourself in the eye."
- M.sdisabilities |= BLIND
- M.weakened += 4
- M.adjustBruteLoss(10)
- */
- if(M != user)
- for(var/mob/O in (viewers(M) - user - M))
- O.show_message("\red [M] has been stabbed in the eye with [src] by [user].", 1)
- M << "\red [user] stabs you in the eye with [src]!"
- user << "\red You stab [M] in the eye with [src]!"
- else
- user.visible_message( \
- "\red [user] has stabbed themself with [src]!", \
- "\red You stab yourself in the eyes with [src]!" \
- )
- if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
- if(affecting.take_damage(7))
- M:UpdateDamageIcon()
- else
- M.take_organ_damage(7)
- M.eye_blurry += rand(3,4)
- M.eye_stat += rand(2,4)
- if (M.eye_stat >= 10)
- M.eye_blurry += 15+(0.1*M.eye_blurry)
- M.disabilities |= NEARSIGHTED
- if(M.stat != 2)
- M << "\red Your eyes start to bleed profusely!"
- if(prob(50))
- if(M.stat != 2)
- M << "\red You drop what you're holding and clutch at your eyes!"
- M.drop_item()
- M.eye_blurry += 10
- M.Paralyse(1)
- M.Weaken(4)
- if (prob(M.eye_stat - 10 + 1))
- if(M.stat != 2)
- M << "\red You go blind!"
- M.sdisabilities |= BLIND
- return
-
-
diff --git a/code/modules/food/food.dm b/code/modules/food/food.dm
deleted file mode 100644
index 372d6cec183..00000000000
--- a/code/modules/food/food.dm
+++ /dev/null
@@ -1,2099 +0,0 @@
-
-//////////////////////////////////////////////////
-////////////////////////////////////////////Snacks
-//////////////////////////////////////////////////
-//Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created
-// already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten.
-
-//Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units Generally speaking, you don't want to go over 40
-// total for the item because you want to leave space for extra condiments. If you want effect besides healing, add a reagent for
-// it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use Tricordrazine). On use
-// effect (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way).
-
-//The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to
-// 2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a
-// bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all
-// the bites. No more contained reagents = no more bites.
-
-//Here is an example of the new formatting for anyone who wants to add more food items.
-///obj/item/weapon/reagent_containers/food/snacks/xenoburger //Identification path for the object.
-// name = "Xenoburger" //Name that displays in the UI.
-// desc = "Smells caustic. Tastes like heresy." //Duh
-// icon_state = "xburger" //Refers to an icon in food.dmi
-// New() //Don't mess with this.
-// ..() //Same here.
-// reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste
-// reagents.add_reagent("nutriment", 2) // this line of code for all the contents.
-// bitesize = 3 //This is the amount each bite consumes.
-
-/obj/item/weapon/reagent_containers/food/snacks/attack_animal(var/mob/M)
- if(isanimal(M))
- if(iscorgi(M))
- if(bitecount == 0 || prob(50))
- M.emote("nibbles away at the [src]")
- bitecount++
- if(bitecount >= 5)
- var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where the [src] was")
- if(sattisfaction_text)
- M.emote("[sattisfaction_text]")
- del(src)
-
-/obj/item/weapon/reagent_containers/food/snacks/candy
- name = "candy"
- desc = "Nougat love it or hate it."
- icon_state = "candy"
- trash = /obj/item/trash/candy
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
- reagents.add_reagent("sugar", 3)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/candy_corn
- name = "candy corn"
- desc = "It's a handful of candy corn. Can be stored in a detective's hat."
- icon_state = "candy_corn"
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("sugar", 2)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/chips
- name = "chips"
- desc = "Commander Riker's What-The-Crisps"
- icon_state = "chips"
- trash = /obj/item/trash/chips
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- bitesize = 1
-
-/obj/item/weapon/reagent_containers/food/snacks/cookie
- name = "cookie"
- desc = "COOKIE!!!"
- icon_state = "COOKIE!!!"
- New()
- ..()
- reagents.add_reagent("nutriment", 5)
- bitesize = 1
-
-/obj/item/weapon/reagent_containers/food/snacks/chocolatebar
- name = "Chocolate Bar"
- desc = "Such, sweet, fattening food."
- icon_state = "chocolatebar"
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- reagents.add_reagent("sugar", 2)
- reagents.add_reagent("coco", 2)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/chocolateegg
- name = "Chocolate Egg"
- desc = "Such, sweet, fattening food."
- icon_state = "chocolateegg"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- reagents.add_reagent("sugar", 2)
- reagents.add_reagent("coco", 2)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/donut
- name = "donut"
- desc = "Goes great with Robust Coffee."
- icon_state = "donut1"
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/normal
- name = "donut"
- desc = "Goes great with Robust Coffee."
- icon_state = "donut1"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- reagents.add_reagent("sprinkles", 1)
- src.bitesize = 3
- if(prob(30))
- src.icon_state = "donut2"
- src.name = "frosted donut"
- reagents.add_reagent("sprinkles", 2)
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/chaos
- name = "Chaos Donut"
- desc = "Like life, it never quite tastes the same."
- icon_state = "donut1"
- New()
-
- reagents.add_reagent("nutriment", 2)
- reagents.add_reagent("sprinkles", 1)
- bitesize = 10
- var/chaosselect = pick(1,2,3,4,5,6,7,8,9,10)
- switch(chaosselect)
- if(1)
- reagents.add_reagent("nutriment", 3)
- if(2)
- reagents.add_reagent("capsaicin", 3)
- if(3)
- reagents.add_reagent("frostoil", 3)
- if(4)
- reagents.add_reagent("sprinkles", 3)
- if(5)
- reagents.add_reagent("plasma", 3)
- if(6)
- reagents.add_reagent("coco", 3)
- if(7)
- reagents.add_reagent("metroid", 3)
- if(8)
- reagents.add_reagent("banana", 3)
- if(9)
- reagents.add_reagent("berryjuice", 3)
- if(10)
- reagents.add_reagent("tricordrazine", 3)
- if(prob(30))
- src.icon_state = "donut2"
- src.name = "Frosted Chaos Donut"
- reagents.add_reagent("sprinkles", 2)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/jelly
- name = "Jelly Donut"
- desc = "You jelly?"
- icon_state = "jdonut1"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- reagents.add_reagent("sprinkles", 1)
- reagents.add_reagent("berryjuice", 5)
- bitesize = 5
- if(prob(30))
- src.icon_state = "jdonut2"
- src.name = "Frosted Jelly Donut"
- reagents.add_reagent("sprinkles", 2)
-
-/obj/item/weapon/reagent_containers/food/snacks/egg
- name = "egg"
- desc = "An egg!"
- icon_state = "egg"
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
-
- throw_impact(atom/hit_atom)
- ..()
- new/obj/effect/decal/cleanable/egg_smudge(src.loc)
- src.visible_message("\red [src.name] has been squashed.","\red You hear a smack.")
- del(src)
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype( W, /obj/item/toy/crayon ))
- var/obj/item/toy/crayon/C = W
- var/clr = C.colourName
-
- if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow")))
- usr << "\blue The egg refuses to take on this color!"
- return
-
- usr << "\blue You color \the [src] [clr]"
- icon_state = "egg-[clr]"
- color = clr
- else
- ..()
-
-/obj/item/weapon/reagent_containers/food/snacks/egg/blue
- icon_state = "egg-blue"
- color = "blue"
-
-/obj/item/weapon/reagent_containers/food/snacks/egg/green
- icon_state = "egg-green"
- color = "green"
-
-/obj/item/weapon/reagent_containers/food/snacks/egg/mime
- icon_state = "egg-mime"
- color = "mime"
-
-/obj/item/weapon/reagent_containers/food/snacks/egg/orange
- icon_state = "egg-orange"
- color = "orange"
-
-/obj/item/weapon/reagent_containers/food/snacks/egg/purple
- icon_state = "egg-purple"
- color = "purple"
-
-/obj/item/weapon/reagent_containers/food/snacks/egg/rainbow
- icon_state = "egg-rainbow"
- color = "rainbow"
-
-/obj/item/weapon/reagent_containers/food/snacks/egg/red
- icon_state = "egg-red"
- color = "red"
-
-/obj/item/weapon/reagent_containers/food/snacks/egg/yellow
- icon_state = "egg-yellow"
- color = "yellow"
-
-/obj/item/weapon/reagent_containers/food/snacks/friedegg
- name = "Fried egg"
- desc = "A fried egg, with a touch of salt and pepper."
- icon_state = "friedegg"
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- reagents.add_reagent("sodiumchloride", 1)
- reagents.add_reagent("blackpepper", 1)
- bitesize = 1
-
-/obj/item/weapon/reagent_containers/food/snacks/boiledegg
- name = "Boiled egg"
- desc = "A hard boiled egg."
- icon_state = "egg"
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
-
-/obj/item/weapon/reagent_containers/food/snacks/flour
- name = "flour"
- desc = "Some flour"
- icon_state = "flour"
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/appendix //yes, this is the same as meat. I might do something different in future
- name = "appendix"
- desc = "An appendix which looks perfectly healthy."
- icon_state = "appendix"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- src.bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/appendixinflamed
- name = "inflamed appendix"
- desc = "An appendix which appears to be inflamed."
- icon_state = "appendixinflamed"
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
- src.bitesize = 1
-
-/obj/item/weapon/reagent_containers/food/snacks/tofu
- name = "Tofu"
- icon_state = "tofu"
- desc = "We all love tofu."
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- src.bitesize = 3
-
-
-/obj/item/weapon/reagent_containers/food/snacks/carpmeat
- name = "carp fillet"
- desc = "A fillet of spess carp meat"
- icon_state = "fishfillet"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- reagents.add_reagent("carpotoxin", 3)
- src.bitesize = 6
-
-/obj/item/weapon/reagent_containers/food/snacks/fishfingers
- name = "Fish Fingers"
- desc = "A finger of fish."
- icon_state = "fishfingers"
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("carpotoxin", 3)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice
- name = "huge mushroom slice"
- desc = "A slice from a huge mushroom."
- icon_state = "hugemushroomslice"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- reagents.add_reagent("psilocybin", 3)
- src.bitesize = 6
-
-/obj/item/weapon/reagent_containers/food/snacks/tomatomeat
- name = "tomato slice"
- desc = "A slice from a huge tomato"
- icon_state = "tomatomeat"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- src.bitesize = 6
-
-/obj/item/weapon/reagent_containers/food/snacks/bearmeat
- name = "bear meat"
- desc = "A very manly slab of meat."
- icon_state = "bearmeat"
- New()
- ..()
- reagents.add_reagent("nutriment", 12)
- reagents.add_reagent("hyperzine", 5)
- src.bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/xenomeat
- name = "meat"
- desc = "A slab of meat"
- icon_state = "xenomeat"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- src.bitesize = 6
-
-/obj/item/weapon/reagent_containers/food/snacks/faggot
- name = "Faggot"
- desc = "A great meal all round. Not a cord of wood."
- icon_state = "faggot"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sausage
- name = "Sausage"
- desc = "A piece of mixed, long meat."
- icon_state = "sausage"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/donkpocket
- name = "Donk-pocket"
- desc = "The food of choice for the seasoned traitor."
- icon_state = "donkpocket"
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
-
- var/warm = 0
- proc/cooltime() //Not working, derp?
- if (src.warm)
- spawn( 4200 )
- src.warm = 0
- src.reagents.del_reagent("tricordrazine")
- src.name = "donk-pocket"
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/brainburger
- name = "brainburger"
- desc = "A strange looking burger. It looks almost sentient."
- icon_state = "brainburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("alkysine", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/ghostburger
- name = "Ghost Burger"
- desc = "Spooky! It doesn't look very filling."
- icon_state = "ghostburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- bitesize = 2
-
-
-/obj/item/weapon/reagent_containers/food/snacks/human
- var/hname = ""
- var/job = null
-
-/obj/item/weapon/reagent_containers/food/snacks/human/burger
- name = "-burger"
- desc = "A bloody burger."
- icon_state = "hburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/monkeyburger
- name = "burger"
- desc = "The cornerstone of every nutritious breakfast."
- icon_state = "hburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/fishburger
- name = "Fillet -o- Carp Sandwich"
- desc = "Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp."
- icon_state = "fishburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("carpotoxin", 3)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/tofuburger
- name = "Tofu Burger"
- desc = "What.. is that meat?"
- icon_state = "tofuburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/roburger
- name = "roburger"
- desc = "The lettuce is the only organic component. Beep."
- icon_state = "roburger"
- New()
- ..()
- reagents.add_reagent("nanites", 2)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/roburgerbig
- name = "roburger"
- desc = "This massive patty looks like poison. Beep."
- icon_state = "roburger"
- volume = 100
- New()
- ..()
- reagents.add_reagent("nanites", 100)
- bitesize = 0.1
-
-/obj/item/weapon/reagent_containers/food/snacks/xenoburger
- name = "xenoburger"
- desc = "Smells caustic. Tastes like heresy."
- icon_state = "xburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/clownburger
- name = "Clown Burger"
- desc = "This tastes funny..."
- icon_state = "clownburger"
- New()
- ..()
-/*
- var/datum/disease/F = new /datum/disease/pierrot_throat(0)
- var/list/data = list("viruses"= list(F))
- reagents.add_reagent("blood", 4, data)
-*/
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/mimeburger
- name = "Mime Burger"
- desc = "Its taste defies language."
- icon_state = "mimeburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/omelette
- name = "Omelette Du Fromage"
- desc = "That's all you can say!"
- icon_state = "omelette"
- trash = /obj/item/trash/plate
- //var/herp = 0
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 1
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W,/obj/item/weapon/kitchen/utensil/fork))
- if (W.icon_state == "forkloaded")
- user << "\red You already have omelette on your fork."
- return
- //W.icon = 'icons/obj/kitchen.dmi'
- W.icon_state = "forkloaded"
- /*if (herp)
- world << "[user] takes a piece of omelette with his fork!"*/
- //Why this unecessary check? Oh I know, because I'm bad >:C
- // Yes, you are. You griefing my badmin toys. --rastaf0
- user.visible_message( \
- "[user] takes a piece of omelette with their fork!", \
- "\blue You take a piece of omelette with your fork!" \
- )
- reagents.remove_reagent("nutriment", 1)
- if (reagents.total_volume <= 0)
- del(src)
-/*
- * Unsused.
-/obj/item/weapon/reagent_containers/food/snacks/omeletteforkload
- name = "Omelette Du Fromage"
- desc = "That's all you can say!"
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
-*/
-
-/obj/item/weapon/reagent_containers/food/snacks/muffin
- name = "Muffin"
- desc = "A delicious and spongy little cake"
- icon_state = "muffin"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/pie
- name = "Banana Cream Pie"
- desc = "Just like back home!"
- icon_state = "pie"
- trash = /obj/item/trash/plate
-
-/obj/item/weapon/reagent_containers/food/snacks/pie/New()
- ..()
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("banana",5)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom)
- ..()
- new/obj/effect/decal/cleanable/pie_smudge(src.loc)
- src.visible_message("\red [src.name] splats.","\red You hear a splat.")
- del(src)
-
-/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis
- name = "Berry Clafoutis"
- desc = "No black birds, this is a good sign."
- icon_state = "berryclafoutis"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("berryjuice", 5)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/waffles
- name = "waffles"
- desc = "Mmm, waffles"
- icon_state = "waffles"
- trash = /obj/item/trash/waffles
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/eggplantparm
- name = "Eggplant Parmigiana"
- desc = "The only good recipe for eggplant."
- icon_state = "eggplantparm"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/soylentgreen
- name = "Soylent Green"
- desc = "Not made of people. Honest." //Totally people.
- icon_state = "soylent_green"
- trash = /obj/item/trash/waffles
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/soylenviridians
- name = "Soylen Virdians"
- desc = "Not made of people. Honest." //Actually honest for once.
- icon_state = "soylent_yellow"
- trash = /obj/item/trash/waffles
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- bitesize = 2
-
-
-/obj/item/weapon/reagent_containers/food/snacks/meatpie
- name = "Meat-pie"
- icon_state = "meatpie"
- desc = "An old barber recipe, very delicious!"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/tofupie
- name = "Tofu-pie"
- icon_state = "meatpie"
- desc = "A delicious tofu pie."
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/amanita_pie
- name = "amanita pie"
- desc = "Sweet and tasty poison pie."
- icon_state = "amanita_pie"
- New()
- ..()
- reagents.add_reagent("nutriment", 5)
- reagents.add_reagent("amatoxin", 3)
- reagents.add_reagent("psilocybin", 1)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/plump_pie
- name = "plump pie"
- desc = "I bet you love stuff made out of plump helmets!"
- icon_state = "plump_pie"
- New()
- ..()
- if(prob(10))
- name = "exceptional plump pie"
- desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!"
- reagents.add_reagent("nutriment", 8)
- reagents.add_reagent("tricordrazine", 5)
- bitesize = 2
- else
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/xemeatpie
- name = "Xeno-pie"
- icon_state = "xenomeatpie"
- desc = "A delicious meatpie. Probably heretical."
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/wingfangchu
- name = "Wing Fang Chu"
- desc = "A savory dish of alien wing wang in soy."
- icon_state = "wingfangchu"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-
-/obj/item/weapon/reagent_containers/food/snacks/human/kabob
- name = "-kabob"
- icon_state = "kabob"
- desc = "A human meat, on a stick."
- trash = /obj/item/stack/rods
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/monkeykabob
- name = "Meat-kabob"
- icon_state = "kabob"
- desc = "Delicious meat, on a stick."
- trash = /obj/item/stack/rods
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/tofukabob
- name = "Tofu-kabob"
- icon_state = "kabob"
- desc = "Vegan meat, on a stick."
- trash = /obj/item/stack/rods
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/cubancarp
- name = "Cuban Carp"
- desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!"
- icon_state = "cubancarp"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("carpotoxin", 3)
- reagents.add_reagent("capsaicin", 3)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/popcorn
- name = "Popcorn"
- desc = "Now let's find some cinema."
- icon_state = "popcorn"
- trash = /obj/item/trash/popcorn
- var/unpopped = 0
- New()
- ..()
- unpopped = rand(1,10)
- reagents.add_reagent("nutriment", 2)
- bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0
- On_Consume()
- if(prob(unpopped)) //lol ...what's the point?
- usr << "\red You bite down on an un-popped kernel!"
- unpopped = max(0, unpopped-1)
- ..()
-
-
-/obj/item/weapon/reagent_containers/food/snacks/sosjerky
- name = "Scaredy's Private Reserve Beef Jerky"
- icon_state = "sosjerky"
- desc = "Beef jerky made from the finest space cows."
- trash = /obj/item/trash/sosjerky
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/no_raisin
- name = "4no Raisins"
- icon_state = "4no_raisins"
- desc = "Best raisins in the universe. Not sure why."
- trash = /obj/item/trash/raisins
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
-
-/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie
- name = "Space Twinkie"
- icon_state = "space_twinkie"
- desc = "Guaranteed to survive longer then you will."
- New()
- ..()
- reagents.add_reagent("sugar", 4)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers
- name = "Cheesie Honkers"
- icon_state = "cheesie_honkers"
- desc = "Bite sized cheesie snacks that will honk all over your mouth"
- trash = /obj/item/trash/cheesie
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/syndicake
- name = "Syndi-Cakes"
- icon_state = "syndi_cakes"
- desc = "An extremely moist snack cake that tastes just as good after being nuked."
- trash = /obj/item/trash/syndi_cakes
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("syndicream", 2)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato
- name = "Loaded Baked Potato"
- desc = "Totally baked."
- icon_state = "loadedbakedpotato"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/fries
- name = "Space Fries"
- desc = "AKA: French Fries, Freedom Fries, etc"
- icon_state = "fries"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/soydope
- name = "Soy Dope"
- desc = "Dope from a soy."
- icon_state = "soydope"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/spagetti
- name = "Spagetti"
- desc = "Now thats a nice pasta!"
- icon_state = "spagetti"
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
- bitesize = 1
-
-/obj/item/weapon/reagent_containers/food/snacks/cheesyfries
- name = "Cheesy Fries"
- desc = "Fries. Covered in cheese. Duh."
- icon_state = "cheesyfries"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/fortunecookie
- name = "Fortune cookie"
- desc = "A true prophecy in each cookie!"
- icon_state = "fortune_cookie"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/badrecipe
- name = "Burned mess"
- desc = "Someone should be demoted from chef for this."
- icon_state = "badrecipe"
- New()
- ..()
- reagents.add_reagent("toxin", 1)
- reagents.add_reagent("carbon", 3)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/meatsteak
- name = "Meat steak"
- desc = "A piece of hot spicy meat."
- icon_state = "meatstake"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("sodiumchloride", 1)
- reagents.add_reagent("blackpepper", 1)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff
- name = "Spacy Liberty Duff"
- desc = "Jello gelatin, from Alfred Hubbard's cookbook"
- icon_state = "spacylibertyduff"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("psilocybin", 6)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/amanitajelly
- name = "Amanita Jelly"
- desc = "Looks curiously toxic"
- icon_state = "amanitajelly"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("amatoxin", 6)
- reagents.add_reagent("psilocybin", 3)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/poppypretzel
- name = "Poppy pretzel"
- desc = "It's all twisted up!"
- icon_state = "poppypretzel"
- bitesize = 2
- New()
- ..()
- reagents.add_reagent("nutriment", 5)
- bitesize = 2
-
-
-/obj/item/weapon/reagent_containers/food/snacks/meatballsoup
- name = "Meatball soup"
- desc = "You've got balls kid, BALLS!"
- icon_state = "meatballsoup"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- reagents.add_reagent("water", 5)
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/metroidsoup
- name = "Metroid soup"
- desc = "Tasty"
- icon_state = "metroidsoup"
- New()
- ..()
- reagents.add_reagent("metroid", 5)
- reagents.add_reagent("water", 10)
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/bloodsoup
- name = "Meatball soup"
- desc = "Smells like copper"
- icon_state = "meatballsoup"
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- reagents.add_reagent("blood", 10)
- reagents.add_reagent("water", 5)
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/clownstears
- name = "Clown's Tears"
- desc = "Not very funny."
- icon_state = "clownstears"
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("banana", 5)
- reagents.add_reagent("water", 10)
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup
- name = "Vegetable soup"
- desc = "A true vegan meal" //TODO
- icon_state = "vegetablesoup"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- reagents.add_reagent("water", 5)
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/nettlesoup
- name = "Nettle soup"
- desc = "To think, the botanist would've beat you to death with one of these."
- icon_state = "nettlesoup"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- reagents.add_reagent("water", 5)
- reagents.add_reagent("tricordrazine", 5)
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/mysterysoup
- name = "Mystery soup"
- desc = "The mystery is, why aren't you eating it?"
- icon_state = "mysterysoup"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- var/mysteryselect = pick(1,2,3,4,5,6,7,8,9,10)
- switch(mysteryselect)
- if(1)
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("capsaicin", 3)
- reagents.add_reagent("tomatojuice", 2)
- if(2)
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("frostoil", 3)
- reagents.add_reagent("tomatojuice", 2)
- if(3)
- reagents.add_reagent("nutriment", 5)
- reagents.add_reagent("water", 5)
- reagents.add_reagent("tricordrazine", 5)
- if(4)
- reagents.add_reagent("nutriment", 5)
- reagents.add_reagent("water", 10)
- if(5)
- reagents.add_reagent("nutriment", 2)
- reagents.add_reagent("banana", 10)
- if(6)
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("blood", 10)
- if(7)
- reagents.add_reagent("metroid", 10)
- reagents.add_reagent("water", 10)
- if(8)
- reagents.add_reagent("carbon", 10)
- reagents.add_reagent("toxin", 10)
- if(9)
- reagents.add_reagent("nutriment", 5)
- reagents.add_reagent("tomatojuice", 10)
- if(10)
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("tomatojuice", 5)
- reagents.add_reagent("imidazoline", 5)
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/wishsoup
- name = "Wish Soup"
- desc = "I wish this was soup."
- icon_state = "wishsoup"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("water", 10)
- bitesize = 5
- if(prob(25))
- src.desc = "A wish come true!"
- reagents.add_reagent("nutriment", 8)
-
-/obj/item/weapon/reagent_containers/food/snacks/hotchili
- name = "Hot Chili"
- desc = "A five alarm Texan Chili!"
- icon_state = "hotchili"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("capsaicin", 3)
- reagents.add_reagent("tomatojuice", 2)
- bitesize = 5
-
-
-/obj/item/weapon/reagent_containers/food/snacks/coldchili
- name = "Cold Chili"
- desc = "This slush is barely a liquid!"
- icon_state = "coldchili"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("frostoil", 3)
- reagents.add_reagent("tomatojuice", 2)
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/telebacon
- name = "Tele Bacon"
- desc = "It tastes a little odd but it is still delicious."
- icon_state = "bacon"
- var/obj/item/device/radio/beacon/bacon/baconbeacon
- bitesize = 2
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- baconbeacon = new /obj/item/device/radio/beacon/bacon(src)
- On_Consume()
- if(!reagents.total_volume)
- baconbeacon.loc = usr
- baconbeacon.digest_delay()
-
-
-/obj/item/weapon/reagent_containers/food/snacks/monkeycube
- name = "monkey cube"
- desc = "Just add water!"
- icon_state = "monkeycube"
- bitesize = 12
- var/wrapped = 0
-
- New()
- ..()
- reagents.add_reagent("nutriment",10)
-
- afterattack(obj/O as obj, mob/user as mob)
- if(istype(O,/obj/structure/sink) && !wrapped)
- user << "You place [name] under a stream of water..."
- loc = get_turf(O)
- return Expand()
- ..()
-
- attack_self(mob/user as mob)
- if(wrapped)
- Unwrap(user)
-
- proc/Expand()
- for(var/mob/M in viewers(src,7))
- M << "\red The monkey cube expands!"
- new /mob/living/carbon/monkey(get_turf(src))
- del(src)
-
- proc/Unwrap(mob/user as mob)
- icon_state = "monkeycube"
- desc = "Just add water!"
- user << "You unwrap the cube."
- wrapped = 0
- return
-
- wrapped
- desc = "Still wrapped in some paper."
- icon_state = "monkeycubewrap"
- wrapped = 1
-
-
-/obj/item/weapon/reagent_containers/food/snacks/spellburger
- name = "Spell Burger"
- desc = "This is absolutely Ei Nath."
- icon_state = "spellburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger
- name = "Big Bite Burger"
- desc = "Forget the Big Mac. THIS is the future!"
- icon_state = "bigbiteburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 14)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/enchiladas
- name = "Enchiladas"
- desc = "Viva La Mexico!"
- icon_state = "enchiladas"
- trash = /obj/item/trash/tray
- New()
- ..()
- reagents.add_reagent("nutriment",8)
- reagents.add_reagent("capsaicin", 6)
- bitesize = 4
-
-/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight
- name = "monkey's Delight"
- desc = "Eeee Eee!"
- icon_state = "monkeysdelight"
- trash = /obj/item/trash/tray
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- reagents.add_reagent("banana", 5)
- reagents.add_reagent("blackpepper", 1)
- reagents.add_reagent("sodiumchloride", 1)
- bitesize = 6
-
-/obj/item/weapon/reagent_containers/food/snacks/baguette
- name = "Baguette"
- desc = "Bon appetit!"
- icon_state = "baguette"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("blackpepper", 1)
- reagents.add_reagent("sodiumchloride", 1)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/fishandchips
- name = "Fish and Chips"
- desc = "I do say so myself chap."
- icon_state = "fishandchips"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("carpotoxin", 3)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/sandwich
- name = "Sandwich"
- desc = "A grand creation of meat, cheese, bread, and several leaves of lettuce! Arthur Dent would be proud."
- icon_state = "sandwich"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich
- name = "Toasted Sandwich"
- desc = "Now if you only had a pepper bar."
- icon_state = "toastedsandwich"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("carbon", 2)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/grilledcheese
- name = "Grilled Cheese Sandwich"
- desc = "Goes great with Tomato soup!"
- icon_state = "toastedsandwich"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 7)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/tomatosoup
- name = "Tomato Soup"
- desc = "Drinking this feels like being a vampire! A tomato vampire..."
- icon_state = "tomatosoup"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 5)
- reagents.add_reagent("tomatojuice", 10)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles
- name = "Roffle Waffles"
- desc = "Waffles from Roffle. Co."
- icon_state = "rofflewaffles"
- trash = /obj/item/trash/waffles
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- reagents.add_reagent("psilocybin", 8)
- bitesize = 4
-
-/obj/item/weapon/reagent_containers/food/snacks/stew
- name = "Stew"
- desc = "A nice and warm stew. Healthy and strong."
- icon_state = "stew"
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- reagents.add_reagent("tomatojuice", 5)
- reagents.add_reagent("imidazoline", 5)
- reagents.add_reagent("water", 5)
- bitesize = 10
-
-/obj/item/weapon/reagent_containers/food/snacks/metroidtoast
- name = "Metroid Toast"
- desc = "A slice of bread covered with delicious jam."
- icon_state = "metroidtoast"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
- reagents.add_reagent("metroid", 5)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/metroidburger
- name = "Metroid Burger"
- desc = "A very toxic and tasty burger."
- icon_state = "metroidburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
- reagents.add_reagent("metroid", 5)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/milosoup
- name = "Milosoup"
- desc = "The universes best soup! Yum!!!"
- icon_state = "milosoup"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- reagents.add_reagent("water", 5)
- bitesize = 4
-
-/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat
- name = "Stewed Soy Meat"
- desc = "Even non-vegetarians will LOVE this!"
- icon_state = "stewedsoymeat"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti
- name = "Boiled Spagetti"
- desc = "A plain dish of noodles, this sucks."
- icon_state = "spagettiboiled"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/pastatomato
- name = "Spagetti"
- desc = "Spaghetti and crushed tomatoes. Just like your abusive father used to make!"
- icon_state = "pastatomato"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("tomatojuice", 10)
- bitesize = 4
-
-/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti
- name = "Spagetti & Meatballs"
- desc = "Now thats a nic'e meatball!"
- icon_state = "meatballspagetti"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/spesslaw
- name = "Spesslaw"
- desc = "A lawyers favourite"
- icon_state = "spesslaw"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/poppypretzel
- name = "Poppy Pretzel"
- desc = "A large soft pretzel full of POP!"
- icon_state = "poppypretzel"
- New()
- ..()
- reagents.add_reagent("nutriment", 5)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/carrotfries
- name = "Carrot Fries"
- desc = "Tasty fries from fresh Carrots."
- icon_state = "carrotfries"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- reagents.add_reagent("imidazoline", 3)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/superbiteburger
- name = "Super Bite Burger"
- desc = "This is a mountain of a burger. FOOD!"
- icon_state = "superbiteburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 40)
- bitesize = 10
-
-/obj/item/weapon/reagent_containers/food/snacks/candiedapple
- name = "Candied Apple"
- desc = "An apple coated in sugary sweetness."
- icon_state = "candiedapple"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/applepie
- name = "Apple Pie"
- desc = "A pie containing sweet sweet love...or apple."
- icon_state = "applepie"
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/twobread
- name = "Two Bread"
- desc = "It is very bitter and winy."
- icon_state = "twobread"
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/metroidsandwich
- name = "Metroid Sandwich"
- desc = "A sandwich is green stuff."
- icon_state = "metroidsandwich"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- reagents.add_reagent("metroid", 5)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/boiledmetroidcore
- name = "Boiled Metroid Core"
- desc = "A boiled red thing."
- icon_state = "boiledmetroidcore"
- New()
- ..()
- reagents.add_reagent("metroid", 5)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/mint
- name = "mint"
- desc = "it is only wafer thin."
- icon_state = "mint"
- New()
- ..()
- reagents.add_reagent("minttoxin", 1)
- bitesize = 1
-
-/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup
- name = "chantrelle soup"
- desc = "A delicious and hearty mushroom soup."
- icon_state = "mushroomsoup"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit
- name = "plump helmet biscuit"
- desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour."
- icon_state = "phelmbiscuit"
- New()
- ..()
- if(prob(10))
- name = "exceptional plump helmet biscuit"
- desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!"
- reagents.add_reagent("nutriment", 8)
- reagents.add_reagent("tricordrazine", 5)
- bitesize = 2
- else
- reagents.add_reagent("nutriment", 5)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/chawanmushi
- name = "chawanmushi"
- desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat."
- icon_state = "chawanmushi"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 5)
- bitesize = 1
-
-/obj/item/weapon/reagent_containers/food/snacks/beetsoup
- name = "beet soup"
- desc = "Wait, how do you spell it again..?"
- icon_state = "beetsoup"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- switch(rand(1,6))
- if(1)
- name = "borsch"
- if(2)
- name = "bortsch"
- if(3)
- name = "borstch"
- if(4)
- name = "borsh"
- if(5)
- name = "borshch"
- if(6)
- name = "borscht"
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/herbsalad
- name = "herb salad"
- desc = "A tasty salad with apples on top."
- icon_state = "herbsalad"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/aesirsalad
- name = "Aesir salad"
- desc = "Probably too incredible for mortal men to fully enjoy."
- icon_state = "aesirsalad"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- reagents.add_reagent("tricordrazine", 8)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/validsalad
- name = "valid salad"
- desc = "It's just an herb salad with meatballs and fried potato slices. Nothing suspicious about it."
- icon_state = "validsalad"
- trash = /obj/item/trash/snack_bowl
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- reagents.add_reagent("syndicream", 5)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/appletart
- name = "golden apple streusel tart"
- desc = "A tasty dessert that won't make it through a metal detector."
- icon_state = "gappletart"
- trash = /obj/item/trash/plate
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- reagents.add_reagent("gold", 5)
- bitesize = 3
-
-/////////////////////////////////////////////////Sliceable////////////////////////////////////////
-// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread
- name = "meatbread loaf"
- desc = "The culinary base of every self-respecting eloquen/tg/entleman."
- icon_state = "meatbread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 30)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice
- name = "meatbread slice"
- desc = "A slice of delicious meatbread."
- icon_state = "meatbreadslice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread
- name = "xenomeatbread loaf"
- desc = "The culinary base of every self-respecting eloquen/tg/entleman. Extra Heretical."
- icon_state = "xenomeatbread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 30)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
- name = "xenomeatbread slice"
- desc = "A slice of delicious meatbread. Extra Heretical."
- icon_state = "xenobreadslice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread
- name = "Banana-nut bread"
- desc = "A heavenly and filling treat."
- icon_state = "bananabread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("banana", 20)
- reagents.add_reagent("nutriment", 20)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/bananabreadslice
- name = "Banana-nut bread slice"
- desc = "A slice of delicious banana bread."
- icon_state = "bananabreadslice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread
- name = "Tofubread"
- icon_state = "Like meatbread but for vegetarians. Not guaranteed to give superpowers."
- icon_state = "tofubread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 30)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice
- name = "Tofubread slice"
- desc = "A slice of delicious tofubread."
- icon_state = "tofubreadslice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake
- name = "Carrot Cake"
- desc = "A favorite desert of a certain wascally wabbit. Not a lie."
- icon_state = "carrotcake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 25)
- reagents.add_reagent("imidazoline", 10)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice
- name = "Carrot Cake slice"
- desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie."
- icon_state = "carrotcake_slice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake
- name = "Brain Cake"
- desc = "A squishy cake-thing."
- icon_state = "braincake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/braincakeslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 25)
- reagents.add_reagent("alkysine", 10)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/braincakeslice
- name = "Brain Cake slice"
- desc = "Lemme tell you something about prions. THEY'RE DELICIOUS."
- icon_state = "braincakeslice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake
- name = "Cheese Cake"
- desc = "DANGEROUSLY cheesy."
- icon_state = "cheesecake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 25)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice
- name = "Cheese Cake slice"
- desc = "Slice of pure cheestisfaction"
- icon_state = "cheesecake_slice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake
- name = "Vanilla Cake"
- desc = "A plain cake, not a lie."
- icon_state = "plaincake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/plaincakeslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 20)
-
-/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice
- name = "Vanilla Cake slice"
- desc = "Just a slice of cake, it is enough for everyone."
- icon_state = "plaincake_slice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake
- name = "Orange Cake"
- desc = "A cake with added orange."
- icon_state = "orangecake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/orangecakeslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 20)
-
-/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice
- name = "Orange Cake slice"
- desc = "Just a slice of cake, it is enough for everyone."
- icon_state = "orangecake_slice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake
- name = "Lime Cake"
- desc = "A cake with added lime."
- icon_state = "limecake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/limecakeslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 20)
-
-/obj/item/weapon/reagent_containers/food/snacks/limecakeslice
- name = "Lime Cake slice"
- desc = "Just a slice of cake, it is enough for everyone."
- icon_state = "limecake_slice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake
- name = "Lemon Cake"
- desc = "A cake with added lemon."
- icon_state = "lemoncake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 20)
-
-/obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice
- name = "Lemon Cake slice"
- desc = "Just a slice of cake, it is enough for everyone."
- icon_state = "lemoncake_slice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake
- name = "Chocolate Cake"
- desc = "A cake with added chocolate"
- icon_state = "chocolatecake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 20)
-
-/obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice
- name = "Chocolate Cake slice"
- desc = "Just a slice of cake, it is enough for everyone."
- icon_state = "chocolatecake_slice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel
- name = "Cheese wheel"
- desc = "A big wheel of delcious Cheddar."
- icon_state = "cheesewheel"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesewedge
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 20)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/cheesewedge
- name = "Cheese wedge"
- desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far."
- icon_state = "cheesewedge"
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake
- name = "Birthday Cake"
- desc = "Happy Birthday..."
- icon_state = "birthdaycake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 20)
- reagents.add_reagent("sprinkles", 10)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice
- name = "Birthday Cake slice"
- desc = "A slice of your birthday"
- icon_state = "birthdaycakeslice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread
- name = "Bread"
- icon_state = "Some plain old Earthen bread."
- icon_state = "bread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/breadslice
- name = "Bread slice"
- desc = "A slice of home."
- icon_state = "breadslice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread
- name = "Cream Cheese Bread"
- desc = "Yum yum yum!"
- icon_state = "creamcheesebread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 20)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice
- name = "Cream Cheese Bread slice"
- desc = "A slice of yum!"
- icon_state = "creamcheesebreadslice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon
- name = "Watermelon"
- icon_state = "A juicy watermelon"
- icon_state = "watermelon"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/watermelonslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/watermelonslice
- name = "Watermelon Slice"
- desc = "A slice of watery goodness."
- icon_state = "watermelonslice"
- bitesize = 2
-
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake
- name = "Apple Cake"
- desc = "A cake centred with Apple"
- icon_state = "applecake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/applecakeslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 15)
-
-/obj/item/weapon/reagent_containers/food/snacks/applecakeslice
- name = "Apple Cake slice"
- desc = "A slice of heavenly cake."
- icon_state = "applecakeslice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie
- name = "Pumpkin Pie"
- desc = "A delicious treat for the autumn months."
- icon_state = "pumpkinpie"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
- slices_num = 5
- New()
- ..()
- reagents.add_reagent("nutriment", 15)
-
-/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
- name = "Pumpkin Pie slice"
- desc = "A slice of pumpkin pie, with whipped cream on top. Perfection."
- icon_state = "pumpkinpieslice"
- trash = /obj/item/trash/plate
- bitesize = 2
-
-
-
-/////////////////////////////////////////////////PIZZA////////////////////////////////////////
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza
- slices_num = 6
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita
- name = "Margherita"
- desc = "The most cheezy pizza in galaxy"
- icon_state = "pizzamargherita"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/margheritaslice
- slices_num = 6
- New()
- ..()
- reagents.add_reagent("nutriment", 40)
- reagents.add_reagent("tomatojuice", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/margheritaslice
- name = "Margherita slice"
- desc = "A slice of the most cheezy pizza in galaxy"
- icon_state = "pizzamargheritaslice"
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza
- name = "Meatpizza"
- desc = "" //TODO:
- icon_state = "meatpizza"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice
- slices_num = 6
- New()
- ..()
- reagents.add_reagent("nutriment", 50)
- reagents.add_reagent("tomatojuice", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice
- name = "Meatpizza slice"
- desc = "A slice of " //TODO:
- icon_state = "meatpizzaslice"
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza
- name = "Mushroompizza"
- desc = "Very special pizza"
- icon_state = "mushroompizza"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice
- slices_num = 6
- New()
- ..()
- reagents.add_reagent("nutriment", 35)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice
- name = "Mushroompizza slice"
- desc = "Maybe it is the last slice of pizza in your life."
- icon_state = "mushroompizzaslice"
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza
- name = "Vegetable pizza"
- desc = "No one of Tomatos Sapiens were harmed during making this pizza"
- icon_state = "vegetablepizza"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice
- slices_num = 6
- New()
- ..()
- reagents.add_reagent("nutriment", 30)
- reagents.add_reagent("tomatojuice", 6)
- reagents.add_reagent("imidazoline", 12)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice
- name = "Vegetable pizza slice"
- desc = "A slice of the most green pizza of all pizzas not containing green ingredients "
- icon_state = "vegetablepizzaslice"
- bitesize = 2
-
-/obj/item/pizzabox
- name = "pizza box"
- desc = "A box suited for pizzas."
- icon = 'icons/obj/food.dmi'
- icon_state = "pizzabox1"
-
- var/open = 0 // Is the box open?
- var/ismessy = 0 // Fancy mess on the lid
- var/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pizza // Content pizza
- var/list/boxes = list() // If the boxes are stacked, they come here
- var/boxtag = ""
-
-/obj/item/pizzabox/update_icon()
-
- overlays = list()
-
- // Set appropriate description
- if( open && pizza )
- desc = "A box suited for pizzas. It appears to have a [pizza.name] inside."
- else if( boxes.len > 0 )
- desc = "A pile of boxes suited for pizzas. There appears to be [boxes.len + 1] boxes in the pile."
-
- var/obj/item/pizzabox/topbox = boxes[boxes.len]
- var/toptag = topbox.boxtag
- if( toptag != "" )
- desc = "[desc] The box on top has a tag, it reads: '[toptag]'."
- else
- desc = "A box suited for pizzas."
-
- if( boxtag != "" )
- desc = "[desc] The box has a tag, it reads: '[boxtag]'."
-
- // Icon states and overlays
- if( open )
- if( ismessy )
- icon_state = "pizzabox_messy"
- else
- icon_state = "pizzabox_open"
-
- if( pizza )
- var/image/pizzaimg = image("food.dmi", icon_state = pizza.icon_state)
- pizzaimg.pixel_y = -3
- overlays += pizzaimg
-
- return
- else
- // Stupid code because byondcode sucks
- var/doimgtag = 0
- if( boxes.len > 0 )
- var/obj/item/pizzabox/topbox = boxes[boxes.len]
- if( topbox.boxtag != "" )
- doimgtag = 1
- else
- if( boxtag != "" )
- doimgtag = 1
-
- if( doimgtag )
- var/image/tagimg = image("food.dmi", icon_state = "pizzabox_tag")
- tagimg.pixel_y = boxes.len * 3
- overlays += tagimg
-
- icon_state = "pizzabox[boxes.len+1]"
-
-/obj/item/pizzabox/attack_hand( mob/user as mob )
-
- if( open && pizza )
- user.put_in_hands( pizza )
-
- user << "\red You take the [src.pizza] out of the [src]."
- src.pizza = null
- update_icon()
- return
-
- if( boxes.len > 0 )
- if( user.get_inactive_hand() != src )
- ..()
- return
-
- var/obj/item/pizzabox/box = boxes[boxes.len]
- boxes -= box
-
- user.put_in_hands( box )
- user << "\red You remove the topmost [src] from your hand."
- box.update_icon()
- update_icon()
- return
- ..()
-
-/obj/item/pizzabox/attack_self( mob/user as mob )
-
- if( boxes.len > 0 )
- return
-
- open = !open
-
- if( open && pizza )
- ismessy = 1
-
- update_icon()
-
-/obj/item/pizzabox/attackby( obj/item/I as obj, mob/user as mob )
- if( istype(I, /obj/item/pizzabox/) )
- var/obj/item/pizzabox/box = I
-
- if( !box.open && !src.open )
- // Make a list of all boxes to be added
- var/list/boxestoadd = list()
- boxestoadd += box
- for(var/obj/item/pizzabox/i in box.boxes)
- boxestoadd += i
-
- if( (boxes.len+1) + boxestoadd.len <= 5 )
- user.drop_item()
-
- box.loc = src
- box.boxes = list() // Clear the box boxes so we don't have boxes inside boxes. - Xzibit
- src.boxes.Add( boxestoadd )
-
- box.update_icon()
- update_icon()
-
- user << "\red You put the [box] ontop of the [src]!"
- else
- user << "\red The stack is too high!"
- else
- user << "\red Close the [box] first!"
-
- return
-
- if( istype(I, /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/) ) // Long ass fucking object name
-
- if( src.open )
- user.drop_item()
- I.loc = src
- src.pizza = I
-
- update_icon()
-
- user << "\red You put the [I] in the [src]!"
- else
- user << "\red You try to push the [I] through the lid but it doesn't work!"
- return
-
- if( istype(I, /obj/item/weapon/pen/) )
-
- if( src.open )
- return
-
- var/t = input("Enter what you want to add to the tag:", "Write", null, null) as text
-
- var/obj/item/pizzabox/boxtotagto = src
- if( boxes.len > 0 )
- boxtotagto = boxes[boxes.len]
-
- boxtotagto.boxtag = copytext("[boxtotagto.boxtag][t]", 1, 30)
-
- update_icon()
- return
- ..()
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/code/modules/food/meat.dm b/code/modules/food/meat.dm
deleted file mode 100644
index 5aca55f3ef5..00000000000
--- a/code/modules/food/meat.dm
+++ /dev/null
@@ -1,23 +0,0 @@
-/obj/item/weapon/reagent_containers/food/snacks/meat
- name = "meat"
- desc = "A slab of meat"
- icon_state = "meat"
- health = 180
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- src.bitesize = 3
-
-
-/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh
- name = "synthetic meat"
- desc = "A synthetic slab of flesh."
-
-/obj/item/weapon/reagent_containers/food/snacks/meat/human
- name = "-meat"
- var/subjectname = ""
- var/subjectjob = null
-
-
-/obj/item/weapon/reagent_containers/food/snacks/meat/monkey
- //same as plain meat
\ No newline at end of file