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

[SEMI-MODULAR] The CyberSun Shall Rise! #967

Closed
11,134 changes: 11,134 additions & 0 deletions _maps/RandomRuins/SpaceRuins/forgottenship_splurt.dmm

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions code/__SPLURTCODE/DEFINES/role_prefrences.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

//Values for antag preferences, event roles, etc. unified here



//These are synced with the Database, if you change the values of the defines
//then you MUST update the database!
#define ROLE_SYNDICATE_CYBERSUN "Cybersun Space Syndicate" //Ghost role syndi from Forgottenship ruin
#define ROLE_SYNDICATE_CYBERSUN_CAPTAIN "Cybersun Space Syndicate Captain" //Forgottenship captain syndie
5 changes: 5 additions & 0 deletions code/__SPLURTCODE/DEFINES/syndiecomms.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#define RADIO_CHANNEL_CYBERSUN "Cybersun"
#define RADIO_KEY_CYBERSUN "z"
#define RADIO_TOKEN_CYBERSUN ":z"

#define FREQ_CYBERSUN 1211
2 changes: 2 additions & 0 deletions code/game/communications.dm
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ GLOBAL_LIST_INIT(radiochannels, list(
RADIO_CHANNEL_ENGINEERING = FREQ_ENGINEERING,
RADIO_CHANNEL_SECURITY = FREQ_SECURITY,
RADIO_CHANNEL_CENTCOM = FREQ_CENTCOM,
RADIO_CHANNEL_CYBERSUN = FREQ_CYBERSUN, //SPLURT EDIT ADDITION - MAPPING
RADIO_CHANNEL_SYNDICATE = FREQ_SYNDICATE,
RADIO_CHANNEL_SUPPLY = FREQ_SUPPLY,
RADIO_CHANNEL_SERVICE = FREQ_SERVICE,
Expand All @@ -115,6 +116,7 @@ GLOBAL_LIST_INIT(reverseradiochannels, list(
"[FREQ_ENGINEERING]" = RADIO_CHANNEL_ENGINEERING,
"[FREQ_SECURITY]" = RADIO_CHANNEL_SECURITY,
"[FREQ_CENTCOM]" = RADIO_CHANNEL_CENTCOM,
"[FREQ_CYBERSUN]" = RADIO_CHANNEL_CYBERSUN, //SPLURT EDIT ADDITION - MAPPING
"[FREQ_SYNDICATE]" = RADIO_CHANNEL_SYNDICATE,
"[FREQ_SUPPLY]" = RADIO_CHANNEL_SUPPLY,
"[FREQ_SERVICE]" = RADIO_CHANNEL_SERVICE,
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/devices/radio/headset.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
RADIO_CHANNEL_SUPPLY = RADIO_TOKEN_SUPPLY,
RADIO_CHANNEL_SERVICE = RADIO_TOKEN_SERVICE,
RADIO_CHANNEL_HOTEL = RADIO_TOKEN_HOTEL, //SPLURT EDIT ADDITION
RADIO_CHANNEL_CYBERSUN = RADIO_TOKEN_CYBERSUN, //SPLURT EDIT ADDITION
MODE_BINARY = MODE_TOKEN_BINARY,
RADIO_CHANNEL_AI_PRIVATE = RADIO_TOKEN_AI_PRIVATE
))
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/devices/radio/radio.dm
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@
var/datum/signal/subspace/vocal/signal = new(src, freq, speaker, language, message, spans)

// Independent radios, on the CentCom frequency, reach all independent radios
if (independent && (freq == FREQ_CENTCOM || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE || freq == FREQ_HOTEL)) //SPLURT EDIT ADDITION
if (independent && (freq == FREQ_CENTCOM || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE || freq == FREQ_HOTEL || freq == FREQ_CYBERSUN)) //SPLURT EDIT ADDITION
signal.data["compression"] = 0
signal.transmission_method = TRANSMISSION_SUPERSPACE
signal.levels = list(0) // reaches all Z-levels
Expand Down
1 change: 1 addition & 0 deletions code/game/say.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ GLOBAL_LIST_INIT(freqtospan, list(
"[FREQ_AI_PRIVATE]" = "aiprivradio",
"[FREQ_SYNDICATE]" = "syndradio",
"[FREQ_CENTCOM]" = "centcomradio",
"[FREQ_CYBERSUN]" = "syndradio", //SPLURT EDIT ADDITION - MAPPING
"[FREQ_CTF_RED]" = "redteamradio",
"[FREQ_CTF_BLUE]" = "blueteamradio"
))
Expand Down
1 change: 1 addition & 0 deletions code/modules/mob/living/say.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
RADIO_KEY_SYNDICATE = RADIO_CHANNEL_SYNDICATE,
RADIO_KEY_CENTCOM = RADIO_CHANNEL_CENTCOM,
RADIO_KEY_HOTEL = RADIO_CHANNEL_HOTEL, //SPLURT EDIT ADDITION
RADIO_KEY_CYBERSUN = RADIO_CHANNEL_CYBERSUN, //SPLURT EDIT ADDITION - MAPPING

// Admin
MODE_KEY_ADMIN = MODE_ADMIN,
Expand Down
17 changes: 9 additions & 8 deletions code/modules/mob/living/simple_animal/hostile/nanotrasen.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
icon_dead = null
icon_gib = "syndicate_gib"
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
speak_chance = 12
speak_chance = 0
turns_per_move = 5
speed = 0
stat_attack = UNCONSCIOUS
Expand All @@ -24,15 +24,20 @@
loot = list(/obj/effect/mob_spawn/human/corpse/nanotrasensoldier)
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
unsuitable_atmos_damage = 15
faction = list("nanotrasenprivate")
faction = list(ROLE_DEATHSQUAD)
check_friendly_fire = TRUE
status_flags = CANPUSH
speak = list("Stop resisting!", "I AM THE LAW!", "Face the wrath of the golden bolt!", "Stop breaking the law, asshole!")
del_on_death = TRUE
dodging = TRUE
search_objects = 1

footstep_type = FOOTSTEP_MOB_SHOE

/mob/living/simple_animal/hostile/nanotrasen/screaming
icon_state = "nanotrasen"
icon_living = "nanotrasen"

/mob/living/simple_animal/hostile/nanotrasen/Aggro()
/mob/living/simple_animal/hostile/nanotrasen/screaming/Aggro()
..()
summon_backup(15)
say("411 in progress, requesting backup!")
Expand All @@ -46,8 +51,6 @@
minimum_distance = 5
casingtype = /obj/item/ammo_casing/c45
projectilesound = 'sound/weapons/gunshot.ogg'
loot = list(/obj/item/gun/ballistic/automatic/pistol/m1911,
/obj/effect/mob_spawn/human/corpse/nanotrasensoldier)


/mob/living/simple_animal/hostile/nanotrasen/ranged/smg
Expand All @@ -56,5 +59,3 @@
rapid = 3
casingtype = /obj/item/ammo_casing/c46x30mm
projectilesound = 'sound/weapons/gunshot_smg.ogg'
loot = list(/obj/item/gun/ballistic/automatic/wt550,
/obj/effect/mob_spawn/human/corpse/nanotrasensoldier)
3 changes: 2 additions & 1 deletion config/spaceRuinBlacklist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,5 @@
#_maps/RandomRuins/SpaceRuins/spacehermit.dmm
#_maps/RandomRuins/SpaceRuins/advancedlab.dmm
#_maps/RandomRuins/SpaceRuins/spacediner.dmm
#_maps/RandomRuins/SpaceRuins/skelter.dmm
#_maps/RandomRuins/SpaceRuins/skelter.dmm
#_maps/RandomRuins/SpaceRuins/forgottenship_splurt.dmm
25 changes: 16 additions & 9 deletions modular_splurt/code/datums/ruins/space.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,29 @@

//Own stuff
/datum/map_template/ruin/space/radiostation
prefix = "modular_splurt/_maps/RandomRuins/SpaceRuins/"
id = "radiostation"
suffix = "radiostation.dmm"
name = "NT Radio Station"
description = "A mobile NT Radio Station ship."
id = "radiostation"
prefix = "modular_splurt/_maps/RandomRuins/SpaceRuins/"
suffix = "radiostation.dmm"

/datum/map_template/ruin/space/syndielistenspace
prefix = "modular_splurt/_maps/RandomRuins/SpaceRuins/"
id = "syndielistenspace"
suffix = "syndielistenspace.dmm"
name = "Syndicate Listening Outpost"
description = "A syndicate listening outpost cleverly disguised as an asteroid"
id = "syndielistenspace"
prefix = "modular_splurt/_maps/RandomRuins/SpaceRuins/"
suffix = "syndielistenspace.dmm"

/datum/map_template/ruin/space/spacehotelsplurt
prefix = "modular_splurt/_maps/RandomRuins/SpaceRuins/"
id = "spacehotelsplurt"
suffix = "spacehotelsplurt.dmm"
name = "Twin Spires Hotel and Club"
description = "A Nanotrasen-partnered interstellar hotel and stripclub"
id = "spacehotelsplurt"
prefix = "modular_splurt/_maps/RandomRuins/SpaceRuins/"
suffix = "spacehotelsplurt.dmm"

/datum/map_template/ruin/space/forgottenship
name = "SCSBC-12"
description = "Cybersun would like to remind it's employees that any battle cruiser will be apropriately maintained, as will it's crew."
id = "forgottenship"
prefix = "_maps/RandomRuins/SpaceRuins/"
suffix = "forgottenship_splurt.dmm"
5 changes: 5 additions & 0 deletions modular_splurt/code/game/area/areas/ruins/space.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@
icon_state = "yellow"
has_gravity = STANDARD_GRAVITY

//Cybersun, Forgotten Ship
/area/ruin/space/has_grav/cybersun
name = "Cybersun"
icon_state = "spacecontent1"

/obj/effect/mob_spawn/human/space/syndicate/special(mob/living/new_spawn)
new_spawn.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND)

Expand Down
20 changes: 20 additions & 0 deletions modular_splurt/code/game/objects/items/cards_ids.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,23 @@
name = "Manager ID"
assignment = "Hotel Manager"
access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_MAINT, ACCESS_AWAY_ENGINE, ACCESS_AWAY_SEC, ACCESS_AWAY_GENERIC1)

