Skip to content

Commit

Permalink
Serb Buffs (Or so I fukken THOUGHT) (#8253)
Browse files Browse the repository at this point in the history
* Serb Buffs (general)

Increased combat stats to just below IHC round start.
Added Cybernetic Installer implanter subtype. (currently installs multiples in same limb, bug)
Cleared up description on subdermal armor, infantrymen ration packs, to be easier to identify utility.
Created and mapped accessory box, containing uniform armors and concealed holsters.
Improved fire threshhold of SCAF to half a firesuit, instead of a sixth.
Mapped in missing serb shotgun crate (Valo).

* Finish v1

Mapped Installer. Fixed Installer. Updated deferred medical box with meralyne. Added subdermal armor and leg muscles to uplink.

* Update snacks.dm

Actually include examine-text to detail the chems within MRE foods.

* Revert "Update snacks.dm"

This reverts commit 4dc0d8f.

* Update snacks.dm

ACTUALLY DO IT RIGHT THIS TIME

* Refit for Uplink

Created Disposable version, incorporated it into the uplink. Added Armor and Muscle disposable applicators to Uplink. Refit energy blade to be Disposable. Ensured implanter and installer didn't work on each others' items. Created deferred cybernetic kit for subdermals and leg muscles for serbs. Mapped it. Included short instructions for future cybernetic uplink applicators.

* Custom Sprites

Added more custom sprites for prefilled installers to visually distinct them from others.

* Update code/game/objects/items/devices/organ_module/_module.dm

* Update code/game/objects/items/weapons/implant/implanter.dm

---------

Co-authored-by: hyperioo <[email protected]>
  • Loading branch information
Mycah142 and hyperioo authored Aug 18, 2023
1 parent b28ff9f commit 4f1120f
Show file tree
Hide file tree
Showing 13 changed files with 202 additions and 12 deletions.
26 changes: 24 additions & 2 deletions code/datums/uplink/implants.dm
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,29 @@
item_cost = round(DEFAULT_TELECRYSTAL_AMOUNT / 2)
desc = "Contains [round((DEFAULT_TELECRYSTAL_AMOUNT / 2) * 0.8)] Telecrystal\s"

//To make new disposable cybernetic applicators, you have to go to the /obj/item/organ_module/* itself, and add the following:
///obj/item/implanter/installer/disposable/CYBERNETIC
// name = "disposable cybernetic installer (CYBERNETIC)"
// desc = [CYBERNETIC DESCRIPTION, as the disposable applicator will fill in the uplink description otherwise]
// mod = /obj/item/organ_module/CYBERNETIC
// spawn_tags = null
//Then here, you reference the new /obj/item/implanter/instaler/disposable/CYBERNETIC as the path. If this doesn't work, god be with ye.

//For the mod_overlay, go to the cybernetic in question, and add:
// mod_overlay = "installer_CYBERNETIC"
//Then add the sprites to the items.dmi, named "installer_CYBERNETIC"

/datum/uplink_item/item/implants/energy_blade
name = "Internal Energy Armblade Implant"
name = "Internal Energy Armblade Cybernetic"
item_cost = 6
path = /obj/item/organ_module/active/simple/armblade/energy_blade
path = /obj/item/implanter/installer/disposable/energy_blade

/datum/uplink_item/item/implants/subdermal_armor
name = "Subdermal Armor Cybernetic"
item_cost = 3
path = /obj/item/implanter/installer/disposable/armor

/datum/uplink_item/item/implants/leg_muscle
name = "Leg Muscle Cybernetic"
item_cost = 3
path = /obj/item/implanter/installer/disposable/muscle
10 changes: 6 additions & 4 deletions code/game/antagonist/outer/mercenary/mercenary.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,14 @@
possible_objectives = list()
survive_objective = null

//Experienced, battle-tested mercenaries should be at least as strong as a round start Ironhammer Commander.
stat_modifiers = list(
STAT_ROB = 30,
STAT_TGH = 30,
STAT_VIG = 30,
STAT_ROB = 40,
STAT_TGH = 40,
STAT_VIG = 40,
STAT_BIO = 10,
STAT_MEC = 20
STAT_MEC = 20,
STAT_COG = 20
)

perks = list(PERK_SURVIVOR, PERK_CODESPEAK_SERB)
Expand Down
18 changes: 18 additions & 0 deletions code/game/objects/items/devices/organ_module/_module.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
icon = 'icons/obj/surgery.dmi'
matter = list(MATERIAL_STEEL = 12)
var/list/allowed_organs = list() // Surgery. list of organ_tags. BP_R_ARM, BP_L_ARM, BP_HEAD, etc.
var/mod_overlay //For cybernetic-specific applicator sprite calls.

/obj/item/organ_module/proc/install(obj/item/organ/external/E)
E.module = src
Expand All @@ -24,3 +25,20 @@
/obj/item/organ_module/proc/organ_removed(obj/item/organ/external/E, mob/living/carbon/human/H)

/obj/item/organ_module/proc/organ_installed(obj/item/organ/external/E, mob/living/carbon/human/H)

/obj/item/organ_module/attackby(obj/item/I, mob/user)
..()
if(istype(I, /obj/item/implanter/installer/disposable))
to_chat(user, SPAN_NOTICE("You cannot refill a single-use applicator."))
return

if(istype(I, /obj/item/implanter/installer))
var/obj/item/implanter/installer/M = I
if(!M.mod && user.unEquip(src, M))
M.mod = src
M.update_icon()
return TRUE

if(istype(I, /obj/item/implanter))
to_chat(user, SPAN_NOTICE("You cannot insert cybernetics into an implant applicator."))
return
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,18 @@
allowed_organs = list(BP_R_ARM, BP_L_ARM)
holding_type = /obj/item/tool/armblade/claws

/obj/item/implanter/installer/disposable/energy_blade
name = "disposable cybernetic installer (energy blade)"
desc = "A energy blade designed to be inserted into an arm. Gives you a nice advantage in a brawl."
mod = /obj/item/organ_module/active/simple/armblade/energy_blade
spawn_tags = null

/obj/item/organ_module/active/simple/armblade/energy_blade
name = "energy armblade"
desc = "A energy blade designed to be inserted into an arm. Gives you a nice advantage in a brawl."
verb_name = "Deploy energyblade"
icon_state = "energyblade"
mod_overlay = "installer_armblade"
origin_tech = list(TECH_MAGNET = 3, TECH_COVERT = 4)
holding_type = /obj/item/melee/energy/blade/organ_module

Expand Down
10 changes: 8 additions & 2 deletions code/game/objects/items/devices/organ_module/passive/armor.dm
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
/obj/item/implanter/installer/disposable/armor
name = "disposable cybernetic installer (armor)"
desc = "A set of subdermal steel plates, designed to provide additional impact protection to the torso while remaining lightweight."
mod = /obj/item/organ_module/armor
spawn_tags = null

/obj/item/organ_module/armor
name = "subdermal armor"
desc = "A set of subdermal steel plates, designed to provide additional impact protection while remaining lightweight."
desc = "A set of subdermal steel plates, designed to provide additional impact protection to the torso while remaining lightweight."
allowed_organs = list(BP_CHEST)
icon_state = "armor-chest"

mod_overlay = "installer_armor"
/obj/item/organ_module/armor/onInstall(obj/item/organ/external/E)
E.brute_mod -= 0.3

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
/obj/item/implanter/installer/disposable/muscle
name = "disposable cybernetic installer (muscle)"
desc = "A set of mechanical muscles designed to be implanted into legs, increasing the efficacy of your legs."
mod = /obj/item/organ_module/muscle
spawn_tags = null

/obj/item/organ_module/muscle
name = "mechanical muscles"
desc = "A set of mechanical muscles designed to be implanted into legs, increasing the efficacy of your legs."
allowed_organs = list(BP_R_LEG, BP_L_LEG)
icon_state = "muscle"
mod_overlay = "installer_muscle"

/obj/item/organ_module/muscule/onInstall(obj/item/organ/external/E)
E.tally -= 0.25
Expand Down
4 changes: 4 additions & 0 deletions code/game/objects/items/weapons/implant/implant.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@

/obj/item/implant/attackby(obj/item/I, mob/user)
..()
if(istype(I, /obj/item/implanter/installer))
to_chat(user, SPAN_NOTICE("You cannot insert implants into a cybernetic applicator."))
return

if(istype(I, /obj/item/implanter))
var/obj/item/implanter/M = I
if(is_external())
Expand Down
88 changes: 88 additions & 0 deletions code/game/objects/items/weapons/implant/implanter.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/obj/item/implanter
name = "implanter"
desc = "A medical applicator of small electronics called implants."
icon = 'icons/obj/items.dmi'
icon_state = "implanter"
item_state = "syringe_0"
Expand Down Expand Up @@ -78,3 +79,90 @@

implant = null
update_icon()

/obj/item/implanter/installer
name = "cybernetic installer"
desc = "A medical applicator of cybernetics."
icon_state = "installer_empty"
w_class = ITEM_SIZE_NORMAL
matter = list(MATERIAL_PLASTIC = 5, MATERIAL_STEEL = 3)
var/obj/item/organ_module/mod
var/mod_overlay = null
spawn_blacklisted = TRUE

/obj/item/implanter/installer/New()
..()
if(ispath(mod))
mod = new mod(src)
update_icon()

/obj/item/implanter/installer/attack_self(mob/user)
if(!mod)
return ..()
user.put_in_hands(mod)
to_chat(user, SPAN_NOTICE("You remove \the [mod] from \the [src]."))
mod = null
update_icon()
return

/obj/item/implanter/installer/update_icon()
if(mod)
if(mod.mod_overlay == null)
icon_state = "installer_full"
else
icon_state = mod.mod_overlay
else
icon_state = "installer_empty"

/obj/item/implanter/installer/attack(mob/living/M, mob/living/user)
if(!istype(M) || !mod)
return

var/obj/item/organ/external/affected = null
if(ishuman(M))
var/mob/living/carbon/human/H = M
affected = H.get_organ(user.targeted_organ)

if(!affected)
to_chat(user, SPAN_WARNING("[M] is missing that body part."))
return

if(!(affected.organ_tag in mod.allowed_organs))
to_chat(user, SPAN_NOTICE("You cannot install the [mod] into the [affected]."))
return

if(affected.module != null) //Probably not the most effective way to do this, but it works.
to_chat(user, SPAN_WARNING("[mod] cannot be installed into this [affected], as it's already occupied."))
return

M.visible_message(SPAN_WARNING("[user] is attemping to install something into [M]."))

user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
user.do_attack_animation(M)

if(do_mob(user, M, 50) && src && mod)

if(mod.install(affected))
M.visible_message(
SPAN_WARNING("[user] has installed something into [M]'s' [affected]."),
SPAN_NOTICE("You installed \the [mod] into [M]'s [affected].")
)

admin_attack_log(user, M,
"Installed using \the [src.name] ([mod.name])",
"Installed with \the [src.name] ([mod.name])",
"used an installer, [src.name] ([mod.name]), on"
)

mod = null
update_icon()

/obj/item/implanter/installer/disposable
name = "cybernetic installer (disposable)"
desc = "A single use medical applicator of cybernetics."

/obj/item/implanter/installer/disposable/New()
..()
if(ispath(mod))
mod = new mod(src)
update_icon()
17 changes: 15 additions & 2 deletions code/game/objects/items/weapons/storage/deferred.dm
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
name = "infantryman's rations kit"
icon_state = "irp_box"
item_state = "irp_box"
desc = "A box of preserved, ready-to-eat food for soldiers and spacefarers on the go."
desc = "A box of preserved, ready-to-eat, and medicinally enhanced food for soldiers and spacefarers on the go."
initial_contents = list(/obj/item/storage/ration_pack = 7)


Expand All @@ -74,6 +74,11 @@
initial_contents = list(/obj/spawner/pouch = 8, /obj/item/storage/pouch/holster = 1)
//One guaranteed holster and plenty of randoms

/obj/item/storage/deferred/accarmors
name = "uniform accessory armor kit"
desc = "A box full of various armor plates and holsters designed to attach to uniforms for a bit extra cushion between user and death."
initial_contents = list(/obj/item/clothing/accessory/armor = 2, /obj/item/clothing/accessory/armor/bullet = 2, /obj/item/clothing/accessory/armor/platecarrier = 1, /obj/item/clothing/accessory/armor/riot = 1, /obj/item/clothing/accessory/armor/laser = 1, /obj/item/clothing/accessory/holster = 6)

/obj/item/storage/deferred/comms
name = "communications kit"
desc = "A box full of radios and beacons"
Expand Down Expand Up @@ -117,13 +122,21 @@
/obj/item/stack/medical/advanced/bruise_pack
)

