Skip to content

Commit

Permalink
asdfsafd
Browse files Browse the repository at this point in the history
  • Loading branch information
Anorak2024 committed Oct 14, 2024
1 parent 2936141 commit 5ad4dd8
Show file tree
Hide file tree
Showing 28 changed files with 2,113 additions and 2,065 deletions.
472 changes: 0 additions & 472 deletions code/modules/antagonists/traitor/affiliates/cybersun.dm

Large diffs are not rendered by default.

329 changes: 0 additions & 329 deletions code/modules/antagonists/traitor/affiliates/hematogenic.dm
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
#define FREE_INJECT_TIME 10 SECONDS
#define TARGET_INJECT_TIME 3 SECONDS
#define BLOOD_HARVEST_VOLUME 200
#define BLOOD_HARVEST_TIME 10 SECONDS

/datum/affiliate/hematogenic
name = AFFIL_HEMATOGENIC
affil_info = list("Фармацевтическая мега корпорация подозревающаяся в связях с вампирами.",
Expand All @@ -29,327 +24,3 @@
/datum/affiliate/hematogenic/get_weight(mob/living/carbon/human/H)
return (!ismachineperson(H) && H.mind?.assigned_role != JOB_TITLE_CHAPLAIN) * 2

/obj/item/hemophagus_extract
name = "Bloody Injector"
desc = "Инжектор странной формы, с неестественно двигающейся алой жидкостью внутри. На боку едва заметная гравировка \"Hematogenic Industries\". Конкретно на этом инжекторе установлена блокировка, не позволяющая исспользовать его на случайном гуманойде."
icon = 'icons/obj/affiliates.dmi'
icon_state = "hemophagus_extract"
item_state = "inj_ful"
lefthand_file = 'icons/obj/affiliates_l.dmi'
righthand_file = 'icons/obj/affiliates_r.dmi'
w_class = WEIGHT_CLASS_TINY
var/datum/mind/target = null
var/free_inject = FALSE
var/isAdvanced = FALSE
var/used = FALSE
var/used_state = "hemophagus_extract_used"
origin_tech = "biotech=7;syndicate=3"

/obj/item/hemophagus_extract/attack(mob/living/target, mob/living/user, def_zone)
return

/obj/item/hemophagus_extract/afterattack(atom/target, mob/user, proximity, params)
if(used)
return

if(!ishuman(target))
return

var/mob/living/carbon/human/H = target
if(H.stat == DEAD)
return

if((src.target && target != src.target) || !free_inject)
to_chat(user, span_warning("You can't use [src] to [target]!"))
return

if(do_after(user, free_inject ? FREE_INJECT_TIME : TARGET_INJECT_TIME, target = target, max_interact_count = 1))
inject(user, H)

/obj/item/hemophagus_extract/proc/make_vampire(mob/living/user, mob/living/carbon/human/target)
var/datum/antagonist/vampire/vamp = new()

vamp.give_objectives = FALSE
target.mind.add_antag_datum(vamp)
var/datum/antagonist/vampire/vampire = target.mind.has_antag_datum(/datum/antagonist/vampire)
vampire.upgrade_tiers -= /obj/effect/proc_holder/spell/vampire/self/specialize
if(isAdvanced)
vamp.add_subclass(SUBCLASS_ADVANCED, TRUE)

vampire.add_objective((!isAdvanced) ? /datum/objective/blood : /datum/objective/blood/ascend)
used = TRUE
item_state = "inj_used"
update_icon(UPDATE_ICON_STATE)
var/datum/antagonist/traitor/T = user.mind.has_antag_datum(/datum/antagonist/traitor)
if(!T)
return
for(var/datum/objective/new_mini_vampire/objective in T.objectives)
if(target.mind == objective.target)
objective.made = TRUE

/obj/item/hemophagus_extract/proc/inject(mob/living/user, mob/living/carbon/human/target)
if(!target.mind)
to_chat(user, span_notice("[target] body rejects [src]"))
return

playsound(src, 'sound/goonstation/items/hypo.ogg', 80)
make_vampire(user, target)
to_chat(user, span_notice("You inject [target] with [src]"))

/obj/item/hemophagus_extract/examine(mob/user)
. = ..()
if(target)
. += span_info("It is intended for [target]")

/obj/item/hemophagus_extract/self
name = "Hemophagus Essence Auto Injector"
free_inject = TRUE

/obj/item/hemophagus_extract/self/advanced
name = "Advances Hemophagus Essence Auto Injector"
isAdvanced = TRUE

/obj/item/hemophagus_extract/update_icon_state()
icon_state = used ? used_state : initial(icon_state)

/obj/item/blood_harvester
name = "Blood harvester"
desc = "Большой шприц для быстрого сбора больших объемов крови. На боку едва заметная гравировка \"Hematogenic Industries\""
icon = 'icons/obj/affiliates.dmi'
icon_state = "blood_harvester"
item_state = "blood1_used"
lefthand_file = 'icons/obj/affiliates_l.dmi'
righthand_file = 'icons/obj/affiliates_r.dmi'
var/used = FALSE
var/used_state = "blood_harvester_used"
var/datum/mind/target
w_class = WEIGHT_CLASS_TINY
origin_tech = "biotech=5;syndicate=1"

/obj/item/blood_harvester/attack(mob/living/target, mob/living/user, def_zone)
return

/obj/item/blood_harvester/proc/can_harvest(mob/living/carbon/human/target, mob/user)
. = FALSE
if(!istype(target))
user.balloon_alert(src, "Не подходящая цель")
return

if(used)
to_chat(user, span_warning("[src] is already full!"))
return

if(HAS_TRAIT(target, TRAIT_NO_BLOOD) || HAS_TRAIT(target, TRAIT_EXOTIC_BLOOD))
user.balloon_alert(target, "Кровь не обнаружена!")
return

if(target.blood_volume < BLOOD_HARVEST_VOLUME)
user.balloon_alert(target, "Недостаточно крови!")
return

if(!target.mind)
user.balloon_alert(target, "Разум не обнаружен!")
return

return TRUE

/obj/item/blood_harvester/afterattack(atom/target, mob/user, proximity, params)
if(!can_harvest(target, user))
return

var/mob/living/carbon/human/H = target

target.visible_message(span_warning("[user] started collecting [target]'s blood using [src]!"), span_danger("[user] started collecting your blood using [src]!"))
if(do_after(user, BLOOD_HARVEST_TIME, target = target, max_interact_count = 1))
harvest(user, H)

/obj/item/blood_harvester/proc/harvest(mob/living/carbon/human/user, mob/living/carbon/human/target)
if(!can_harvest(target, user))
return

playsound(src, 'sound/goonstation/items/hypo.ogg', 80)
target.visible_message(span_warning("[user] collected [target]'s blood using [src]!"), span_danger("[user] collected your blood using [src]!"))
target.emote("scream")
for (var/i = 0; i < 3; ++i)
if(prob(60))
continue

var/obj/item/organ/external/bodypart = pick(target.bodyparts)
bodypart.internal_bleeding() // no blood collection from metafriends.

target.blood_volume -= BLOOD_HARVEST_VOLUME
src.target = target.mind
used = TRUE
item_state = "blood1_ful"
update_icon(UPDATE_ICON_STATE)

/obj/item/blood_harvester/update_icon_state()
icon_state = used ? used_state : initial(icon_state)

/obj/item/blood_harvester/attack_self(mob/user)
. = ..()
if(!used)
user.balloon_alert(src, "уже пусто")
return

var/new_gender = tgui_alert(user, "Очистить сборщик крови?", "Подтверждение", list("Продолжить", "Отмена"))
if(new_gender == "Продолжить")
target = null
used = FALSE
item_state = "blood1_used"
update_icon(UPDATE_ICON_STATE)

playsound(src, 'sound/goonstation/items/hypo.ogg', 80)
user.visible_message(span_info("[user] cleared blood at [src]."), span_info("You cleared blood at [src]."))

/obj/item/blood_harvester/examine(mob/user)
. = ..()

if(!used)
. += span_info("Кровь не собрана.")
return

if(user?.mind.has_antag_datum(/datum/antagonist/traitor))
. += span_info("Собрана кровь с отпечатком души [target.name].")
else
. += span_info("Кровь собрана.")

/datum/reagent/hemat_blue_lagoon
name = "Blue Lagoon"
id = "hemat_blue_lagoon"
description = "Вещество разработанное Hematogenic Industries, на основе криоксадона из тел Драсков обладающих душой, \
сильно охлаждающее тело и замедляющее многие биологические процессы, не вредя организму."
color = "#1edddd"
drink_icon = "blue_lagoon"
drink_name = "Blue Lagoon"
drink_desc = "Что может быть лучше, чем расслабиться на пляже с хорошим напитком?"
taste_description = "beach relaxation"
reagent_state = LIQUID

/datum/reagent/hemat_blue_lagoon/on_mob_add(mob/living/carbon/human/H)
ADD_TRAIT(H, TRAIT_IGNORECOLDSLOWDOWN, CHEM_TRAIT(src))
ADD_TRAIT(H, TRAIT_IGNORECOLDDAMAGE, CHEM_TRAIT(src))
H.physiology.metabolism_mod /= 8
H.bodytemperature = T0C - 100
. = ..()

/datum/reagent/hemat_blue_lagoon/on_mob_delete(mob/living/carbon/human/H)
REMOVE_TRAIT(H, TRAIT_IGNORECOLDSLOWDOWN, CHEM_TRAIT(src))
REMOVE_TRAIT(H, TRAIT_IGNORECOLDDAMAGE, CHEM_TRAIT(src))
H.physiology.metabolism_mod *= 8
var/turf/T = get_turf(H)
var/datum/gas_mixture/environment = T.return_air()
H.bodytemperature = H.get_temperature(environment)
. = ..()

/datum/reagent/hemat_blue_lagoon/on_mob_life(mob/living/carbon/human/H)
H.bodytemperature = T0C - 100
return ..()


/datum/reagent/hemat_bloody_mary
name = "Bloody Mary"
id = "hemat_bloody_mary"
description = "Вещество разработанное Hematogenic Industries, на основе крови воксов обладающих душой, \
быстро восстанавливающее объем крови и количество кислорода в ней."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
drink_icon = "bloodymaryglass"
drink_name = "Bloody Mary"
drink_desc = "Томатный сок, смешанный с водкой и небольшим количеством лайма. На вкус как жидкое убийство."
taste_description = "tomatoes with booze"

/datum/reagent/hemat_bloody_mary/on_mob_life(mob/living/carbon/human/H)
if (H.blood_volume + 5 < BLOOD_VOLUME_NORMAL)
H.blood_volume += 5

H.adjustOxyLoss(-10)
return ..()


/datum/reagent/hemat_demons_blood
name = "Demons Blood"
id = "hemat_demons_blood"
description = "Вещество разработанное Hematogenic Industries, на основе крови вампиров подкласса \"hemomancer\", \
быстро лечащае, в зависимости от суммарных повреждений."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
drink_icon = "demonsblood"
drink_name = "Demons Blood"
drink_desc = "Just looking at this thing makes the hair at the back of your neck stand up."
taste_description = span_warning("evil")

/datum/reagent/hemat_demons_blood/on_mob_life(mob/living/carbon/human/H)
var/heal = clamp((100 - H.health) / 25, 1, 4)
H.heal_overall_damage(heal, heal)
return ..()


/datum/reagent/hemat_white_russian
name = "White Russian"
id = "hemat_white_russian"
description = "Вещество разработанное Hematogenic Industries, на основе крови вампиров подкласса \"gargantua\", \
временно повышающее скорость бега."
reagent_state = LIQUID
color = "#A68340" // rgb: 166, 131, 64
drink_icon = "whiterussianglass"
drink_name = "White Russian"
drink_desc = "A very nice looking drink. But that's just, like, your opinion, man."
taste_description = "very creamy alcohol"

/datum/reagent/hemat_white_russian/on_mob_add(mob/living/carbon/human/H)
if(H.dna && (H.dna.species.reagent_tag & PROCESS_ORG))
H.add_movespeed_modifier(/datum/movespeed_modifier/reagent/hemat_white_russian)
. = ..()

/datum/reagent/hemat_white_russian/on_mob_delete(mob/living/carbon/human/H)
H.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/hemat_white_russian)
. = ..()