/obj/item/card/id/syndicate_command/crew_id
name = "syndicate ID card"
id_type_name = "syndicate ID card"
desc = "An ID straight from the Syndicate."
registered_name = "Syndicate"
assignment = "Syndicate Operative"
icon_state = "syndie"
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS)
uses_overlays = FALSE

/obj/item/card/id/syndicate_command/captain_id
name = "syndicate captain ID card"
id_type_name = "syndicate captain ID card"
desc = "An ID straight from the Syndicate."
registered_name = "Syndicate"
assignment = "Syndicate Ship Captain"
icon_state = "syndie"
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS)
uses_overlays = FALSE
90 changes: 90 additions & 0 deletions modular_splurt/code/game/objects/structures/ghost_role_spawners.dm
Original file line number Diff line number Diff line change
Expand Up @@ -111,3 +111,93 @@
head = /obj/item/clothing/head/beret/black
id = /obj/item/card/id/away/hotel/splurt/manager
ears = /obj/item/radio/headset/headset_srv/hotel/manager

//OUTFITS//
/datum/outfit/syndicatespace/syndicrew
ears = /obj/item/radio/headset/cybersun

/datum/outfit/syndicatespace/syndicaptain
ears = /obj/item/radio/headset/cybersun/captain

//ITEMS//

