This commit is contained in:
Alexis
2026-03-07 06:51:39 -05:00
parent e7878decbf
commit f4ad694e68
30 changed files with 171 additions and 114 deletions
@@ -240,8 +240,8 @@
//if they're strange and have a hacky ID card as an animal
else if(isanimal(user))
var/mob/living/basic/animal = user
if(check_access_obj(animal.access_card))
var/mob/living/simple_animal/animal = user
if(check_access_obj(animal.get_idcard()))
return TRUE
/datum/component/armament/proc/check_access_obj(obj/item/id)
@@ -364,7 +364,7 @@
if(find_animal.sentience_type != SENTIENCE_ORGANIC)
return FALSE
find_animal.faction = list(FACTION_ASHWALKER)
find_animal.set_faction(list(FACTION_ASHWALKER))
if(ishostile(find_animal))
var/mob/living/simple_animal/hostile/hostile_animal = find_animal
@@ -387,7 +387,7 @@
if(find_animal.sentience_type != SENTIENCE_ORGANIC)
return FALSE
find_animal.faction = list(FACTION_ASHWALKER)
find_animal.set_faction(list(FACTION_ASHWALKER))
find_animal.revive(HEAL_ALL)
return TRUE
@@ -125,7 +125,7 @@
/obj/item/canvas/drawingtablet/ui_action_click(mob/user, action)
if(istype(action, /datum/action/item_action/dtselectcolor))
currentcolor = tgui_color_picker(usr, "", "Choose Color", currentcolor) // BUBBERSTATION EDIT: TGUI COLOR PICKER
currentcolor = tgui_color_picker(user, "", "Choose Color", currentcolor)
else if(istype(action, /datum/action/item_action/dtcolormenu))
var/list/selects = colors.Copy()
selects["Save"] = "Save"
@@ -147,13 +147,19 @@
else
currentcolor = colors[selection]
else if(istype(action, /datum/action/item_action/dtcleargrid))
var/yesnomaybe = tgui_alert("Are you sure you wanna clear the canvas?", "", list("Yes", "No", "Maybe"))
var/yesnomaybe = tgui_alert(user, "Are you sure you wanna clear the canvas?", "", list("Yes", "No", "Maybe"))
if(QDELETED(src) || !user.can_perform_action(src))
return
switch(yesnomaybe)
if("Yes")
/* reset_grid() Broken
*/ SStgui.update_uis(src)
workspace = new(width,
height,
color_mode = SPRITE_EDITOR_COLOR_MODE_RGB,
config_flags = NONE,
tool_flags = SPRITE_EDITOR_TOOL_PENCIL | SPRITE_EDITOR_TOOL_BUCKET,
initial_layer_color = "[canvas_color]ff" // To avoid needing to handle strings of mixed lengths, sprite editor workspaces always use the alpha channel
)
SStgui.update_uis(src)
if("No")
return
if("Maybe")
@@ -22,13 +22,11 @@
icon = 'modular_skyrat/master_files/icons/obj/hydroponics/harvest.dmi'
icon_state = "kiri"
foodtypes = FRUIT | SUGAR
grind_results = list(/datum/reagent/consumable/kiri_jelly = 0.1)
distill_reagent = /datum/reagent/consumable/ethanol/shakiri
tastes = list("ultra-sweet jelly" = 1)
/obj/item/food/grown/kiri/grind_results()
return list(/datum/reagent/consumable/kiri_jelly = 0.1)
/obj/item/food/grown/kiri/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/baked_kiri, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -25,8 +25,7 @@
tastes = list("mint and savory sweetness" = 1)
/obj/item/food/grown/muli/grind_results()
retrun list(/datum/reagent/consumable/muli_juice = 0.1)
return list(/datum/reagent/consumable/muli_juice = 0.1)
/obj/item/food/grown/muli/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/baked_muli, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -23,7 +23,6 @@
icon = 'modular_skyrat/master_files/icons/obj/hydroponics/harvest.dmi'
icon_state = "piru"
foodtypes = VEGETABLES
grind_results = list(/datum/reagent/consumable/piru_flour = 0)
tastes = list("chalky dryness" = 1)
/obj/item/food/grown/piru/grind_results()
@@ -102,7 +102,7 @@
var/mob/living/spawned_mob = new chosen_mob_type(loc)
spawned_mob.flags_1 |= (flags_1 & ADMIN_SPAWNED_1)
spawned_mob.has_faction = faction
spawned_mob.set_faction(faction)
spawned_mob.ghost_controllable = ghost_controllable
RegisterSignal(spawned_mob, COMSIG_LIVING_DEATH, PROC_REF(mob_death))
@@ -67,7 +67,7 @@ would only be recognisable with someone that had the syndicate trait.
if(EXAMINE_CHECK_SYNDICATE_TOY)
if(user.mind)
var/datum/mind/M = user.mind
if((ROLE_TRAITOR in M.get_special_roles()) || (ROLE_SYNDICATE in user.faction))
if((ROLE_TRAITOR in M.get_special_roles()) || (user.has_faction(ROLE_SYNDICATE)))
composed_message = "You note the following because of your <span class='red'><b>[special_desc_affiliation ? special_desc_affiliation : "Syndicate Affiliation"]</b></span>: <br>"
composed_message += special_desc
. += composed_message
@@ -26,9 +26,11 @@
sanitization = 0.5
flesh_regeneration = 1.75
stop_bleeding = 0.25
grind_results = list(/datum/reagent/medicine/coagulant = 2)
merge_type = /obj/item/stack/medical/mesh/bloody
/obj/item/stack/medical/mesh/bloody/grind_results()
return list(/datum/reagent/medicine/coagulant = 2)
/obj/item/stack/medical/mesh/bloody/update_icon_state()
if(is_open)
return ..()
@@ -170,7 +170,7 @@
/obj/item/claymore/dragonslayer/attack(mob/living/target, mob/living/carbon/human/user)
var/is_nemesis_faction = FALSE
for(var/found_faction in target.faction)
for(var/found_faction in target.get_faction())
if(found_faction in nemesis_factions)
is_nemesis_faction = TRUE
force += faction_bonus_force
@@ -829,7 +829,7 @@ GLOBAL_LIST_INIT(call911_do_and_do_not, list(
message_admins("[ADMIN_LOOKUPFLW(user)] has beamed out [living_user.pulling] alongside them.")
var/turf/pulling_turf = get_turf(living_user.pulling)
playsound(pulling_turf, 'sound/effects/magic/Repulse.ogg', 100, 1)
var/datum/effect_system/basic/spak_spread/quantum/sparks = new
var/datum/effect_system/basic/spark_spread/quantum/sparks = new
do_sparks(10, 1, pulling_turf)
qdel(living_user.pulling)
var/turf/user_turf = get_turf(living_user)
@@ -92,9 +92,8 @@
return yoink
/obj/item/storage/toolbox/emergency/turret/mag_fed/set_faction(obj/machinery/porta_turret/syndicate/toolbox/mag_fed/turret, mob/user)
if(!(user.faction in turret.faction))
turret.faction += user.faction
turret.allies += REF(user)
if(!turret.faction_check_atom(user))
APPLY_FACTION_AND_ALLIES_FROM(turret, user)
/obj/item/storage/toolbox/emergency/turret/mag_fed/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
if(!is_type_in_list(tool, list(/obj/item/wrench, /obj/item/screwdriver, /obj/item/multitool, /obj/item/toy/crayon/spraycan)))
@@ -140,7 +139,7 @@
playsound(src, 'sound/items/tools/drill_use.ogg', 80, TRUE, -1)
deploy_turret(user, loc)
return ITEM_INTERACT_SUCCESS
..()
return ..()
/obj/item/storage/toolbox/emergency/turret/mag_fed/attack_self(mob/user, modifiers)
if(!easy_deploy)
@@ -433,7 +432,7 @@
. = ..()
. -= span_notice("You can repair it by <b>left-clicking</b> with a combat wrench.")
. -= span_notice("You can fold it by <b>right-clicking</b> with a combat wrench.")
if((user.faction in faction) || (REF(user) in allies))
if(FAST_FACTION_CHECK(faction, user.get_faction(), null, null, FALSE) || has_ally(user))
. += span_notice("You can unlock it by <b>left-clicking</b> with an <b>id card.</b>")
. += span_notice("You can repair it by <b>left-clicking</b> with a <b>wrench.</b>")
. += span_notice("You can fold it by <b>right-clicking</b> with a <b>wrench.</b>")
@@ -668,25 +667,19 @@
/obj/machinery/porta_turret/syndicate/toolbox/mag_fed/in_faction(mob/target)
if(!faction_targeting)
if(REF(target) in allies)
return TRUE
else
return FALSE
return has_ally(target)
return FAST_FACTION_CHECK(faction, target.get_faction(), allies, target.allies, FALSE)
for(var/faction1 in faction)
if((faction1 in target.faction) || (REF(target) in allies)) // For an Ally System
return TRUE
return FALSE
/// toggles between whether things are inside the ally system
/obj/machinery/porta_turret/syndicate/toolbox/mag_fed/proc/toggle_ally(mob/living/target) //leave these since it's kinda important to know which is being done.
if(REF(target) in allies)
allies -= REF(target)
if(remove_ally(target))
balloon_alert_to_viewers("ally removed!")
return
else
allies += REF(target)
balloon_alert_to_viewers("ally designated!")
if(add_ally(target))
balloon_alert_to_viewers("ally designated!")
return
/obj/machinery/porta_turret/syndicate/toolbox/mag_fed/target(atom/movable/target)
@@ -737,7 +730,6 @@
things_in_my_lawn -= whipper_snapper
if(target(whipper_snapper))
return TRUE
return FALSE
/// Shoots at one specific target. Only happens if target is overridden. modularized for burst?
/obj/machinery/porta_turret/syndicate/toolbox/mag_fed/proc/trytoshootfucker(datum/weakref/target_weakref)
@@ -745,11 +737,10 @@
if(isnull(overridden_target))
target_override = null
burst_target = null
return FALSE
return
while(overridden_target)
if(target(overridden_target)) //ok. It's trying to shoot a weakref. Thats the issue.
return TRUE
return FALSE
/obj/machinery/porta_turret/syndicate/toolbox/mag_fed/shootAt(atom/movable/target)
if(!chambered) //Ok, We need to START the cycle
@@ -785,10 +776,9 @@
/// Handles the firing process. Will need edited for special ammo types like 980.
/obj/machinery/porta_turret/syndicate/toolbox/mag_fed/proc/handle_firing(obj/item/ammo_casing/casing, atom/movable/target)
var/ignored_factions = list()
var/obj/projectile/our_projectile = casing.loaded_projectile
if(ignore_faction)
our_projectile.ignored_factions = (faction + allies)
APPLY_FACTION_AND_ALLIES_FROM(our_projectile, src)
our_projectile.damage *= turret_damage_multiplier
our_projectile.stamina *= turret_damage_multiplier
@@ -812,7 +802,7 @@
fire_sound = 'modular_skyrat/modules/modular_weapons/sounds/pistol_light.ogg'
else if(istype(soundmaker, /obj/item/ammo_casing/c585trappiste))
fire_sound = 'modular_skyrat/modules/modular_weapons/sounds/pistol_heavy.ogg'
else if(istype(soundmaker, /obj/item/ammo_casing/c46x30mm))
else if(istype(soundmaker, /obj/item/ammo_casing/c40sol))
fire_sound = 'modular_skyrat/modules/modular_weapons/sounds/rifle_heavy.ogg'
else if(istype(soundmaker, /obj/item/ammo_casing/strilka310))
fire_sound = 'modular_skyrat/modules/modular_weapons/sounds/battle_rifle.ogg'
@@ -823,7 +813,7 @@
////// Operation Handling //////
/obj/machinery/porta_turret/syndicate/toolbox/mag_fed/attackby(obj/item/attacking_item, mob/living/user, params) // This hasn't been changed upstream yet.
/obj/machinery/porta_turret/syndicate/toolbox/mag_fed/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) // This hasn't been changed upstream yet.
var/obj/item/storage/toolbox/emergency/turret/mag_fed/auto_loader = mag_box?.resolve()
if(isnull(auto_loader))
mag_box = null
@@ -877,7 +867,7 @@
if(!claptrap_moment)
balloon_alert(user, "repaired!")
/obj/machinery/porta_turret/syndicate/toolbox/mag_fed/attackby_secondary(obj/item/attacking_item, mob/living/user, params) //IM TIRED OF MISMATCHED VAR NAMES. IT'S ATTACK_ITEM ON MAIN, WHY WEAPON HERE?
/obj/machinery/porta_turret/syndicate/toolbox/mag_fed/attackby_secondary(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) //IM TIRED OF MISMATCHED VAR NAMES. IT'S ATTACK_ITEM ON MAIN, WHY WEAPON HERE?
. = ..()
if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN)
return
@@ -11,13 +11,12 @@
/datum/wound/burn/robotic/overheat
treat_text = "Introduction of a cold environment or lowering of body temperature."
treat_text_short = "Cool the patient down with low temperature chemicals or put them under a shower."
simple_desc = "Metals are overheated, increasing damage taken significantly and raising body temperature!"
simple_treat_text = "Ideally <b>cryogenics</b>, but any source of <b>low body temperature</b> can work. <b>Spraying</b> with <b>spray bottles/extinguishers/showers</b> \
will quickly cool the limb, but <b>cause damage</b>. <b>Hercuri</b> is <b>especially effective</b> in quick cooling. \
<b>Clothing</b> reduces the water/hercuri that makes it to the metal, and <b>gauze</b> binds it and <b>reduces</b> the <b>damage</b> taken."
homemade_treat_text = "You can also splash <b>any liquid</b> on it for a rather <b>inefficient</b> and <b>damaging</b> coolant!"
treat_text_short = "Lower body temperature."
default_scar_file = METAL_SCAR_FILE
@@ -163,7 +162,7 @@
/datum/wound/burn/robotic/get_limb_examine_description()
return span_warning("The metal on this limb is glowing radiantly.")
/datum/wound/burn/robotic/overheat/handle_process(seconds_per_tick, times_fired)
/datum/wound/burn/robotic/overheat/handle_process(seconds_per_tick)
if (isnull(victim))
var/turf/our_turf = get_turf(limb)
if (!isnull(our_turf))
@@ -214,15 +213,15 @@
* Equalizes temp to the reagent temp, but also causes thermal shock. Basically, does damage based on the temp differential.
* Clothes reduce the effects massively. Hercuri reduces the thermal shock and gets a special temp buff.
*/
/datum/wound/burn/robotic/overheat/proc/victim_exposed_to_reagents(datum/signal_source, list/reagents, datum/reagents/source, methods, show_message)
/datum/wound/burn/robotic/overheat/proc/victim_exposed_to_reagents(datum/signal_source, list/reagents, datum/reagents/source, methods, volume_modifier, show_message)
SIGNAL_HANDLER
var/reagent_coeff = base_reagent_temp_coefficient
if (!get_location_accessible(victim, limb.body_zone))
if(!victim.is_location_accessible(limb.body_zone))
if (ishuman(victim))
// hi! its niko! small rant
// hi! it's niko! small rant
// this proc has no goddamn reason to be on human, it could so easily just have used a proc on carbon that would get the required bodyparts to check
// but no. it had to hardcode the list in the proc itself so its impossible to modularly fix this
// but no. it had to hardcode the list in the proc itself so it's impossible to modularly fix this
// so instead we just say fuck it and hope to god only human subtypes get this wound
// tldr; ryll why
var/mob/living/carbon/human/human_victim = victim
@@ -237,7 +236,7 @@
return
if (istype(source.my_atom, /obj/machinery/shower))
expose_temperature(source.chem_temp, (15 * reagent_coeff), TRUE)
expose_temperature(source.chem_temp, (15 * volume_modifier * reagent_coeff), TRUE)
return
var/total_reagent_amount = 0
@@ -252,7 +251,7 @@
var/local_chem_temp = max(source.chem_temp - chem_temp_increment, 0)
expose_temperature(local_chem_temp, (reagent_coeff * total_reagent_amount), TRUE, heat_shock_damage_mult = thermal_shock_mult)
expose_temperature(local_chem_temp, (reagent_coeff * volume_modifier * total_reagent_amount), TRUE, heat_shock_damage_mult = thermal_shock_mult)
/// Adjusts chassis_temperature by the delta between temperature and itself, multiplied by coeff.
/// If heat_shock is TRUE, limb will receive brute damage based on the delta.
@@ -281,7 +280,7 @@
if (victim)
var/gauze_or_not = (!isnull(gauze) ? ", but [gauze] helps to keep it together" : "")
var/clothing_text = (!get_location_accessible(victim, limb.body_zone) ? ", [victim.p_their()] clothing absorbing some of the liquid" : "")
var/clothing_text = (!victim.is_location_accessible(limb.body_zone) ? ", [victim.p_their()] clothing absorbing some of the liquid" : "")
victim.visible_message(span_warning("[victim]'s [limb.plaintext_zone] strains from the thermal shock[clothing_text][gauze_or_not]!"))
playsound(victim, 'sound/items/tools/welder.ogg', 25)
@@ -320,8 +319,8 @@
var/heat_fahrenheit = round(heating_threshold * 1.8-459.67, 0.1)
return "Its current temperature is [span_blue("[current_temp_celcius ] &deg;C ([current_temp_fahrenheit] &deg;F)")], \
and needs to cool to [span_nicegreen("[cool_celcius] &deg;C ([cool_fahrenheit] &deg;F)")][(heating_threshold && heating_threshold != INFINITY) ? ", but \
will worsen if heated to [span_purple("[heat_celcius] &deg;C ([heat_fahrenheit] &deg;F)")]" : ""]."
and needs to cool to [span_nicegreen("[cool_celcius] &deg;C ([cool_fahrenheit] &deg;F)")], but \
will worsen if heated to [span_purple("[heat_celcius] &deg;C ([heat_fahrenheit] &deg;F)")]."
/datum/wound/burn/robotic/overheat/get_scanner_description(mob/user)
. = ..()
@@ -62,89 +62,126 @@
balloon_alert_to_viewers(anchored ? "secured" : "unsecured")
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
/obj/structure/large_mortar/attackby(obj/item/attacking_item, mob/living/carbon/human/user)
if(istype(attacking_item, /obj/item/storage/bag))
/obj/structure/large_mortar/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers)
if(attacking_item.is_refillable())
return
/obj/structure/large_mortar/item_interaction(mob/living/user, obj/item/tool, list/modifiers, is_right_clicking)
. = ..()
if(. || user.combat_mode || tool.is_refillable())
return .
if(istype(tool, /obj/item/storage/bag))
if(length(contents) >= maximum_contained_items)
balloon_alert(user, "already full")
return TRUE
balloon_alert(user, "already full!")
return ITEM_INTERACT_BLOCKING
if(!length(attacking_item.contents))
if(!length(tool.contents))
balloon_alert(user, "nothing to transfer!")
return TRUE
return ITEM_INTERACT_BLOCKING
for(var/obj/item/target_item in attacking_item.contents)
for(var/obj/item/target_item in tool.contents)
if(length(contents) >= maximum_contained_items)
break
if(target_item.juice_typepath || target_item.grind_results)
if(target_item.juice_typepath() || target_item.grind_results())
target_item.forceMove(src)
if (length(contents) >= maximum_contained_items)
balloon_alert(user, "filled!")
balloon_alert(user, "filled")
else
balloon_alert(user, "transferred")
return TRUE
if(istype(attacking_item, /obj/item/pestle))
return ITEM_INTERACT_SUCCESS
if(istype(tool, /obj/item/pestle))
if(!anchored)
balloon_alert(user, "secure to ground first")
return
balloon_alert(user, "not secured!")
return ITEM_INTERACT_BLOCKING
if(!length(contents))
balloon_alert(user, "nothing to grind")
return
if(user.get_stamina_loss() > LARGE_MORTAR_STAMINA_MINIMUM)
balloon_alert(user, "too tired")
return
if(!length(contents) && reagents.total_volume == 0)
balloon_alert(user, "mortar empty!")
return ITEM_INTERACT_BLOCKING
var/list/choose_options = list(
"Grind" = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_grind"),
"Juice" = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_juice")
"Juice" = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_juice"),
"Mix" = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_mix"),
)
var/picked_option = show_radial_menu(user, src, choose_options, radius = 38, require_near = TRUE)
if(!length(contents) || !in_range(src, user) || !user.is_holding(attacking_item) && !picked_option)
return
if(user.get_stamina_loss() > LARGE_MORTAR_STAMINA_MINIMUM)
balloon_alert(user, "too tired!")
return ITEM_INTERACT_BLOCKING
balloon_alert_to_viewers("grinding...")
var/skill_modifier = user.mind.get_skill_modifier(/datum/skill/primitive, SKILL_SPEED_MODIFIER)
if(!in_range(src, user) || !user.is_holding(tool) || !picked_option)
return ITEM_INTERACT_BLOCKING
var/act_verb = LOWER_TEXT(picked_option)
var/act_verb_ing
if(act_verb == "juice")
act_verb_ing = "juicing"
else
act_verb_ing = "[act_verb]ing"
var/has_resource
if(picked_option == "Mix")
has_resource = reagents.total_volume > 0
else
has_resource = length(contents) > 0
if(!has_resource)
balloon_alert(user, "nothing to [act_verb]!")
return ITEM_INTERACT_BLOCKING
balloon_alert_to_viewers("[act_verb_ing]...")
var/skill_modifier = user.mind?.get_skill_modifier(/datum/skill/primitive, SKILL_SPEED_MODIFIER)
if(!do_after(user, 5 SECONDS * skill_modifier, target = src))
balloon_alert_to_viewers("stopped grinding")
return
balloon_alert_to_viewers("stopped [act_verb_ing]")
return ITEM_INTERACT_BLOCKING
var/stamina_use = LARGE_MORTAR_STAMINA_USE
if(prob(user.mind.get_skill_modifier(/datum/skill/primitive, SKILL_PROBS_MODIFIER)))
stamina_use *= 0.5 //so it uses half the amount of stamina (35 instead of 70)
user.adjust_stamina_loss(stamina_use) //This is a bit more tiring than a normal sized mortar and pestle
user.mind.adjust_experience(/datum/skill/primitive, 5)
user.adjust_stamina_loss(LARGE_MORTAR_STAMINA_USE) //This is a bit more tiring than a normal sized mortar and pestle
switch(picked_option)
if("Juice")
for(var/obj/item/target_item as anything in contents)
if(target_item.juice_typepath)
if (reagents.total_volume >= reagents.maximum_volume)
balloon_alert(user, "overflowing!")
break
if(target_item.juice_typepath())
juice_target_item(target_item, user)
else
grind_target_item(target_item, user)
if("Grind")
for(var/obj/item/target_item as anything in contents)
if(target_item.grind_results)
if (reagents.total_volume >= reagents.maximum_volume)
balloon_alert(user, "overflowing!")
break
if(target_item.grind_results())
grind_target_item(target_item, user)
else
juice_target_item(target_item, user)
return
if(!attacking_item.grind_results && !attacking_item.juice_typepath)
balloon_alert(user, "can't grind this")
return ..()
return ITEM_INTERACT_SUCCESS
if(!tool.grind_results() && !tool.juice_typepath())
balloon_alert(user, "can't grind this!")
return ITEM_INTERACT_BLOCKING
if(length(contents) >= maximum_contained_items)
balloon_alert(user, "already full")
return
balloon_alert(user, "already full!")
return ITEM_INTERACT_BLOCKING
attacking_item.forceMove(src)
return ..()
tool.forceMove(src)
return ITEM_INTERACT_SUCCESS
///Juices the passed target item, and transfers any contained chems to the mortar as well
/obj/structure/large_mortar/proc/juice_target_item(obj/item/to_be_juiced, mob/living/carbon/human/user)
+3 -1
View File
@@ -10,13 +10,15 @@
throwforce = 15
resistance_flags = FIRE_PROOF
merge_type = /obj/item/stack/sheet/mineral/stone
grind_results = null
material_type = /datum/material/stone
matter_amount = 0
source = null
walltype = /turf/closed/wall/mineral/stone
stairs_type = /obj/structure/stairs/stone
/obj/item/stack/sheet/mineral/stone()
return null
GLOBAL_LIST_INIT(stone_recipes, list ( \
new/datum/stack_recipe("stone brick wall", /turf/closed/wall/mineral/stone, 5, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND | CRAFT_TRANSFERS_REAGENTS, category = CAT_STRUCTURE), \
new/datum/stack_recipe("stone brick tile", /obj/item/stack/tile/mineral/stone, 1, 4, 20, category = CAT_TILES),
@@ -2,7 +2,7 @@
/obj/structure/window/reinforced/fulltile/Initialize(mapload, direct)
. = ..()
qdel(GetComponent(/datum/component/simple_rotation))
RemoveElement(/datum/element/simple_rotation)
AddElement(/datum/element/airbag)
/**
@@ -81,7 +81,7 @@
ini_dir = dir
AddElement(/datum/element/climbable, climb_time = 20, climb_stun = 0)
AddComponent(/datum/component/simple_rotation, ROTATION_NEEDS_ROOM)
AddElement(/datum/element/simple_rotation, ROTATION_NEEDS_ROOM)
var/static/list/loc_connections = list(
COMSIG_ATOM_ENTERED = PROC_REF(on_enter),
@@ -24,5 +24,7 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
juice_typepath = /datum/reagent/toxin
tastes = list("poison" = 1)
/obj/item/food/grown/amauri/juice_typepath()
return /datum/reagent/toxin
@@ -24,5 +24,7 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
juice_typepath = /datum/reagent/consumable/sugar
tastes = list("overpowering sweetness" = 1)
/obj/item/food/grown/gelthi/juice_typepath()
return /datum/reagent/consumable/sugar
@@ -24,5 +24,7 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
juice_typepath = /datum/reagent/medicine/cryoxadone
tastes = list("snow" = 1)
/obj/item/food/grown/jurlmah/juice_typepath()
return /datum/reagent/medicine/cryoxadone
@@ -24,5 +24,7 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
juice_typepath = /datum/reagent/consumable/nothing
tastes = list("nothing" = 1)
/obj/item/food/grown/nofruit/juice_typepath()
return /datum/reagent/consumable/nothing
@@ -24,5 +24,7 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
juice_typepath = /datum/reagent/bromine
tastes = list("chemicals" = 1)
/obj/item/food/grown/shand/juice_typepath()
return /datum/reagent/bromine
@@ -24,5 +24,7 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
juice_typepath = /datum/reagent/brimdust
tastes = list("crystals" = 1)
/obj/item/food/grown/surik/juice_typepath()
return /datum/reagent/brimdust
@@ -25,5 +25,7 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
juice_typepath = /datum/reagent/consumable/coconut_milk
tastes = list("milk" = 1)
/obj/item/food/grown/telriis/juice_typepath()
return /datum/reagent/consumable/coconut_milk
@@ -24,5 +24,7 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
juice_typepath = /datum/reagent/silver
tastes = list("silver" = 1)
/obj/item/food/grown/thaadra/juice_typepath()
return /datum/reagent/silver
@@ -24,5 +24,7 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
juice_typepath = /datum/reagent/toxin/plasma
tastes = list("plasma" = 1)
/obj/item/food/grown/vale/juice_typepath()
return /datum/reagent/toxin/plasma
@@ -24,5 +24,7 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
juice_typepath = /datum/reagent/nitrous_oxide
tastes = list("sleep" = 1)
/obj/item/food/grown/vaporsac/juice_typepath()
return /datum/reagent/nitrous_oxide
@@ -5,4 +5,10 @@
icon_state = "rzippo"
light_color = "#952CF4"
overlay_state = "royal"
grind_results = list(/datum/reagent/gold = 1, /datum/reagent/fuel = 5, /datum/reagent/colorful_reagent/powder/purple/crayon = 1.5)
/obj/item/lighter/royal/grind_results()
return list(
/datum/reagent/gold = 1,
/datum/reagent/fuel = 5,
/datum/reagent/colorful_reagent/powder/purple/crayon = 1.5,
)
@@ -544,7 +544,7 @@
// Add rotating and armrest
/obj/structure/bloodsucker/bloodthrone/Initialize(mapload)
AddComponent(/datum/component/simple_rotation)
AddElement(/datum/element/simple_rotation)
armrest = GetArmrest()
armrest.layer = ABOVE_MOB_LAYER
return ..()
-1
View File
@@ -9937,7 +9937,6 @@
#include "modular_zubbers\code\modules\tarkon\code\clothing\backpack.dm"
#include "modular_zubbers\code\modules\tarkon\code\misc-fluff\research.dm"
#include "modular_zubbers\code\modules\taur_mechanics\serpentine_taur.dm"
#include "modular_zubbers\code\modules\tgui_input\color.dm"
#include "modular_zubbers\code\modules\title_screen\code\title_screen_subsystem.dm"
#include "modular_zubbers\code\modules\uplink\one_shot_emag.dm"
#include "modular_zubbers\code\modules\uplink\uplink_devices.dm"