This commit is contained in:
storm! 2026-08-14 09:06:11 -03:00 committed by GitHub
commit 76d0ca381e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 255 additions and 28 deletions

View File

@ -37,6 +37,7 @@ public sealed partial class AdminVerbSystem
private static readonly EntProtoId DefaultConspiratorRule = "Conspirators"; // Harmony
private static readonly EntProtoId DefaultWizardRule = "Wizard";
private static readonly EntProtoId DefaultHitmanRule = "HitmanRule";
private static readonly EntProtoId DefaultNTAgentRule = "NTAgentRule";
private static readonly EntProtoId DefaultNinjaRule = "NinjaSpawn";
private static readonly ProtoId<StartingGearPrototype> PirateGearId = "PirateGear";
@ -248,18 +249,18 @@ public sealed partial class AdminVerbSystem
};
args.Verbs.Add(cosmiccult);
var ntAgent = Loc.GetString("admin-verb-make-NTAgent");
var ntAgentName = Loc.GetString("admin-verb-make-NTAgent");
Verb agent = new()
{
Text = ntAgent,
Text = ntAgentName,
Category = VerbCategory.Antag,
Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Misc/job_icons.rsi"), "Nanotrasen"),
Act = () =>
{
_antag.ForceMakeAntag<NTAgentRuleComponent>(targetPlayer, "NTAgentRule");
_antag.ForceMakeAntag<NTAgentRuleComponent>(targetPlayer, DefaultNTAgentRule);
},
Impact = LogImpact.High,
Message = string.Join(": ", ntAgent, Loc.GetString("admin-verb-text-make-NTAgent")),
Message = string.Join(": ", ntAgentName, Loc.GetString("admin-verb-text-make-NTAgent")),
};
args.Verbs.Add(agent);
// End DeltaV Additions

View File

@ -15,5 +15,8 @@ NTAgent-round-end-name = Internal Affairs Agent
objective-condition-frame-person-title = Frame {$targetName}, {CAPITALIZE($job)}.
objective-condition-fired-person-title = Get {$targetName}, {CAPITALIZE($job)} fired.
objective-condition-dossier-person-title = Make a Dossier on {$targetName}, {CAPITALIZE($job)}
objective-condition-slander-person-title = Make {$targetName}, {CAPITALIZE($job)} Look Incompetent.
roles-antag-NT-agent-objective = Do dirty work for NanoTrasen.

View File

@ -34,6 +34,10 @@
- id: Hitman
prob: 0.2 #as requested
# end deltaV additions - add hitman
#begin DeltaV additions - ntagent subgamemode
- id: NTAgent
prob: 0.25 #as requested
# end deltaV additions - ntagent subgamemode
- type: entity
parent: BaseGameRule
@ -53,6 +57,10 @@
- id: Hitman
prob: 0.2 #as requested
# end deltaV additions - add hitman
#begin DeltaV additions - ntagent subgamemode
- id: NTAgent
prob: 0.25 #as requested
# end deltaV additions - ntagent subgamemode
- type: entity
parent: BaseGameRule
@ -67,7 +75,10 @@
#begin DeltaV additions - add hitman
- id: Hitman
prob: 0.2 #as requested
# end deltaV additions - add hitman
# end deltaV additions - add hitman\#begin DeltaV additions - ntagent subgamemode
- id: NTAgent
prob: 0.25 #as requested
# end deltaV additions - ntagent subgamemode
- type: entity
parent: BaseGameRule
@ -81,6 +92,10 @@
- id: Hitman
prob: 0.2 #as requested
# end deltaV additions - add hitman
#begin DeltaV additions - ntagent subgamemode
- id: NTAgent
prob: 0.25 #as requested
# end deltaV additions - ntagent subgamemode
- type: entity
parent: BaseGameRule

View File

@ -441,8 +441,10 @@
occursDuringRoundEnd: false
- type: AntagRandomObjectives
sets:
- groups: NTAgentObjectiveGroup
maxPicks: 2
- groups: NTAgentBigObjectiveGroup
maxPicks: 1
- groups: NTAgentSmallObjectiveGroup
maxPicks: 1
maxDifficulty: 100
- type: AntagSelection
agentName: NTAgent-round-end-name

