Skip to content

Commit

Permalink
replika`s added
Browse files Browse the repository at this point in the history
  • Loading branch information
MrCastmer committed Sep 7, 2024
1 parent 447fbbf commit afc5911
Show file tree
Hide file tree
Showing 39 changed files with 1,001 additions and 21 deletions.
23 changes: 22 additions & 1 deletion _maps/map_files/IceMeta_drip/IceMeta_drip.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -9719,6 +9719,11 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
dir = 8
},
/obj/structure/mirror{
pixel_y = 36;
pixel_x = 0;
layer = 2.8
},
/turf/open/floor/plasteel/white/side{
dir = 1
},
Expand Down Expand Up @@ -36630,6 +36635,12 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 10
},
/obj/structure/mirror{
pixel_y = 35;
pixel_x = 0;
layer = 2.8
},
/obj/effect/landmark/start/repair_worker_replika,
/turf/open/floor/plasteel/white/side{
dir = 9
},
Expand Down Expand Up @@ -37740,6 +37751,7 @@
/obj/structure/mirror{
pixel_x = 28
},
/obj/effect/landmark/start/repair_worker_replika,
/turf/open/floor/plasteel,
/area/crew_quarters/toilet/auxiliary)
"koZ" = (
Expand Down Expand Up @@ -58146,6 +58158,15 @@
},
/turf/open/floor/plasteel,
/area/hydroponics/garden)
"pOw" = (
/obj/machinery/light{
dir = 4
},
/turf/open/floor/plasteel{
icon_state = "red";
dir = 4
},
/area/hallway/primary/fore)
"pOL" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 5
Expand Down Expand Up @@ -248824,7 +248845,7 @@ pbZ
gEj
gEj
gEj
gEj
pOw
gEj
cmu
aqD
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/traits/sources.dm
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@
#define FROSTMINER_ENRAGE_TRAIT "frostminer-enrage"
#define NO_GRAVITY_TRAIT "no-gravity"
#define NEGATIVE_GRAVITY_TRAIT "negative-gravity"
#define REPLICUNI_TRAIT "replic-uniform" //dripstation edit

/// A trait gained from a mob's leap action, like the leaper
#define LEAPING_TRAIT "leaping"
Expand Down
3 changes: 2 additions & 1 deletion code/__DEFINES/{dripstation_defines}/is_helpers.dm
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
#define isfelinid(A) (is_species(A, /datum/species/human/felinid))
#define isfelinid(A) (is_species(A, /datum/species/human/felinid))
#define isreplica(A) (is_species(A, /datum/species/replica))
2 changes: 2 additions & 0 deletions code/datums/blood_types.dm
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,11 @@
compatible_types = list(/datum/blood_type/lizard)


/*Dripstation edit
/datum/blood_type/universal/synthetic //Blood for preterni
name = "Synthetic"
color = LIGHT_COLOR_ELECTRIC_CYAN
*/

/*
The species have exotic blood, but with how dna is stored, they still need a blood type
Expand Down
3 changes: 3 additions & 0 deletions code/game/machinery/computer/crew.dm
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,10 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
if (ishumanbasic(tracked_mob))
species = "Human"
if (ispreternis(tracked_mob))
/* Dripstation edit
species = "Robot"
*/
species = "Replica" // Dripstation edit
if (isipc(tracked_mob))
species = "IPC"
if (ispodperson(tracked_mob))
Expand Down
3 changes: 3 additions & 0 deletions code/game/objects/items/implants/implant_mindshieldtot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@
return FALSE
if(target.mind.has_antag_datum(/datum/antagonist/gang))
target.mind.remove_antag_datum(/datum/antagonist/gang)
if(HAS_TRAIT(target, TRAIT_MINDSHIELD)) //dripstation edit
target.visible_message(span_warning("[target] seems to resist the implant!"), span_warning("You already have mind protection!")) //dripstation edit
return FALSE //dripstation edit
if(!silent)
if(target.mind in SSticker.mode.cult)
to_chat(target, span_warning("You feel something interfering with your mental conditioning, but you resist it!"))
Expand Down
4 changes: 4 additions & 0 deletions code/game/objects/items/robot/robot_parts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@

/obj/item/robot_suit/examine(mob/user)
. = ..()
/*Dripstation edit
. += "If you insert an AI CPU when this endoskeleton is complete it will be constructed as a synthetic."
*/

/obj/item/robot_suit/wrench_act(mob/living/user, obj/item/I) //Deconstucts empty borg shell. Flashes remain unbroken because they haven't been used yet
var/turf/T = get_turf(src)
Expand Down Expand Up @@ -256,6 +258,7 @@
else
to_chat(user, span_warning("The endoskeleton must be assembled before debugging can begin!"))

/*Dripstation edit
else if(istype(W, /obj/item/ai_cpu))
if(check_completion())
var/response = tgui_alert(user, "Are you sure you want to turn this endoskeleton into a synthetic unit?", "Please Confirm", list("Yes", "No"))
Expand All @@ -276,6 +279,7 @@
S.inbuilt_cpu = null
S.inbuilt_cpu = W
qdel(src)
*/

else if(istype(W, /obj/item/mmi))
var/obj/item/mmi/M = W
Expand Down
3 changes: 3 additions & 0 deletions code/game/objects/items/tools/weldingtool.dm
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,9 @@

if(user.a_intent == INTENT_HELP && ishuman(M))
var/mob/living/carbon/human/H = M
if(isreplica(H)) //dripstation edit
to_chat(user, span_warning("Replika`s can`t weld themselfes.")) //dripstation edit
return FALSE //dripstation edit
var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected))
if(affecting?.status == BODYPART_ROBOTIC)
if(affecting.brute_dam <= 0)
Expand Down
2 changes: 2 additions & 0 deletions code/modules/client/preferences/names.dm
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@
/datum/preference/name/cyborg/create_default_value()
return DEFAULT_CYBORG_NAME

/* //dripstation edit
/datum/preference/name/synthetic
savefile_key = "synthetic_name"
Expand All @@ -157,3 +158,4 @@
/datum/preference/name/synthetic/create_default_value()
return pick(GLOB.synthetic_names)
*/
5 changes: 4 additions & 1 deletion code/modules/jobs/access.dm
Original file line number Diff line number Diff line change
Expand Up @@ -419,12 +419,15 @@
"Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist",
// yogs start - Yog jobs
"Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer",
/*
"Network Admin", "Mining Medic", "Paramedic", "Psychiatrist", "Clerk", "Tourist", "Space Bartender", "Artist", "Brig Physician", "Synthetic")
*/
"Network Admin", "Mining Medic", "Paramedic", "Psychiatrist", "Clerk", "Tourist", "Space Bartender", "Artist", "Brig Physician")
// yogs end

/// Gets all jobs with hud icons
/proc/get_all_job_icons() //For all existing HUD icons
return get_all_jobs() + list("Prisoner", "Blueshield", "Nanotrasen Representative", "Magistrate") //dripstation edit
return get_all_jobs() + list("Prisoner", "Blueshield", "Nanotrasen Representative", "Magistrate", "Repair Worker Replika") //dripstation edit

/// Gets all centcom jobs
/proc/get_all_centcom_jobs()
Expand Down
5 changes: 3 additions & 2 deletions code/modules/jobs/job_types/_job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -361,13 +361,14 @@
C.registered_account = B
B.bank_cards += C
H.sec_hud_set_ID()
H.equip_to_slot_if_possible(C, ITEM_SLOT_ID) //dripstation edit

if(pda_type)
var/obj/item/modular_computer/PDA = new pda_type()
if(istype(PDA))
H.equip_to_slot_if_possible(PDA, pda_slot)
/* dripstation edit
PDA.InsertID(C)
/*
H.equip_to_slot_if_possible(PDA, ITEM_SLOT_ID)
PDA.update_label()
Expand All @@ -376,8 +377,8 @@
else
H.equip_to_slot_if_possible(C, ITEM_SLOT_ID)
else
*/
H.equip_to_slot_if_possible(C, ITEM_SLOT_ID)
*/

if(H.stat != DEAD)//if a job has a gps and it isn't a decorative corpse, rename the GPS to the owner's name
for(var/obj/item/gps/G in H.get_all_contents())
Expand Down
4 changes: 4 additions & 0 deletions code/modules/jobs/job_types/synthetic.dm
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/* Dripstation edit
GLOBAL_LIST_INIT(synthetic_base_access, list(
ACCESS_MAINT_TUNNELS, ACCESS_KITCHEN, ACCESS_CREMATORIUM,
ACCESS_JANITOR, ACCESS_BAR, ACCESS_CHAPEL_OFFICE,
Expand Down Expand Up @@ -56,10 +57,13 @@ GLOBAL_LIST_EMPTY(synthetic_added_access)
/datum/job/synthetic/get_access()
return GLOB.synthetic_base_access
*/

/datum/outfit/job/synthetic
name = "Synthetic"
/* Dripstation edit
jobtype = /datum/job/synthetic
*/

id_type = /obj/item/card/id/silver/synthetic
ears = /obj/item/radio/headset/headset_synthetic
Expand Down
10 changes: 7 additions & 3 deletions code/modules/jobs/jobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ GLOBAL_LIST_INIT(security_lightup_areas, \
GLOBAL_LIST_INIT(original_nonhuman_positions, list(
"AI",
"Cyborg",
"Repair Worker Replika",
"pAI"))

GLOBAL_LIST_INIT(alt_command_positions, list(
Expand All @@ -150,9 +151,9 @@ GLOBAL_LIST_INIT(alt_command_positions, list(
"Chief Science Officer", "Head of Research", "Chief Technology Officer",
"Medical Director", "Head of Medical",
"Stock Controller", "Cargo Coordinator", "Shipping Overseer", /*dripstation edit*/
"Nanotrasen Representative", "Nanotrasen Consultant", "Central Command Representative", /*dripstation edit*/
"Magistrate", "TerraGov Judge", "Nanotrasen Internal Affairs Representative", /*dripstation edit*/
"Blueshield", "Blueshield Lieutenant", "Close Protection Specialist", "Executive Protection Agent"))//dripstation edit
"Nanotrasen Consultant", "Central Command Representative", /*dripstation edit*/
"TerraGov Judge", "Nanotrasen Internal Affairs Representative", /*dripstation edit*/
"Blueshield Lieutenant", "Close Protection Specialist", "Executive Protection Agent"))//dripstation edit

GLOBAL_LIST_INIT(alt_engineering_positions, list(
"Head of Engineering", "Engineering Director", "Senior Engineer",
Expand Down Expand Up @@ -215,6 +216,7 @@ GLOBAL_LIST_INIT(alt_security_positions, list(
GLOBAL_LIST_INIT(alt_nonhuman_positions, list(
"Station Central Processor", "Central Silicon Intelligence", "Station Super Computer",
"Droid", "Robot", "Automaton",
"Security Technician Replika",
ROLE_PAI))

GLOBAL_LIST_INIT(command_positions, original_command_positions | alt_command_positions)
Expand Down Expand Up @@ -291,6 +293,7 @@ GLOBAL_PROTECT(exp_specialmap)
var/static/regex/bs_expand = new("blueshield")
var/static/regex/ntr_expand = new("nanotrasen representative")
var/static/regex/mag_expand = new("magistrate")
var/static/regex/replica_expand = new("replica")
//dripstation end

job = lowertext(job)
Expand Down Expand Up @@ -320,6 +323,7 @@ GLOBAL_PROTECT(exp_specialmap)
job = bs_expand.Replace(job, "blueshield")
job = ntr_expand.Replace(job, "nanotrasen representative")
job = mag_expand.Replace(job, "magistrate")
job = replica_expand.Replace(job, "replika")
//dripstation end
return job

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,12 @@ GLOBAL_LIST_INIT(granted_synthetic_access, list())

return TRUE
if("grant_supply")
/*Dripstation edit
if(ACCESS_HOP in user_id.access)
var/relevant_access = list(ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
*/
if(ACCESS_QM in user_id.access)
var/relevant_access = list(ACCESS_CARGO, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
if(GLOB.granted_synthetic_access[SUPPLY])
GLOB.granted_synthetic_access[SUPPLY] = FALSE
binary_talk("Synthetic assistance no longer required in the Supply department", "Synthetic Access Requester")
Expand Down
3 changes: 3 additions & 0 deletions code/modules/power/cable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,9 @@ By design, d1 is the smallest direction and d2 is the highest
if(!istype(H))
return ..()

if(isreplica(H)) //dripstation edit
to_chat(user, span_warning("Replika`s can`t rewire themselfes.")) //dripstation edit
return FALSE //dripstation edit
var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected))
if(affecting.burn_dam <= 0)
to_chat(user, span_warning("[affecting] is already in good condition!"))
Expand Down
5 changes: 5 additions & 0 deletions code/modules/reagents/chemistry/reagents/medicine_reagents.dm
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,8 @@
var/mob/living/carbon/C = M
if (M.stat == DEAD)
can_heal = TRUE
if(isreplica(M)) //corpses, that replicates people
can_heal = TRUE //dripstation edit
if((methods & (PATCH|TOUCH)) && can_heal)
for(var/i in C.all_wounds)
var/datum/wound/iter_wound = i
Expand All @@ -422,6 +424,9 @@
var/heal_amt = clamp(reac_volume, 0, TOUCH_CHEM_MAX - S?.volume)
M.adjustBruteLoss(-2*heal_amt)
M.adjustFireLoss(-2*heal_amt)
if(isreplica(M)) //dripstation edit
M.adjustBruteLoss(-1*heal_amt, FALSE, FALSE, required_status = BODYPART_ROBOTIC) //dripstation edit
M.adjustFireLoss(-1*heal_amt, FALSE, FALSE, required_status = BODYPART_ROBOTIC) //dripstation edit
if(methods & TOUCH)
M.reagents.add_reagent(/datum/reagent/medicine/synthflesh, reac_volume) // no permeability modifier because it only works on dead bodies anyway and would just be an inconvenience
if(HAS_TRAIT_FROM(M, TRAIT_HUSK, BURN) && (S?.volume + reac_volume >= SYNTHFLESH_UNHUSK_AMOUNT && M.getFireLoss() <= UNHUSK_DAMAGE_THRESHOLD) && M.cure_husk(BURN)) //cure husk will return true if it cures the final husking source
Expand Down
3 changes: 3 additions & 0 deletions code/modules/reagents/reagent_containers/blood_pack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,10 @@

/obj/item/reagent_containers/blood/random/Initialize(mapload)
icon_state = "bloodpack"
/* Dripstation edit
blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L")
*/
blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L", "Oxidant")
return ..()

/obj/item/reagent_containers/blood/APlus
Expand Down
21 changes: 19 additions & 2 deletions code/modules/surgery/bodyparts/_bodyparts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,14 @@
wounding_dmg *= (easy_dismember ? 1 : 0.75)
if((mangled_state & BODYPART_MANGLED_BONE) && try_dismember(wounding_type, wounding_dmg, wound_bonus, bare_wound_bonus))
return

if(BIO_JUST_FLESH) //dripstation edit
if(wounding_type == WOUND_BLUNT) //dripstation edit
wounding_type = WOUND_PIERCE //dripstation edit
wounding_dmg *= (easy_dismember ? 0.6 : 0.3) // blunt weapons pass along 30% of their wounding damage to the flash since it's less concentrated
else if(mangled_state == BODYPART_MANGLED_FLESH && sharpness && try_dismember(wounding_type, wounding_dmg, wound_bonus, bare_wound_bonus)) //dripstation edit
return //dripstation edit

// note that there's no handling for BIO_JUST_FLESH since we don't have any that are that right now (slimepeople maybe someday)
// standard humanoids
if(BIO_FLESH_BONE)
Expand Down Expand Up @@ -399,6 +407,13 @@
phantom_wounding_dmg *= (easy_dismember ? 1 : 0.75)
if((mangled_state & BODYPART_MANGLED_BONE) && try_dismember(wounding_type, phantom_wounding_dmg, wound_bonus, bare_wound_bonus))
return

if(BIO_JUST_FLESH) //dripstation edit
if(wounding_type == WOUND_BLUNT) //dripstation edit
wounding_type = WOUND_PIERCE //dripstation edit
phantom_wounding_dmg *= (easy_dismember ? 0.6 : 0.3) // blunt weapons pass along 30% of their wounding damage to the flash since it's less concentrated
else if(mangled_state == BODYPART_MANGLED_FLESH && sharpness && try_dismember(wounding_type, phantom_wounding_dmg, wound_bonus, bare_wound_bonus)) //dripstation edit
return //dripstation edit
// note that there's no handling for BIO_JUST_FLESH since we don't have any that are that right now (slimepeople maybe someday)
// standard humanoids
if(BIO_FLESH_BONE)
Expand Down Expand Up @@ -948,21 +963,23 @@
else if(use_digitigrade)
if("[species_id]" == "polysmorph")
limb.icon_state = "pdigitigrade_[use_digitigrade]_[body_zone]"
/*dripstation edit
else if("[species_id]" == "preternis")
limb.icon_state = "preternis_[use_digitigrade]_[body_zone]"
*/
else
limb.icon_state = "digitigrade_[use_digitigrade]_[body_zone]"
else
limb.icon_state = "[species_id]_[body_zone]"
else
limb.icon = 'yogstation/icons/mob/human_parts.dmi' // yogs -- use yogs icon instead of tg, gorilla people
limb.icon = 'modular_dripstation/icons/mob/human_parts.dmi' //dripstation edit
if(should_draw_gender)
limb.icon_state = "[species_id]_[body_zone]_[icon_gender]"
else
limb.icon_state = "[species_id]_[body_zone]"
if(aux_zone)
aux = image(limb.icon, "[species_id]_[aux_zone]", -aux_layer, image_dir)
if("[species_id]" == "human") //dripstation edit
if("[species_id]" == "human" || "[species_id]" == "replica") //dripstation edit
aux = image(limb.icon, "[species_id]_[aux_zone]_[icon_gender]", -aux_layer, image_dir) //dripstation edit
. += aux

Expand Down
5 changes: 3 additions & 2 deletions code/modules/surgery/bodyparts/robot_bodyparts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@
/obj/item/bodypart/l_leg/ipc
status = BODYPART_ROBOTIC
sub_status = BODYPART_SUBTYPE_IPC
icon = 'yogstation/icons/mob/human_parts.dmi'
icon = 'modular_dripstation/icons/mob/human_parts.dmi' //dripstation edit
limb_override = TRUE
light_brute_msg = ROBOTIC_LIGHT_BRUTE_MSG
medium_brute_msg = ROBOTIC_MEDIUM_BRUTE_MSG
Expand All @@ -451,7 +451,7 @@
/obj/item/bodypart/r_leg/ipc
status = BODYPART_ROBOTIC
sub_status = BODYPART_SUBTYPE_IPC
icon = 'yogstation/icons/mob/human_parts.dmi'
icon = 'modular_dripstation/icons/mob/human_parts.dmi' //dripstation edit
limb_override = TRUE
light_brute_msg = ROBOTIC_LIGHT_BRUTE_MSG
medium_brute_msg = ROBOTIC_MEDIUM_BRUTE_MSG
Expand Down Expand Up @@ -509,6 +509,7 @@ IPCLIMB(wtmipc, "Ward-Takahashi")
IPCLIMB(xmgipc, "Xion Manufacturing")
IPCLIMB(xm2ipc, "Xion Manufacturing (2.0)")
IPCLIMB(zhpipc, "Zeng-Hu Pharmaceuticals")
IPCLIMB(csvipc, "Cybersun Virtual Solutions") //dripstation edit

#undef ROBOTIC_LIGHT_BRUTE_MSG
#undef ROBOTIC_MEDIUM_BRUTE_MSG
Expand Down
Loading

0 comments on commit afc5911

Please sign in to comment.