/obj/item/radio/headset/cybersun
name = "cybersun crew bowman headset"
desc = "The headset of a crew member."
keyslot = new /obj/item/encryptionkey/headset_cybersun

/obj/item/radio/headset/cybersun/captain
name = "cybersun captain bowman headset"
desc = "The headset of the boss."
command = TRUE
keyslot = new /obj/item/encryptionkey/headset_cybersun

//Forgotten syndicate ship

/obj/effect/mob_spawn/human/syndicatespace
name = "Syndicate Ship Crew Member"
roundstart = FALSE
death = FALSE
show_flavour = FALSE
icon = 'icons/obj/machines/sleeper.dmi'
icon_state = "sleeper_s"
short_desc = "You are a syndicate operative on old ship, stuck in hostile space."
flavour_text = "Your ship docks after a long time somewhere in hostile space, reporting a malfunction. You are stuck here, with Nanotrasen station nearby. Fix the ship, find a way to power it and follow your captain's orders."
important_info = "Obey orders given by your captain. DO NOT let the ship fall into enemy hands."
canloadappearance = TRUE
outfit = /datum/outfit/syndicatespace/syndicrew
assignedrole = ROLE_SYNDICATE_CYBERSUN

/datum/outfit/syndicatespace/syndicrew/post_equip(mob/living/carbon/human/H)
H.faction |= ROLE_SYNDICATE