View File

@ -25,3 +25,42 @@
sound: "/Audio/_DV/Ambience/Antag/hitman_briefing_piano_between.ogg"
- type: DynamicRuleCost
cost: 100 # bit more than thief
- type: entity
parent: [NTAgentRule]
id: NTAgent
components:
- type: AntagRandomObjectives
sets:
- groups: NTAgentBigObjectiveGroup
maxPicks: 1
- groups: NTAgentSmallObjectiveGroup
maxPicks: 1
maxDifficulty: 100
- type: AntagSelection
agentName: NTAgent-round-end-name
selectionTime: IntraPlayerSpawn
definitions:
- prefRoles: [ NTAgent ]
min: 1
max: 3
playerRatio: 20
lateJoinAdditional: true
allowNonHumans: true
multiAntagSetting: NotExclusive
blacklist:
components:
- AntagImmune
briefing:
text: NTAgent-role-greeting-human
color: lightblue
sound: /Audio/_DV/Ambience/Antag/centcomm_nt_agent.ogg
mindRoles:
- MindRoleNTAgent
components:
- type: AutoImplant
implants:
- RadioImplantCentcomm
- NanolinkSubImplant
- type: DynamicRuleCost
cost: 50 # really arent that much more than thief

View File

@ -19,6 +19,15 @@
sprite: Objects/Misc/bureaucracy.rsi
state: paper_words
- type: entity
parent: BaseNTAgentObjective
id: BaseNTAgentSlanderDepartment
components:
- type: Objective
icon:
sprite: Structures/Wallmounts/screen.rsi
state: screen
# listen to CC
- type: entity
parent: BaseNTAgentObjective
@ -54,6 +63,52 @@
- KillPersonCondition
- TargetObjectiveImmune # DeltaV
# slander someone
- type: entity
parent: BaseNTAgentObjective
id: SlanderRandomPersonObjective
description: We want to fire this person. Make everyone think they're incompetent.
components:
- type: Objective
icon:
sprite: Structures/Wallmounts/screen.rsi
state: screen
difficulty: 1.75
unique: false
- type: TargetObjective
title: objective-condition-slander-person-title
- type: PickRandomPerson
filters:
# Can't have multiple objectives to kill the same person.
- !type:TargetObjectiveMindFilter
blacklist:
components:
- KillPersonCondition
- TargetObjectiveImmune # DeltaV
# Dossier
- type: entity
parent: BaseNTAgentObjective
id: DossierRandomPersonObjective
description: NanoTrasen wants to know more about this person. Figure out what you can and report to Central.
components:
- type: Objective
icon:
sprite: Objects/Misc/bureaucracy.rsi
state: paper_words
difficulty: 1
unique: false
- type: TargetObjective
title: objective-condition-dossier-person-title
- type: PickRandomPerson
filters:
# Can't have multiple objectives to kill the same person.
- !type:TargetObjectiveMindFilter
blacklist:
components:
- KillPersonCondition
- TargetObjectiveImmune # DeltaV
# fire someone
- type: entity
parent: BaseNTAgentObjective
@ -82,19 +137,75 @@
parent: BaseNTAgentTestDepartment
id: TestSecurityObjective
name: Audit Security.
description: Test their response time, their knowledge of law or whatever else. Send the results to Central.
description: Test their response time, armory/perma security, or whatever else. Send the results to Central.
- type: entity
parent: BaseNTAgentTestDepartment
id: TestEngineeringObjective
name: Audit Engineering.
description: Test their response time to sabotage, structural damage or whatever else. Send the results to Central.
description: Test their response time to sabotage, power output, or whatever else. Send the results to Central.
- type: entity
parent: BaseNTAgentTestDepartment
id: TestMedicalObjective
name: Audit Medical.
description: Test their response time, their medical knowledge or whatever else. Send the results to Central.
description: Test their response time, reactions to types of damage, emergencies or whatever else. Send the results to Central.
- type: entity
parent: BaseNTAgentTestDepartment
id: TestEpistemicsObjective
name: Audit Epistemics.
description: Evaluate their artifact safety standards, anomaly detection capabilities, glimmer control, or whatever else. Send the results to Central.
- type: entity
parent: BaseNTAgentTestDepartment
id: TestServiceObjective
name: Audit Service.
description: Test the quality and quantity of their food and drink, hygiene standards, or whatever else. Send the results to Central.
- type: entity
parent: BaseNTAgentTestDepartment
id: TestLogisticsObjective
name: Audit Logistics.
description: Test the speed of delivery, material silo security or whatever else. Send the results to Central.
#look bad
- type: entity
parent: BaseNTAgentSlanderDepartment
id: SlanderSecurityObjective
name: Make Security Look Incompetent
description: NanoTrasen wants a reason to fire people. Make them look incompetent to the public.
- type: entity
parent: BaseNTAgentSlanderDepartment
id: SlanderEngineeringObjective
name: Make Engineering Look Incompetent
description: NanoTrasen wants a reason to fire people. Make them look incompetent to the public.
- type: entity
parent: BaseNTAgentSlanderDepartment
id: SlanderMedicalObjective
name: Make Medical Look Incompetent
description: NanoTrasen wants a reason to fire people. Make them look incompetent to the public.
- type: entity
parent: BaseNTAgentSlanderDepartment
id: SlanderEpistemicsObjective
name: Make Epistemics Look Incompetent
description: NanoTrasen wants a reason to fire people. Make them look incompetent to the public.
- type: entity
parent: BaseNTAgentSlanderDepartment
id: SlanderLogisticsObjective
name: Make Logistics Look Incompetent
description: NanoTrasen wants a reason to fire people. Make them look incompetent to the public.
- type: entity
parent: BaseNTAgentSlanderDepartment
id: SlanderCommandObjective
name: Make Command Look Incompetent
description: NanoTrasen wants a reason to fire people. Make them look incompetent to the public.
# defunding
- type: entity
@ -107,3 +218,14 @@
icon:
sprite: _DV/Objects/Misc/first_bill.rsi
state: icon
- type: entity
parent: BaseNTAgentObjective
id: CutCostsObjective
name: Liquidate unneeded assets.
description: Nanotrasen wants to cut costs. Remove unneeded machines or equipment.
components:
- type: Objective
icon:
sprite: _DV/Objects/Misc/first_bill.rsi
state: icon