/datum/reagent/hemat_white_russian/on_mob_life(mob/living/carbon/human/H)
if(!(H.dna && (H.dna.species.reagent_tag & PROCESS_ORG)))
H.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/hemat_white_russian)
return ..()


/obj/item/reagent_containers/hypospray/autoinjector/hemat
volume = 15
amount_per_transfer_from_this = 15

/obj/item/reagent_containers/hypospray/autoinjector/hemat/blue_lagoon
name = "Blue Lagoon autoinjector"
desc = "Вещество разработанное Hematogenic Industries, на основе криоксадона из тел Драсков обладающих душой, \
сильно охлаждающее тело и замедляющее многие биологические процессы, не вредя организму."
list_reagents = list("hemat_blue_lagoon" = 15)

/obj/item/reagent_containers/hypospray/autoinjector/hemat/bloody_mary
name = "Bloody Mary autoinjector"
desc = "Вещество разработанное Hematogenic Industries, на основе крови воксов обладающих душой, быстро восстанавливающее \
объем крови и количество кислорода в ней."
list_reagents = list("hemat_bloody_mary" = 15)


/obj/item/reagent_containers/hypospray/autoinjector/hemat/demons_blood
name = "Demons Blood autoinjector"
desc = "Вещество разработанное Hematogenic Industries, на основе крови вампиров подкласса \"hemomancer\", быстро \
лечащае, в зависимости от суммарных повреждений."
list_reagents = list("hemat_demons_blood" = 15)

