diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index edd77ecf6b..791a6bd9db 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -63,6 +63,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define ACID_PROOF (1<<5) //acid stuck on it doesn't melt it. #define INDESTRUCTIBLE (1<<6) //doesn't take damage #define FREEZE_PROOF (1<<7) //can't be frozen +#define GOLIATH_RESISTANCE (1<<8) //CIT CHANGE +#define GOLIATH_WEAKNESS (1<<9) //CIT CHANGE //tesla_zap #define TESLA_MACHINE_EXPLOSIVE (1<<0) diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 0760b81927..9a2f1e0540 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -111,7 +111,9 @@ GLOBAL_LIST_INIT(bitfields, list( "UNACIDABLE" = UNACIDABLE, "ACID_PROOF" = ACID_PROOF, "INDESTRUCTIBLE" = INDESTRUCTIBLE, - "FREEZE_PROOF" = FREEZE_PROOF + "FREEZE_PROOF" = FREEZE_PROOF, + "GOLIATH_RESISTANCE" = GOLIATH_RESISTANCE, + "GOLIATH_WEAKNESS" = GOLIATH_WEAKNESS ), "reagents_holder_flags" = list( "REAGENT_NOREACT" = REAGENT_NOREACT diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index a905a3baa9..7813794206 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -114,3 +114,61 @@ var/mutable_appearance/M = mutable_appearance('icons/mob/head.dmi', "hostile_env_glass") M.appearance_flags = RESET_COLOR . += M + + +// CITADEL ADDITIONS BELOW + +/****************SEVA Suit and Mask****************/ + +/obj/item/clothing/suit/hooded/seva + name = "SEVA suit" + desc = "A fire-proof suit for exploring hot environments." + icon_state = "seva" + item_state = "seva" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS + hoodtype = /obj/item/clothing/head/hooded/seva + armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 25, "bio" = 50, "rad" = 25, "fire" = 100, "acid" = 25) + 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) + resistance_flags = FIRE_PROOF | GOLIATH_WEAKNESS + +/obj/item/clothing/head/hooded/seva + name = "SEVA hood" + desc = "A fire-proof hood for exploring hot environments." + icon_state = "seva" + item_state = "seva" + body_parts_covered = HEAD + flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS + max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 25, "bio" = 50, "rad" = 25, "fire" = 100, "acid" = 25) + resistance_flags = FIRE_PROOF | GOLIATH_WEAKNESS + +/****************Exo-Suit and Mask****************/ + +/obj/item/clothing/suit/hooded/exo + name = "Exo-suit" + desc = "A robust suit for exploring dangerous environments." + icon_state = "exo" + item_state = "exo" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT + cold_protection = CHEST|GROIN|LEGS|ARMS + max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT + heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS + hoodtype = /obj/item/clothing/head/hooded/exo + armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0) + 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) + resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE + +/obj/item/clothing/head/hooded/exo + name = "Exo-hood" + desc = "A robust helmet for exploring dangerous environments." + icon_state = "exo" + item_state = "exo" + body_parts_covered = HEAD + flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS + min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT + max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT + armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0) + resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE \ No newline at end of file diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 209a8118fc..63f7a7e414 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -146,6 +146,9 @@ if(istype(I, /obj/item/mining_voucher)) RedeemVoucher(I, user) return + if(istype(I, /obj/item/suit_voucher)) + RedeemSVoucher(I, user) + return if(istype(I, /obj/item/card/id)) var/obj/item/card/id/C = usr.get_active_held_item() if(istype(C) && !istype(inserted_id)) @@ -231,6 +234,13 @@ icon_state = "mining_voucher" w_class = WEIGHT_CLASS_TINY +/obj/item/suit_voucher + name = "suit voucher" + desc = "A token to redeem a new suit. Use it on a mining equipment vendor." + icon = 'icons/obj/mining.dmi' + icon_state = "mining_voucher" + w_class = WEIGHT_CLASS_TINY + /**********************Mining Point Card**********************/ /obj/item/card/mining_point_card @@ -284,3 +294,22 @@ new /obj/item/encryptionkey/headset_cargo(src) new /obj/item/clothing/mask/gas/explorer(src) new /obj/item/card/mining_access_card(src) + + +//CITADEL ADDITIONS BELOW + +/obj/machinery/mineral/equipment_vendor/proc/RedeemSVoucher(obj/item/suit_voucher/voucher, mob/redeemer) + var/items = list("Exo-suit", "SEVA suit") + + var/selection = input(redeemer, "Pick your suit.", "Suit Voucher Redemption") as null|anything in items + if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer) + return + var/drop_location = drop_location() + switch(selection) + if("Exo-suit") + new /obj/item/clothing/suit/hooded/exo(drop_location) + if("SEVA suit") + new /obj/item/clothing/suit/hooded/seva(drop_location) + + SSblackbox.record_feedback("tally", "suit_voucher_redeemed", 1, selection) + qdel(voucher) \ No newline at end of file diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index a1ba493d46..637dde45b9 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -60,6 +60,7 @@ new /obj/item/gun/energy/kinetic_accelerator(src) new /obj/item/clothing/glasses/meson(src) new /obj/item/survivalcapsule(src) + new /obj/item/suit_voucher(src) new /obj/item/assault_pod/mining(src) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index f74f9a436c..2e8f6bc70f 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -184,7 +184,14 @@ if((!QDELETED(spawner) && spawner.faction_check_mob(L)) || L.stat == DEAD) continue visible_message("[src] grabs hold of [L]!") - L.Stun(100) + var/mob/living/carbon/C = L + var/obj/item/clothing/S = C.get_item_by_slot(SLOT_WEAR_SUIT) + if(S && S.resistance_flags & GOLIATH_RESISTANCE) + L.Stun(75) + else if(S && S.resistance_flags & GOLIATH_WEAKNESS) + L.Stun(125) + else + L.Stun(100) L.adjustBruteLoss(rand(10,15)) latched = TRUE if(!latched) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 73356658a3..065f67808e 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -289,7 +289,7 @@ gloves = /obj/item/clothing/gloves/color/black mask = /obj/item/clothing/mask/gas/explorer if(prob(20)) - suit = pickweight(list(/obj/item/clothing/suit/hooded/explorer = 18, /obj/item/clothing/suit/hooded/cloak/goliath = 2)) + suit = pickweight(list(/obj/item/clothing/suit/hooded/explorer = 6, /obj/item/clothing/suit/hooded/cloak/goliath = 2, /obj/item/clothing/suit/hooded/exo = 6, /obj/item/clothing/suit/hooded/seva = 6)) if(prob(30)) r_pocket = pickweight(list(/obj/item/stack/marker_beacon = 20, /obj/item/stack/spacecash/c1000 = 7, /obj/item/reagent_containers/hypospray/medipen/survival = 2, /obj/item/borg/upgrade/modkit/damage = 1 )) if(prob(10)) diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 5f01bb5749..39726a6ece 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index fa10f9538a..4bc07f86f5 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 10e45387e5..a9d1398c20 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index f01f7cac77..3737ee694e 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