Skip to content

Commit

Permalink
Borg fixes and balance pass (#5218)
Browse files Browse the repository at this point in the history
* Borg fixes and balance pass

-Fixes borg panel lock/unlock being flipped in the chat window. (grammer fix)
-Fixes borg internal plates not having different values based on the plates.
-Gives borgs the ability to have their internal plates fixed with welders (As long as the internal plates are not destroyed, the borg will have to have its panel OPEN for this to be done. This will not work on burn damage. Only brute. Borgs can still not weld themselves. You will have to ask for help.)
-Replaces engineering borgs krag b gone with space cleaner sense krag b gone didn't work and trying to place wires and other things on a gore covered floor was just painful.
-Gives ammo grippers the ability to pick up and place batteries. Laser weapons exist I guess.
-Gives components the ability to have resistances to damage types set. Internal armor plates have various brute and burn resistances based on which mark it is.
basic internal plates are what borgs start with and have the lowest hp with no resistance. You should probably get upgraded from this.
mark 2 has energy and is made at soteria
mark 3 has brute and is made at guild
mark 5 has no armor but high hp. Its made at both.

* Cleaner bottle fix

Fixes bug that runtimes when engineer borg recharges with the space cleaner bottle.

* Robotics lathe fix

Fixes armor plates not showing up in the lathe correctly after research.

* More patches

removes extra line on robot_damage.dm
adjusts borg hp to be based off base model and the internal plate inside.
allows borgs to be fixed with welders and wires without being open.
Adjusts borg modules HP, This will look MUCH lower due to internal plates adding extra maxHealth  now.
Baseline : 100 from 200
Medical : 120 from 180
Engi : 120 from 240
Defence : 160 from 180
Sec : 220 from 320
Jani : 120 from 250
Service : 120 from 130
Mining : 160 from 250
Sci : 120 from 160

* Combat borg stat buff

-Buffs defence borgs robustness and sec borgs vig. It made no sense the combat borgs didn't have these stats at all.

* Borg Omni parent optimization

-Alters borg omni tools to use a parent styled layout.
-Gives borg omni tools sharp so they can cut things into planks.
-Unchecks outdated borg files and removes unnecessary file (Trilby requested)

* gun part play for borgs

-Allows ammo grippers to pick up gun parts

* Scalpel and embed

-Removes embedding from multiple tools and weapons across all borgs.
-Nerfs the damage on the medical borgs scalpel.

* pixelshift

-Gives borgs hotkeys for pixelshifting

* Emag changes

-Removes defence modules grenade launcher. Explosives can't legally be used in colony.
-Changes out more useless emag equipment to instead be the energy sword.

* blatts children

-Makes gold roachlings neutral faction so they stop attacking borgs.

* miner gripper buff

-Gives sheet loader gripper to miner borg so they can trade materials across desks.
  • Loading branch information
LongSleeves authored May 5, 2024
1 parent 061dd18 commit 92c99a7
Show file tree
Hide file tree
Showing 18 changed files with 198 additions and 136 deletions.
18 changes: 16 additions & 2 deletions code/datums/craft/recipes/guild.dm
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,22 @@
list(QUALITY_SAWING, 30, "time" = 60)
)

/datum/craft_recipe/guild/robotmelee //Lots of steps
name = "robot mark v armor plating"
/datum/craft_recipe/guild/robotmelee //Lots of heating and hammering. Forge your blade samurai.
name = "robot mark III reinforced armor plating"
result = /obj/item/robot_parts/robot_component/armour/mkiii
steps = list(
list(CRAFT_MATERIAL, 25, MATERIAL_STEEL, "time" = 30),
list(QUALITY_WELDING, 40, "time" = 90),
list(QUALITY_HAMMERING, 30, "time" = 180),
list(QUALITY_WELDING, 40, "time" = 90),
list(QUALITY_HAMMERING, 30, "time" = 180),
list(QUALITY_WELDING, 40, "time" = 90),
list(QUALITY_SCREW_DRIVING, 40, "time" = 90),
list(QUALITY_CUTTING, 30, "time" = 180),
)

