Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes #2583

Merged
merged 22 commits into from
Aug 3, 2024
Merged

Fixes #2583

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion code/game/antagonist/antagonist.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
var/datum/language/required_language = null

// Used for setting appearance.
var/list/valid_species = list(SPECIES_UNATHI,SPECIES_SKRELL,SPECIES_HUMAN,SPECIES_VOX)
var/list/valid_species = list(SPECIES_UNATHI,SPECIES_SKRELL,SPECIES_HUMAN,SPECIES_VOX,SPECIES_DIONA,SPECIES_IPC)
var/min_player_age = 14

// Runtime vars.
Expand Down
1 change: 1 addition & 0 deletions code/game/atoms.dm
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,7 @@
return A.loc
A = A.loc


/**
* Called when a user examines the atom. This proc and its overrides handle displaying the text that appears in chat
* during examines.
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/robotics_fabricator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -338,8 +338,8 @@
for(var/obj/machinery/computer/rdconsole/RDC in get_area_all_atoms(get_area(src)))
if(!RDC.sync)
continue
files.download_from(RDC.files)
//[SIERRA-EDIT] - MODPACK_RND
files = RDC.files
sync_message = "Sync complete."
update_categories()
//[/SIERRA-EDIT] - MODPACK_RND
2 changes: 2 additions & 0 deletions code/modules/clothing/suits/alien.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,5 @@
species_restricted = list(SPECIES_VOX)
siemens_coefficient = 1 //Its literally metal
item_flags = ITEM_FLAG_THICKMATERIAL | ITEM_FLAG_INVALID_FOR_CHAMELEON

/obj/item/clothing/head/helmet/vox_scrap //[SIERRA-ADD] mods\guns\code\xenos.dm
2 changes: 1 addition & 1 deletion code/modules/research/designs/designs_hud_optical.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
sort_string = "GAAAA"

/datum/design/item/hud/security
name = "security records"
name = "security HUD" //[SIERRA-EDIT]
id = "security_hud"
req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2)
build_path = /obj/item/clothing/glasses/hud/security
Expand Down
2 changes: 1 addition & 1 deletion code/modules/research/rdconsole.dm
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
search_text = ""
if(href_list["eject_disk"]) // User is ejecting the disk.
if(disk)
disk.forceMove(src.loc)
disk.forceMove(get_turf(src))
disk = null
if(href_list["delete_disk_file"]) // User is attempting to delete a file from the loaded disk.
if(disk)
Expand Down
8 changes: 6 additions & 2 deletions code/modules/species/station/machine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,12 @@
flesh_color = "#575757"

has_organ = list(
BP_POSIBRAIN = /obj/item/organ/internal/posibrain,
BP_EYES = /obj/item/organ/internal/eyes/robot
BP_POSIBRAIN = /obj/item/organ/internal/posibrain/ipc/second,
BP_EYES = /obj/item/organ/internal/eyes/robot,
//[SIERRA-ADD]
BP_EXONET = /obj/item/organ/internal/ecs/second_gen,
BP_COOLING = /obj/item/organ/internal/cooling_system,
//[/SIERRA-ADD]
)

heat_discomfort_level = 373.15
Expand Down
13 changes: 9 additions & 4 deletions code/modules/surgery/robotics.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@

/singleton/surgery_step/robotics/success_chance(mob/living/user, mob/living/carbon/human/target, obj/item/tool)
. = ..()
if(!user.skill_check(SKILL_DEVICES, SKILL_TRAINED))
if(!user.skill_check(SKILL_DEVICES, SKILL_BASIC))
. -= 30
if(!user.skill_check(SKILL_DEVICES, SKILL_EXPERIENCED))
if(!user.skill_check(SKILL_DEVICES, SKILL_TRAINED))
. -= 20
if(user.skill_check(SKILL_DEVICES, SKILL_EXPERIENCED))
. += 35
Expand Down Expand Up @@ -398,16 +398,21 @@
for(var/obj/item/organ/I in affected.internal_organs)
if(I && I.damage > 0)
if(BP_IS_ROBOTIC(I))
if(((I.organ_tag == BP_POSIBRAIN) && (I.damage >= I.min_broken_damage)))
to_chat(user, SPAN_WARNING("Can't mend the damage to [target]'s [I.name]'s internally, you need to remove it first."))
return
user.visible_message("[user] starts mending the damage to [target]'s [I.name]'s mechanisms.", \
"You start mending the damage to [target]'s [I.name]'s mechanisms." )
playsound(target.loc, 'sound/items/bonegel.ogg', 50, TRUE)
..()
playsound(target.loc, 'sound/items/bonegel.ogg', 50, TRUE)
..()

/singleton/surgery_step/robotics/fix_organ_robotic/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
for(var/obj/item/organ/I in affected.internal_organs)
if(I && I.damage > 0)
if(BP_IS_ROBOTIC(I))
if(((I.organ_tag == BP_POSIBRAIN) && (I.damage >= I.min_broken_damage)))
return
user.visible_message(SPAN_NOTICE("[user] repairs [target]'s [I.name] with [tool]."), \
SPAN_NOTICE("You repair [target]'s [I.name] with [tool].") )
I.damage = 0
Expand Down
5 changes: 5 additions & 0 deletions maps/away/voxship/voxship-2.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -776,6 +776,11 @@
/obj/item/clothing/suit/armor/vox_scrap,
/obj/item/clothing/suit/armor/vox_scrap,
/obj/item/clothing/suit/armor/vox_scrap,
/obj/item/clothing/head/helmet/vox_scrap,
/obj/item/clothing/head/helmet/vox_scrap,
/obj/item/clothing/head/helmet/vox_scrap,
/obj/item/clothing/head/helmet/vox_scrap,
/obj/item/clothing/head/helmet/vox_scrap,
/obj/item/clothing/under/vox/vox_casual,
/obj/item/clothing/under/vox/vox_casual,
/obj/item/clothing/under/vox/vox_casual,
Expand Down
4 changes: 2 additions & 2 deletions maps/sierra/items/datajack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
if(!holder)
qdel_self()
return PROCESS_KILL
if(!Adjacent(holder))
if(get_dist(src, holder) > 1)
holder.insert_datajack()
return PROCESS_KILL

Expand Down Expand Up @@ -81,7 +81,7 @@

/datum/terminal_command/datajack/proper_input_entered(text, mob/user, datum/terminal/terminal)
var/datum/extension/interactive/ntos/C = terminal.computer
if(!(C.get_hardware_flag() & (PROGRAM_PDA | PROGRAM_TABLET)))
if(!(C.get_hardware_flag() & (PROGRAM_PDA | PROGRAM_TABLET | PROGRAM_LAPTOP)))
return SPAN_WARNING("This command cant be executed on this device.")

var/obj/item/modular_computer/comp = terminal.computer.get_physical_host()
Expand Down
1 change: 1 addition & 0 deletions mods/RnD/_RnD.dme
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include "code/binary.dm"
#include "code/design.dm"
#include "code/sciefolder.dm"
#include "code/misc.dm"


#endif
25 changes: 25 additions & 0 deletions mods/RnD/code/misc.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/obj/item/photo/use_tool(obj/item/P, mob/living/user)
. = ..()
if(istype(P, /obj/item/flame))
burnphoto(P, user)

/obj/item/photo/proc/burnphoto(obj/item/flame/P, mob/user)
var/class = "warning"

if(P.lit && !user.restrained())
if(istype(P, /obj/item/flame/lighter/zippo))
class = "rose"

user.visible_message("<span class='[class]'>[user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!</span>", \
"<span class='[class]'>You hold \the [P] up to \the [src], burning it slowly.</span>")

if (do_after(user, 5 SECONDS, src, DO_PUBLIC_UNIQUE))
if(get_dist(src, user) < 2 && user.get_active_hand() == P && P.lit)
user.visible_message("<span class='[class]'>[user] burns right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.</span>", \
"<span class='[class]'>You burn right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.</span>")
new /obj/decal/cleanable/ash(get_turf(src))
qdel(src)
else
to_chat(user, "<span class='warning'>You must hold \the [P] steady to burn \the [src].</span>")
else
to_chat(user, "<span class='warning'>You must hold \the [P] steady to burn \the [src].</span>")
30 changes: 24 additions & 6 deletions mods/RnD/code/sciefolder.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,22 @@
var/message = ""
var/saved_file_num = 0
var/percentage
processing_size = 1
var/GQ = 1

/datum/proc/get_recursive(mob/living/user)
SHOULD_CALL_PARENT(FALSE)
return user
/datum/ntnet
var/active_miners = 0

/datum/computer_file/program/folding/on_startup(mob/living/user, datum/extension/interactive/ntos/new_host)
. = ..()
var/obj/item/stock_parts/computer/processor_unit/C = computer.get_component(PART_CPU)
processing_size = C.processing_power
ntnet_global.active_miners += 1

/datum/computer_file/program/folding/on_shutdown(mob/living/user, datum/extension/interactive/ntos/new_host)
. = ..()
processing_size = 1
ntnet_global.active_miners -= 1

/datum/computer_file/program/folding/Topic(href, href_list)
. = ..()
Expand All @@ -46,10 +57,15 @@
program_status = PROGRAM_STATUS_RUNNING

if(href_list["start"] && started_on == 0)

var/totalminersmodifier = 1
started_on = world.timeofday
current_interval = ((rand(MINIMUM_SCIENCE_INTERVAL, MAXIMUM_SCIENCE_INTERVAL) * GQ) / get_speed()) SECONDS
next_event = ((rand(MINIMUM_FOLDING_EVENT_INTERVAL, MAXIMUM_FOLDING_EVENT_INTERVAL) * get_speed()) SECONDS) + world.timeofday
if(ntnet_global.active_miners > 2 * LAZYLEN(ntnet_global.relays))
totalminersmodifier = ntnet_global.active_miners
current_interval = ((rand(MINIMUM_SCIENCE_INTERVAL, MAXIMUM_SCIENCE_INTERVAL) * GQ) / get_speed() * (totalminersmodifier/2)) SECONDS
next_event = ((rand(MINIMUM_FOLDING_EVENT_INTERVAL, MAXIMUM_FOLDING_EVENT_INTERVAL) * get_speed() / (totalminersmodifier/2)) SECONDS) + world.timeofday
else
current_interval = ((rand(MINIMUM_SCIENCE_INTERVAL, MAXIMUM_SCIENCE_INTERVAL) * GQ) / get_speed()) SECONDS
next_event = ((rand(MINIMUM_FOLDING_EVENT_INTERVAL, MAXIMUM_FOLDING_EVENT_INTERVAL) * get_speed()) SECONDS) + world.timeofday

if(href_list["save"] && started_on > 0 && program_status != PROGRAM_STATUS_CRASHED)
if(started_on + current_interval > world.timeofday)
Expand Down Expand Up @@ -115,6 +131,8 @@
if(PROGRAM_STATUS_RUNNING_SCALDING) //1/3 chance on all following ticks for the program to crash.
to_chat(h, SPAN_WARNING("\The [host] pings an error chime."))
program_status = PROGRAM_STATUS_CRASHED
HDD.damage_health(rand (5, 15))
CPU.damage_health(rand (10, 25))
crashed_at = world.timeofday
else
program_status = PROGRAM_STATUS_CRASHED
Expand Down
9 changes: 0 additions & 9 deletions mods/guns/_guns.dme
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,3 @@
#include "code/xenos.dm"

#endif
// BEGIN_INTERNALS
// END_INTERNALS
// BEGIN_FILE_DIR
#define FILE_DIR .
// END_FILE_DIR
// BEGIN_PREFERENCES
// END_PREFERENCES
// BEGIN_INCLUDE
// END_INCLUDE
47 changes: 42 additions & 5 deletions mods/guns/code/xenos.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

/obj/item/projectile/beam/darkmatter
damage = 30
armor_penetration = 35
armor_penetration = 40

/obj/item/projectile/beam/stun/darkmatter
agony = 70
Expand All @@ -24,7 +24,7 @@
/obj/item/gun/energy/darkmatter
firemodes = list(
list(mode_name="stunning", burst=1, fire_delay=null, move_delay=null, burst_accuracy=list(30), dispersion=null, projectile_type=/obj/item/projectile/beam/stun/darkmatter, charge_cost = 60),
list(mode_name="focused", burst=1, fire_delay=null, move_delay=null, burst_accuracy=list(30), dispersion=null, projectile_type=/obj/item/projectile/beam/darkmatter, charge_cost = 100),
list(mode_name="focused", burst=1, fire_delay=17, move_delay=null, burst_accuracy=list(30), dispersion=null, projectile_type=/obj/item/projectile/beam/darkmatter, charge_cost = 100),
list(mode_name="scatter burst", burst=8, fire_delay=null, move_delay=4, burst_accuracy=list(0, 0, 0, 0, 0, 0, 0, 0), dispersion=list(0, 0, 0, 1, 1, 1, 2, 2, 3), projectile_type=/obj/item/projectile/energy/darkmatter, charge_cost = 7)
)

Expand All @@ -40,8 +40,45 @@
/obj/item/projectile/energy/plasmastun/sonic/strong
damage = 35

/obj/item/gun/launcher/alien/slugsling
ammo_gen_time = 150

/obj/item/gun/launcher/alien/spikethrower
max_ammo = 4
release_force = 38

/obj/item/gun/launcher/alien/slugsling
ammo_gen_time = 200

/obj/item/clothing/suit/armor/vox_scrap
desc = "A hodgepodge of various pieces of unknown heavy metal scrapped together into a rudimentary vox-shaped piece of armor."
armor = list(
melee = ARMOR_MELEE_VERY_HIGH,
bullet = ARMOR_BALLISTIC_RIFLE,
laser = ARMOR_LASER_MAJOR,
bomb = ARMOR_BOMB_PADDED
)

/obj/item/clothing/suit/armor/vox_scrap/New()
..()
slowdown_per_slot[slot_wear_suit] = 1.5

/obj/item/clothing/head/helmet/vox_scrap
name = "rusted metal helmet"
desc = "A hodgepodge of various pieces of unknown heavy metal scrapped together into a rudimentary vox-shaped helmet."
icon = 'mods/guns/icons/mob/clothing/obj_head.dmi'
item_icons = list(slot_head_str = 'mods/guns/icons/mob/clothing/onmob_head.dmi')
icon_state = "vox_scrap"
armor = list(
melee = ARMOR_MELEE_VERY_HIGH,
bullet = ARMOR_BALLISTIC_RIFLE,
laser = ARMOR_LASER_MAJOR,
bomb = ARMOR_BOMB_PADDED
)
item_flags = ITEM_FLAG_THICKMATERIAL
flags_inv = HIDEEARS|BLOCKHEADHAIR
body_parts_covered = HEAD|FACE
species_restricted = list(SPECIES_VOX)
siemens_coefficient = 1
tint = TINT_MODERATE

/obj/item/clothing/head/helmet/vox_scrap/New()
..()
slowdown_per_slot[slot_head] = 0.4
Binary file added mods/guns/icons/mob/clothing/head.dmi
Binary file not shown.
Binary file added mods/guns/icons/mob/clothing/obj_head.dmi
Binary file not shown.
Binary file added mods/guns/icons/mob/clothing/onmob_head.dmi
Binary file not shown.
30 changes: 17 additions & 13 deletions mods/ipc_mods/code/ipc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,23 @@
// Ремонт позитронного мозга
/obj/item/organ/internal/posibrain/use_tool(obj/item/stack/nanopaste, mob/living/user, list/click_params)
. = ..()
if(src.damage > src.max_damage)
to_chat(user, SPAN_WARNING("[src] is completely ruined."))
return
if(src.damage > 0)
if(do_after(user, 40, src))
src.damage -= (30)
if(src.damage < 0)
src.damage = 0
nanopaste.use(1)
user.visible_message(SPAN_NOTICE("\The [user] applied some nanopaste on [src]'s damaged areas."),\
SPAN_NOTICE("You apply some nanopaste at [src]'s damaged areas."))
else
to_chat(user, SPAN_NOTICE("All [src]'s systems are nominal."))
if(istype(nanopaste, /obj/item/stack/nanopaste))
if(user.skill_check(SKILL_DEVICES, SKILL_TRAINED))
if(src.damage >= src.max_damage)
to_chat(user, SPAN_WARNING("[src] is completely ruined."))
return
if(src.damage > 0)
if(do_after(user, 40, src))
src.damage -= (30)
if(src.damage < 0)
src.damage = 0
nanopaste.use(1)
user.visible_message(SPAN_NOTICE("\The [user] applied some nanopaste on [src]'s damaged areas."),\
SPAN_NOTICE("You apply some nanopaste at [src]'s damaged areas."))
else
to_chat(user, SPAN_NOTICE("All [src]'s systems are nominal."))
else
to_chat(user, SPAN_WARNING("You have no idea how to do that!"))

/obj/item/organ/internal/posibrain/ipc
name = "Positronic brain"
Expand Down
3 changes: 1 addition & 2 deletions mods/legalese_language/code/skill.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,4 @@
if(level == SKILL_MASTER)
if(ishuman(mob))
var/mob/living/carbon/human/H = mob
if(istype(H.species, /datum/species/human))
H.add_language(LANGUAGE_LEGALESE)
H.add_language(LANGUAGE_LEGALESE)