View File

@ -223,16 +223,25 @@
# NTAgent
- type: weightedRandom
id: NTAgentObjectiveGroup
id: NTAgentBigObjectiveGroup
weights:
NTAgentObjectiveGroupAudit: 1
NTAgentObjectiveGroupCutCosts: 1
NTAgentObjectiveGroupSlander: 1
- type: weightedRandom
id: NTAgentSmallObjectiveGroup
weights:
NTAgentObjectiveGroupPerson: 1
NTAgentObjectiveGroupAudit: 1
- type: weightedRandom
id: NTAgentObjectiveGroupPerson
weights:
FrameRandomPersonObjective: 1
FireRandomPersonObjective: 1
# FireRandomPersonObjective: 1
DossierRandomPersonObjective: 1
SlanderRandomPersonObjective: 1
- type: weightedRandom
id: NTAgentObjectiveGroupAudit
@ -240,4 +249,22 @@
TestSecurityObjective: 1
TestEngineeringObjective: 1
TestMedicalObjective: 1
DefundDepartmentObjective: 1
TestEpistemicsObjective: 1
TestServiceObjective: 1
TestLogisticsObjective: 1
- type: weightedRandom
id: NTAgentObjectiveGroupSlander
weights:
SlanderSecurityObjective: 1
SlanderEngineeringObjective: 1
SlanderMedicalObjective: 1
SlanderEpistemicsObjective: 1
SlanderLogisticsObjective: 1
SlanderCommandObjective: 0.5
- type: weightedRandom
id: NTAgentObjectiveGroupCutCosts
weights:
# DefundDepartmentObjective: 1
CutCostsObjective: 1

View File

