NRI raider ship maintenance PR (#16833)

* should be it

* continuation

* T4 parts are now obsolete

* last touchups

* how did i not notice this good god

* less varedits

* Update pirate_enclave.dmm

* a

* untested need to do this at home later

* ohmygoddddddddd

* Update pirate_enclave.dmm

* doesn't work but i wanna sleep

* gotta test later

* should be it

* Update pirate_enclave.dmm

* Update pirate_enclave.dmm

* Update pirates.dm

* Update pirates.dm

* addresses issues

* addresses issues

* Update pirate_enclave.dmm

* Update pirate_enclave.dmm

* pipe

* Update pirate_enclave.dmm

* Update pirate_enclave.dmm

* a little bit more nice

* i did something?

* buttons i forgot

* Update enclave_pirates.dm

* stupid but it works eh

* this was unnoticed for a stupidly long time

* Update pirate_enclave.dmm

* Update pirate_enclave.dmm

* Update pirate_enclave.dmm

* Apply suggestions from code review

Co-authored-by: Tastyfish <crazychris32@gmail.com>

* it works; good

* should work

* complete remap

* right

* hopefully final remap

* Update pirate_nri_raider.dmm

* пщщв

пщщв утщгпр ш пгуыы,,,,

* Update enclave_pirates.dm

* Update pirates.dm

* Update pirate_nri_raider.dmm

* guh

* DOES THIS EVEN WORK?

I HAVE NO IDEA (It does)

* I don't care at this point

* sounds (cool ones)

* I was asked to

* I was asked to

* shto

* Update pirate_nri_raider.dmm

* :(

* announcer and sound changes thing uh yer

* last touchups

* new batch of improvements

* Update modular_skyrat/modules/assault_operatives/code/base_alarm.dm

Co-authored-by: Tastyfish <crazychris32@gmail.com>

* Update pirate_nri_raider.dmm

* it is i

the cockroach

* it owrks i dont care

* fixes i suppose

* Update pirate_nri_raider.dmm

* Update pirate_nri_raider.dmm

* Update nri_raiders.dm

Co-authored-by: Tastyfish <crazychris32@gmail.com>
This commit is contained in:
Stalkeros2
2022-11-17 10:41:34 -05:00
committed by GitHub
co-authored by Tastyfish
parent 1e2aa97954
commit cbc0ee3490
25 changed files with 2321 additions and 4263 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2
View File
@@ -150,6 +150,7 @@
#define ANNOUNCER_MUTANTS "announcer_mutants"
#define ANNOUNCER_KLAXON "announcer_klaxon"
#define ANNOUNCER_ICARUS "announcer_icarus"
#define ANNOUNCER_NRI_RAIDERS "announcer_nri_raiders"
//SKYRAT EDIT END
@@ -193,6 +194,7 @@ GLOBAL_LIST_INIT(announcer_keys, list(
ANNOUNCER_MUTANTS,
ANNOUNCER_KLAXON,
ANNOUNCER_ICARUS,
ANNOUNCER_NRI_RAIDERS,
//SKYRAT EDIT END
))
+54 -18
View File
@@ -1,3 +1,4 @@
///SKYRAT EDIT START - Roleplay-oriented pirates. An entire quarter of the file.
/datum/round_event_control/pirates
name = "Space Pirates - Random" //SKYRAT EDIT CHANGE
typepath = /datum/round_event/pirates
@@ -12,7 +13,7 @@
#define PIRATES_SILVERSCALES "Silverscales"
#define PIRATES_DUTCHMAN "Flying Dutchman"
#define PIRATES_IMPERIAL_ENCLAVE "Imperial Enclave" //SKYRAT EDIT ADDITION
#define PIRATES_NRI_RAIDERS "NRI Raiders" //SKYRAT EDIT ADDITION
/datum/round_event_control/pirates/preRunEvent()
if (!SSmapping.empty_space)
@@ -35,9 +36,10 @@
typepath = /datum/round_event/pirates/dutchman
weight = 0
/datum/round_event_control/pirates/enclave
name = "Space Pirates - Imperial Enclave"
typepath = /datum/round_event/pirates/enclave
/datum/round_event_control/pirates/nri
name = "Space Pirates - NRI Raiders"
typepath = /datum/round_event/pirates/nri
description = "The crew will either pay up, or face a raider party. More roleplay-oriented variation with higher stakes for the crew, and higher chances of getting away scott free."
weight = 0
/datum/round_event/pirates
@@ -52,15 +54,16 @@
/datum/round_event/pirates/dutchman
pirate_type = PIRATES_DUTCHMAN
/datum/round_event/pirates/enclave
pirate_type = PIRATES_IMPERIAL_ENCLAVE
/datum/round_event/pirates/nri
pirate_type = PIRATES_NRI_RAIDERS
//SKYRAT EDIT ADDITION END
/datum/round_event/pirates/start()
send_pirate_threat(pirate_type) //SKYRAT EDIT CHANGE
/proc/send_pirate_threat(pirate_override)
var/pirate_type = pick(PIRATES_ROGUES, PIRATES_SILVERSCALES, PIRATES_DUTCHMAN, PIRATES_IMPERIAL_ENCLAVE) //SKYRAT EDIT CHANGE
var/pirate_type = pick(PIRATES_ROGUES, PIRATES_SILVERSCALES, PIRATES_DUTCHMAN, PIRATES_NRI_RAIDERS) //SKYRAT EDIT CHANGE
if(pirate_override)
pirate_type = pirate_override
var/ship_template = null
@@ -69,6 +72,10 @@
var/payoff = 0
var/initial_send_time = world.time
var/response_max_time = 2 MINUTES
var/timeout_response = "Too late to beg for mercy!"
var/pay_response = "Thanks for the credits, landlubbers."
var/broke_response = "Trying to cheat us? You'll regret this!"
priority_announce("Incoming subspace communication. Secure channel opened at all communication consoles.", "Incoming Message", SSstation.announcer.get_rand_report_sound())
var/datum/comm_message/threat = new
var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR)
@@ -94,31 +101,60 @@
threat.content = "Ahoy! This be the [ship_name]. Cough up [payoff] credits or you'll walk the plank."
threat.possible_answers = list("We'll pay.","We will not be extorted.")
//SKYRAT EDIT ADDITION
if(PIRATES_IMPERIAL_ENCLAVE)
if(PIRATES_NRI_RAIDERS)
ship_name = pick(strings(PIRATE_NAMES_FILE, "imperial_names"))
ship_template = /datum/map_template/shuttle/pirate/imperial_enclave
ship_template = /datum/map_template/shuttle/pirate/nri_raider
var/number = rand(1,99)
///Station name one is the most important pick and is pretty much the station's main argument against getting fined, thus it better be mostly always right.
var/station_designation = pick_weight(list(
"Nanotrasen Research Station" = 70,
"Nanotrasen Refueling Outpost" = 5,
"Interdyne Pharmaceuticals Chemical Factory" = 5,
"Free Teshari League Engineering Station" = 5,
"Agurkrral Military Base" = 5,
"Sol Federation Embassy" = 5,
"Novaya Rossiyskaya Imperiya Civilian Port" = 5,
))
///"right" = Right for the raiders to use as an argument; usually pretty difficult to avoid.
var/right_pick = pick(
"high probability of NRI-affiliated civilian casualties aboard the facility",
"highly increased funding by the SolFed authorities; neglected NRI-backed subsidiaries' contracts",
"unethical hiring practices and unfair payment allocation for the NRI citizens",
"recently discovered BSA-[number] or similar model in close proximity to the neutral space aboard this or nearby affiliated facility",
)
///"wrong" = Loosely based accusations that can be easily disproven if people think.
var/wrong_pick = pick(
"inadequate support of the local producer",
"unregulated production of Gauss weaponry aboard this installation",
"SolFed-backed stationary military formation on the surface of Indecipheres",
"AUTOMATED REGULATORY VIOLATION DETECTION SYSTEM CRITICAL FAILURE. PLEASE CONTACT AND INFORM THE DISPATCHED AUTHORITIES TO RESOLVE THE ISSUE. \
ANY POSSIBLE INDENTURE HAS BEEN CLEARED. WE APOLOGIZE FOR THE INCONVENIENCE",
)
var/final_result = pick(right_pick, wrong_pick)
threat.title = "NRI Audit"
threat.content = "Greetings, this is the [ship_name]. Due to recent Imperial regulatory violations, your station has been fined [payoff] credits. Failure to comply might result in lethal debt recovery. Novaya Rossiyskaya Imperiya Enforcer out."
threat.possible_answers = list("Submit to audit and pay the fine.", "Imperial regulations? What a load of bollocks.")
//SKYRAT EDIT ADDITION END
threat.answer_callback = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pirates_answered), threat, payoff, ship_name, initial_send_time, response_max_time, ship_template)
threat.content = "Greetings [station_designation], this is the [ship_name]. Due to recent Imperial regulatory violations, such as [final_result] and many other smaller issues, your station has been fined [payoff] credits. Inadequate imperial police activity is currently present in your sector, thus the failure to comply might instead result in a military patrol dispatch for second attempt negotiations. Novaya Rossiyskaya Imperiya collegial secretary out."
threat.possible_answers = list("Submit to audit and pay the fine.", "Override the response system for an immediate military dispatch.")
timeout_response = "AUTOMATED REGULATORY VIOLATION RESPONSE SYSTEM TIMEOUT. PLEASE CONTACT AND INFORM THE DISPATCHED AUTHORITIES TO RESOLVE THE ISSUE."
pay_response = "Should be it, thank you for cooperation. Novaya Rossiyskaya Imperiya collegial secretary out."
broke_response = "Your bank balance does not hold enough money at the moment. We are sending a patrol ship for second attempt negotiations, stand by."
threat.answer_callback = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pirates_answered), threat, payoff, ship_name, initial_send_time, response_max_time, ship_template, timeout_response, pay_response, broke_response) //SKYRAT EDIT CHANGE
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(spawn_pirates), threat, ship_template, FALSE), response_max_time)
SScommunications.send_message(threat,unique = TRUE)
/proc/pirates_answered(datum/comm_message/threat, payoff, ship_name, initial_send_time, response_max_time, ship_template)
/proc/pirates_answered(datum/comm_message/threat, payoff, ship_name, initial_send_time, response_max_time, ship_template, timeout_response, pay_response, broke_response) //SKYRAT EDIT CHANGE
if(world.time > initial_send_time + response_max_time)
priority_announce("Too late to beg for mercy!",sender_override = ship_name)
priority_announce(timeout_response,sender_override = ship_name) //SKYRAT EDIT CHANGE
return
if(threat && threat.answered == 1)
var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR)
if(D)
if(D.adjust_money(-payoff))
priority_announce("Thanks for the credits, landlubbers.",sender_override = ship_name)
priority_announce(pay_response,sender_override = ship_name) //SKYRAT EDIT CHANGE
return
else
priority_announce("Trying to cheat us? You'll regret this!",sender_override = ship_name)
priority_announce(broke_response,sender_override = ship_name) //SKYRAT EDIT CHANGE
spawn_pirates(threat, ship_template, TRUE)
///SKYRAT EDIT END - Roleplay-oriented pirates. An entire quarter of the file.
/proc/spawn_pirates(datum/comm_message/threat, ship_template, skip_answer_check)
if(!skip_answer_check && threat?.answered == 1)
return
@@ -39,4 +39,5 @@
ANNOUNCER_MUTANTS = 'modular_skyrat/modules/alerts/sound/alerts/hazdet.ogg',
ANNOUNCER_KLAXON = 'modular_skyrat/modules/black_mesa/sound/siren1_long.ogg',
ANNOUNCER_ICARUS = 'modular_skyrat/modules/assault_operatives/sound/icarus_alarm.ogg',
ANNOUNCER_NRI_RAIDERS = 'modular_skyrat/modules/encounters/sounds/morse.ogg'
)
@@ -23,6 +23,10 @@
var/list/obj/machinery/base_alarm/alarms = list()
/// The area that we use to trigger other alarms.
var/area/myarea = null
/// Path to the alarm sound
var/alarm_sound_file = 'modular_skyrat/modules/assault_operatives/sound/goldeneyealarm.ogg'
/// Cooldown between each sound
var/alarm_cooldown = 65
/obj/machinery/base_alarm/Initialize(mapload)
. = ..()
@@ -60,15 +64,16 @@
iterating_alarm.triggered = TRUE
if(!iterating_alarm.alarm_playing)
iterating_alarm.alarm_playing = TRUE
playsound(iterating_alarm, 'modular_skyrat/modules/assault_operatives/sound/goldeneyealarm.ogg', 30)
addtimer(CALLBACK(iterating_alarm, PROC_REF(alarm_sound)), 65)
playsound(iterating_alarm, alarm_sound_file, 30)
addtimer(CALLBACK(iterating_alarm, PROC_REF(alarm_sound)), alarm_cooldown)
/obj/machinery/base_alarm/proc/alarm_sound()
if(!triggered)
alarm_playing = FALSE
else
playsound(src, 'modular_skyrat/modules/assault_operatives/sound/goldeneyealarm.ogg', 30)
addtimer(CALLBACK(src, PROC_REF(alarm_sound)), 65)
playsound(src, alarm_sound_file, 30)
addtimer(CALLBACK(src, PROC_REF(alarm_sound)), alarm_cooldown)
/obj/machinery/base_alarm/proc/reset(mob/user)
for(var/obj/machinery/base_alarm/iterating_alarm in alarms)
@@ -18,6 +18,8 @@
var/command_report_title
/// Whether the report's contents are announced.
var/announce_contents = TRUE
/// Custom report sound.
var/report_sound = null
/// The error we encountered while trying to send a report.
var/error = ""
@@ -67,8 +69,9 @@
/obj/machinery/computer/centcom_announcement/proc/send_announcement()
if (!COOLDOWN_FINISHED(src, announcement_cooldown))
return
/// The sound we're going to play on report.
var/report_sound = SSstation.announcer.get_rand_report_sound()
if(!report_sound)
report_sound = SSstation.announcer.get_rand_report_sound()
if(announce_contents)
priority_announce(command_report_content, command_report_title, report_sound, sender_override = command_name, has_important_message = TRUE)
@@ -1,200 +0,0 @@
#define NRI_COOLDOWN_HEAL 30 SECONDS
#define NRI_COOLDOWN_RADS 45 SECONDS
#define NRI_COOLDOWN_ACID 45 SECONDS
#define NRI_HEAL_AMOUNT 5
#define NRI_BLOOD_REPLENISHMENT 10
/datum/outfit/pirate/enclave_officer
name = "Imperial Enclave Officer"
head = /obj/item/clothing/head/beret/sec/nri
glasses = /obj/item/clothing/glasses/sunglasses
ears = /obj/item/radio/headset/guild/command
mask = null
uniform = /obj/item/clothing/under/costume/nri/captain
suit = /obj/item/clothing/suit/armor/vest
suit_store = /obj/item/gun/ballistic/automatic/plastikov/nri_pirate
gloves = /obj/item/clothing/gloves/combat
shoes = /obj/item/clothing/shoes/combat
belt = /obj/item/storage/belt/military/nri/captain/pirate_officer
back = /obj/item/storage/backpack/duffelbag/syndie/nri/captain
backpack_contents = list(/obj/item/storage/box/nri_survival_pack = 1, /obj/item/ammo_box/magazine/automag = 3, /obj/item/gun/ballistic/automatic/pistol/automag = 1, /obj/item/crucifix = 1, /obj/item/device/traitor_announcer = 1, /obj/item/clothing/mask/gas/hecu2 = 1, /obj/item/modular_computer/tablet/pda/security = 1)
l_pocket = /obj/item/paper/fluff/nri_document
r_pocket = /obj/item/storage/bag/ammo
id = /obj/item/card/id/advanced
id_trim = /datum/id_trim/enclave/officer
/datum/outfit/pirate/enclave_officer/post_equip(mob/living/carbon/human/equipped_human, visualsOnly)
. = ..()
/datum/id_trim/enclave/officer
assignment = "NRI Field Officer"
/datum/outfit/pirate/enclave_trooper
name = "Imperial Enclave Trooper"
head = null
glasses = /obj/item/clothing/glasses/sunglasses
ears = /obj/item/radio/headset/guild
mask = null
uniform = /obj/item/clothing/under/costume/nri
suit = /obj/item/clothing/suit/armor/vest
suit_store = /obj/item/gun/ballistic/automatic/plastikov/nri_pirate
gloves = /obj/item/clothing/gloves/combat
shoes = /obj/item/clothing/shoes/combat
belt = /obj/item/storage/belt/military/nri/pirate
back = /obj/item/storage/backpack/duffelbag/syndie/nri
backpack_contents = list(/obj/item/storage/box/nri_survival_pack = 1, /obj/item/crucifix = 1, /obj/item/ammo_box/magazine/m9mm_aps = 3, /obj/item/clothing/mask/gas/hecu2 = 1, /obj/item/modular_computer/tablet/pda/security = 1)
l_pocket = /obj/item/gun/ballistic/automatic/pistol/ladon/nri
r_pocket = /obj/item/storage/bag/ammo
id = /obj/item/card/id/advanced
id_trim = /datum/id_trim/enclave
/datum/outfit/pirate/enclave_trooper/post_equip(mob/living/carbon/human/equipped_human, visualsOnly)
. = ..()
/datum/id_trim/enclave
assignment = "NRI Marine"
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
trim_state = "trim_nri"
sechud_icon_state = "hud_nri"
access = list(ACCESS_SYNDICATE, ACCESS_MAINT_TUNNELS)
/obj/effect/mob_spawn/ghost_role/human/pirate/enclave
name = "NRI Raider sleeper"
desc = "Cozy. You get the feeling you aren't supposed to be here, though..."
icon = 'icons/obj/machines/sleeper.dmi'
icon_state = "sleeper_s"
mob_name = "Novaya Rossiyskaya Imperiya raiding party's marine"
outfit = /datum/outfit/pirate/enclave_trooper
rank = "NRI Marine"
you_are_text = "You are a Novaya Rossiyskaya Imperiya task force."
flavour_text = "The station has refused to pay the fine for breaking Imperial regulations, you are here to recover the debt. Do so by demanding the funds. Force approach is usually recommended, but isn't the only method."
important_text = "Allowed races are humans, Akulas, IPCs. Follow your field officer's orders."
spawner_job_path = /datum/job/space_pirate
restricted_species = list(/datum/species/human, /datum/species/akula, /datum/species/robotic/ipc)
spawn_oldpod = FALSE
random_appearance = FALSE
show_flavor = TRUE
/obj/effect/mob_spawn/ghost_role/human/pirate/enclave/special(mob/living/carbon/human/spawned_human)
. = ..()
spawned_human.grant_language(/datum/language/panslavic, TRUE, TRUE, LANGUAGE_MIND)
spawned_human.remove_language(/datum/language/piratespeak)
/datum/job/fugitive_hunter
title = ROLE_FUGITIVE_HUNTER
policy_index = ROLE_FUGITIVE_HUNTER
/obj/effect/mob_spawn/ghost_role/human/pirate/enclave/generate_pirate_name(spawn_gender)
var/last_name = pick(GLOB.last_names)
return "[rank] [last_name]"
/obj/effect/mob_spawn/ghost_role/human/pirate/enclave/captain
name = "NRI Officer sleeper"
mob_name = "Novaya Rossiyskaya Imperiya raiding party's field officer"
outfit = /datum/outfit/pirate/enclave_officer
rank = "Field Officer"
important_text = "Allowed races are humans, Akulas, IPCs. There is an important document in your pocket I'd advise you to read - do NOT dispose of it by throwing it into space, burning it, or otherwise destroying it or making it unreadable afterwards. I'd also advise putting it in your locker or keeping it by yourself, but if you do have better ideas do whatever."
/obj/effect/mob_spawn/ghost_role/human/pirate/enclave/captain/special(mob/living/carbon/human/spawned_human)
. = ..()
spawned_human.grant_language(/datum/language/uncommon, TRUE, TRUE, LANGUAGE_MIND)
spawned_human.grant_language(/datum/language/panslavic, TRUE, TRUE, LANGUAGE_MIND)
spawned_human.grant_language(/datum/language/yangyu, TRUE, TRUE, LANGUAGE_MIND)
spawned_human.remove_language(/datum/language/piratespeak)
/obj/effect/mob_spawn/ghost_role/human/pirate/enclave/gunner
rank = "Marine"
/datum/map_template/shuttle/pirate/imperial_enclave
prefix = "_maps/shuttles/skyrat/"
suffix = "enclave"
name = "pirate ship (NRI Enforcer-Class Starship)"
/obj/item/gun/ballistic/automatic/pistol/automag
name = "\improper Automag"
desc = "A .44 AMP handgun with a sleek metallic finish."
icon_state = "automag"
icon = 'modular_skyrat/modules/sec_haul/icons/guns/automag.dmi'
w_class = WEIGHT_CLASS_NORMAL
mag_type = /obj/item/ammo_box/magazine/automag
can_suppress = FALSE
fire_sound = 'modular_skyrat/modules/sec_haul/sound/automag.ogg'
rack_sound = 'sound/weapons/gun/pistol/rack.ogg'
lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg'
bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg'
/obj/item/ammo_box/magazine/automag
name = "handgun magazine (.44 AMP)"
icon = 'modular_skyrat/modules/sec_haul/icons/guns/mags.dmi'
icon_state = "automag"
base_icon_state = "automag"
ammo_type = /obj/item/ammo_casing/c44
caliber = CALIBER_44
max_ammo = 7
multiple_sprites = AMMO_BOX_PER_BULLET
/obj/item/ammo_casing/c44
name = ".44 AMP bullet casing"
desc = "A .44 AMP bullet casing."
caliber = CALIBER_44
projectile_type = /obj/projectile/bullet/c44
/obj/projectile/bullet/c44
name = ".44 AMP bullet"
damage = 40
wound_bonus = 30
/obj/item/storage/belt/military/nri/captain/pirate_officer/PopulateContents()
generate_items_inside(list(
/obj/item/ammo_box/magazine/plastikov9mm = 4,
/obj/item/knife/combat = 1,
/obj/item/grenade/smokebomb = 1,
/obj/item/grenade/frag = 1,
),src)
/obj/item/storage/belt/military/nri/pirate/PopulateContents()
generate_items_inside(list(
/obj/item/ammo_box/magazine/plastikov9mm = 4,
/obj/item/knife/combat = 1,
/obj/item/grenade/smokebomb = 1,
/obj/item/grenade/frag = 1,
),src)
/obj/item/paper/fluff/nri_document
name = "NRI Mission Specifications"
default_raw_text = {"On behalf of Novaya Rossiyskaya Imperiya Defense and Economical Collegias by the order of the Admiral Voronov Platon Aleksandrovich and the Active Privy Councillor Radich Katarina Dinovich:
<br> By the Supreme command, a special meeting of representatives from the Imperial Academy of Finances and the Collegias of Foreign and Internal Affairs, Economy, Defense was convened under the chairmanship of Adjutant General Tarkhanov to consider the issue of the incongruity with the Imperial regulations by the Nanotrasen Research Station.
<br> This meeting, having familiarized itself with all the other possible actions and solutions, came to the conviction that the indenture of fines has casus belli to perform a strategic secret operation.
<br> The Imperial Regulation has to be enforced in order to minimise any potential threat for the whole Empire, not excluding allied kingdoms, organisations and other partners, and to strengthen our positions in the ongoing Border War.
<br>
<br> About such a Supreme Will, reported in the recall of the Councillor of the Defense Collegium, No. 217648, We announce to the military department for immediate actions in appropriate cases.
<br>
<br> Signed by We,
<br> <span style=\"color:black;font-family:'Segoe Script';\"><p><b>Voronov Platon Aleksandrovich and Radich Katarina Dinovich.</b></p></span>"}
/obj/machinery/suit_storage_unit/nri
mod_type = /obj/item/mod/control/pre_equipped/frontline/pirate
storage_type = /obj/item/tank/internals/oxygen/yellow
/obj/machinery/suit_storage_unit/nri/captain
#undef NRI_COOLDOWN_HEAL
#undef NRI_COOLDOWN_RADS
#undef NRI_COOLDOWN_ACID
#undef NRI_HEAL_AMOUNT
#undef NRI_BLOOD_REPLENISHMENT
@@ -0,0 +1,282 @@
/datum/outfit/pirate/nri_officer
name = "NRI Field Officer"
head = /obj/item/clothing/head/beret/sec/nri
glasses = /obj/item/clothing/glasses/sunglasses
ears = /obj/item/radio/headset/guild/command
mask = null
neck = /obj/item/clothing/neck/security_cape/armplate
uniform = /obj/item/clothing/under/costume/nri/captain
suit = null
gloves = /obj/item/clothing/gloves/combat
shoes = /obj/item/clothing/shoes/combat
belt = /obj/item/storage/belt/military/nri/captain/pirate_officer
back = /obj/item/storage/backpack/satchel/leather
backpack_contents = list(/obj/item/storage/box/nri_survival_pack/raider = 1, /obj/item/ammo_box/magazine/m9mm_aps = 3, /obj/item/gun/ballistic/automatic/pistol/ladon/nri = 1, /obj/item/crucifix = 1, /obj/item/clothing/mask/gas/hecu2 = 1, /obj/item/modular_computer/tablet/pda/security = 1)
l_pocket = /obj/item/paper/fluff/nri_document
r_pocket = /obj/item/storage/bag/ammo
id = /obj/item/card/id/advanced
id_trim = /datum/id_trim/nri_raider/officer
/datum/outfit/pirate/nri_officer/post_equip(mob/living/carbon/human/equipped_human, visualsOnly)
. = ..()
/datum/id_trim/nri_raider/officer
assignment = "NRI Field Officer"
/datum/outfit/pirate/nri_marine
name = "NRI Marine"
head = null
glasses = /obj/item/clothing/glasses/sunglasses
ears = /obj/item/radio/headset/guild
mask = null
uniform = /obj/item/clothing/under/costume/nri
suit = null
gloves = /obj/item/clothing/gloves/combat
shoes = /obj/item/clothing/shoes/combat
belt = /obj/item/storage/belt/military/nri/pirate
back = /obj/item/storage/backpack/satchel/leather
backpack_contents = list(/obj/item/storage/box/nri_survival_pack/raider = 1, /obj/item/crucifix = 1, /obj/item/ammo_box/magazine/m9mm = 3, /obj/item/clothing/mask/gas/hecu2 = 1, /obj/item/modular_computer/tablet/pda/security = 1)
l_pocket = /obj/item/gun/ballistic/automatic/pistol
r_pocket = /obj/item/storage/bag/ammo
id = /obj/item/card/id/advanced
id_trim = /datum/id_trim/nri_raider
/datum/outfit/pirate/nri_marine/post_equip(mob/living/carbon/human/equipped_human, visualsOnly)
. = ..()
/datum/id_trim/nri_raider
assignment = "NRI Marine"
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
trim_state = "trim_nri"
sechud_icon_state = "hud_nri"
access = list(ACCESS_SYNDICATE, ACCESS_MAINT_TUNNELS)
/obj/effect/mob_spawn/ghost_role/human/nri_raider
name = "NRI Raider sleeper"
desc = "Cozy. You get the feeling you aren't supposed to be here, though..."
prompt_name = "a NRI Marine"
icon = 'modular_skyrat/modules/cryosleep/icons/cryogenics.dmi'
icon_state = "cryopod"
mob_species = /datum/species/human
faction = list("raider")
var/rank = "NRI Marine"
you_are_text = "You are a Novaya Rossiyskaya Imperiya task force."
flavour_text = "The station has refused to pay the fine for breaking Imperial regulations, you are here to recover the debt. Do so by demanding the funds. Force approach is usually recommended, but isn't the only method."
important_text = "Allowed races are humans, Akulas, IPCs. Follow your field officer's orders. Important mention - while you are listed as the pirates gamewise, you really aren't lore-and-everything-else-wise. Roleplay accordingly."
outfit = /datum/outfit/pirate/nri_marine
spawner_job_path = null
restricted_species = list(/datum/species/human, /datum/species/akula, /datum/species/robotic/ipc)
random_appearance = FALSE
show_flavor = TRUE
/obj/effect/mob_spawn/ghost_role/human/nri_raider/special(mob/living/carbon/human/spawned_human)
. = ..()
var/last_name = pick(GLOB.last_names)
spawned_human.fully_replace_character_name(null, "[rank] [last_name]")
spawned_human.grant_language(/datum/language/panslavic, TRUE, TRUE, LANGUAGE_MIND)
/obj/effect/mob_spawn/ghost_role/human/nri_raider/Destroy()
. = ..()
new/obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
/datum/job/fugitive_hunter
title = ROLE_FUGITIVE_HUNTER
policy_index = ROLE_FUGITIVE_HUNTER
/obj/effect/mob_spawn/ghost_role/human/nri_raider/officer
name = "NRI Officer sleeper"
mob_name = "Novaya Rossiyskaya Imperiya raiding party's field officer"
outfit = /datum/outfit/pirate/nri_officer
rank = "Field Officer"
important_text = "Allowed races are humans, Akulas, IPCs. Important mention - while you are listed as the pirates gamewise, you really aren't lore-and-everything-else-wise. Roleplay accordingly. There is an important document in your pocket I'd advise you to read and keep safe."
/obj/effect/mob_spawn/ghost_role/human/nri_raider/officer/special(mob/living/carbon/human/spawned_human)
. = ..()
spawned_human.grant_language(/datum/language/uncommon, TRUE, TRUE, LANGUAGE_MIND)
spawned_human.grant_language(/datum/language/panslavic, TRUE, TRUE, LANGUAGE_MIND)
spawned_human.grant_language(/datum/language/yangyu, TRUE, TRUE, LANGUAGE_MIND)
/obj/effect/mob_spawn/ghost_role/human/nri_raider/marine
rank = "Marine"
/datum/map_template/shuttle/pirate/nri_raider
prefix = "_maps/shuttles/skyrat/"
suffix = "nri_raider"
name = "pirate ship (NRI Enforcer-Class Starship)"
port_x_offset = -5
port_y_offset = 5
/area/shuttle/pirate/nri
name = "NRI Starship"
forced_ambience = TRUE
ambient_buzz = 'modular_skyrat/modules/encounters/sounds/env_ship_idle.ogg'
ambient_buzz_vol = 15
ambientsounds = list('modular_skyrat/modules/encounters/sounds/alarm_radio.ogg',
'modular_skyrat/modules/encounters/sounds/alarm_small_09.ogg',
'modular_skyrat/modules/encounters/sounds/gear_loop.ogg',
'modular_skyrat/modules/encounters/sounds/gear_start.ogg',
'modular_skyrat/modules/encounters/sounds/gear_stop.ogg',
'modular_skyrat/modules/encounters/sounds/intercom_loop.ogg')
/obj/machinery/computer/shuttle/pirate/nri/Initialize(mapload)
. = ..()
AddComponent(/datum/component/gps, "NRI Starship")
/obj/machinery/base_alarm/nri_raider
alarm_sound_file = 'modular_skyrat/modules/encounters/sounds/env_horn.ogg'
alarm_cooldown = 32
/obj/machinery/porta_turret/syndicate/nri_raider
name = "anti-projectile turret"
desc = "An automatic defense turret designed for point-defense, it's probably not that wise to try approaching it."
scan_range = 9
shot_delay = 3
faction = list("raider")
icon = 'modular_skyrat/modules/encounters/icons/turrets.dmi'
icon_state = "gun_turret"
base_icon_state = "gun_turret"
max_integrity = 250
stun_projectile = /obj/projectile/bullet/ciws
lethal_projectile = /obj/projectile/bullet/ciws
lethal_projectile_sound = 'modular_skyrat/modules/encounters/sounds/shell_out_tiny.ogg'
stun_projectile_sound = 'modular_skyrat/modules/encounters/sounds/shell_out_tiny.ogg'
/obj/machinery/porta_turret/syndicate/nri_raider/target(atom/movable/target)
if(target)
setDir(get_dir(base, target))//even if you can't shoot, follow the target
shootAt(target)
addtimer(CALLBACK(src, PROC_REF(shootAt), target), 4)
addtimer(CALLBACK(src, PROC_REF(shootAt), target), 8)
addtimer(CALLBACK(src, PROC_REF(shootAt), target), 12)
return TRUE
/obj/projectile/bullet/ciws
name = "anti-projectile salvo"
icon_state = "guardian"
damage = 30
armour_penetration = 10
/obj/docking_port/mobile/pirate/nri_raider
name = "NRI IAC-PV 'Evangelium'" //Nobody will care about the translation but basically NRI Internal Affairs Collegium-Patrol Vessel
initial_engine_power = 6
port_direction = EAST
preferred_direction = EAST
callTime = 5 MINUTES
rechargeTime = 10 MINUTES
movement_force = list("KNOCKDOWN"=0,"THROW"=0)
can_move_docking_ports = TRUE
takeoff_sound = sound('modular_skyrat/modules/encounters/sounds/engine_ignit_int.ogg')
landing_sound = sound('modular_skyrat/modules/encounters/sounds/env_ship_down.ogg')
/obj/structure/plaque/static_plaque/golden/commission/ks13/nri_raider
desc = "NRI Terentiev-Yermolayev Orbital Shipworks, Providence High Orbit, Ship OSTs-02\n'Potato Beetle' Class Corvette\nCommissioned 10/11/2562 'Keeping Promises'"
/obj/machinery/computer/centcom_announcement/nri_raider
name = "police announcement console"
desc = "A console used for making priority Internal Affairs Collegium dispatch reports."
req_access = null
circuit = null
command_name = "NRI Enforcer-Class Starship Telegram"
report_sound = ANNOUNCER_NRI_RAIDERS
/obj/item/gun/ballistic/automatic/pistol/automag
name = "\improper Automag"
desc = "A .44 AMP handgun with a sleek metallic finish."
icon_state = "automag"
icon = 'modular_skyrat/modules/sec_haul/icons/guns/automag.dmi'
w_class = WEIGHT_CLASS_NORMAL
mag_type = /obj/item/ammo_box/magazine/automag
can_suppress = FALSE
fire_sound = 'modular_skyrat/modules/sec_haul/sound/automag.ogg'
rack_sound = 'sound/weapons/gun/pistol/rack.ogg'
lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg'
bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg'
/obj/item/ammo_box/magazine/automag
name = "handgun magazine (.44 AMP)"
icon = 'modular_skyrat/modules/sec_haul/icons/guns/mags.dmi'
icon_state = "automag"
base_icon_state = "automag"
ammo_type = /obj/item/ammo_casing/c44
caliber = CALIBER_44
max_ammo = 7
multiple_sprites = AMMO_BOX_PER_BULLET
/obj/item/ammo_casing/c44
name = ".44 AMP bullet casing"
desc = "A .44 AMP bullet casing."
caliber = CALIBER_44
projectile_type = /obj/projectile/bullet/c44
/obj/projectile/bullet/c44
name = ".44 AMP bullet"
damage = 40
wound_bonus = 30
/obj/item/storage/belt/military/nri/captain/pirate_officer/PopulateContents()
generate_items_inside(list(
/obj/item/knife/combat = 1,
/obj/item/grenade/smokebomb = 1,
/obj/item/grenade/flashbang = 1,
),src)
/obj/item/storage/belt/military/nri/pirate/PopulateContents()
generate_items_inside(list(
/obj/item/knife/combat = 1,
/obj/item/grenade/smokebomb = 1,
/obj/item/grenade/flashbang = 1,
),src)
/obj/item/storage/box/nri_survival_pack/raider
desc = "A box filled with useful emergency items, supplied by the NRI. It feels particularily light."
/obj/item/storage/box/nri_survival_pack/raider/PopulateContents()
new /obj/item/oxygen_candle(src)
new /obj/item/tank/internals/emergency_oxygen(src)
new /obj/item/stack/spacecash/c1000(src)
new /obj/item/storage/pill_bottle/iron(src)
new /obj/item/reagent_containers/hypospray/medipen(src)
new /obj/item/flashlight/flare(src)
new /obj/item/crowbar/red(src)
/obj/item/paper/fluff/nri_document
name = "NRI Mission Specifications"
default_raw_text = {"On behalf of Novaya Rossiyskaya Imperiya Defense and Economical Collegias by the order of the Admiral Voronov Platon Aleksandrovich and the Active Privy Councillor Radich Katarina Dinovich:
<br> By the Supreme command, a special meeting of representatives from the Imperial Academy of Finances and the Collegias of Foreign and Internal Affairs, Economy, Defense was convened under the chairmanship of Adjutant General Tarkhanov to consider the issue of the incongruity with the Imperial regulations by the Nanotrasen Research Station.
<br> This meeting, having familiarized itself with all the other possible actions and solutions, came to the conviction that the indenture of fines has casus belli to perform a diplomatic personal meeting.
<br> The Imperial Regulation has to be enforced in order to minimise any potential threat for the whole Empire, not excluding allied kingdoms, organisations and other partners, and to strengthen our positions in the ongoing Border War.
<br>
<br> About such a Supreme Will, reported in the recall of the Councillor of the Defense Collegium, No. 217648, We announce to the military department for immediate actions in appropriate cases.
<br>
<br> Signed by We,
<br> <span style=\"color:black;font-family:'Segoe Script';\"><p><b>Voronov Platon Aleksandrovich and Radich Katarina Dinovich.</b></p></span>"}
/obj/item/paper/fluff/nri_police
name = "hastily printed note"
default_raw_text = {"Hey, officer, we couldn't arrange getting you a proper military frigate, -you know, those goddamn bureaucrats with their permission requests and paperwork-, so the police corvette will have to suffice.
<br> It was not designed for any kind of long-term deployments and anything more aggressive than shooting up a bunch of punks, so expect frequent power outages and a significant lack of raiding machinery.
<br> We have done some quick modifications to make it more suitable for military use, and smuggled you some defensive and military-grade medical equipment to balance it out. And some SMGs that were so convenient to \"go out of service and get scrapped". It should do the job for now.
<br> It is worth mentioning that your fourth marine, the maintenance crew man, went on a vacation. Dude's been pretty nervous as of late so it's only fair to let him get some well deserved rest - he has been maintaining this ship the whole time you've been in cryosleep. This should not affect your performance anyways.
<br> As for the broken Krinkov, there is nothing we can do for now. Will have to use the policemen's, not like you're here to fight the solarians anyways.
<br> And, please, for the love of God and the Eternal Empress - do not make this mission into a shootout. We can't afford any more casualties in this sector, especially with the most of our military being on the frontline.
<br>
<br> Don't screw this up,
<br> <span style=\"color:black;font-family:'Segoe Script';\"><p><b>Defense Collegia Shipmaster, Akulan Contractor, Shinrun Kantes.</b></p></span>"}
/obj/machinery/suit_storage_unit/nri
mod_type = /obj/item/mod/control/pre_equipped/frontline/pirate
storage_type = /obj/item/tank/internals/oxygen/yellow
Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.
@@ -246,7 +246,7 @@
* FOR SUBTYPES
*/
/datum/round_event_control/pirates/enclave
/datum/round_event_control/pirates/nri
chaos_level = EVENT_CHAOS_DISABLED
/datum/round_event_control/pirates/dutchman
@@ -67,6 +67,9 @@
/obj/item/mod/module/status_readout/generic,
/obj/item/mod/module/tether,
/obj/item/mod/module/magboot,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/t_ray
)
/obj/item/mod/control/pre_equipped/frontline/ert
+1 -1
View File
@@ -5631,7 +5631,7 @@
#include "modular_skyrat\modules\emotes\code\additionalemotes\overlay_emote.dm"
#include "modular_skyrat\modules\emotes\code\additionalemotes\turf_emote.dm"
#include "modular_skyrat\modules\emotes\code\additionalemotes\turf_list.dm"
#include "modular_skyrat\modules\encounters\code\enclave_pirates.dm"
#include "modular_skyrat\modules\encounters\code\nri_raiders.dm"
#include "modular_skyrat\modules\energy_axe\code\energy_fireaxe.dm"
#include "modular_skyrat\modules\energy_axe\code\energy_fireaxe_case.dm"
#include "modular_skyrat\modules\event_vote\code\event_chaos_system.dm"