/obj/effect/mob_spawn/human/syndicatespace/special(mob/living/new_spawn)
new_spawn.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND)
var/policy = get_policy(assignedrole)
if(policy)
to_chat(new_spawn, "<span class='bold'>[policy]</span>")

/obj/effect/mob_spawn/human/syndicatespace/captain
name = "Syndicate Ship Captain"
short_desc = "You are the captain of an old ship, stuck in hostile space."
flavour_text = "Your ship docks after a long time somewhere in hostile space, reporting a malfunction. You are stuck here, with Nanotrasen station nearby. Command your crew and explore the nearby area to secure your location."
important_info = "Protect the ship and secret documents in your backpack with your own life."
canloadappearance = TRUE
outfit = /datum/outfit/syndicatespace/syndicaptain
assignedrole = ROLE_SYNDICATE_CYBERSUN_CAPTAIN

/datum/outfit/syndicatespace/syndicaptain/post_equip(mob/living/carbon/human/H)
H.faction |= ROLE_SYNDICATE

/obj/effect/mob_spawn/human/syndicatespace/captain/Destroy()
new/obj/structure/fluff/empty_sleeper/syndicate/captain(get_turf(src))
return ..()
/datum/outfit/syndicatespace/syndicrew
name = "Syndicate Ship Crew Member"
uniform = /obj/item/clothing/under/syndicate/combat
mask = /obj/item/clothing/mask/gas/syndicate
ears = /obj/item/radio/headset/cybersun
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/combat
back = /obj/item/storage/backpack
r_pocket = /obj/item/kitchen/knife/combat/survival
belt = /obj/item/storage/belt/military/assault/cybersun_crew
id = /obj/item/card/id/syndicate_command/crew_id
backpack_contents = list(/obj/item/paper/fluff/ruins/forgottenship/password)
implants = list(/obj/item/implant/weapons_auth)

/datum/outfit/syndicatespace/syndicaptain
name = "Syndicate Ship Captain"
uniform = /obj/item/clothing/under/syndicate/combat
suit = /obj/item/clothing/suit/armor/vest/capcarapace/syndicate
mask = /obj/item/clothing/mask/gas/syndicate
head = /obj/item/clothing/head/HoS/beret/syndicate
ears = /obj/item/radio/headset/cybersun/captain
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/combat
back = /obj/item/storage/backpack
r_pocket = /obj/item/kitchen/knife/combat/survival
belt = /obj/item/storage/belt/military/assault/cybersun_captain
id = /obj/item/card/id/syndicate_command/captain_id
backpack_contents = list(/obj/item/documents/syndicate/red, /obj/item/paper/fluff/ruins/forgottenship/password)
implants = list(/obj/item/implant/weapons_auth)
29 changes: 29 additions & 0 deletions modular_splurt/code/modules/mob/living/simple_animal/corpse.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//Meant for simple animals to drop lootable human bodies.

//If someone can do this in a neater way, be my guest-Kor

//This has to be separate from the Away Mission corpses, because New() doesn't work for those, and initialize() doesn't work for these.

//To do: Allow corpses to appear mangled, bloody, etc. Allow customizing the bodies appearance (they're all bald and white right now).

//List of different corpse types

/obj/effect/mob_spawn/human/corpse/nanotrasenassaultsoldier
name = "Nanotrasen Private Security Officer"
id_job = "Nanotrasen Assault Force"
id_access = "Security Officer"
outfit = /datum/outfit/nanotrasenassaultsoldiercorpse
hair_style = "Bald"
facial_hair_style = "Shaved"

