mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 16:18:01 +01:00
Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync
This commit is contained in:
@@ -17,15 +17,15 @@
|
||||
return !existing || istype(existing, status_effect)
|
||||
|
||||
/// Called when someone actually eats this
|
||||
/datum/golem_food_buff/proc/on_consumption(mob/living/carbon/consumer, atom/movable/consumed)
|
||||
/datum/golem_food_buff/proc/on_consumption(mob/living/carbon/consumer, atom/movable/consumed, multiplier = 1)
|
||||
if (!HAS_TRAIT(consumer, TRAIT_ROCK_METAMORPHIC))
|
||||
return
|
||||
apply_effects(consumer, consumed)
|
||||
apply_effects(consumer, consumed, multiplier)
|
||||
|
||||
/// Apply our desired effects to the eater
|
||||
/datum/golem_food_buff/proc/apply_effects(mob/living/carbon/consumer, atom/movable/consumed)
|
||||
/datum/golem_food_buff/proc/apply_effects(mob/living/carbon/consumer, atom/movable/consumed, multiplier = 1)
|
||||
if (status_effect)
|
||||
consumer.apply_status_effect(status_effect)
|
||||
consumer.apply_status_effect(status_effect, multiplier)
|
||||
|
||||
/// Can eat at any time, but isn't very nutritious
|
||||
/datum/golem_food_buff/glass
|
||||
@@ -42,10 +42,10 @@
|
||||
/// Order in which to heal damage types
|
||||
var/list/damage_heal_order = list(BRUTE, BURN, TOX, OXY)
|
||||
|
||||
/datum/golem_food_buff/iron/apply_effects(mob/living/carbon/consumer, atom/movable/consumed)
|
||||
/datum/golem_food_buff/iron/apply_effects(mob/living/carbon/consumer, atom/movable/consumed, multiplier = 1)
|
||||
if (consumer.health == consumer.maxHealth)
|
||||
return
|
||||
consumer.heal_ordered_damage(healed_amount, damage_heal_order)
|
||||
consumer.heal_ordered_damage(healed_amount * multiplier, damage_heal_order)
|
||||
new /obj/effect/temp_visual/heal(get_turf(consumer), COLOR_HEALING_CYAN)
|
||||
|
||||
/datum/golem_food_buff/uranium
|
||||
@@ -90,7 +90,7 @@
|
||||
exclusive = FALSE
|
||||
added_info = "After consumption, you can launch this mineral like a rocket. It's a little hard to keep down."
|
||||
|
||||
/datum/golem_food_buff/gibtonite/apply_effects(mob/living/carbon/human/consumer, atom/movable/consumed)
|
||||
/datum/golem_food_buff/gibtonite/apply_effects(mob/living/carbon/human/consumer, atom/movable/consumed, multiplier = 1)
|
||||
var/obj/item/gibtonite_hand/new_hand = new(null, /* held_gibtonite = */ consumed)
|
||||
|
||||
if(consumer.put_in_hands(new_hand))
|
||||
@@ -108,10 +108,14 @@
|
||||
exclusive = FALSE
|
||||
added_info = "After consumption, you can use the stored power to teleport yourself."
|
||||
|
||||
/datum/golem_food_buff/bluespace/apply_effects(mob/living/carbon/human/consumer, obj/item/stack/consumed)
|
||||
/datum/golem_food_buff/bluespace/apply_effects(mob/living/carbon/human/consumer, atom/movable/consumed, multiplier = 1)
|
||||
if(multiplier <= 0.2)
|
||||
return
|
||||
var/obj/item/bluespace_finger/new_hand = new
|
||||
if (consumed.amount == 1)
|
||||
consumer.dropItemToGround(consumed)
|
||||
if (isstack(consumed))
|
||||
var/obj/item/stack/stack = consumed
|
||||
if(stack.amount == 1)
|
||||
consumer.dropItemToGround(stack)
|
||||
if (consumer.put_in_hands(new_hand, del_on_fail = TRUE))
|
||||
return
|
||||
consumer.balloon_alert(consumer, "no free hands!")
|
||||
|
||||
@@ -94,9 +94,16 @@
|
||||
animate(alpha = 50, time = 7.5 SECONDS, loop = -1, easing = SINE_EASING)
|
||||
return TRUE
|
||||
|
||||
/datum/status_effect/golem/on_creation(mob/living/new_owner)
|
||||
/datum/status_effect/golem/on_creation(mob/living/new_owner, multiplier = 1)
|
||||
///instead of straight out multiplying the duration, we use exponents to flatten the duration so it doesn't become exceedingly long for golems
|
||||
var/exponent = 0.2
|
||||
if(!isgolem(new_owner))
|
||||
duration *= 0.1
|
||||
exponent = 0.5 //non-golem benefit more from higher multipliers since it normally only lasts for 30 seconds for them.
|
||||
if(multiplier > 1)
|
||||
duration *= multiplier ** exponent
|
||||
else // if the multiplier is lower than 1, don't bother using powers.
|
||||
duration *= multiplier
|
||||
var/buff_duration = duration
|
||||
. = ..()
|
||||
if (!.)
|
||||
|
||||
@@ -182,7 +182,8 @@
|
||||
if(!use(1) || !repeating || amount <= 0)
|
||||
var/atom/alert_loc = QDELETED(src) ? user : src
|
||||
alert_loc.balloon_alert(user, repeating ? "all used up!" : "treated [parse_zone(healed_zone)]")
|
||||
playsound(patient, heal_end_sound, 75, TRUE, MEDIUM_RANGE_SOUND_EXTRARANGE)
|
||||
if(heal_end_sound)
|
||||
playsound(patient, heal_end_sound, 75, TRUE, MEDIUM_RANGE_SOUND_EXTRARANGE)
|
||||
return
|
||||
if(heal_continuous_sound && (continuous || !silent))
|
||||
playsound(patient, heal_continuous_sound, 75, TRUE, MEDIUM_RANGE_SOUND_EXTRARANGE)
|
||||
|
||||
@@ -38,7 +38,7 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
mats_per_unit = list(/datum/material/sandstone=SHEET_MATERIAL_AMOUNT)
|
||||
sheettype = "sandstone"
|
||||
construction_path_type = "sandstone"
|
||||
merge_type = /obj/item/stack/sheet/mineral/sandstone
|
||||
walltype = /turf/closed/wall/mineral/sandstone
|
||||
material_type = /datum/material/sandstone
|
||||
@@ -99,7 +99,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \
|
||||
icon_state = "sheet-diamond"
|
||||
inhand_icon_state = "sheet-diamond"
|
||||
singular_name = "diamond"
|
||||
sheettype = "diamond"
|
||||
construction_path_type = "diamond"
|
||||
mats_per_unit = list(/datum/material/diamond=SHEET_MATERIAL_AMOUNT)
|
||||
grind_results = list(/datum/reagent/carbon = 20)
|
||||
gulag_valid = TRUE
|
||||
@@ -130,7 +130,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \
|
||||
icon_state = "sheet-uranium"
|
||||
inhand_icon_state = "sheet-uranium"
|
||||
singular_name = "uranium sheet"
|
||||
sheettype = "uranium"
|
||||
construction_path_type = "uranium"
|
||||
mats_per_unit = list(/datum/material/uranium=SHEET_MATERIAL_AMOUNT)
|
||||
grind_results = list(/datum/reagent/uranium = 20)
|
||||
gulag_valid = TRUE
|
||||
@@ -165,7 +165,7 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \
|
||||
icon_state = "sheet-plasma"
|
||||
inhand_icon_state = "sheet-plasma"
|
||||
singular_name = "plasma sheet"
|
||||
sheettype = "plasma"
|
||||
construction_path_type = "plasma"
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 100
|
||||
mats_per_unit = list(/datum/material/plasma=SHEET_MATERIAL_AMOUNT)
|
||||
@@ -205,7 +205,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \
|
||||
icon_state = "sheet-gold"
|
||||
inhand_icon_state = "sheet-gold"
|
||||
singular_name = "gold bar"
|
||||
sheettype = "gold"
|
||||
construction_path_type = "gold"
|
||||
mats_per_unit = list(/datum/material/gold=SHEET_MATERIAL_AMOUNT)
|
||||
grind_results = list(/datum/reagent/gold = 20)
|
||||
gulag_valid = TRUE
|
||||
@@ -236,7 +236,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \
|
||||
icon_state = "sheet-silver"
|
||||
inhand_icon_state = "sheet-silver"
|
||||
singular_name = "silver bar"
|
||||
sheettype = "silver"
|
||||
construction_path_type = "silver"
|
||||
mats_per_unit = list(/datum/material/silver=SHEET_MATERIAL_AMOUNT)
|
||||
grind_results = list(/datum/reagent/silver = 20)
|
||||
gulag_valid = TRUE
|
||||
@@ -266,7 +266,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \
|
||||
icon_state = "sheet-bananium"
|
||||
inhand_icon_state = null
|
||||
singular_name = "bananium sheet"
|
||||
sheettype = "bananium"
|
||||
construction_path_type = "bananium"
|
||||
mats_per_unit = list(/datum/material/bananium=SHEET_MATERIAL_AMOUNT)
|
||||
grind_results = list(/datum/reagent/consumable/banana = 20)
|
||||
gulag_valid = TRUE
|
||||
@@ -298,7 +298,7 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
throw_speed = 1
|
||||
throw_range = 3
|
||||
sheettype = "titanium"
|
||||
construction_path_type = "titanium"
|
||||
mats_per_unit = list(/datum/material/titanium=SHEET_MATERIAL_AMOUNT)
|
||||
gulag_valid = TRUE
|
||||
merge_type = /obj/item/stack/sheet/mineral/titanium
|
||||
@@ -352,7 +352,7 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
throw_speed = 1
|
||||
throw_range = 3
|
||||
sheettype = "plastitanium"
|
||||
construction_path_type = "plastitanium"
|
||||
mats_per_unit = list(/datum/material/alloy/plastitanium=SHEET_MATERIAL_AMOUNT)
|
||||
gulag_valid = TRUE
|
||||
material_type = /datum/material/alloy/plastitanium
|
||||
@@ -463,7 +463,7 @@ GLOBAL_LIST_INIT(adamantine_recipes, list(
|
||||
icon_state = "sheet-abductor"
|
||||
inhand_icon_state = "sheet-abductor"
|
||||
singular_name = "alien alloy sheet"
|
||||
sheettype = "abductor"
|
||||
construction_path_type = "abductor"
|
||||
mats_per_unit = list(/datum/material/alloy/alien=SHEET_MATERIAL_AMOUNT)
|
||||
merge_type = /obj/item/stack/sheet/mineral/abductor
|
||||
material_type = /datum/material/alloy/alien
|
||||
|
||||
@@ -75,7 +75,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \
|
||||
inhand_icon_state = "sheet-runed"
|
||||
icon = 'icons/obj/stack_objects.dmi'
|
||||
mats_per_unit = list(/datum/material/runedmetal = SHEET_MATERIAL_AMOUNT)
|
||||
sheettype = "runed"
|
||||
construction_path_type = "runed"
|
||||
merge_type = /obj/item/stack/sheet/runed_metal
|
||||
grind_results = list(/datum/reagent/iron = 5, /datum/reagent/blood = 15)
|
||||
material_type = /datum/material/runedmetal
|
||||
|
||||
@@ -416,7 +416,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
|
||||
inhand_icon_state = "sheet-wood"
|
||||
icon = 'icons/obj/stack_objects.dmi'
|
||||
mats_per_unit = list(/datum/material/wood=SHEET_MATERIAL_AMOUNT)
|
||||
sheettype = "wood"
|
||||
construction_path_type = "wood"
|
||||
armor_type = /datum/armor/mineral_wood
|
||||
resistance_flags = FLAMMABLE
|
||||
merge_type = /obj/item/stack/sheet/mineral/wood
|
||||
@@ -481,7 +481,7 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \
|
||||
icon_state = "sheet-bamboo"
|
||||
inhand_icon_state = "sheet-bamboo"
|
||||
icon = 'icons/obj/stack_objects.dmi'
|
||||
sheettype = "bamboo"
|
||||
construction_path_type = "bamboo"
|
||||
mats_per_unit = list(/datum/material/bamboo = SHEET_MATERIAL_AMOUNT)
|
||||
throwforce = 15
|
||||
armor_type = /datum/armor/mineral_bamboo
|
||||
@@ -794,7 +794,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
|
||||
lefthand_file = 'icons/mob/inhands/items/sheets_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/items/sheets_righthand.dmi'
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
sheettype = "bronze"
|
||||
construction_path_type = "bronze"
|
||||
force = 5
|
||||
throwforce = 10
|
||||
max_amount = 50
|
||||
|
||||
@@ -18,14 +18,13 @@
|
||||
pickup_sound = 'sound/items/handling/materials/metal_pick_up.ogg'
|
||||
drop_sound = 'sound/items/handling/materials/metal_drop.ogg'
|
||||
sound_vary = TRUE
|
||||
/// this is used for girders in the creation of walls/false walls
|
||||
var/sheettype = null
|
||||
usable_for_construction = TRUE
|
||||
/// text string used to find typepaths used in door and wall (false and tram too) construction for door assemblies and girders respectively
|
||||
var/construction_path_type = null
|
||||
///If true, this is worth points in the gulag labour stacker
|
||||
var/gulag_valid = FALSE
|
||||
///Set to true if this is vended from a material storage
|
||||
var/manufactured = FALSE
|
||||
///What type of wall does this sheet spawn
|
||||
var/walltype
|
||||
/// whether this sheet can be sniffed by the material sniffer
|
||||
var/sniffable = FALSE
|
||||
|
||||
|
||||
@@ -45,8 +45,6 @@
|
||||
// these amounts will be multiplied by the stack size in on_grind()
|
||||
/// Amount of matter given back to RCDs
|
||||
var/matter_amount = 0
|
||||
/// Does this stack require a unique girder in order to make a wall?
|
||||
var/has_unique_girder = FALSE
|
||||
/// What typepath table we create from this stack
|
||||
var/obj/structure/table/table_type
|
||||
/// What typepath stairs do we create from this stack
|
||||
@@ -73,6 +71,13 @@
|
||||
/// or until the cut heals, whichever comes first
|
||||
var/absorption_rate
|
||||
|
||||
/// Can this stack be used for contruction of girders?
|
||||
var/usable_for_construction = FALSE
|
||||
/// Does this stack require a unique girder in order to make a wall?
|
||||
var/has_unique_girder = FALSE
|
||||
///What type of wall does this sheet spawn
|
||||
var/walltype
|
||||
|
||||
/obj/item/stack/Initialize(mapload, new_amount = amount, merge = TRUE, list/mat_override=null, mat_amt=1)
|
||||
amount = new_amount
|
||||
if(amount <= 0)
|
||||
|
||||
Reference in New Issue
Block a user