Merge branch 'master' into gatofication2

This commit is contained in:
evilew
2024-11-21 22:11:24 +01:00
committed by GitHub
193 changed files with 4649 additions and 708 deletions
@@ -4,7 +4,7 @@
/datum/objective/abductee/random
/datum/objective/abductee/random/New()
explanation_text = pick(world.file2list("strings/abductee_objectives.txt"))
explanation_text = pick(world.file2list("GainStation13/strings/abductee_objectives.txt")) //GS13 Edit: Nanotrasen to GATO
/datum/objective/abductee/steal
explanation_text = "Steal all"
@@ -3,7 +3,7 @@
name = "Spawn Sentient Disease"
typepath = /datum/round_event/ghost_role/sentient_disease
weight = 7
max_occurrences = 1
max_occurrences = 0 //GS13 - removed midround pseudo-antags
min_players = 5
category = EVENT_CATEGORY_HEALTH
description = "Spawns a sentient disease, who wants to infect as many people as possible."
@@ -4,7 +4,7 @@
name = "Spawn Revenant" // Did you mean 'griefghost'?
typepath = /datum/round_event/ghost_role/revenant
weight = 7
max_occurrences = 1
max_occurrences = 0 //GS13 tweak - no antags, thanks
min_players = 5
category = EVENT_CATEGORY_ENTITIES
description = "Spawns an angry, soul sucking ghost."
@@ -2,7 +2,7 @@
name = "Spawn Slaughter Demon"
typepath = /datum/round_event/ghost_role/slaughter
weight = 1 //Very rare
max_occurrences = 1
max_occurrences = 0 //GS13 - no antags, thanks
earliest_start = 1 HOURS
min_players = 20
category = EVENT_CATEGORY_ENTITIES
@@ -2,7 +2,7 @@
name = "Spawn Swarmer Shell"
typepath = /datum/round_event/spawn_swarmer
weight = 7
max_occurrences = 1 //Only once okay fam
max_occurrences = 0 //GS13 - no antags, thanks
earliest_start = 30 MINUTES
min_players = 35
dynamic_should_hijack = TRUE
+1
View File
@@ -32,6 +32,7 @@
var/obj/item/equipment //for fun stuff that goes on the gentials/maybe rings down the line
var/dontlist = FALSE
var/nochange = FALSE //stops people changing visablity.
var/starting_size //GS13 EDIT
/obj/item/organ/genital/Initialize(mapload, do_update = TRUE)
+2 -1
View File
@@ -75,7 +75,7 @@
//this is far too lewd wah
/obj/item/organ/genital/breasts/modify_size(modifier, min = -INFINITY, max = INFINITY)
var/new_value = clamp(cached_size + modifier, min, max)
var/new_value = clamp(cached_size + modifier, starting_size, max) //GS13 EDIT
if(new_value == cached_size)
return
prev_size = cached_size
@@ -115,6 +115,7 @@
else
color = "#[D.features["breasts_color"]]"
size = D.features["breasts_size"]
starting_size = D.features["breasts_size"]
shape = D.features["breasts_shape"]
if(!D.features["breasts_producing"])
genital_flags &= ~ (GENITAL_FUID_PRODUCTION|CAN_CLIMAX_WITH|CAN_MASTURBATE_WITH)
+5 -2
View File
@@ -16,7 +16,7 @@
layer_index = BUTT_LAYER_INDEX
/obj/item/organ/genital/butt/modify_size(modifier, min = -INFINITY, max = BUTT_SIZE_MAX)
var/new_value = clamp(size_cached + modifier, min, max)
var/new_value = clamp(size_cached + modifier, starting_size, max) //GS13 EDIT
if(new_value == size_cached)
return
prev_size = size_cached
@@ -47,6 +47,8 @@
//Reflect the size of dat ass on examine.
switch(round(size))
if(0)
size_name = "nonexistent" // GS13 EDIT
if(1)
size_name = "average"
if(2)
@@ -58,7 +60,7 @@
if(5)
size_name = pick("massive","extreme","enormous","very generous","humongous","big bubbly","dummy thicc")
else
size_name = "nonexistent"
size_name = "oversized" //GS13 edit
desc = "You see a [lowershape] of [size_name] asscheeks."
@@ -82,5 +84,6 @@
else
color = "#[D.features["butt_color"]]"
size = D.features["butt_size"]
starting_size = D.features["butt_size"] // GS13 EDIT
prev_size = size
toggle_visibility(D.features["butt_visibility"], FALSE)
+5 -5
View File
@@ -474,11 +474,11 @@
uniform = /obj/item/clothing/under/pants/youngfolksjeans
id = /obj/item/card/id
/datum/outfit/beachbum/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
..()
if(visualsOnly)
return
H.dna.add_mutation(STONER)
// /datum/outfit/beachbum/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
// ..()
// if(visualsOnly)
// return
// H.dna.add_mutation(STONER) //GS13 - removes the stoner trait, it makes the role almost unplayable
/////////////////Officers+Nanotrasen Security//////////////////////
+31 -2
View File
@@ -102,6 +102,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/pda_style = MONO
var/pda_color = "#808000"
var/pda_skin = PDA_SKIN_ALT
var/list/alt_titles_preferences = list()
var/uses_glasses_colour = 0
@@ -1409,6 +1410,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "This preference functions similar to the one before but allows for items with more drastic effects. <b>Do not enable this if you aren't okay with more drastic things happening to your character.</b><BR>"
dat += "<b>Extreme Fatness Vulnerability:</b><a href='?_src_=prefs;preference=extreme_fatness_vulnerable'>[extreme_fatness_vulnerable == TRUE ? "Enabled" : "Disabled"]</a><BR>"
dat += "<br></br>"
dat += "<b>Object TF:</b><a href='?_src_=prefs;preference=object_tf'>[object_tf == TRUE ? "Enabled" : "Disabled"]</a><BR>"
dat += "<br></br>"
dat += "<b>Extreme Weight Gain (Sprite Size scales with weight):</b><a href='?_src_=prefs;preference=weight_gain_extreme'>[weight_gain_extreme == TRUE ? "Enabled" : "Disabled"]</a><BR>"
dat += "<b>Persistent Fat (endround/cryo weight becomes your new start weight):</b><a href='?_src_=prefs;preference=weight_gain_persistent'>[weight_gain_persistent == TRUE ? "Enabled" : "Disabled"]</a><BR>"
dat += "<b>Permanent Weight (hard to remove and persistent weight):</b><a href='?_src_=prefs;preference=weight_gain_permanent'>[weight_gain_permanent == TRUE ? "Enabled" : "Disabled"]</a><BR>"
@@ -1586,6 +1589,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
HTML += "<tr bgcolor='[job.selection_color]'><td width='60%' align='right'>"
var/rank = job.title
var/displayed_rank = rank
if(job.alt_titles.len && (rank in alt_titles_preferences))
displayed_rank = alt_titles_preferences[rank]
lastJob = job
if(jobban_isbanned(user, rank))
HTML += "<font color=red>[rank]</font></td><td><a href='?_src_=prefs;bancheck=[rank]'> BANNED</a></td></tr>"
@@ -1607,10 +1613,15 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if((job_preferences["[SSjob.overflow_role]"] == JP_LOW) && (rank != SSjob.overflow_role) && !jobban_isbanned(user, SSjob.overflow_role))
HTML += "<font color=orange>[rank]</font></td><td></td></tr>"
continue
var/rank_title_line = "[displayed_rank]"
if((rank in GLOB.command_positions) || (rank == "AI"))//Bold head jobs
HTML += "<b><span class='dark'>[rank]</span></b>"
rank_title_line = "<b>[rank_title_line]</b>"
if(job.alt_titles.len)
rank_title_line = "<a href='?_src_=prefs;preference=job;task=alt_title;job_title=[job.title]'>[rank_title_line]</a>"
else
HTML += "<span class='dark'>[rank]</span>"
rank_title_line = "<span class='dark'>[rank_title_line]</span>" //Make it dark if we're not adding a button for alt titles
HTML += rank_title_line
HTML += "</td><td width='40%'>"
@@ -1864,6 +1875,21 @@ GLOBAL_LIST_EMPTY(preferences_datums)
SetChoices(user)
if("setJobLevel")
UpdateJobPreference(user, href_list["text"], text2num(href_list["level"]))
if("alt_title")
var/job_title = href_list["job_title"]
var/titles_list = list(job_title)
var/datum/job/J = SSjob.GetJob(job_title)
for(var/i in J.alt_titles)
titles_list += i
var/chosen_title
chosen_title = input(user, "Choose your job's title:", "Job Preference") as null|anything in titles_list
if(chosen_title)
if(chosen_title == job_title)
if(alt_titles_preferences[job_title])
alt_titles_preferences.Remove(job_title)
else
alt_titles_preferences[job_title] = chosen_title
SetChoices(user)
else
SetChoices(user)
return TRUE
@@ -3422,6 +3448,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("extreme_fatness_vulnerable")
extreme_fatness_vulnerable = !extreme_fatness_vulnerable
if("object_tf")
object_tf = !object_tf
if("blueberry_inflation")
blueberry_inflation = !blueberry_inflation
if("max_fatness")
+11 -1
View File
@@ -951,9 +951,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["chair_breakage"] >> chair_breakage
S["fatness_vulnerable"] >> fatness_vulnerable
S["extreme_fatness_vulnerable"] >> extreme_fatness_vulnerable
S["object_tf"] >> object_tf
S["blueberry_inflation"] >> blueberry_inflation
S["feature_breasts_fluid"] >> features["breasts_fluid"]
S["alt_titles_preferences"] >> alt_titles_preferences
//gear loadout
if(istext(S["loadout"]))
loadout_data = safe_json_decode(S["loadout"])
@@ -1144,6 +1145,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
loadout_slot = sanitize_num_clamp(loadout_slot, 1, MAXIMUM_LOADOUT_SAVES, 1, TRUE)
alt_titles_preferences = SANITIZE_LIST(alt_titles_preferences)
if(SSjob)
for(var/datum/job/job in SSjob.occupations)
if(alt_titles_preferences[job.title])
if(!(alt_titles_preferences[job.title] in job.alt_titles))
alt_titles_preferences.Remove(job.title)
cit_character_pref_load(S)
return TRUE
@@ -1236,6 +1244,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["chair_breakage"], chair_breakage)
WRITE_FILE(S["fatness_vulnerable"], fatness_vulnerable)
WRITE_FILE(S["extreme_fatness_vulnerable"], extreme_fatness_vulnerable)
WRITE_FILE(S["object_tf"], object_tf)
WRITE_FILE(S["blueberry_inflation"], blueberry_inflation)
WRITE_FILE(S["feature_breasts_fluid"], features["breasts_fluid"])
@@ -1301,6 +1310,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["feature_belly_color"], features["belly_color"])
WRITE_FILE(S["feature_hide_belly"], features["hide_belly"])
WRITE_FILE(S["feature_inflatable_belly"], features["inflatable_belly"])
WRITE_FILE(S["alt_titles_preferences"], alt_titles_preferences)
WRITE_FILE(S["feature_ooc_notes"], features["ooc_notes"])
+1 -1
View File
@@ -2,7 +2,7 @@
name = "Abductors"
typepath = /datum/round_event/ghost_role/abductor
weight = 10
max_occurrences = 1
max_occurrences = 0 //GS13 - no antags, thanks
min_players = 30
dynamic_should_hijack = TRUE
category = EVENT_CATEGORY_INVASION
+1 -1
View File
@@ -3,7 +3,7 @@
typepath = /datum/round_event/ghost_role/alien_infestation
weight = 5
min_players = 25
max_occurrences = 1
max_occurrences = 0 //GS13 - no antags, thanks
dynamic_should_hijack = TRUE
category = EVENT_CATEGORY_ENTITIES
description = "A xenomorph larva spawns on a random vent."
+1 -1
View File
@@ -1,7 +1,7 @@
/datum/round_event_control/anomaly/anomaly_bluespace
name = "Anomaly: Bluespace"
typepath = /datum/round_event/anomaly/anomaly_bluespace
min_players = 12 //GS13 - higher pop = more likely to be solved instead of wrecking a whole dep
max_occurrences = 1
weight = 5
description = "This anomaly randomly teleports all items and mobs in a large area."
+2 -2
View File
@@ -2,8 +2,8 @@
name = "Anomaly: Pyroclastic"
typepath = /datum/round_event/anomaly/anomaly_pyro
min_players = 10 //GS13 tweak
max_occurrences = 0
min_players = 10 //GS13 Edit: tweak
max_occurrences = 0 //GS13 Edit: Disabling this for now.
weight = 20
description = "This anomaly sets things on fire, and creates a pyroclastic slime."
+1 -1
View File
@@ -1,7 +1,7 @@
/datum/round_event_control/aurora_caelus
name = "Aurora Caelus"
typepath = /datum/round_event/aurora_caelus
max_occurrences = 2
max_occurrences = 4 //GS13 - pretty lights, why not
weight = 4
earliest_start = 20 MINUTES
category = EVENT_CATEGORY_FRIENDLY
+2 -2
View File
@@ -2,8 +2,8 @@
name = "Spontaneous Brain Trauma"
typepath = /datum/round_event/brain_trauma
weight = 25
min_players = 20 //GS13 - somewhat harmless ig
max_occurrences = 0
min_players = 20 //GS13 Edit: 8 to 20. You cant really fix this on your own if you arnt medical.
max_occurrences = 0 //GS13 Edit: Disabling this.
category = EVENT_CATEGORY_HEALTH
description = "A crewmember gains a random trauma."
+1 -1
View File
@@ -4,7 +4,7 @@
weight = 5
min_players = 15
max_occurrences = 0
max_occurrences = 0 //GS13 Edit: Disabling this for now.
category = EVENT_CATEGORY_AI
description = "Vending machines will attack people until the Patient Zero is disabled."
+1 -1
View File
@@ -1,7 +1,7 @@
/datum/round_event_control/disease_outbreak
name = "Disease Outbreak"
typepath = /datum/round_event/disease_outbreak
max_occurrences = 0
max_occurrences = 0 //GS13 Edit: Disabling this for now.
min_players = 5
weight = 5
category = EVENT_CATEGORY_HEALTH
+3 -3
View File
@@ -1,16 +1,16 @@
/datum/round_event_control/electrical_storm
name = "Electrical Storm"
typepath = /datum/round_event/electrical_storm
earliest_start = 30 MINUTES
earliest_start = 30 MINUTES //GS13 Edit: Reducing pain for normal station ongoings.
min_players = 5
weight = 40
max_occurrences = 2
max_occurrences = 2 //GS13 Edit: Limiting this.
category = EVENT_CATEGORY_ENGINEERING
description = "Destroys all lights in a large area."
/datum/round_event/electrical_storm
var/lightsoutAmount = 1
var/lightsoutRange = 10
var/lightsoutRange = 10 //GS13 Edit: 25 down to 10
announce_when = 1
/datum/round_event/electrical_storm/announce(fake)
+2 -2
View File
@@ -1,9 +1,9 @@
/datum/round_event_control/high_priority_bounty
name = "High Priority Bounty"
typepath = /datum/round_event/high_priority_bounty
max_occurrences = 5
max_occurrences = 6 //GS13 - because why not
weight = 20
earliest_start = 10
earliest_start = 10 MINUTES
category = EVENT_CATEGORY_BUREAUCRATIC
description = "Creates bounties that are three times original worth."
+2 -2
View File
@@ -10,8 +10,8 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
/datum/round_event_control/immovable_rod
name = "Immovable Rod"
typepath = /datum/round_event/immovable_rod
min_players = 20 //GS13 - tweaked min players and occurences
max_occurrences = 2
min_players = 25 //GS13 - tweaked min players and occurences
max_occurrences = 1 //GS13 - one is enough as is
var/atom/special_target
category = EVENT_CATEGORY_SPACE
description = "The station passes through an immovable rod."
+1 -1
View File
@@ -4,7 +4,7 @@
name = "Ion Storm"
typepath = /datum/round_event/ion_storm
weight = 15
min_players = 2
min_players = 5 //GS13 - increasing pop so it's more likely someone has a chance to fix the laws
category = EVENT_CATEGORY_AI
description = "Gives the AI a new, randomized law."
+2 -1
View File
@@ -1,7 +1,8 @@
/datum/round_event_control/meteor_wave/major_dust
name = "Major Space Dust"
typepath = /datum/round_event/meteor_wave/major_dust
min_players = 8 //GS13
min_players = 10 //GS13 - do it when there's more people to fix it around
max_occurrences = 2 //GS13 - limiting the amount of it
weight = 8
description = "The station is pelted by sand."
+3 -3
View File
@@ -7,7 +7,7 @@
name = "Meteor Wave: Normal"
typepath = /datum/round_event/meteor_wave
weight = 4
min_players = 16 //GS13 - tweaked all meteor waves to nerf them a bit
min_players = 20 //GS13 - tweaked all meteor waves to nerf them a bit
max_occurrences = 2
earliest_start = 40 MINUTES
category = EVENT_CATEGORY_SPACE
@@ -87,7 +87,7 @@
typepath = /datum/round_event/meteor_wave/threatening
weight = 5
min_players = 20
max_occurrences = 1
max_occurrences = 0 //GS13 - too chaotic
earliest_start = 45 MINUTES
description = "A meteor wave with higher chance of big meteors."
@@ -100,7 +100,7 @@
typepath = /datum/round_event/meteor_wave/catastrophic
weight = 7
min_players = 25
max_occurrences = 1
max_occurrences = 0 //GS13 - too chaotic
earliest_start = 55 MINUTES
description = "A meteor wave that might summon a tunguska class meteor."
+2 -2
View File
@@ -6,8 +6,8 @@
description = "A horde of mice arrives, and perhaps even the Rat King themselves."
/datum/round_event/mice_migration
var/minimum_mice = 3
var/maximum_mice = 8
var/minimum_mice = 3 //GS13 Edit: 5 to 3, mice ravage the station in lowpop
var/maximum_mice = 8 //GS13 Edit: 15 to 8, See above.
/datum/round_event/mice_migration/announce(fake)
var/cause = pick("space-winter", "budget-cuts", "Ragnarok",
+1 -1
View File
@@ -1,7 +1,7 @@
/datum/round_event_control/nightmare
name = "Spawn Nightmare"
typepath = /datum/round_event/ghost_role/nightmare
max_occurrences = 1
max_occurrences = 0 //GS13 - no antags, thanks
min_players = 25
dynamic_should_hijack = TRUE
category = EVENT_CATEGORY_ENTITIES
+1 -1
View File
@@ -2,7 +2,7 @@
name = "Lone Operative"
typepath = /datum/round_event/ghost_role/operative
weight = 0 //Admin only
max_occurrences = 0 //GS13 tweak
max_occurrences = 0 //GS13 - just in case
category = EVENT_CATEGORY_INVASION
description = "A single nuclear operative assaults the station."
+1 -1
View File
@@ -2,7 +2,7 @@
name = "Space Pirates"
typepath = /datum/round_event/pirates
weight = 8
max_occurrences = 1
max_occurrences = 0 //GS13 - no antags, thanks
min_players = 20
earliest_start = 50 MINUTES
dynamic_should_hijack = TRUE
+1
View File
@@ -3,6 +3,7 @@
typepath = /datum/round_event/portal_storm/syndicate_shocktroop
weight = 2
min_players = 20
max_occurrences = 0 //GS13 - no antags, thanks
earliest_start = 60 MINUTES
category = EVENT_CATEGORY_ENTITIES
description = "Syndicate troops pour out of portals."
+37 -30
View File
@@ -1,18 +1,18 @@
#define SNACK_ATTACK 1 //GS13
#define HIJACK_SYNDIE 2
#define RUSKY_PARTY 3
#define SPIDER_GIFT 4
#define DEPARTMENT_RESUPPLY 5
#define ANTIDOTE_NEEDED 6
#define PIZZA_DELIVERY 7
#define ITS_HIP_TO 8
#define MY_GOD_JC 9
#define DELTA_CRATES 10
#define HIJACK_SYNDIE 1
#define RUSKY_PARTY 2
#define SPIDER_GIFT 3
#define DEPARTMENT_RESUPPLY 4
#define ANTIDOTE_NEEDED 5
#define PIZZA_DELIVERY 6
#define ITS_HIP_TO 7
#define MY_GOD_JC 8
#define DELTA_CRATES 9
#define SNACK_ATTACK 10 //GS13 Add: Snack attack
/datum/round_event_control/shuttle_loan
name = "Shuttle Loan"
typepath = /datum/round_event/shuttle_loan
max_occurrences = 3
max_occurrences = 20 //GS13 Edit: increasing this because they're a fun event
earliest_start = 15 MINUTES
category = EVENT_CATEGORY_BUREAUCRATIC
description = "If cargo accepts the offer, fills the shuttle with loot and/or enemies."
@@ -26,16 +26,13 @@
var/thanks_msg = "The cargo shuttle should return in five minutes. Have some supply points for your trouble."
/datum/round_event/shuttle_loan/setup()
dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY, ANTIDOTE_NEEDED, PIZZA_DELIVERY, ITS_HIP_TO, MY_GOD_JC)
dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY, ANTIDOTE_NEEDED, PIZZA_DELIVERY, ITS_HIP_TO, MY_GOD_JC, SNACK_ATTACK) //GS13 Edit: Snack Attack shuttle
/datum/round_event/shuttle_loan/announce(fake)
SSshuttle.shuttle_loan = src
var/message = "Cargo: I just wanna tell you techs good luck, we are all counting on you."
var/title = "CentCom Free Real Estate"
switch(dispatch_type)
if(SNACK_ATTACK) //GS13
message = "Cargo: Our science division took couple too many samples from one the local candy biohabitats. Would you care to dispose of the unneeded specimen?"
title = "CentCom Science Division"
if(HIJACK_SYNDIE)
message = "Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache."
title = "CentCom Counter Intelligence"
@@ -66,6 +63,11 @@
message = "Cargo: We have discovered a warehouse of DELTA locked crates. We can't store any more of them at CC, can you take them for us?"
title = "CentCom Security Division"
bonus_points = 25000 //If you mess up, people die and the shuttle gets turned into swiss cheese
//GS13 Start: Snack Attack shuttle
if(SNACK_ATTACK)
message = "Cargo: Our science division took couple too many samples from one the local candy biohabitats. Would you care to dispose of the unneeded specimen?"
title = "CentCom Science Division"
//GS13 End
if(prob(50))
priority_announce(message, title)
else
@@ -85,8 +87,6 @@
SSshuttle.supply.setTimer(3000)
switch(dispatch_type)
if(SNACK_ATTACK) //GS13
SSshuttle.centcom_message += "Snack attack en route."
if(HIJACK_SYNDIE)
SSshuttle.centcom_message += "Syndicate hijack team incoming."
if(RUSKY_PARTY)
@@ -105,6 +105,10 @@
SSshuttle.centcom_message += "Live explosive ordnance incoming. Exercise extreme caution."
if(DELTA_CRATES)
SSshuttle.centcom_message += "DELTA Locked crates incoming. Exercise extreme caution."
//GS13 Start: Snack attack shuttle
if(SNACK_ATTACK)
SSshuttle.centcom_message += "Snack attack en route."
//GS13 End
/datum/round_event/shuttle_loan/tick()
if(dispatched)
@@ -131,19 +135,6 @@
var/list/shuttle_spawns = list()
switch(dispatch_type)
if(SNACK_ATTACK) //GS13
shuttle_spawns.Add(/mob/living/simple_animal/hostile/feed/chocolate_slime)
shuttle_spawns.Add(/mob/living/simple_animal/hostile/feed/chocolate_slime)
shuttle_spawns.Add(/mob/living/simple_animal/hostile/feed/chocolate_slime/creambeast)
if(prob(50))
shuttle_spawns.Add(/mob/living/simple_animal/hostile/feed/chocolate_slime/creambeast)
shuttle_spawns.Add(/obj/item/reagent_containers/food/snacks/donut/choco)
shuttle_spawns.Add(/obj/item/reagent_containers/food/snacks/donut/choco)
shuttle_spawns.Add(/obj/item/reagent_containers/food/snacks/donut/choco)
shuttle_spawns.Add(/obj/item/reagent_containers/food/snacks/chocoorange)
shuttle_spawns.Add(/obj/item/reagent_containers/food/snacks/chocoorange)
shuttle_spawns.Add(/obj/item/paper/fluff/chocoslime_research)
if(HIJACK_SYNDIE)
var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/emergency/specialops]
pack.generate(pick_n_take(empty_shuttle_turfs))
@@ -270,6 +261,21 @@
var/turf/T = pick_n_take(empty_shuttle_turfs)
new /obj/structure/spider/stickyweb(T)
new /obj/effect/decal/cleanable/ash(T)
//GS13 Start: Snack Attack Shuttle
if(SNACK_ATTACK) //GS13
shuttle_spawns.Add(/mob/living/simple_animal/hostile/feed/chocolate_slime)
shuttle_spawns.Add(/mob/living/simple_animal/hostile/feed/chocolate_slime)
shuttle_spawns.Add(/mob/living/simple_animal/hostile/feed/chocolate_slime/creambeast)
if(prob(50))
shuttle_spawns.Add(/mob/living/simple_animal/hostile/feed/chocolate_slime/creambeast)
shuttle_spawns.Add(/obj/item/reagent_containers/food/snacks/donut/choco)
shuttle_spawns.Add(/obj/item/reagent_containers/food/snacks/donut/choco)
shuttle_spawns.Add(/obj/item/reagent_containers/food/snacks/donut/choco)
shuttle_spawns.Add(/obj/item/reagent_containers/food/snacks/chocoorange)
shuttle_spawns.Add(/obj/item/reagent_containers/food/snacks/chocoorange)
shuttle_spawns.Add(/obj/item/paper/fluff/chocoslime_research)
//GS13 End
var/false_positive = 0
while(shuttle_spawns.len && empty_shuttle_turfs.len)
@@ -315,3 +321,4 @@
#undef ITS_HIP_TO
#undef MY_GOD_JC
#undef DELTA_CRATES
#undef SNACK_ATTACK //GS13 Add: Snack attack
+1 -1
View File
@@ -2,7 +2,7 @@
name = "Spawn Space Dragon"
typepath = /datum/round_event/ghost_role/space_dragon
weight = 8
max_occurrences = 1
max_occurrences = 0 //GS13 - no antags, thanks
min_players = 25
dynamic_should_hijack = TRUE
category = EVENT_CATEGORY_ENTITIES
+1 -1
View File
@@ -1,7 +1,7 @@
/datum/round_event_control/space_ninja
name = "Spawn Space Ninja"
typepath = /datum/round_event/ghost_role/space_ninja
max_occurrences = 1
max_occurrences = 0 //GS13 - no antags, thanks
weight = 10
earliest_start = 20 MINUTES
min_players = 25
+1 -1
View File
@@ -3,7 +3,7 @@
typepath = /datum/round_event/spacevine
weight = 15
max_occurrences = 3
min_players = 18
min_players = 15 //GS13 - should be enough players
category = EVENT_CATEGORY_ENTITIES
description = "Kudzu begins to overtake the station. Might spawn man-traps."
+1 -1
View File
@@ -3,7 +3,7 @@
name = "Stray Cargo Pod"
typepath = /datum/round_event/stray_cargo
weight = 5
max_occurrences = 6
max_occurrences = 6 //GS13 - increase the amount of possible strays
earliest_start = 10 MINUTES
category = EVENT_CATEGORY_BUREAUCRATIC
description = "A pod containing a random supply crate lands on the station."
+1 -1
View File
@@ -2,7 +2,7 @@
name = "Supernova"
typepath = /datum/round_event/supernova
weight = 5
max_occurrences = 0
max_occurrences = 0 //GS13 - fuck no (this is just more intense radstorm)
min_players = 2
category = EVENT_CATEGORY_SPACE
description = "Several modified radstorms hit the station."
+1 -1
View File
@@ -2,7 +2,7 @@
name = "Travelling Trader"
typepath = /datum/round_event/travelling_trader
weight = 8
max_occurrences = 6 //GS13 because why not
max_occurrences = 6 //GS13 - more occurences, because why not
earliest_start = 10 MINUTES
category = EVENT_CATEGORY_FRIENDLY
description = "A mysterious figure requests something to the crew and rewards them with something for getting it done."
+1 -1
View File
@@ -2,7 +2,7 @@
name = "Untied Shoes"
typepath = /datum/round_event/untied_shoes
weight = 50
max_occurrences = 10
max_occurrences = 0 //GS13 - tedious, doesn't always make sense
alert_observers = FALSE
category = EVENT_CATEGORY_HEALTH
description = "Unties people's shoes, with a chance to knot them as well."
+9 -4
View File
@@ -2,8 +2,8 @@
name = "Clogged Vents: Normal"
typepath = /datum/round_event/vent_clog
weight = 10
max_occurrences = 3
min_players = 10
max_occurrences = 2 //GS13 - pain in the ass, occurences nerfed until a less disruptive variant is made
min_players = 16 //GS13 - pain in the ass, occurences nerfed until a less disruptive variant is made
category = EVENT_CATEGORY_HEALTH
description = "All the scrubbers onstation spit random chemicals in smoke form."
@@ -15,19 +15,23 @@
var/list/vents = list()
var/randomProbability = 0
var/reagentsAmount = 100
var/list/saferChems = list( //GS13 - removed some of those chems, just a couple particularly annoying ones
var/list/saferChems = list(
/datum/reagent/water,
/datum/reagent/carbon,
/datum/reagent/consumable/flour,
/datum/reagent/space_cleaner,
/datum/reagent/consumable/nutriment,
/datum/reagent/consumable/condensedcapsaicin,
/datum/reagent/drug/mushroomhallucinogen,
/datum/reagent/lube,
/datum/reagent/glitter/pink,
/datum/reagent/glitter/pink_subtle, //GS13 Add: Add our subtle variants of glitter.
/datum/reagent/cryptobiolin,
//datum/reagent/toxin/plantbgone, //GS13 Remove: Annoying Reagent
/datum/reagent/blood,
/datum/reagent/medicine/charcoal,
/datum/reagent/drug/space_drugs,
/datum/reagent/medicine/morphine,
/datum/reagent/water/holywater,
/datum/reagent/consumable/ethanol,
/datum/reagent/consumable/hot_coco,
@@ -47,6 +51,7 @@
/datum/reagent/hair_dye,
/datum/reagent/consumable/sugar,
/datum/reagent/glitter/white,
/datum/reagent/glitter/white_subtle, //GS13 ADD: Add our subtle variants of glitter. ...Why is this separate from the other glitter, anyhow? Blue glitter's also missing, so I wont add it.
/datum/reagent/growthserum,
/datum/reagent/consumable/cornoil,
/datum/reagent/uranium,
@@ -112,7 +117,7 @@
/datum/round_event/vent_clog/threatening
randomProbability = 10
reagentsAmount = 100
reagentsAmount = 200
/datum/round_event_control/vent_clog/catastrophic
name = "Clogged Vents: Catastrophic"
@@ -89,6 +89,7 @@ All foods are distributed among various categories. Use common sense.
if(!reagents.total_volume)
var/mob/living/location = loc
var/obj/item/trash_item = generate_trash(location)
handle_tf()//GS13 EDIT
qdel(src)
if(istype(location))
location.put_in_hands(trash_item)
+3 -3
View File
@@ -18,7 +18,7 @@
var/card_face = "cas_white"
var/blanks = 25
var/decksize = 150
var/card_text_file = "strings/cas_white.txt"
var/card_text_file = "GainStation13/strings/cas_white.txt" //GS13 Edit: Nanotrasen to GATO
var/list/allcards = list()
/obj/item/toy/cards/deck/cas/black
@@ -29,10 +29,10 @@
card_face = "cas_black"
blanks = 0
decksize = 50
card_text_file = "strings/cas_black.txt"
card_text_file = "GainStation13/strings/cas_black.txt" //GS13 Edit: Nanotrasen to GATO
/obj/item/toy/cards/deck/cas/populate_deck()
var/static/list/cards_against_space = list("cas_white" = world.file2list("strings/cas_white.txt"),"cas_black" = world.file2list("strings/cas_black.txt"))
var/static/list/cards_against_space = list("cas_white" = world.file2list("GainStation13/strings/cas_white.txt"),"cas_black" = world.file2list("GainStation13/strings/cas_black.txt")) //GS13 Edit: Nanotrasen to GATO
allcards = cards_against_space[card_face]
var/list/possiblecards = allcards.Copy()
if(possiblecards.len < decksize) // sanity check
+1 -1
View File
@@ -34,7 +34,7 @@
/mob/living/simple_animal/jacq
name = "Jacqueline the Pumpqueen"
real_name = "Jacqueline"
icon = 'GainStation13/icons/obj/halloween_items.dmi'
icon = 'GainStation13/icons/obj/halloween_items.dmi' //GS13 Edit: Fat Jacqueline
icon_state = "jacqueline"
maxHealth = 25
health = 25
+99
View File
@@ -0,0 +1,99 @@
//This file also determines the order for the choose your occupation chances screen.
//Engineering
/datum/job/chief_engineer
alt_titles = list("Head Engineer", "Construction Coordinator", "Project Manager", "Power Plant Director")
/datum/job/engineer
alt_titles = list("Maintenance Technician", "Engine Technician", "Electrician", "Structural Engineer", "Mechanic", "Station Architect", "Nuclear Plant Operator")
/datum/job/atmos
alt_titles = list("Firefighter", "Life Support Specialist", "Disposals Technician")
//Service
/datum/job/assistant
alt_titles = list("Civilian", "Morale Officer", "Off-Duty", "Visitor", "Businessman", "Trader", "Entertainer", "Tourist")
/datum/job/cook
alt_titles = list("Cook", "Culinary Artist", "Butcher", "Chef de partie", "Poissonier", "Baker", "Taste Tester")
/datum/job/hydro
alt_titles = list("Gardener", "Herbalist", "Botanical Researcher", "Hydroponicist", "Farmer", "Beekeeper", "Vintner")
/datum/job/curator
alt_titles = list("Journalist", "Librarian", "Keeper")
/datum/job/chaplain
alt_titles = list("Priest", "Priestess", "Prior", "Monk", "Nun", "Counselor")
/datum/job/janitor
alt_titles = list("Custodian", "Sanitation Technician", "Maid", "Trash Can", "Disposal Unit")
/datum/job/lawyer
alt_titles = list("Human Resources Agent", "Internal Affairs Agent", "Attorney")
/datum/job/clown
alt_titles = list("Jester", "Comedian")
/datum/job/mime
alt_titles = list("Performer", "Pantomime", "Mimic")
/datum/job/bartender
alt_titles = list("Mixologist", "Sommelier", "Bar Owner", "Barmaid", "Expediter")
//Science
/datum/job/rd
alt_titles = list("Research Manager", "Science Administrator")
/datum/job/scientist
alt_titles = list("Circuitry Designer", "Xenobiologist", "Xenobotanist", "Xenoarcheologist", "Chemical Researcher", "Researcher", "Pyrotechnician")
/datum/job/roboticist
alt_titles = list("Biomechanical Engineer", "Mechatronic Engineer", "Mechanic")
//Medical
/datum/job/cmo
alt_titles = list("Medical Director", "Medical Administrator")
/datum/job/doctor
alt_titles = list("Nurse", "Surgeon", "Physician", "Paramedic", "Trophologist", "Nutritionist", "Therapist", "Psychiatrist")
/datum/job/chemist
alt_titles = list("Pharmacist", "Pharmacologist")
/datum/job/virologist
alt_titles = list("Microbiologist", "Biochemist", "Pathologist")
/datum/job/geneticist
alt_titles = list("Gene Therapist", "Genetics Researcher")
//Security
/datum/job/hos
alt_titles = list("Chief of Security", "Security Commander", "Sheriff")
/datum/job/warden
alt_titles = list("Prison Chief", "Armory Manager", "Prison Administrator", "Brig Superintendent")
/datum/job/officer
alt_titles = list("Security Agent", "Probation Officer", "Security Peacekeeper", "Security Guard", "Guardsman", "Security Cadet")
/datum/job/detective
alt_titles = list("Forensics Technician", "Private Investigator", "Gumshoe")
//Supply
/datum/job/qm
alt_titles = list("Supply Chief")
/datum/job/cargo_tech
alt_titles = list("Mail Man", "Mail Woman", "Mailroom Technician", "Deliveries Officer", "Logistics Technician")
/datum/job/mining
alt_titles = list("Exotic Ore Miner", "Fauna Hunter", "Explorer", "Digger") //Just because you're a hunter does not excuse you from rock collecting!!!!!!!!!!!!
//Command
/datum/job/captain
alt_titles = list("Station Director", "Station Commander", "Station Overseer", "Stationmaster", "Commissar")
/datum/job/hop
alt_titles = list("Personnel Manager", "Staff Administrator", "Records Administrator")
+13 -2
View File
@@ -63,6 +63,9 @@
var/list/mind_traits // Traits added to the mind of the mob assigned this job
var/list/blacklisted_quirks //list of quirk typepaths blacklisted.
/// What alternate titles does this job currently have?
var/list/alt_titles = list()
/// Should this job be allowed to be picked for the bureaucratic error event?
var/allow_bureaucratic_error = TRUE
@@ -211,7 +214,7 @@
/datum/job/proc/announce_head(var/mob/living/carbon/human/H, var/channels) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels.
if(H && GLOB.announcement_systems.len)
//timer because these should come after the captain announcement
SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_addtimer), CALLBACK(pick(GLOB.announcement_systems), TYPE_PROC_REF(/obj/machinery/announcement_system, announce), "NEWHEAD", H.real_name, H.job, channels), 1))
SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_addtimer), CALLBACK(pick(GLOB.announcement_systems), TYPE_PROC_REF(/obj/machinery/announcement_system, announce), "NEWHEAD", H.real_name, H.job, H.client?.prefs.alt_titles_preferences[H.job], channels), 1))
//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1
/datum/job/proc/player_old_enough(client/C)
@@ -314,7 +317,11 @@
shuffle_inplace(C.access) // Shuffle access list to make NTNet passkeys less predictable
C.registered_name = H.real_name
C.assignment = J.title
C.update_label()
if(preference_source && preference_source.prefs && preference_source.prefs.alt_titles_preferences[J.title])
C.update_label(C.registered_name, preference_source.prefs.alt_titles_preferences[J.title])
else
C.update_label()
for(var/A in SSeconomy.bank_accounts)
var/datum/bank_account/B = A
if(B.account_id == H.account_id)
@@ -326,6 +333,10 @@
var/obj/item/pda/PDA = H.get_item_by_slot(pda_slot)
if(istype(PDA))
PDA.owner = H.real_name
if(preference_source && preference_source.prefs && preference_source.prefs.alt_titles_preferences[J.title])
PDA.ownjob = preference_source.prefs.alt_titles_preferences[J.title]
else
PDA.ownjob = J.title
PDA.ownjob = J.title
PDA.update_label()
if(preference_source && !PDA.equipped) //PDA's screen color, font style and look depend on client preferences.
+1 -1
View File
@@ -4,7 +4,7 @@
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
total_positions = 1
total_positions = 2
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#bbe291"
+4 -1
View File
@@ -50,7 +50,10 @@
/datum/job/captain/announce(mob/living/carbon/human/H)
..()
SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(minor_announce), "Captain [H.nameless ? "" : "[H.real_name] "]on deck!"))
var/displayed_rank = H.client?.prefs?.alt_titles_preferences[title]
if(!displayed_rank) //Default to Captain
displayed_rank = "Captain"
SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(minor_announce), "[displayed_rank] [H.nameless ? "" : "[H.real_name] "]on deck!"))
/datum/outfit/job/captain
name = "Captain"
+2 -2
View File
@@ -4,8 +4,8 @@
department_head = list("The Security Team")
department_flag = CIVILIAN
faction = "Station"
total_positions = 0
spawn_positions = 0
total_positions = 1 //GS13 - enabling prisoner (for now)
spawn_positions = 1 //GS13 - enabling prisoner (for now)
supervisors = "the security team"
random_spawns_possible = FALSE
@@ -168,7 +168,7 @@
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
hoodtype = /obj/item/clothing/head/hooded/explorer/heva
armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 100, RAD = 80, FIRE = 100, ACID = 80)
resistance_flags = FIRE_PROOF | GOLIATH_WEAKNESS
resistance_flags = FIRE_PROOF
/obj/item/clothing/head/hooded/explorer/heva
name = "HEVA hood"
@@ -178,7 +178,7 @@
item_state = "heva"
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 100, RAD = 20, FIRE = 60, ACID = 20)
resistance_flags = FIRE_PROOF | GOLIATH_WEAKNESS
resistance_flags = FIRE_PROOF
/obj/item/clothing/head/hooded/explorer/heva/equipped(mob/living/carbon/human/user, slot)
..()
@@ -606,6 +606,9 @@
dept_dat += "<a class='job[command_bold]' style='display:block;width:170px' href='byond://?src=[REF(src)];SelectedJob=[job_datum.title]'><span class='priority'>[job_datum.title] ([num_positions_current]/[num_positions_total])</span></a>"
else
dept_dat += "<a class='job[command_bold]' style='display:block;width:170px' href='byond://?src=[REF(src)];SelectedJob=[job_datum.title]'>[job_datum.title] ([num_positions_current]/[num_positions_total])</a>"
if(client && client.prefs && client?.prefs?.alt_titles_preferences[job_datum.title])
dept_dat += "<br><span style='color:#BBBBBB; font-style: italic;'>(as [client?.prefs?.alt_titles_preferences[job_datum.title]])</span>"
if(!dept_dat.len)
dept_dat += "<span class='nopositions'>No positions open.</span>"
dat += jointext(dept_dat, "")
@@ -66,7 +66,7 @@
if(mob_size == MOB_SIZE_LARGE)
cuff_icon += "_[caste]"
dmi_file = 'hyperstation/icons/mobs/alienqueen.dmi' //GS13 - moving over Hyper sprites
dmi_file = 'GainStation13/icons/mob/alienqueen.dmi' //GS13 Edit: Adding our handcuff icons to the aliens.
var/mutable_appearance/cuffs = mutable_appearance(dmi_file, cuff_icon, -HANDCUFF_LAYER)
cuffs.color = handcuffed.color
@@ -1,6 +1,6 @@
/mob/living/carbon/alien/humanoid/royal
//Common stuffs for Praetorian and Queen
icon = 'hyperstation/icons/mobs/alienqueen.dmi'
icon = 'icons/mob/alienqueen.dmi'
status_flags = 0
unique_name = 0
pixel_x = -16
@@ -17,7 +17,7 @@
meleeSlashHumanPower = 30
meleeSlashSAPower = 60
var/alt_inhands_file = 'hyperstation/icons/mobs/alienqueen.dmi' //GS13 - moving over Hyper sprites
var/alt_inhands_file = 'icons/mob/alienqueen.dmi'
/mob/living/carbon/alien/humanoid/royal/can_inject(mob/user, error_msg, target_zone, penetrate_thick = FALSE, bypass_immunity = FALSE)
return FALSE
+4
View File
@@ -820,6 +820,10 @@
//Sure, give clickdelay for anti spam. shouldn't be combat voring anyways.
return TRUE
// GS13 Escape Transformation
if(attempt_to_escape_tf())
return TRUE
//Breaking out of a container (Locker, sleeper, cryo...)
if(isobj(loc))
var/obj/C = loc
@@ -281,6 +281,7 @@
/obj/item/t_scanner/adv_mining_scanner,
/obj/item/restraints/handcuffs/cable/zipties,
/obj/item/soap/nanotrasen,
/obj/item/gripper/food, //GS13 EDIT
/obj/item/borg/cyborghug)
emag_modules = list(/obj/item/melee/transforming/energy/sword/cyborg)
ratvar_modules = list(
@@ -317,6 +318,7 @@
/obj/item/organ_storage,
/obj/item/borg/lollipop,
/obj/item/sensor_device,
/obj/item/gripper/food, //GS13 EDIT
/obj/item/shockpaddles/cyborg)
emag_modules = list(/obj/item/reagent_containers/borghypo/hacked)
ratvar_modules = list(
@@ -336,8 +338,11 @@
"Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekmed"),
"Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinamed"),
"Eyebot" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "eyebotmed"),
"Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymed")
"Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymed"),
"Haydee" = image(icon = 'GainStation13/icons/mob/robots.dmi', icon_state = "haydeemedical"), //GS13 EDIT
"Fat" = image(icon = 'GainStation13/icons/mob/robots.dmi', icon_state = "fat_medical"), //GS13 EDIT
)
/* GS13 EDIT
var/list/L = list("Medihound" = "medihound", "Medihound Dark" = "medihounddark", "Vale" = "valemed")
for(var/a in L)
var/image/wide = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = L[a])
@@ -347,6 +352,7 @@
var/image/bad_snowflake = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = "alina-med")
bad_snowflake.pixel_x = -16
med_icons["Alina"] = bad_snowflake
*/
med_icons = sort_list(med_icons)
var/med_borg_icon = show_radial_menu(R, R , med_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(med_borg_icon)
@@ -368,6 +374,7 @@
if("Heavy")
cyborg_base_icon = "heavymed"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
/* GS13 EDIT, dogborg-b-gone
if("Medihound")
cyborg_base_icon = "medihound"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
@@ -397,6 +404,17 @@
moduleselect_icon = "medihound"
moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
dogborg = TRUE
*/
//GS13 EDIT START
if("Haydee")
cyborg_base_icon = "haydeemedical"
cyborg_icon_override = 'GainStation13/icons/mob/robots.dmi'
hat_offset = 3
if("Fat")
cyborg_base_icon = "fat_medical"
cyborg_icon_override = 'GainStation13/icons/mob/robots.dmi'
hat_offset = 3
//GS13 EDIT END
else
return FALSE
return ..()
@@ -421,6 +439,7 @@
/obj/item/storage/part_replacer/cyborg,
/obj/item/holosign_creator/combifan,
/obj/item/gripper,
/obj/item/gripper/food, //GS13 EDIT
/obj/item/lightreplacer/cyborg,
/obj/item/geiger_counter/cyborg,
/obj/item/assembly/signaler/cyborg,
@@ -454,8 +473,10 @@
"Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "caneng"),
"Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinaeng"),
"Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "spidereng"),
"Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyeng")
"Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyeng"),
"Fat" = image(icon = 'GainStation13/icons/mob/robots.dmi', icon_state = "fat_engineer"), //GS13 EDIT
)
/* GS13 EDIT
var/list/L = list("Pup Dozer" = "pupdozer", "Vale" = "valeeng")
for(var/a in L)
var/image/wide = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = L[a])
@@ -465,6 +486,7 @@
var/image/bad_snowflake = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = "alina-eng")
bad_snowflake.pixel_x = -16
engi_icons["Alina"] = bad_snowflake
*/
engi_icons = sort_list(engi_icons)
var/engi_borg_icon = show_radial_menu(R, R , engi_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(engi_borg_icon)
@@ -496,6 +518,7 @@
if("Heavy")
cyborg_base_icon = "heavyeng"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
/* GS13 EDIT
if("Pup Dozer")
cyborg_base_icon = "pupdozer"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
@@ -512,6 +535,13 @@
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
sleeper_overlay = "valeengsleeper"
dogborg = TRUE
*/
//GS13 EDIT START
if("Fat")
cyborg_base_icon = "fat_engineer"
cyborg_icon_override = 'GainStation13/icons/mob/robots.dmi'
hat_offset = 3
//GS13 EDIT END
else
return FALSE
return ..()
@@ -527,6 +557,9 @@
/obj/item/melee/baton/loaded,
/obj/item/gun/energy/disabler/cyborg,
/obj/item/clothing/mask/gas/sechailer/cyborg,
/obj/item/gripper/food, //GS13 EDIT
/obj/item/reagent_containers/borghypo/feeding_tube, //GS13 EDIT
/obj/item/gun/energy/fatoray/weak/cyborg, //GS13 EDIT
/obj/item/pinpointer/crew)
emag_modules = list(/obj/item/gun/energy/laser/cyborg)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security,
@@ -553,6 +586,7 @@
"Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "spidersec"),
"Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavysec")
)
/* GS13 EDIT
var/list/L = list("K9" = "k9", "Vale" = "valesec", "K9 Dark" = "k9dark")
for(var/a in L)
var/image/wide = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = L[a])
@@ -562,6 +596,7 @@
var/image/bad_snowflake = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = "alina-sec")
bad_snowflake.pixel_x = -16
sec_icons["Alina"] = bad_snowflake
*/
sec_icons = sort_list(sec_icons)
var/sec_borg_icon = show_radial_menu(R, R , sec_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(sec_borg_icon)
@@ -586,6 +621,7 @@
if("Heavy")
cyborg_base_icon = "heavysec"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
/* GS13 EDIT
if("K9")
cyborg_base_icon = "k9"
sleeper_overlay = "ksleeper"
@@ -607,6 +643,7 @@
sleeper_overlay = "valesecsleeper"
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
dogborg = TRUE
*/
else
return FALSE
return ..()
@@ -632,6 +669,9 @@
/obj/item/holosign_creator/cyborg,
/obj/item/borg/cyborghug/peacekeeper,
/obj/item/megaphone,
/obj/item/gripper/food, //GS13 EDIT
/obj/item/reagent_containers/borghypo/feeding_tube, //GS13 EDIT
/obj/item/gun/energy/fatoray/weak/cyborg, //GS13 EDIT
/obj/item/borg/projectile_dampen)
emag_modules = list(/obj/item/reagent_containers/borghypo/peace/hacked)
ratvar_modules = list(
@@ -651,7 +691,8 @@
var/static/list/peace_icons = sort_list(list(
"Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "peace"),
"Borgi" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "borgi"),
"Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "whitespider")
"Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "whitespider"),
"Fat" = image(icon = 'GainStation13/icons/mob/robots.dmi', icon_state = "fat_peacekeeper"), //GS13 EDIT
))
var/peace_borg_icon = show_radial_menu(R, R , peace_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(peace_borg_icon)
@@ -660,6 +701,12 @@
if("Spider")
cyborg_base_icon = "whitespider"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
//GS13 EDIT START
if("Fat")
cyborg_base_icon = "fat_peacekeeper"
cyborg_icon_override = 'GainStation13/icons/mob/robots.dmi'
hat_offset = 3
//GS13 EDIT END
if("Borgi")
cyborg_base_icon = "borgi"
moduleselect_icon = "borgi"
@@ -724,6 +771,8 @@
/obj/item/razor, //killbait material
/obj/item/lipstick/purple,
/obj/item/reagent_containers/spray/waterflower/cyborg,
/obj/item/gripper/food, //GS13 EDIT
/obj/item/reagent_containers/borghypo/feeding_tube, //GS13 EDIT
/obj/item/borg/cyborghug/peacekeeper,
/obj/item/borg/lollipop/clown,
/obj/item/picket_sign/cyborg,
@@ -764,6 +813,9 @@
/obj/item/soap/nanotrasen,
/obj/item/storage/bag/trash/cyborg,
/obj/item/mop/cyborg,
/obj/item/gripper/food, //GS13 EDIT
/obj/item/reagent_containers/borghypo/feeding_tube, //GS13 EDIT
/obj/item/cookiesynth, //GS13 EDIT
/obj/item/lightreplacer/cyborg,
/obj/item/holosign_creator,
/obj/item/reagent_containers/spray/cyborg_drying)
@@ -803,12 +855,15 @@
"(Service) Tophat" = image(icon = 'icons/mob/robots.dmi', icon_state = "tophat"),
"(Service) Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekserv"),
"(Service) Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyserv"),
"(Service) Fat" = image(icon = 'GainStation13/icons/mob/robots.dmi', icon_state = "fat_service"),
"(Service) Busty" = image(icon = 'GainStation13/icons/mob/robots.dmi', icon_state = "busty_service"),
"(Janitor) Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "janitor"),
"(Janitor) Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinajan"),
"(Janitor) Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekjan"),
"(Janitor) Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "canjan"),
"(Janitor) Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyjan")
)
/* GS13 Edit
var/list/L = list("(Service) DarkK9" = "k50", "(Service) Vale" = "valeserv", "(Service) ValeDark" = "valeservdark",
"(Janitor) Scrubpuppy" = "scrubpup")
for(var/a in L)
@@ -819,6 +874,7 @@
var/image/bad_snowflake = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = "alina-sec")
bad_snowflake.pixel_x = -16
service_icons["Alina"] = bad_snowflake
*/
service_icons = sort_list(service_icons)
var/service_robot_icon = show_radial_menu(R, R , service_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(service_robot_icon)
@@ -860,6 +916,16 @@
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
sleeper_overlay = "valeservsleeper"
dogborg = TRUE
//GS13 EDIT START
if("(Service) Fat")
cyborg_base_icon = "fat_service"
cyborg_icon_override = 'GainStation13/icons/mob/robots.dmi'
hat_offset = 3
if("(Service) Busty")
cyborg_base_icon = "busty_service"
cyborg_icon_override = 'GainStation13/icons/mob/robots.dmi'
hat_offset = 1
//GS13 EDIT END
if("(Janitor) Default")
cyborg_base_icon = "janitor"
if("(Janitor) Marina")
@@ -905,6 +971,7 @@
/obj/item/stack/marker_beacon/cyborg,
/obj/item/dest_tagger,
/obj/item/stack/packageWrap/cyborg,
/obj/item/gripper/food, //GS13 EDIT
/obj/item/card/id/miningborg)
emag_modules = list(/obj/item/borg/stun)
ratvar_modules = list(
@@ -926,13 +993,16 @@
"Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekmin"),
"Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinamin"),
"Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "canmin"),
"Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymin")
"Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymin"),
"Fat" = image(icon = 'GainStation13/icons/mob/robots.dmi', icon_state = "fat_mining"), //GS13 EDIT
)
/* GS13 EDIT
var/list/L = list("Blade" = "blade", "Vale" = "valemine")
for(var/a in L)
var/image/wide = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = L[a])
wide.pixel_x = -16
mining_icons[a] = wide
*/
mining_icons = sort_list(mining_icons)
var/mining_borg_icon = show_radial_menu(R, R , mining_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(mining_borg_icon)
@@ -970,6 +1040,12 @@
cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
sleeper_overlay = "valeminesleeper"
dogborg = TRUE
// GS13 EDIT START
if("Fat")
cyborg_base_icon = "fat_mining"
cyborg_icon_override = 'GainStation13/icons/mob/robots.dmi'
hat_offset = 3
//GS13 EDIT END
else
return FALSE
return ..()
@@ -986,6 +1062,7 @@
/obj/item/gun/ballistic/revolver/grenadelauncher/cyborg,
/obj/item/card/emag,
/obj/item/crowbar/cyborg,
/obj/item/gripper/food, //GS13 EDIT
/obj/item/pinpointer/syndicate_cyborg)
ratvar_modules = list(
@@ -4,7 +4,7 @@
weight = 15
max_occurrences = 2
earliest_start = 20 MINUTES
min_players = 5
min_players = 8 //GS13 - really annoying on low-lowpop considering they jolt back and forth
category = EVENT_CATEGORY_ENTITIES
description = "Annoying little creatures go around the station causing havoc and hacking everything."
@@ -145,7 +145,7 @@
/mob/living/simple_animal/hostile/alien/queen/large
name = "alien empress"
icon = 'hyperstation/icons/mobs/alienqueen.dmi' //GS13 - moving over Hyper sprites
icon = 'icons/mob/alienqueen.dmi'
icon_state = "alienq"
icon_living = "alienq"
icon_dead = "alienq_dead"
@@ -27,7 +27,7 @@
spacewalk = TRUE
var/armored = FALSE
obj_damage = 20
obj_damage = 60
melee_damage_lower = 15 // i know it's like half what it used to be, but bears cause bleeding like crazy now so it works out
melee_damage_upper = 15
wound_bonus = -5
@@ -15,7 +15,7 @@
desc = "Buzzy buzzy bee, stingy sti- Ouch!"
icon_state = ""
icon_living = ""
icon = 'icons/mob/bees.dmi'
icon = 'GainStation13/icons/mob/bees.dmi' //GS13 sprite change - brings back smaller bees rather than big goofy ones
gender = FEMALE
speak_emote = list("buzzes")
emote_hear = list("buzzes")
@@ -100,7 +100,7 @@
add_overlay("[icon_base]_base")
var/static/mutable_appearance/greyscale_overlay
greyscale_overlay = greyscale_overlay || mutable_appearance('icons/mob/bees.dmi')
greyscale_overlay = greyscale_overlay || mutable_appearance('GainStation13/icons/mob/bees.dmi') //GS13 sprite change - brings back smaller bees rather than big goofy ones
greyscale_overlay.icon_state = "[icon_base]_grey"
greyscale_overlay.color = col
add_overlay(greyscale_overlay)
@@ -255,7 +255,7 @@
desc = "She's the queen of bees, BZZ BZZ!"
icon_state = "queen_item"
item_state = ""
icon = 'icons/mob/bees.dmi'
icon = 'GainStation13/icons/mob/bees.dmi' //GS13 sprite change - brings back smaller bees rather than big goofy ones
var/mob/living/simple_animal/hostile/poison/bees/queen/queen
+5 -5
View File
@@ -14,7 +14,7 @@
/obj/item/wallframe/light_fixture
name = "light fixture frame"
desc = "Used for building lights."
icon = 'icons/obj/lighting.dmi'
icon = 'GainStation13/icons/obj/lighting.dmi' //GS13 - sprite change
icon_state = "tube-construct-item"
result_path = /obj/structure/light_construct
inverse = TRUE
@@ -38,7 +38,7 @@
/obj/structure/light_construct
name = "light fixture frame"
desc = "A light fixture under construction."
icon = 'icons/obj/lighting.dmi'
icon = 'GainStation13/icons/obj/lighting.dmi' //GS13 - sprite change
icon_state = "tube-construct-stage1"
anchored = TRUE
layer = WALL_OBJ_LAYER
@@ -178,7 +178,7 @@
// the standard tube light fixture
/obj/machinery/light
name = "light fixture"
icon = 'icons/obj/lighting.dmi'
icon = 'GainStation13/icons/obj/lighting.dmi' //GS13 - sprite change
var/overlayicon = 'icons/obj/lighting_overlay.dmi'
var/base_state = "tube" // base description and icon_state
icon_state = "tube"
@@ -733,7 +733,7 @@
// will fit into empty /obj/machinery/light of the corresponding type
/obj/item/light
icon = 'icons/obj/lighting.dmi'
icon = 'GainStation13/icons/obj/lighting.dmi' //GS13 - sprite change
force = 2
throwforce = 5
w_class = WEIGHT_CLASS_TINY
@@ -839,7 +839,7 @@
/obj/machinery/light/floor
name = "floor light"
icon = 'icons/obj/lighting.dmi'
icon = 'GainStation13/icons/obj/lighting.dmi' //GS13 - sprite change
base_state = "floor" // base description and icon_state
icon_state = "floor"
brightness = 5
+1 -1
View File
@@ -264,7 +264,7 @@
D.trunk = src
var/obj/structure/disposaloutlet/O = locate() in T
if(O)
if(O && O.anchored) //GS Edit: Added anchored check to fix an edgecase where the trunk could get erroneously linked to an unanchored industrial feeding tube if the trunk was welded solid while the loose tube was above the trunk. Whew...
linked = O
@@ -20,7 +20,7 @@
starting_node = TRUE
display_name = "Cyborg Construction"
description = "Sapient robots with preloaded tool modules and programmable laws."
design_ids = list("robocontrol", "sflash", "borg_suit", "borg_head", "borg_chest", "borg_r_arm", "borg_l_arm", "borg_r_leg", "borg_l_leg", "borgupload",
design_ids = list("robocontrol", "sflash", "borg_suit", "borg_head", "borg_chest", "borg_r_arm", "borg_l_arm", "borg_r_leg", "borg_l_leg", "borgupload", "borg_upgrade_foodgrip", //GS13 EDIT
"cyborgrecharger", "borg_upgrade_restart", "borg_upgrade_rename")
/datum/techweb_node/adv_robotics
+1
View File
@@ -22,6 +22,7 @@
/obj/item/clothing/under/misc/gear_harness = 10,
/obj/item/dildo/custom = 5,
/obj/item/electropack/shockcollar = 3,
/obj/item/transformation_item = 3, // GS13 EDIT
/obj/item/assembly/signaler = 3,
/obj/item/clothing/under/shorts/polychromic/pantsu = 3,
/obj/item/clothing/under/misc/poly_bottomless = 3,
+6 -1
View File
@@ -221,7 +221,12 @@
//
/mob/living/proc/escapeOOC()
set name = "OOC Escape"
set category = "Vore"
set category = "OOC" // GS13 Change
//GS13 EDIT START
handle_transformation_ooc_escape()
//GS13 EDIT END
//You're in a belly!
if(isbelly(loc))