/datum/outfit/nanotrasenassaultsoldiercorpse
name = "NT Assault Officer Corpse"
uniform = /obj/item/clothing/under/syndicate
suit = /obj/item/clothing/suit/armor/vest
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/combat
ears = /obj/item/radio/headset
mask = /obj/item/clothing/mask/gas/sechailer/swat
head = /obj/item/clothing/head/helmet/swat/nanotrasen
back = /obj/item/storage/backpack/security
id = /obj/item/card/id
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,19 @@
..()
icon_state = "regm4mag-[ammo_count() ? "20" : "0"]"

/obj/item/ammo_box/magazine/pntmag
name = "Praetorian 20-Round Magazine"
desc = "A straight magazine for the Praetorian assault rifle"
icon = 'modular_splurt/icons/obj/ammo.dmi'
icon_state = "pntmag"
ammo_type = /obj/item/ammo_casing/a543
caliber = ".543"
max_ammo = 20

/obj/item/ammo_box/magazine/pntmag/update_icon()
..()
icon_state = "pntmag-[ammo_count() ? "20" : "0"]"

/obj/item/ammo_box/magazine/kaijumag
name = "KAIJU 20-Round Magazine"
desc = "Magazine used by the Kaiju SMG."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,47 @@
/obj/item/gun/ballistic/automatic/autoaegis/nomag
spawnwithmagazine = FALSE

/obj/item/gun/ballistic/automatic/pnt31
name = "Praetorian"
desc = "An exotic Paradeus assault rifle, this one is a forgotten design from what feels like eons ago."
icon = 'modular_splurt/icons/obj/guns/vhariik4032.dmi'
icon_state = "PNT-31"
item_state = "pnt31"
lefthand_file = 'modular_splurt/icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'modular_splurt/icons/mob/inhands/weapons/guns_righthand.dmi'
fire_sound = 'sound/weapons/Gunshot_silenced.ogg'
weapon_weight = WEAPON_MEDIUM
mag_type = /obj/item/ammo_box/magazine/pntmag
fire_delay = 2
suppressed = TRUE
can_unsuppress = FALSE
w_class = WEIGHT_CLASS_NORMAL
slot_flags = ITEM_SLOT_BACK
automatic_burst_overlay = FALSE
spread = 2

/obj/item/gun/ballistic/automatic/pnt31/nomag
spawnwithmagazine = FALSE

/obj/item/gun/ballistic/automatic/pnt31/mod
name = "Praetorian MOD"
desc = "An exotic Paradeus assault rifle, this one is a is a rather recent design, it even has what some people would call 'skin'."
icon_state = "PNTM-31"
item_state = "pntm31"
lefthand_file = 'modular_splurt/icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'modular_splurt/icons/mob/inhands/weapons/guns_righthand.dmi'
weapon_weight = WEAPON_LIGHT
mag_type = /obj/item/ammo_box/magazine/pntmag
suppressed = TRUE
burst_size = 3
fire_delay = 1

/obj/item/gun/ballistic/automatic/pnt31/nomag
spawnwithmagazine = FALSE

/obj/item/gun/ballistic/automatic/pnt31/mod/nomag
spawnwithmagazine = FALSE

/obj/item/gun/ballistic/automatic/caelus
name = "AOD Caelus System"
desc = "The Area Of Denial Caelus LMG is a LMG developed by Paradeus in early 2400's it still proves effective to this day"
Expand Down Expand Up @@ -262,11 +303,3 @@

/obj/item/gun/ballistic/automatic/smg22/nomag
spawnwithmagazine = FALSE

/datum/supply_pack/security/armory/m46a1
name = "Pink M46A1 Full-Auto Rifle Crate"
desc = "Contains two high-powered, fully automatic rifles rifles chambered in .5x43mm. Requires Armory access to open."
cost = 25000
contains = list(/obj/item/gun/ballistic/automatic/m46a1,
/obj/item/gun/ballistic/automatic/m46a1)
crate_name = "m46a1 rifles crate"
Loading
Loading