/obj/item/storage/deferred/cybernetics
name = "soldier cybernetic kit"
desc = "Contains various single use cybernetic applicators."
initial_contents = list(
/obj/item/implanter/installer/disposable/armor = 6,
/obj/item/implanter/installer/disposable/muscle = 12
)

/obj/item/storage/deferred/meds
name = "combat medical kit"
desc = "Contains advanced medical treatments."
icon_state = "combat_medical_kit"
item_state = "combat_medical_kit"
initial_contents = list(/obj/item/storage/pill_bottle/bicaridine,
initial_contents = list(
/obj/item/storage/pill_bottle/meralyne,
/obj/item/storage/pill_bottle/dermaline,
/obj/item/storage/pill_bottle/dexalin_plus,
/obj/item/storage/pill_bottle/dylovene,
Expand Down
2 changes: 2 additions & 0 deletions code/modules/clothing/spacesuits/void/merc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
rad = 30
)
siemens_coefficient = 0.35
max_heat_protection_temperature = 15000 //Halfway between Space Suit 5000 and Firesuit 30000
species_restricted = list(SPECIES_HUMAN)
camera_networks = list(NETWORK_MERCENARY)
light_overlay = "helmet_light_green"
Expand All @@ -31,6 +32,7 @@
rad = 30
)
siemens_coefficient = 0.35
max_heat_protection_temperature = 15000 //Halfway between Space Suit 5000 and Firesuit 30000
breach_threshold = 10
resilience = 0.07
species_restricted = list(SPECIES_HUMAN)
Expand Down
5 changes: 5 additions & 0 deletions code/modules/reagents/reagent_containers/food/snacks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2443,6 +2443,7 @@
/obj/item/reagent_containers/food/snacks/mre
name = "mre"
desc = "A closed mre, ready to be opened."
description_info = "Crush inhand to open it, heat it, and once it's warm, the tricordrazine is activated."
icon_state = "mre"
trash = /obj/item/trash/mre
filling_color = "#948051"
Expand Down Expand Up @@ -2496,6 +2497,7 @@
/obj/item/reagent_containers/food/snacks/mre/can
name = "ration can"
desc = "A can of stew meat complete with tab on top for easy opening."
description_info = "Crush inhand to open it, heat it, and once it's warm, the bicaridine and kelotane are activated."
icon_state = "ration_can"
trash = /obj/item/trash/mre_can
filling_color = "#948051"
Expand All @@ -2507,6 +2509,7 @@
/obj/item/reagent_containers/food/snacks/mre_paste
name = "nutrient paste"
desc = "A peachy-looking paste."
description_info = "The hyperzine and paracetamol within will keep you fast and moving."
icon_state = "paste"
trash = /obj/item/trash/mre_paste
filling_color = "#DEDEAB"
Expand All @@ -2519,6 +2522,7 @@
/obj/item/reagent_containers/food/snacks/mre_cracker
name = "enriched cracker"
desc = "A salted cracker swimming in oil."
description_info = "Coated in Dexalin Plus, Steady, and a bit of Nicotine, it's healthier than smokes."
icon_state = "mre_cracker"
filling_color = "#F5DEB8"
center_of_mass = list("x"=17, "y"=6)
Expand All @@ -2531,6 +2535,7 @@
/obj/item/reagent_containers/food/snacks/candy/mre
name = "morale bar"
desc = "Some brand of non-melting military chocolate."
description_info = "Willy was a madman to get away with adding Serotrotium to chocolate, but he did it anyways. What a lad."
icon_state = "mre_candy"
trash = /obj/item/trash/mre_candy
preloaded_reagents = list("sugar" = 3, "serotrotium" = 2)
Expand Down
Binary file modified icons/obj/items.dmi
Binary file not shown.
Loading

0 comments on commit 4f1120f

Please sign in to comment.