/datum/craft_recipe/guild/robothp //Lots of steps
name = "robot mark v extra armor plating"
result = /obj/item/robot_parts/robot_component/armour/mkv
steps = list(
list(CRAFT_MATERIAL, 10, MATERIAL_PLASTEEL, "time" = 90),
Expand Down
3 changes: 3 additions & 0 deletions code/game/objects/items/weapons/tools/knifes_daggers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,9 @@
embed_mult = 0.6
price_tag = 38

/obj/item/tool/knife/tacknife/robo //used by sec bot
embed_mult = 0

/obj/item/tool/knife/dagger
name = "dagger"
desc = "A sharp implement; difference between this and a knife: it's sharp on both sides. Good for finding holes in armor and exploiting them."
Expand Down
2 changes: 2 additions & 0 deletions code/game/objects/items/weapons/tools/scalpels.dm
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@

/obj/item/tool/scalpel/laser/si/robo
cell = /obj/item/cell/small/moebius/nuclear
force = WEAPON_FORCE_NORMAL
embed_mult = 0

//A makeshift knife, for doing all manner of cutting and stabbing tasks in a half-assed manner
/obj/item/tool/knife/shiv
Expand Down
3 changes: 3 additions & 0 deletions code/game/objects/items/weapons/tools/simple_weapons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@
worksound = WORKSOUND_HARD_SLASH
price_tag = 30

/obj/item/tool/hatchet/robo //for the service borg
embed_mult = 0

/obj/item/tool/fireaxe
name = "fire axe"
desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?"
Expand Down
1 change: 1 addition & 0 deletions code/modules/genetics/creatures/golden_roach.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
var/amount_grown = 0
snacker = TRUE
can_burrow = FALSE
faction = "neutral"
colony_friend = TRUE
friendly_to_colony = TRUE
inherent_mutations = list()
Expand Down
8 changes: 4 additions & 4 deletions code/modules/mob/living/silicon/robot/admin_only_modules.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
//src.modules += new /obj/item/melee/energy/glaive(src)
src.modules += new /obj/item/tool/weldingtool/robotic(src)
src.modules += new /obj/item/tool/multitool/robotic(src)
src.modules += new /obj/item/tool/robotic_omni_engi(src)
src.modules += new /obj/item/tool/robotic_omni/engi(src)
src.modules += new /obj/item/tool/tape_roll/fiber/robotic(src) //Window repair
src.modules += new /obj/item/device/gps(src)

Expand Down Expand Up @@ -64,7 +64,7 @@
src.modules += new /obj/item/melee/energy/sword(src)
src.modules += new /obj/item/tool/weldingtool/robotic(src)
src.modules += new /obj/item/tool/multitool/robotic(src)
src.modules += new /obj/item/tool/robotic_omni_engi(src)
src.modules += new /obj/item/tool/robotic_omni/engi(src)
src.modules += new /obj/item/tool/tape_roll/fiber/robotic(src) //handcuffs and mouth tape
//Todo, replace these with suitable weapons from eris
//src.modules += new /obj/item/gun/energy/mountedsmg(src)
Expand Down Expand Up @@ -97,7 +97,7 @@
src.modules += new /obj/item/rcd/borg(src)
src.modules += new /obj/item/tool/weldingtool/robotic(src)
src.modules += new /obj/item/tool/multitool/robotic(src)
src.modules += new /obj/item/tool/robotic_omni_engi(src)
src.modules += new /obj/item/tool/robotic_omni/engi(src)
src.modules += new /obj/item/tool/tape_roll/fiber/robotic(src) //Window repair
src.modules += new /obj/item/device/pipe_painter(src)
src.modules += new /obj/item/gripper/no_use/loader(src)
Expand Down Expand Up @@ -208,7 +208,7 @@
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/hud/med(src)
src.modules += new /obj/item/device/scanner/health(src)
src.modules += new /obj/item/tool/robotic_omni_standard(src)
src.modules += new /obj/item/tool/robotic_omni/standard(src)
src.modules += new /obj/item/tool/weldingtool/robotic/weaker(src)
src.modules += new /obj/item/roller_holder(src)
src.modules += new /obj/item/hatton/robot(src)
Expand Down
45 changes: 37 additions & 8 deletions code/modules/mob/living/silicon/robot/component.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
var/installed_by_default = TRUE
var/robot_trait = null // a cyborg trait to add when this is installed
var/powered_trait = FALSE // does this module need to be powered for its trait to be active ?
var/brute_mult = 1 // allows components to become resistant to a form of damage. If brute and burn are both 0 then they can't be broken.
var/burn_mult = 1

// The actual device object that has to be installed for this.
/datum/robot_component/var/external_type = null
Expand Down Expand Up @@ -98,18 +100,27 @@
external_type = /obj/item/robot_parts/robot_component/armour
max_damage = 80

/datum/robot_component/armour/level_2
name = "advanced armour plating"
/datum/robot_component/armour/energy
name = "mark II energy armour plating"
external_type = /obj/item/robot_parts/robot_component/armour/mkii
max_damage = 120
installed_by_default = FALSE
burn_mult = 0.5

/datum/robot_component/armour/level_3
name = "combat armour plating"
/datum/robot_component/armour/melee
name = "mark III reinforced armour plating"
external_type = /obj/item/robot_parts/robot_component/armour/mkiii
max_damage = 120
installed_by_default = FALSE
brute_mult = 0.5

/datum/robot_component/armour/extra
name = "mark V extra armour plating"
external_type = /obj/item/robot_parts/robot_component/armour/mkv
max_damage = 160
max_damage = 160 //33% more hp then other plates but no resistances.
installed_by_default = FALSE


// JETPACK
// Allows the cyborg to move in space
// Uses no power when idle. Uses 50J for each tile the cyborg moves.
Expand Down Expand Up @@ -290,6 +301,9 @@
matter = list(MATERIAL_STEEL = 5)
var/brute = 0
var/burn = 0
var/brute_mult = 1 // used to apply resistances when inserting parts into borgs
var/burn_mult = 1
var/internal_damage = 30 // used to apply alternative hp amounts to components on install
var/icon_state_broken = "broken"

/obj/item/robot_parts/robot_component/binary_communication_device
Expand All @@ -306,20 +320,35 @@

/obj/item/robot_parts/robot_component/armour
name = "armour plating"
desc = "A robot part, metal plates to be able to take dents and burns so more sensitive component inside dont."
desc = "A robot part, basic metal plates to be able to take dents and burns so more sensitive component inside dont."
icon_state = "armor"
icon_state_broken = "armor_broken"
internal_damage = 80

/obj/item/robot_parts/robot_component/armour/mkii
name = "Mark II armour plating"
name = "Mark II energy armour plating"
desc = "A robot part, metal plates designed to resist burns better then other plates. Protects other sensitive components."
icon_state = "armormk2"
icon_state_broken = "armormk2_broken"
internal_damage = 120
matter = list(MATERIAL_STEEL = 25)
burn_mult = 0.5

/obj/item/robot_parts/robot_component/armour/mkiii
name = "Mark III reinforced armour plating"
desc = "A robot part, metal plates designed to resist a beating better then other plates. Protects other sensitive components."
icon_state = "armormk2"
icon_state_broken = "armormk2_broken"
internal_damage = 120
matter = list(MATERIAL_STEEL = 25)
brute_mult = 0.5

/obj/item/robot_parts/robot_component/armour/mkv
name = "Mark V armour plating"
name = "Mark V extra armour plating"
desc = "A robot part, whats better then a few metal plates? MORE metal plates! Protects other sensitive components."
icon_state = "armormk5"
icon_state_broken = "armormk5_broken"
internal_damage = 160
matter = list(MATERIAL_STEEL = 20, MATERIAL_PLASTEEL = 10)

/obj/item/robot_parts/robot_component/camera
Expand Down
2 changes: 2 additions & 0 deletions code/modules/mob/living/silicon/robot/gripper.dm
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,8 @@
/obj/item/ammo_casing,
/obj/item/ammo_kit,
/obj/item/ammo_magazine,
/obj/item/cell,
/obj/item/part/gun,
/obj/item/am_containment,
/obj/item/am_shielding_container,
/obj/item/mech_ammo_box
Expand Down
27 changes: 21 additions & 6 deletions code/modules/mob/living/silicon/robot/robot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
real_name = "Cyborg"
icon = 'icons/mob/robots.dmi'
icon_state = "robot"
maxHealth = 200
health = 200
maxHealth = 100
health = 100
defaultHUD = "BorgStyle"
mob_bump_flag = ROBOT
mob_swap_flags = ROBOT|MONKEY|SLIME|SIMPLE_ANIMAL
Expand Down Expand Up @@ -326,8 +326,14 @@
var/module_type = robot_modules[modtype]
var/obj/item/robot_module/RM = new module_type() //Spawn a dummy module to read values from

var/armourHealth = 0
for(var/V in src.components)
var/datum/robot_component/C = src.components[V]
if (V == "armour")
armourHealth = C.max_damage

switch(alert(src, "[RM.desc] \n \n\
Health: [RM.health] \n\
Health: [RM.health + armourHealth] \n\
Power Efficiency: [RM.power_efficiency*100]%\n\
Movement Speed: [RM.speed_factor*100]%",
"[modtype] module", "Yes", "No"))
Expand Down Expand Up @@ -435,7 +441,7 @@
/mob/living/silicon/robot/verb/toggle_panel_lock()
set name = "Toggle Panel Lock"
set category = "Silicon Commands"
to_chat(src, "You begin [locked ? "" : "un"]locking your panel.")
to_chat(src, "You begin [locked ? "un" : ""]locking your panel.")
if(!opened && has_power && do_after(usr, 80) && !opened && has_power)
to_chat(src, "You [locked ? "un" : ""]locked your panel.")
locked = !locked
Expand Down Expand Up @@ -577,6 +583,9 @@
if(istype(WC))
C.brute_damage = WC.brute
C.electronics_damage = WC.burn
C.max_damage = WC.internal_damage
C.brute_mult = WC.brute_mult
C.burn_mult = WC.burn_mult

to_chat(usr, SPAN_NOTICE("You install the [I.name]."))

Expand Down Expand Up @@ -623,8 +632,8 @@
return

if(I.use_tool(user, src, WORKTIME_FAST, tool_type, FAILCHANCE_NORMAL, required_stat = STAT_MEC))
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
adjustBruteLoss(-30)
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
updatehealth()
add_fingerprint(user)
for(var/mob/O in viewers(user, null))
Expand Down Expand Up @@ -739,7 +748,10 @@
if(ABORT_CHECK)
return

if(istype(I, /obj/item/stack/cable_coil) && (wiresexposed || isdrone(src)))
if(istype(I, /obj/item/stack/cable_coil))
if (src == user)
to_chat(user, SPAN_WARNING("You lack the reach to be able to repair yourself."))
return
if (!getFireLoss())
to_chat(user, "Nothing to fix here!")
return
Expand All @@ -748,8 +760,11 @@
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
adjustFireLoss(-30)
updatehealth()
add_fingerprint(user)
for(var/mob/O in viewers(user, null))
O.show_message(text(SPAN_DANGER("[user] has fixed some of the burnt wires on [src]!")), 1)
return


else if (istype(I, /obj/item/stock_parts/matter_bin) && opened) // Installing/swapping a matter bin
if(storage)
Expand Down
3 changes: 1 addition & 2 deletions code/modules/mob/living/silicon/robot/robot_damage.dm
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@

var/datum/robot_component/armour/A = get_armour()
if(A)
A.take_damage(brute,burn,sharp)
A.take_damage(brute*A.brute_mult,burn*A.burn_mult,sharp)
return

while(parts.len && (brute>0 || burn>0) )
Expand Down Expand Up @@ -204,4 +204,3 @@
spawn(2)
playsound(src, 'sound/weapons/heavysmash.ogg', 100, 1, 20,20)
playsound(src, pick(robot_talk_heavy_sound), 100, 1, 5,5)

Loading

0 comments on commit 92c99a7

Please sign in to comment.