/obj/item/reagent_containers/hypospray/autoinjector/hemat/white_russian
name = "White Russian autoinjector"
desc = "Вещество разработанное Hematogenic Industries, на основе крови вампиров подкласса \"gargantua\", временно \
повышающее скорость бега."
list_reagents = list("hemat_white_russian" = 15)

/obj/item/storage/box/syndie_kit/stimulants
name = "Boxed set of stimulants"

/obj/item/storage/box/syndie_kit/stimulants/populate_contents()
new /obj/item/reagent_containers/hypospray/autoinjector/hemat/blue_lagoon(src)
new /obj/item/reagent_containers/hypospray/autoinjector/hemat/bloody_mary(src)
new /obj/item/reagent_containers/hypospray/autoinjector/hemat/demons_blood(src)
new /obj/item/reagent_containers/hypospray/autoinjector/hemat/white_russian(src)

#undef FREE_INJECT_TIME
#undef TARGET_INJECT_TIME
#undef BLOOD_HARVEST_VOLUME
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/obj/item/invasive_beacon
name = "Invasive Beacon"
desc = "Сложное черное устройство. На боку едва заметная надпись \"Cybersun Industries\"."
icon = 'icons/obj/affiliates.dmi'
icon_state = "invasive_beacon"
item_state = "beacon"
lefthand_file = 'icons/obj/affiliates_l.dmi'
righthand_file = 'icons/obj/affiliates_r.dmi'
origin_tech = "programming=6;magnets=3;syndicate=1"
w_class = WEIGHT_CLASS_TINY