@ -26,13 +26,6 @@
You can also contact your [bold]handler[/bold], [color=green]Central Command[/color]. They might give you a hand with some things, but don't rely on it.
##Getting Someone Fired
[italic]A certain employee might've gotten too comfortable in their position, which could potentially spell bad news for NanoTrasen. Help them explore other job opportunities.[/italic]
Getting someone fired might be easy or difficult, depending on their job. If they're a janitor, it should be easy, but if they're a Command member, it might be harder (especially if it's the Captain).
However, making up a reason shouldn't be too hard. Writing a "credible" report about their breach of [textlink="The Company Policy" link="companyPolicies"] or their behavior might help if you spy on them. Otherwise, putting them in a bad spot that you've made up might do the trick too. Convincing them to wear Syndicate clothing would make their bosses [italic]very happy![/italic]
##Getting Someone Framed
[italic]Someone has gotten on NanoTrasen's bad side. They need you to ensure that they end up in prison.[/italic]
@ -42,6 +35,25 @@
Remember, security is usually dumber (or smarter) than they seem. They might be too busy with their jobs to remember your face, but they might remember your small clue. Hell, you could become the Detective's best informant. Just try not to overdo it. The station might wise up to your antics. [italic]You need to SELL your lie effectively![/italic]
##Make a person look incompetent
[italic]We want to fire this person. Make everyone think they're incompetent.[/italic]
This is a pretty open objective, but remember your efforts will be for naught if they figure out what youre trying to do.
- Framing them for a very big incident, like a artifact explosion or medical malpractice, will likey stick.
- Sabotaging whatever job they happen to have is also likely to be effective.
##Make a Dossier on someone.
[italic]NanoTrasen wants to know more about this person. Figure out what you can and report to Central.[/italic]
All you need to do is investigate this person. At worst, they'll be weirded out by your stalking.
You should probably write your report on a [bolditalic]station report paper[/bolditalic], available through your NanoLink! [italic]Anything written on it will appear in the “Station Report” tab on the round-end screen.[/italic]
<GuideEntityEmbed Entity="NanoRepStationReport" Caption="Station Report Paper"/>
- You may want to join the persons deparment to get better access to them.
- Striking up a friendship with the person can make it easier to learn more about them.
##Auditing a Department
[italic]NanoTrasen needs you to check how their valued departments operate.[/italic]
@ -56,17 +68,23 @@
You're the auditor! Figure out what's MOST important to audit.
##Defunding a Department
[italic]NanoTrasen needs a good reason why overfunding certain departments is a bad idea.[/italic]
##Making a Department Look Incompetent
[italic]NanoTrasen wants a reason to fire people. Make them look incompetent to the public.[/italic]
Your job is to pick a department of your choosing and ensure that its department budget is nearly empty by the end of the shift.
Like Auditing, this is a very open-ended objective. Do whatever you think will make the given department look incompetent at their job, [bold]but remember: Central Command doesn't want the station destroyed.[/bold]
You can either secretly pocket all of the money or waste their funds on entirely useless things. If they don't have the cash, you can also ensure that the department starts lacking certain things, like chairs or even consoles!
- The easiest method is to just sabotage something and cause them to blow up or, but this is also the most illegal and desturctive method.
- Pretending to be a member of the deparment and failing could do a lot towards making the deparment look incompetent.
- Withdrawing cash from the ordering console usually leaves a big radio announcement saying who did it. Limit your withdrawals or use someone else's ID to take it.
- People are going to notice if certain important objects go missing from their departments, which can attract unwanted attention. Start small and work from there. Use distractions to your advantage and try to keep things unnoticed.
##Cut uneeded Costs
[italic]NanoTrasen wants to cut costs. Remove unneeded machines or equipment.[/italic]
Remember, some departments might be easier to defund than others. While defunding the Justice department would be easy, it would be more impressive to defund Security.
Pretty simple, but do remember that it is going to be very noticeable when you deconstruct or move machines.
- If someone left something on the ground, it is probably unneeded!
- Material silos, vending machines, out of the way lights, several monitoring consoles and generally any redundant machine are unneeded things.
- Crew might wisen up to your antics! Make up excuses, disguise as someone else or relocate your efforts somewhere else if it gets too hot!
- Remember that departments have unnecessary things as well, not just public hallways. Don't forget to "relocate" those assets too.
##Getting Called by Your Handler
From time to time, you might get a small request from [color=green]Central Command Officials[/color] to do some extra work. While it's [italic]not mandatory[/italic] to complete them, they might be willing to help you out later if you help them now.