This commit is contained in:
Fikou
2021-12-24 21:00:24 +01:00
committed by GitHub
parent fc5c9e2900
commit 7b38dd4ff7
191 changed files with 6749 additions and 2189 deletions
+26 -21
View File
@@ -260,23 +260,26 @@
user.log_message("activated a bottle of mayhem", LOG_ATTACK)
qdel(src)
/obj/item/clothing/suit/space/hardsuit/hostile_environment
/obj/item/clothing/suit/hooded/hostile_environment
name = "H.E.C.K. suit"
desc = "Hostile Environment Cross-Kinetic Suit: A suit designed to withstand the wide variety of hazards from Lavaland. It wasn't enough for its last owner."
icon_state = "hostile_env"
inhand_icon_state = "hostile_env"
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | LAVA_PROOF | ACID_PROOF
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/hostile_environment
slowdown = 0
hoodtype = /obj/item/clothing/head/hooded/hostile_environment
armor = list(MELEE = 70, BULLET = 40, LASER = 10, ENERGY = 20, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100)
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
clothing_flags = THICKMATERIAL
resistance_flags = FIRE_PROOF|LAVA_PROOF|ACID_PROOF
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
/obj/item/clothing/suit/space/hardsuit/hostile_environment/Initialize(mapload)
/obj/item/clothing/suit/hooded/hostile_environment/Initialize(mapload)
. = ..()
AddElement(/datum/element/radiation_protected_clothing)
/obj/item/clothing/suit/space/hardsuit/hostile_environment/process(delta_time)
/obj/item/clothing/suit/hooded/hostile_environment/process(delta_time)
. = ..()
var/mob/living/carbon/wearer = loc
if(istype(wearer) && DT_PROB(1, delta_time)) //cursed by bubblegum
@@ -286,45 +289,47 @@
else
to_chat(wearer, span_warning("[pick("You hear faint whispers.","You smell ash.","You feel hot.","You hear a roar in the distance.")]"))
/obj/item/clothing/head/helmet/space/hardsuit/hostile_environment
/obj/item/clothing/head/hooded/hostile_environment
name = "H.E.C.K. helmet"
desc = "Hostile Environiment Cross-Kinetic Helmet: A helmet designed to withstand the wide variety of hazards from Lavaland. It wasn't enough for its last owner."
icon_state = "hardsuit0-heck"
inhand_icon_state = "hostile_env"
hardsuit_type = "heck"
icon_state = "hostile_env"
w_class = WEIGHT_CLASS_NORMAL
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
armor = list(MELEE = 70, BULLET = 40, LASER = 10, ENERGY = 20, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100)
resistance_flags = FIRE_PROOF | LAVA_PROOF | ACID_PROOF
cold_protection = HEAD
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
clothing_flags = SNUG_FIT|THICKMATERIAL
resistance_flags = FIRE_PROOF|LAVA_PROOF|ACID_PROOF
actions_types = list()
/obj/item/clothing/head/helmet/space/hardsuit/hostile_environment/Initialize(mapload)
/obj/item/clothing/head/hooded/hostile_environment/Initialize(mapload)
. = ..()
update_appearance()
AddComponent(/datum/component/butchering, 5, 150, null, null, null, TRUE, CALLBACK(src, .proc/consume))
AddElement(/datum/element/radiation_protected_clothing)
/obj/item/clothing/head/helmet/space/hardsuit/hostile_environment/equipped(mob/user, slot, initial = FALSE)
/obj/item/clothing/head/hooded/hostile_environment/equipped(mob/user, slot, initial = FALSE)
. = ..()
RegisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, .proc/butcher_target)
var/datum/component/butchering/butchering = GetComponent(/datum/component/butchering)
butchering.butchering_enabled = TRUE
to_chat(user, span_notice("You feel a bloodlust. You can now butcher corpses with your bare arms."))
/obj/item/clothing/head/helmet/space/hardsuit/hostile_environment/dropped(mob/user, silent = FALSE)
/obj/item/clothing/head/hooded/hostile_environment/dropped(mob/user, silent = FALSE)
. = ..()
UnregisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK)
var/datum/component/butchering/butchering = GetComponent(/datum/component/butchering)
butchering.butchering_enabled = FALSE
to_chat(user, span_notice("You lose your bloodlust."))
/obj/item/clothing/head/helmet/space/hardsuit/hostile_environment/proc/butcher_target(mob/user, atom/target, proximity)
/obj/item/clothing/head/hooded/hostile_environment/proc/butcher_target(mob/user, atom/target, proximity)
SIGNAL_HANDLER
if(!isliving(target))
return
return SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, target, user)
/obj/item/clothing/head/helmet/space/hardsuit/hostile_environment/proc/consume(mob/living/user, mob/living/butchered)
/obj/item/clothing/head/hooded/hostile_environment/proc/consume(mob/living/user, mob/living/butchered)
if(butchered.mob_biotypes & (MOB_ROBOTIC | MOB_SPIRIT))
return
var/health_consumed = butchered.maxHealth * 0.1
@@ -333,13 +338,13 @@
var/datum/client_colour/color = user.add_client_colour(/datum/client_colour/bloodlust)
QDEL_IN(color, 1 SECONDS)
/obj/item/clothing/head/helmet/space/hardsuit/hostile_environment/update_overlays()
/obj/item/clothing/head/hooded/hostile_environment/update_overlays()
. = ..()
var/mutable_appearance/glass_overlay = mutable_appearance(icon, "hostile_env_glass")
glass_overlay.appearance_flags = RESET_COLOR
. += glass_overlay
/obj/item/clothing/head/helmet/space/hardsuit/hostile_environment/worn_overlays(mutable_appearance/standing, isinhands)
/obj/item/clothing/head/hooded/hostile_environment/worn_overlays(mutable_appearance/standing, isinhands)
. = ..()
if(!isinhands)
var/mutable_appearance/glass_overlay = mutable_appearance('icons/mob/clothing/head.dmi', "hostile_env_glass")
@@ -54,7 +54,7 @@
if(10)
new /obj/item/ship_in_a_bottle(src)
if(11)
new /obj/item/clothing/suit/space/hardsuit/berserker(src)
new /obj/item/clothing/suit/hooded/berserker(src)
if(12)
new /obj/item/jacobs_ladder(src)
if(13)
@@ -112,7 +112,7 @@
name = "bubblegum chest"
/obj/structure/closet/crate/necropolis/bubblegum/PopulateContents()
new /obj/item/clothing/suit/space/hardsuit/hostile_environment(src)
new /obj/item/clothing/suit/hooded/hostile_environment(src)
var/loot = rand(1,2)
switch(loot)
if(1)
+30 -28
View File
@@ -581,29 +581,25 @@
A.attackby(src, H)
return COMPONENT_CANCEL_ATTACK_CHAIN
/obj/item/clothing/suit/space/hardsuit/berserker
name = "berserker hardsuit"
desc = "Voices echo from the hardsuit, driving the user insane."
icon_state = "hardsuit-berserker"
inhand_icon_state = "hardsuit-berserker"
slowdown = 0
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/berserker
/obj/item/clothing/suit/hooded/berserker
name = "berserker armor"
desc = "Voices echo from the armor, driving the user insane. Is not space-proof."
icon_state = "berserker"
hoodtype = /obj/item/clothing/head/hooded/berserker
armor = list(MELEE = 30, BULLET = 30, LASER = 10, ENERGY = 20, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100)
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
resistance_flags = FIRE_PROOF
clothing_flags = THICKMATERIAL
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/knife, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/cleaving_saw)
/obj/item/clothing/suit/space/hardsuit/berserker/Initialize(mapload)
/obj/item/clothing/suit/hooded/berserker/Initialize(mapload)
. = ..()
AddComponent(/datum/component/anti_magic, TRUE, TRUE, TRUE, ITEM_SLOT_OCLOTHING)
/obj/item/clothing/suit/space/hardsuit/berserker/RemoveHelmet()
var/obj/item/clothing/head/helmet/space/hardsuit/berserker/helm = helmet
if(helm?.berserk_active)
return
return ..()
#define MAX_BERSERK_CHARGE 100
#define PROJECTILE_HIT_MULTIPLIER 1.5
#define DAMAGE_TO_CHARGE_SCALE 0.75
@@ -611,30 +607,32 @@
#define BERSERK_MELEE_ARMOR_ADDED 50
#define BERSERK_ATTACK_SPEED_MODIFIER 0.25
/obj/item/clothing/head/helmet/space/hardsuit/berserker
/obj/item/clothing/head/hooded/berserker
name = "berserker helmet"
desc = "Peering into the eyes of the helmet is enough to seal damnation."
icon_state = "hardsuit0-berserker"
inhand_icon_state = "hardsuit0-berserker"
hardsuit_type = "berserker"
icon_state = "berserker"
armor = list(MELEE = 30, BULLET = 30, LASER = 10, ENERGY = 20, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100)
actions_types = list(/datum/action/item_action/berserk_mode)
cold_protection = HEAD
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF
clothing_flags = SNUG_FIT|THICKMATERIAL
/// Current charge of berserk, goes from 0 to 100
var/berserk_charge = 0
/// Status of berserk
var/berserk_active = FALSE
/obj/item/clothing/head/helmet/space/hardsuit/berserker/Initialize(mapload)
/obj/item/clothing/head/hooded/berserker/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_NODROP, LOCKED_HELMET_TRAIT)
/obj/item/clothing/head/helmet/space/hardsuit/berserker/examine()
/obj/item/clothing/head/hooded/berserker/examine()
. = ..()
. += span_notice("Berserk mode is [berserk_charge]% charged.")
/obj/item/clothing/head/helmet/space/hardsuit/berserker/process(delta_time)
/obj/item/clothing/head/hooded/berserker/process(delta_time)
. = ..()
if(berserk_active)
berserk_charge = clamp(berserk_charge - CHARGE_DRAINED_PER_SECOND * delta_time, 0, MAX_BERSERK_CHARGE)
@@ -642,11 +640,11 @@
if(ishuman(loc))
end_berserk(loc)
/obj/item/clothing/head/helmet/space/hardsuit/berserker/dropped(mob/user)
/obj/item/clothing/head/hooded/berserker/dropped(mob/user)
. = ..()
end_berserk(user)
/obj/item/clothing/head/helmet/space/hardsuit/berserker/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
/obj/item/clothing/head/hooded/berserker/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
if(berserk_active)
return
var/berserk_value = damage * DAMAGE_TO_CHARGE_SCALE
@@ -657,12 +655,12 @@
to_chat(owner, span_notice("Berserk mode is fully charged."))
balloon_alert(owner, "berserk charged")
/obj/item/clothing/head/helmet/space/hardsuit/berserker/IsReflect()
/obj/item/clothing/head/hooded/berserker/IsReflect()
if(berserk_active)
return TRUE
/// Starts berserk, giving the wearer 50 melee armor, doubled attacking speed, NOGUNS trait, adding a color and giving them the berserk movespeed modifier
/obj/item/clothing/head/helmet/space/hardsuit/berserker/proc/berserk_mode(mob/living/carbon/human/user)
/obj/item/clothing/head/hooded/berserker/proc/berserk_mode(mob/living/carbon/human/user)
to_chat(user, span_warning("You enter berserk mode."))
playsound(user, 'sound/magic/staff_healing.ogg', 50)
user.add_movespeed_modifier(/datum/movespeed_modifier/berserk)
@@ -672,11 +670,15 @@
ADD_TRAIT(user, TRAIT_NOGUNS, BERSERK_TRAIT)
ADD_TRAIT(src, TRAIT_NODROP, BERSERK_TRAIT)
berserk_active = TRUE
START_PROCESSING(SSobj, src)
/// Ends berserk, reverting the changes from the proc [berserk_mode]
/obj/item/clothing/head/helmet/space/hardsuit/berserker/proc/end_berserk(mob/living/carbon/human/user)
/obj/item/clothing/head/hooded/berserker/proc/end_berserk(mob/living/carbon/human/user)
if(!berserk_active)
return
berserk_active = FALSE
if(QDELETED(user))
return
to_chat(user, span_warning("You exit berserk mode."))
playsound(user, 'sound/magic/summonitems_generic.ogg', 50)
user.remove_movespeed_modifier(/datum/movespeed_modifier/berserk)
@@ -685,7 +687,7 @@
user.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, COLOR_BUBBLEGUM_RED)
REMOVE_TRAIT(user, TRAIT_NOGUNS, BERSERK_TRAIT)
REMOVE_TRAIT(src, TRAIT_NODROP, BERSERK_TRAIT)
berserk_active = FALSE
STOP_PROCESSING(SSobj, src)
#undef MAX_BERSERK_CHARGE
#undef PROJECTILE_HIT_MULTIPLIER
+1 -2
View File
@@ -28,6 +28,7 @@
new /datum/data/mining_equipment("Explorer's Webbing", /obj/item/storage/belt/mining, 500),
new /datum/data/mining_equipment("Point Transfer Card", /obj/item/card/mining_point_card, 500),
new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 500),
new /datum/data/mining_equipment("Mining Plates", /obj/item/mod/construction/armor/mining, 500),
new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600),
new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600),
new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750),
@@ -40,9 +41,7 @@
new /datum/data/mining_equipment("Lazarus Injector", /obj/item/lazarus_injector, 1000),
new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/pickaxe/silver, 1000),
new /datum/data/mining_equipment("Mining Conscription Kit", /obj/item/storage/backpack/duffelbag/mining_conscript, 1500),
new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/tank/jetpack/suit, 2000),
new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000),
new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000),
new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000),
new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2500),
new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),