/obj/item/invasive_beacon/attack(mob/living/target, mob/living/user, def_zone)
return

/obj/item/invasive_beacon/afterattack(atom/target, mob/user, proximity, params)
var/obj/mecha/mecha = target
var/obj/spacepod/pod = target

if(istype(mecha))
do_sparks(5, 1, mecha)
mecha.dna = null
mecha.operation_req_access = list()
mecha.internals_req_access = list()

user.visible_message(span_warning("[user] hacked [mecha] using [src]."), span_info("You hacked [mecha] using [src]."))

if(mecha.occupant)
to_chat(mecha.occupant, span_danger("You were thrown out of [mecha]."))

mecha.occupant.forceMove(get_turf(mecha))
mecha.occupant.Knockdown(6 SECONDS)
mecha.occupant.electrocute_act(30, mecha)
mecha.occupant.throw_at(pick(orange(2)))
mecha.occupant = null

else if(istype(pod))
do_sparks(5, 1, pod)
pod.unlocked = TRUE

user.visible_message(span_warning("[user] hacked [pod] using [src]."), span_info("You hacked [pod] using [src]."))

if(pod.pilot) // It is not ejecting passangers
to_chat(pod.pilot, span_danger("You were thrown out of [pod]."))

pod.eject_pilot()
pod.pilot.Knockdown(6 SECONDS)
pod.pilot.electrocute_act(30, pod)
pod.pilot.throw_at(pick(orange(2)))
else
user.balloon_alert(user, "Невозможно взломать")
return
Loading

0 comments on commit 5ad4dd8

Please sign in to comment.