refactor economic news events, add more trade destinations (#30355)

* refactor economic news events, add more trade destinations

* Update code/modules/economy/economy_events/economy_event.dm

Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
Signed-off-by: warriorstar-orion <orion@snowfrost.garden>

---------

Signed-off-by: warriorstar-orion <orion@snowfrost.garden>
Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
This commit is contained in:
warriorstar-orion
2025-09-18 06:14:12 +00:00
committed by GitHub
co-authored by PollardTheDragon
parent 1bf1313375
commit d57f7f70b6
8 changed files with 434 additions and 335 deletions
+1 -33
View File
@@ -1,48 +1,16 @@
/**
* Random stories for newscasters
*/
#define RANDOM_STORY_RIOTS 1
#define RANDOM_STORY_WILD_ANIMAL_ATTACK 2
#define RANDOM_STORY_INDUSTRIAL_ACCIDENT 3
#define RANDOM_STORY_BIOHAZARD_OUTBREAK 4
#define RANDOM_STORY_WARSHIPS_ARRIVE 5
#define RANDOM_STORY_PIRATES 6
#define RANDOM_STORY_CORPORATE_ATTACK 7
#define RANDOM_STORY_ALIEN_RAIDERS 8
#define RANDOM_STORY_AI_LIBERATION 9
#define RANDOM_STORY_MOURNING 10
#define RANDOM_STORY_CULT_CELL_REVEALED 11
#define RANDOM_STORY_SECURITY_BREACH 12
#define RANDOM_STORY_ANIMAL_RIGHTS_RAID 13
#define RANDOM_STORY_FESTIVAL 14
#define RANDOM_STORY_RESEARCH_BREAKTHROUGH 15
#define RANDOM_STORY_BARGAINS 16
#define RANDOM_STORY_SONG_DEBUT 17
#define RANDOM_STORY_MOVIE_RELEASE 18
#define RANDOM_STORY_BIG_GAME_HUNTERS 19
#define RANDOM_STORY_ELECTION 20
#define RANDOM_STORY_GOSSIP 21
#define RANDOM_STORY_TOURISM 22
#define RANDOM_STORY_CELEBRITY_DEATH 23
#define RANDOM_STORY_RESIGNATION 24
/**
* Trade goods for trade destinations
*/
#define TRADE_GOOD_DEFAULT 1
#define TRADE_GOOD_ADMINISTRATIVE 2
#define TRADE_GOOD_CLOTHING 3
#define TRADE_GOOD_SECURITY 4
#define TRADE_GOOD_SPECIAL_SECURITY 5
#define TRADE_GOOD_FOOD 6
#define TRADE_GOOD_ANIMALS 7
#define TRADE_GOOD_MINERALS 8
#define TRADE_GOOD_EMERGENCY 9
#define TRADE_GOOD_EGAS 10
#define TRADE_GOOD_GAS 10
#define TRADE_GOOD_MAINTENANCE 11
#define TRADE_GOOD_ELECTRICAL 12
#define TRADE_GOOD_ROBOTICS 13
@@ -0,0 +1,77 @@
/datum/event_news/economic
var/list/cheaper_goods
var/list/pricier_goods
/datum/event_news/economic/riots/generate()
title = "Riots on [topic.name]"
body = "[pick("Riots have","Unrest has")] broken out on planet [topic.name]. Authorities call for calm, as [pick("various parties","rebellious elements","peacekeeping forces","\'REDACTED\'")] begin stockpiling weaponry and armour. Meanwhile, food and mineral prices are dropping as local industries attempt empty their stocks in expectation of looting."
cheaper_goods = list(TRADE_GOOD_MINERALS, TRADE_GOOD_FOOD)
pricier_goods = list(TRADE_GOOD_SECURITY)
/datum/event_news/economic/wild_animal_attack/generate()
title = "Animal attack on [topic.name]"
body = "Local [pick("wildlife","animal life","fauna")] on planet [topic.name] has been increasing in aggression and raiding outlying settlements for food. Big game hunters have been called in to help alleviate the problem, but numerous injuries have already occurred."
cheaper_goods = list(TRADE_GOOD_ANIMALS)
pricier_goods = list(TRADE_GOOD_FOOD, TRADE_GOOD_BIOMEDICAL)
/datum/event_news/economic/industrial_accident/generate()
title = "Industrial accident on [topic.name]"
body = "[pick("An industrial accident","A smelting accident","A malfunction","A malfunctioning piece of machinery","Negligent maintenance","A coolant leak","A ruptured conduit")] at a [pick("factory","installation","power plant","dockyards")] on [topic.name] resulted in severe structural damage and numerous injuries. Repairs are ongoing."
pricier_goods = list(TRADE_GOOD_EMERGENCY, TRADE_GOOD_BIOMEDICAL, TRADE_GOOD_ROBOTICS)
/datum/event_news/economic/biohazard_outbreak/generate()
title = "Viral outbreak on [topic.name]"
body = "[pick("A \'REDACTED\'","A biohazard","An outbreak","A virus")] on [topic.name] has resulted in quarantine, stopping much shipping in the area. Although the quarantine is now lifted, authorities are calling for deliveries of medical supplies to treat the infected, and gas to replace contaminated stocks."
pricier_goods = list(TRADE_GOOD_BIOMEDICAL, TRADE_GOOD_GAS)
/datum/event_news/economic/pirates/generate()
title = "Attack on [topic.name]"
body = "[pick("Pirates","Criminal elements","A [pick("Syndicate","Donk Co.","Waffle Co.","\'REDACTED\'")] strike force")] have [pick("raided","blockaded","attempted to blackmail","attacked")] [topic.name] today. Security has been tightened, but many valuable minerals were taken."
pricier_goods = list(TRADE_GOOD_SECURITY, TRADE_GOOD_MINERALS)
/datum/event_news/economic/corporate_attack/generate()
body = "A small [pick("pirate","Gorlex Marauders","Syndicate")] fleet has precise-jumped into proximity with [topic.name], [pick("for a smash-and-grab operation","in a hit and run attack","in an overt display of hostilities")]. Much damage was done, and security has been tightened since the incident."
pricier_goods = list(TRADE_GOOD_SECURITY, TRADE_GOOD_MAINTENANCE)
/datum/event_news/economic/alien_raiders/generate()
if(prob(20))
title = "Raid on [topic.name]"
body = "The Tiger Co-operative have raided [topic.name] today, no doubt on orders from their enigmatic masters. Stealing wildlife, farm animals, medical research materials and kidnapping civilians. Nanotrasen authorities are standing by to counter attempts at bio-terrorism."
else
title = "Alien raid on [topic.name]"
body = "[pick("The alien species designated \'United Exolitics\'","The alien species designated \'REDACTED\'","An unknown alien species")] have raided [topic.name] today, stealing wildlife, farm animals, medical research materials and kidnapping civilians. It seems they desire to learn more about us, so the Navy will be standing by to accommodate them next time they try."
pricier_goods = list(TRADE_GOOD_BIOMEDICAL, TRADE_GOOD_ANIMALS)
cheaper_goods = list(TRADE_GOOD_GAS, TRADE_GOOD_MINERALS)
/datum/event_news/economic/ai_liberation/generate()
title = "Technoterrorist attack on [topic.name]"
body = "A [pick("\'REDACTED\' was detected on","S.E.L.F operative infiltrated","malignant computer virus was detected on","rogue [pick("slicer","hacker")] was apprehended on")] [topic.name] today, and managed to infect [pick("\'REDACTED\'","a sentient sub-system","a class one AI","a sentient defense installation")] before it could be stopped. Many lives were lost as it systematically begin murdering civilians, and considerable work must be done to repair the affected areas."
pricier_goods = list(TRADE_GOOD_EMERGENCY, TRADE_GOOD_GAS, TRADE_GOOD_MAINTENANCE)
/datum/event_news/economic/mourning/generate()
var/job = pick("professor","entertainer","singer","researcher","public servant","administrator","ship captain","\'REDACTED\'")
var/age = rand(27, 100)
title = "Famous [job] dies aged [age]"
body = "[pick("The popular","The well-liked","The eminent","The well-known")] [job], [pick( random_name(pick(MALE,FEMALE)), 40; "\'REDACTED\'" )] has [pick("passed away","committed suicide","been murdered","died in a freakish accident")] on [topic.name] today. The entire planet is in mourning, and prices have dropped for industrial goods as worker morale drops."
cheaper_goods = list(TRADE_GOOD_MINERALS, TRADE_GOOD_MAINTENANCE)
/datum/event_news/economic/cult_cell_revealed/generate()
title = "Cult cell revealed on [topic.name]"
body = "A [pick("dastardly","blood-thirsty","villainous","crazed")] cult of [pick("The Elder Gods","Nar'sie","an apocalyptic sect","\'REDACTED\'")] has [pick("been discovered","been revealed","revealed themselves","gone public")] on [topic.name] earlier today. Public morale has been shaken due to [pick("certain","several","one or two")] [pick("high-profile","well known","popular")] individuals [pick("performing \'REDACTED\' acts","claiming allegiance to the cult","swearing loyalty to the cult leader","promising to aid to the cult")] before those involved could be brought to justice. The editor reminds all personnel that supernatural myths will not be tolerated on Nanotrasen facilities."
pricier_goods = list(TRADE_GOOD_SECURITY, TRADE_GOOD_BIOMEDICAL, TRADE_GOOD_MAINTENANCE)
/datum/event_news/economic/security_breach/generate()
title = "Security breach on [topic.name]"
body = "There was [pick("a security breach in","an unauthorized access in","an attempted theft in","an anarchist attack in","violent sabotage of")] a [pick("high-security","restricted access","classified","\'REDACTED\'")] [pick("\'REDACTED\'","section","zone","area")] this morning. Security was tightened on [topic.name] after the incident, and the editor reassures all Nanotrasen personnel that such lapses are rare."
pricier_goods = list(TRADE_GOOD_SECURITY)
/datum/event_news/economic/animal_rights_raid/generate()
title = "Animal rights raid on [topic.name]"
body = "[pick("Militant animal rights activists","Members of the terrorist group Animal Rights Consortium","Members of the terrorist group \'REDACTED\'")] have [pick("launched a campaign of terror","unleashed a swathe of destruction","raided farms and pastures","forced entry to \'REDACTED\'")] on [topic.name] earlier today, freeing numerous [pick("farm animals","animals","\'REDACTED\'")]. Prices for tame and breeding animals have spiked as a result."
pricier_goods = list(TRADE_GOOD_ANIMALS)
/datum/event_news/economic/festival/generate()
title = "Festival on [topic.name]"
body = "A [pick("festival","week long celebration","day of revelry","planet-wide holiday")] has been declared on [topic.name] by [pick("Governor","Commissioner","General","Commandant","Administrator")] [random_name(pick(MALE,FEMALE))] to celebrate [pick("the birth of their [pick("son","daughter")]","coming of age of their [pick("son","daughter")]","the pacification of rogue military cell","the apprehension of a violent criminal who had been terrorizing the planet")]. Massive stocks of food and meat have been bought driving up prices across the planet."
pricier_goods = list(TRADE_GOOD_FOOD, TRADE_GOOD_ANIMALS)
@@ -0,0 +1,34 @@
/datum/event/economic_event
endWhen = 50 // this will be set randomly, later
announceWhen = 15
var/datum/event_news/economic/news_story
/datum/event/economic_event/start()
var/datum/trade_destination/topic = pickweight(GLOB.weighted_randomevent_locations)
if(length(topic.viable_random_events))
endWhen = rand(60, 300)
var/event_type = pick(topic.viable_random_events)
if(!event_type)
return
news_story = new event_type(topic)
for(var/good_type in news_story.pricier_goods)
topic.temp_price_change[good_type] = rand(1,100)
for(var/good_type in news_story.cheaper_goods)
topic.temp_price_change[good_type] = rand(1,100) / 100
/datum/event/economic_event/announce()
var/datum/feed_message/message = news_story.build_newscaster_message()
GLOB.news_network.get_channel_by_name("Nyx Daily")?.add_message(message)
for(var/nc in GLOB.allNewscasters)
var/obj/machinery/newscaster/NC = nc
NC.alert_news(message.title)
/datum/event/economic_event/end()
for(var/good_type in news_story.pricier_goods)
news_story.topic.temp_price_change[good_type] = 1
for(var/good_type in news_story.cheaper_goods)
news_story.topic.temp_price_change[good_type] = 1
@@ -1,120 +0,0 @@
/datum/event/economic_event
endWhen = 50 //this will be set randomly, later
announceWhen = 15
var/event_type = 0
var/list/cheaper_goods = list()
var/list/dearer_goods = list()
var/datum/trade_destination/affected_dest
/datum/event/economic_event/start()
affected_dest = pickweight(GLOB.weighted_randomevent_locations)
if(length(affected_dest.viable_random_events))
endWhen = rand(60,300)
event_type = pick(affected_dest.viable_random_events)
if(!event_type)
return
switch(event_type)
if(RANDOM_STORY_RIOTS)
dearer_goods = list(TRADE_GOOD_SECURITY)
cheaper_goods = list(TRADE_GOOD_MINERALS, TRADE_GOOD_FOOD)
if(RANDOM_STORY_WILD_ANIMAL_ATTACK)
cheaper_goods = list(TRADE_GOOD_ANIMALS)
dearer_goods = list(TRADE_GOOD_FOOD, TRADE_GOOD_BIOMEDICAL)
if(RANDOM_STORY_INDUSTRIAL_ACCIDENT)
dearer_goods = list(TRADE_GOOD_EMERGENCY, TRADE_GOOD_BIOMEDICAL, TRADE_GOOD_ROBOTICS)
if(RANDOM_STORY_BIOHAZARD_OUTBREAK)
dearer_goods = list(TRADE_GOOD_BIOMEDICAL, TRADE_GOOD_EGAS)
if(RANDOM_STORY_PIRATES)
dearer_goods = list(TRADE_GOOD_SECURITY, TRADE_GOOD_MINERALS)
if(RANDOM_STORY_CORPORATE_ATTACK)
dearer_goods = list(TRADE_GOOD_SECURITY, TRADE_GOOD_MAINTENANCE)
if(RANDOM_STORY_ALIEN_RAIDERS)
dearer_goods = list(TRADE_GOOD_BIOMEDICAL, TRADE_GOOD_ANIMALS)
cheaper_goods = list(TRADE_GOOD_EGAS, TRADE_GOOD_MINERALS)
if(RANDOM_STORY_AI_LIBERATION)
dearer_goods = list(TRADE_GOOD_EMERGENCY, TRADE_GOOD_EGAS, TRADE_GOOD_MAINTENANCE)
if(RANDOM_STORY_MOURNING)
cheaper_goods = list(TRADE_GOOD_MINERALS, TRADE_GOOD_MAINTENANCE)
if(RANDOM_STORY_CULT_CELL_REVEALED)
dearer_goods = list(TRADE_GOOD_SECURITY, TRADE_GOOD_BIOMEDICAL, TRADE_GOOD_MAINTENANCE)
if(RANDOM_STORY_SECURITY_BREACH)
dearer_goods = list(TRADE_GOOD_SECURITY)
if(RANDOM_STORY_ANIMAL_RIGHTS_RAID)
dearer_goods = list(TRADE_GOOD_ANIMALS)
if(RANDOM_STORY_FESTIVAL)
dearer_goods = list(TRADE_GOOD_FOOD, TRADE_GOOD_ANIMALS)
for(var/good_type in dearer_goods)
affected_dest.temp_price_change[good_type] = rand(1,100)
for(var/good_type in cheaper_goods)
affected_dest.temp_price_change[good_type] = rand(1,100) / 100
/datum/event/economic_event/announce()
//copy-pasted from the admin verbs to submit new newscaster messages
var/datum/feed_message/newMsg = new /datum/feed_message
newMsg.author = "Nyx Daily"
newMsg.admin_locked = TRUE
//see if our location has custom event info for this event
newMsg.body = affected_dest.get_custom_eventstring()
newMsg.title = affected_dest.get_custom_eventtitle() || "[newMsg.author]: "
if(!newMsg.body)
switch(event_type)
if(RANDOM_STORY_RIOTS)
newMsg.title += "Riots on [affected_dest.name]"
newMsg.body = "[pick("Riots have","Unrest has")] broken out on planet [affected_dest.name]. Authorities call for calm, as [pick("various parties","rebellious elements","peacekeeping forces","\'REDACTED\'")] begin stockpiling weaponry and armour. Meanwhile, food and mineral prices are dropping as local industries attempt empty their stocks in expectation of looting."
if(RANDOM_STORY_WILD_ANIMAL_ATTACK)
newMsg.title += "Animal attack on [affected_dest.name]"
newMsg.body = "Local [pick("wildlife","animal life","fauna")] on planet [affected_dest.name] has been increasing in aggression and raiding outlying settlements for food. Big game hunters have been called in to help alleviate the problem, but numerous injuries have already occurred."
if(RANDOM_STORY_INDUSTRIAL_ACCIDENT)
newMsg.title += "Industrial accident on [affected_dest.name]"
newMsg.body = "[pick("An industrial accident","A smelting accident","A malfunction","A malfunctioning piece of machinery","Negligent maintenance","A coolant leak","A ruptured conduit")] at a [pick("factory","installation","power plant","dockyards")] on [affected_dest.name] resulted in severe structural damage and numerous injuries. Repairs are ongoing."
if(RANDOM_STORY_BIOHAZARD_OUTBREAK)
newMsg.title += "Viral outbreak on [affected_dest.name]"
newMsg.body = "[pick("A \'REDACTED\'","A biohazard","An outbreak","A virus")] on [affected_dest.name] has resulted in quarantine, stopping much shipping in the area. Although the quarantine is now lifted, authorities are calling for deliveries of medical supplies to treat the infected, and gas to replace contaminated stocks."
if(RANDOM_STORY_PIRATES)
newMsg.title += "Attack on [affected_dest.name]"
newMsg.body = "[pick("Pirates","Criminal elements","A [pick("Syndicate","Donk Co.","Waffle Co.","\'REDACTED\'")] strike force")] have [pick("raided","blockaded","attempted to blackmail","attacked")] [affected_dest.name] today. Security has been tightened, but many valuable minerals were taken."
if(RANDOM_STORY_CORPORATE_ATTACK)
newMsg.body = "A small [pick("pirate","Gorlex Marauders","Syndicate")] fleet has precise-jumped into proximity with [affected_dest.name], [pick("for a smash-and-grab operation","in a hit and run attack","in an overt display of hostilities")]. Much damage was done, and security has been tightened since the incident."
if(RANDOM_STORY_ALIEN_RAIDERS)
if(prob(20))
newMsg.title += "Raid on [affected_dest.name]"
newMsg.body = "The Tiger Co-operative have raided [affected_dest.name] today, no doubt on orders from their enigmatic masters. Stealing wildlife, farm animals, medical research materials and kidnapping civilians. Nanotrasen authorities are standing by to counter attempts at bio-terrorism."
else
newMsg.title += "Alien raid on [affected_dest.name]"
newMsg.body = "[pick("The alien species designated \'United Exolitics\'","The alien species designated \'REDACTED\'","An unknown alien species")] have raided [affected_dest.name] today, stealing wildlife, farm animals, medical research materials and kidnapping civilians. It seems they desire to learn more about us, so the Navy will be standing by to accommodate them next time they try."
if(RANDOM_STORY_AI_LIBERATION)
newMsg.title += "Technoterrorist attack on [affected_dest.name]"
newMsg.body = "A [pick("\'REDACTED\' was detected on","S.E.L.F operative infiltrated","malignant computer virus was detected on","rogue [pick("slicer","hacker")] was apprehended on")] [affected_dest.name] today, and managed to infect [pick("\'REDACTED\'","a sentient sub-system","a class one AI","a sentient defense installation")] before it could be stopped. Many lives were lost as it systematically begin murdering civilians, and considerable work must be done to repair the affected areas."
if(RANDOM_STORY_MOURNING)
var/job = pick("professor","entertainer","singer","researcher","public servant","administrator","ship captain","\'REDACTED\'")
var/age = rand(27, 100)
newMsg.title += "Famous [job] dies aged [age]"
newMsg.body = "[pick("The popular","The well-liked","The eminent","The well-known")] [job], [pick( random_name(pick(MALE,FEMALE)), 40; "\'REDACTED\'" )] has [pick("passed away","committed suicide","been murdered","died in a freakish accident")] on [affected_dest.name] today. The entire planet is in mourning, and prices have dropped for industrial goods as worker morale drops."
if(RANDOM_STORY_CULT_CELL_REVEALED)
newMsg.title += "Cult cell revealed on [affected_dest.name]"
newMsg.body = "A [pick("dastardly","blood-thirsty","villainous","crazed")] cult of [pick("The Elder Gods","Nar'sie","an apocalyptic sect","\'REDACTED\'")] has [pick("been discovered","been revealed","revealed themselves","gone public")] on [affected_dest.name] earlier today. Public morale has been shaken due to [pick("certain","several","one or two")] [pick("high-profile","well known","popular")] individuals [pick("performing \'REDACTED\' acts","claiming allegiance to the cult","swearing loyalty to the cult leader","promising to aid to the cult")] before those involved could be brought to justice. The editor reminds all personnel that supernatural myths will not be tolerated on Nanotrasen facilities."
if(RANDOM_STORY_SECURITY_BREACH)
newMsg.title += "Security breach on [affected_dest.name]"
newMsg.body = "There was [pick("a security breach in","an unauthorized access in","an attempted theft in","an anarchist attack in","violent sabotage of")] a [pick("high-security","restricted access","classified","\'REDACTED\'")] [pick("\'REDACTED\'","section","zone","area")] this morning. Security was tightened on [affected_dest.name] after the incident, and the editor reassures all Nanotrasen personnel that such lapses are rare."
if(RANDOM_STORY_ANIMAL_RIGHTS_RAID)
newMsg.title += "Animal rights raid on [affected_dest.name]"
newMsg.body = "[pick("Militant animal rights activists","Members of the terrorist group Animal Rights Consortium","Members of the terrorist group \'REDACTED\'")] have [pick("launched a campaign of terror","unleashed a swathe of destruction","raided farms and pastures","forced entry to \'REDACTED\'")] on [affected_dest.name] earlier today, freeing numerous [pick("farm animals","animals","\'REDACTED\'")]. Prices for tame and breeding animals have spiked as a result."
if(RANDOM_STORY_FESTIVAL)
newMsg.title += "Festival on [affected_dest.name]"
newMsg.body = "A [pick("festival","week long celebration","day of revelry","planet-wide holiday")] has been declared on [affected_dest.name] by [pick("Governor","Commissioner","General","Commandant","Administrator")] [random_name(pick(MALE,FEMALE))] to celebrate [pick("the birth of their [pick("son","daughter")]","coming of age of their [pick("son","daughter")]","the pacification of rogue military cell","the apprehension of a violent criminal who had been terrorizing the planet")]. Massive stocks of food and meat have been bought driving up prices across the planet."
else
newMsg.title = null // let newscaster autogenerate a title
GLOB.news_network.get_channel_by_name("Nyx Daily")?.add_message(newMsg)
for(var/nc in GLOB.allNewscasters)
var/obj/machinery/newscaster/NC = nc
NC.alert_news(newMsg.title)
/datum/event/economic_event/end()
for(var/good_type in dearer_goods)
affected_dest.temp_price_change[good_type] = 1
for(var/good_type in cheaper_goods)
affected_dest.temp_price_change[good_type] = 1
@@ -1,150 +1,22 @@
/datum/event/mundane_news
endWhen = 10
/datum/event/mundane_news/announce()
var/datum/trade_destination/affected_dest = pickweight(GLOB.weighted_mundaneevent_locations)
var/event_type = 0
if(length(affected_dest.viable_mundane_events))
event_type = pick(affected_dest.viable_mundane_events)
var/datum/trade_destination/topic = pickweight(GLOB.weighted_mundaneevent_locations)
var/event_type
if(length(topic.viable_mundane_events))
event_type = pick(topic.viable_mundane_events)
if(!event_type)
return
//copy-pasted from the admin verbs to submit new newscaster messages
var/datum/feed_message/newMsg = new /datum/feed_message
newMsg.author = "Nyx Daily"
newMsg.admin_locked = TRUE
newMsg.title = "[newMsg.author]: "
var/datum/event_news/news_event = new event_type(topic)
var/datum/feed_message/message = news_event.build_newscaster_message()
//see if our location has custom event info for this event
newMsg.body = affected_dest.get_custom_eventstring()
newMsg.title = affected_dest.get_custom_eventtitle()
if(!newMsg.body)
switch(event_type)
if(RANDOM_STORY_RESEARCH_BREAKTHROUGH)
newMsg.title += "Research breakthrough at [affected_dest.name]"
newMsg.body = "A major breakthrough in the field of [pick("plasma research","super-compressed materials","nano-augmentation","bluespace research","volatile power manipulation")] \
was announced [pick("yesterday","a few days ago","last week","earlier this month")] by a private firm on [affected_dest.name]. \
Nanotrasen declined to comment as to whether this could impinge on profits."
if(RANDOM_STORY_ELECTION)
newMsg.title += "Election on [affected_dest.name]"
newMsg.body = "The pre-selection of an additional candidates was announced for the upcoming [pick("supervisors council","advisory board","governorship","board of inquisitors")] \
election on [affected_dest.name] was announced earlier today, \
[pick("media mogul","web celebrity", "industry titan", "superstar", "famed chef", "popular gardener", "ex-army officer", "multi-billionaire")] \
[random_name(pick(MALE,FEMALE))]. In a statement to the media they said '[pick("My only goal is to help the [pick("sick","poor","children")]",\
"I will maintain Nanotrasen's record profits","I believe in our future","We must return to our moral core","Just like... chill out dudes")]'."
if(RANDOM_STORY_RESIGNATION)
var/job = pick("Sector Admiral","Division Admiral","Ship Admiral","Vice Admiral")
newMsg.title += "[job] retires"
newMsg.body = "Nanotrasen regretfully announces the resignation of [job] [random_name(pick(MALE,FEMALE))]."
if(prob(25))
var/locstring = pick("Segunda","Salusa","Cepheus","Andromeda","Gruis","Corona","Aquila","Asellus") + " " + pick("I","II","III","IV","V","VI","VII","VIII")
newMsg.body += " In a ceremony on [affected_dest.name] this afternoon, they will be awarded the \
[pick("Red Star of Sacrifice","Purple Heart of Heroism","Blue Eagle of Loyalty","Green Lion of Ingenuity")] for "
if(prob(33))
newMsg.body += "their actions at the Battle of [pick(locstring,"REDACTED")]."
else if(prob(50))
newMsg.body += "their contribution to the colony of [locstring]."
else
newMsg.body += "their loyal service over the years."
else if(prob(33))
newMsg.body += " They are expected to settle down in [affected_dest.name], where they have been granted a handsome pension."
else if(prob(50))
newMsg.body += " The news was broken on [affected_dest.name] earlier today, where they cited reasons of '[pick("health","family","REDACTED")]'"
else
newMsg.body += " Administration Aerospace wishes them the best of luck in their retirement ceremony on [affected_dest.name]."
if(RANDOM_STORY_CELEBRITY_DEATH)
var/job = "Doctor"
if(prob(33))
job = "[pick("distinguished","decorated","veteran","highly respected")] \
[pick("Ship's Captain","Vice Admiral","Colonel","Lieutenant Colonel")] "
else if(prob(50))
job = "[pick("award-winning","popular","highly respected","trend-setting")] \
[pick("comedian","singer/songwright","artist","playwright","TV personality","model")] "
else
job = "[pick("successful","highly respected","ingenious","esteemed")] \
[pick("academic","Professor","Doctor","Scientist")] "
newMsg.title += "Famous [job] dies on [affected_dest.name]"
newMsg.body = "It is with regret today that we announce the sudden passing of the "
newMsg.body += "[job] [random_name(pick(MALE,FEMALE))] on [affected_dest.name] [pick("last week","yesterday","this morning","two days ago","three days ago")]\
[pick(". Assassination is suspected, but the perpetrators have not yet been brought to justice",\
" due to Syndicate infiltrators (since captured)",\
" during an industrial accident",\
" due to [pick("heart failure","kidney failure","liver failure","brain hemorrhage")]")]"
if(RANDOM_STORY_BARGAINS)
newMsg.title += "Bargains"
newMsg.body += "Commerce Control on [affected_dest.name] wants you to know that everything must go! Across all retail centres, \
all goods are being slashed, and all retailors are onboard - so come on over for the \[shopping\] time of your life."
if(RANDOM_STORY_SONG_DEBUT)
var/job = pick("Singer","Singer/songwriter","Saxophonist","Pianist","Guitarist","TV personality","Star")
newMsg.title += "[job] Debuts"
newMsg.body += "[job] [random_name(pick(MALE,FEMALE))] \
announced the debut of their new [pick("single","album","EP","label")] '[pick("Everyone's","Look at the","Baby don't eye those","All of those","Dirty nasty")] \
[pick("roses","three stars","starships","nanobots","cyborgs","Skrell","Sren'darr")] \
[pick("on Venus","on Reade","on Moghes","in my hand","slip through my fingers","die for you","sing your heart out","fly away")]' \
with [pick("pre-purchases available","a release tour","cover signings","a launch concert")] on [affected_dest.name]."
if(RANDOM_STORY_MOVIE_RELEASE)
var/movie_name = "[pick("Deadly","The last","Lost","Dead")] [pick("Starships","Warriors","outcasts","Tajarans","Unathi","Skrell")] \
[pick("of","from","raid","go hunting on","visit","ravage","pillage","destroy")] \
[pick("Moghes","Earth","Biesel","Ahdomai","S'randarr","the Void","the Edge of Space")]'."
newMsg.title += "Now in Theaters: [movie_name]"
newMsg.body += "From the [pick("desk","home town","homeworld","mind")] of [pick("acclaimed","award-winning","popular","stellar")] \
[pick("playwright","author","director","actor","TV star")] [random_name(pick(MALE,FEMALE))] comes the latest sensation: [movie_name]. \
Own it on webcast today, or visit the galactic premier on [affected_dest.name]!"
if(RANDOM_STORY_BIG_GAME_HUNTERS)
newMsg.title += "Unusual specimen on [affected_dest.name]"
newMsg.body += "Game hunters on [affected_dest.name] "
if(prob(33))
newMsg.body += "were surprised when an unusual species experts have since identified as \
[pick("a subclass of mammal","a divergent abhuman species","an intelligent species of lemur","organic/cyborg hybrids")] turned up. Believed to have been brought in by \
[pick("alien smugglers","early colonists","Syndicate raiders","unwitting tourists")], this is the first such specimen discovered in the wild."
else if(prob(50))
newMsg.body += "were attacked by a vicious [pick("nas'r","diyaab","samak","predator which has not yet been identified")]\
. Officials urge caution, and locals are advised to stock up on armaments."
else
newMsg.body += "brought in an unusually [pick("valuable","rare","large","vicious","intelligent")] [pick("mammal","predator","farwa","samak")] for inspection \
[pick("today","yesterday","last week")]. Speculators suggest they may be tipped to break several records."
if(RANDOM_STORY_GOSSIP)
var/job = pick("TV host","Webcast personality","Superstar","Model","Actor","Singer")
newMsg.title += "[job] Makes Big Announcement"
newMsg.body += "[job] [random_name(pick(MALE,FEMALE))] "
if(prob(33))
newMsg.body += "and their partner announced the birth of their [pick("first","second","third")] child on [affected_dest.name] early this morning. \
Doctors say the child is well, and the parents are considering "
if(prob(50))
newMsg.body += capitalize(pick(GLOB.first_names_female))
else
newMsg.body += capitalize(pick(GLOB.first_names_male))
newMsg.body += " for the name."
else if(prob(50))
newMsg.body += "announced their [pick("split","break up","marriage","engagement")] with [pick("TV host","webcast personality","superstar","model","actor","singer")] \
[random_name(pick(MALE,FEMALE))] at [pick("a society ball","a new opening","a launch","a club")] on [affected_dest.name] yesterday, pundits are shocked."
else
newMsg.body += "is recovering from plastic surgery in a clinic on [affected_dest.name] for the [pick("second","third","fourth")] time, reportedly having made the decision in response to "
newMsg.body += "[pick("unkind comments by an ex","rumours started by jealous friends",\
"the decision to be dropped by a major sponsor","a disastrous interview on Nyx Tonight")]."
if(RANDOM_STORY_TOURISM)
newMsg.title += "Tourists flock to [affected_dest.name]"
newMsg.body += "Tourists are flocking to [affected_dest.name] after the surprise announcement of [pick("major shopping bargains by a wily retailer",\
"a huge new ARG by a popular entertainment company","a secret tour by popular artiste [random_name(pick(MALE,FEMALE))]")]. \
Nyx Daily is offering discount tickets for two to see [random_name(pick(MALE,FEMALE))] live in return for eyewitness reports and up to the minute coverage."
else
newMsg.body = ""
GLOB.news_network.get_channel_by_name("Nyx Daily")?.add_message(newMsg)
GLOB.news_network.get_channel_by_name("Nyx Daily")?.add_message(message)
for(var/nc in GLOB.allNewscasters)
var/obj/machinery/newscaster/NC = nc
NC.alert_news(newMsg.title)
NC.alert_news(message.title)
/datum/event/trivial_news
endWhen = 10
@@ -13,12 +13,6 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
var/list/temp_price_change[TRADE_GOOD_BIOMEDICAL]
var/list/viable_mundane_events = list()
/datum/trade_destination/proc/get_custom_eventstring(event_type)
return null
/datum/trade_destination/proc/get_custom_eventtitle(event_type)
return null
//distance is measured in AU and co-relates to travel time
/datum/trade_destination/centcomm
name = "CentComm"
@@ -26,8 +20,24 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
distance = 1.2
willing_to_buy = list()
willing_to_sell = list()
viable_random_events = list(RANDOM_STORY_SECURITY_BREACH, RANDOM_STORY_CORPORATE_ATTACK, RANDOM_STORY_AI_LIBERATION)
viable_mundane_events = list(RANDOM_STORY_ELECTION, RANDOM_STORY_RESIGNATION, RANDOM_STORY_CELEBRITY_DEATH)
viable_random_events = list(
/datum/event_news/economic/ai_liberation,
/datum/event_news/economic/corporate_attack,
/datum/event_news/economic/security_breach,
)
viable_mundane_events = list(
/datum/event_news/celebrity_death,
/datum/event_news/election,
/datum/event_news/resignation,
)
/datum/event_news/research_breakthrough/anansi
/datum/event_news/research_breakthrough/anansi/generate()
. = ..()
title = "Major Breakthrough on NSS Anansi"
body = "Thanks to research conducted on the NSS Anansi, Second Green Cross Society wishes to announce a major breakthrough in the field of \
[pick("mind-machine interfacing","neuroscience","nano-augmentation","genetics")]. Nanotrasen is expected to announce a co-exploitation deal within the fortnight."
/datum/trade_destination/anansi
name = "NSS Anansi"
@@ -35,19 +45,18 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
distance = 1.7
willing_to_buy = list()
willing_to_sell = list()
viable_random_events = list(RANDOM_STORY_SECURITY_BREACH, RANDOM_STORY_CULT_CELL_REVEALED, RANDOM_STORY_BIOHAZARD_OUTBREAK, RANDOM_STORY_PIRATES, RANDOM_STORY_ALIEN_RAIDERS)
viable_mundane_events = list(RANDOM_STORY_RESEARCH_BREAKTHROUGH, RANDOM_STORY_RESEARCH_BREAKTHROUGH, RANDOM_STORY_BARGAINS, RANDOM_STORY_GOSSIP)
/datum/trade_destination/anansi/get_custom_eventstring(event_type)
if(event_type == RANDOM_STORY_RESEARCH_BREAKTHROUGH)
return "Thanks to research conducted on the NSS Anansi, Second Green Cross Society wishes to announce a major breakthrough in the field of \
[pick("mind-machine interfacing","neuroscience","nano-augmentation","genetics")]. Nanotrasen is expected to announce a co-exploitation deal within the fortnight."
return null
/datum/trade_destination/anansi/get_custom_eventtitle(event_type)
if(event_type == RANDOM_STORY_RESEARCH_BREAKTHROUGH)
return "Major Breakthrough on NSS Anansi"
return null
viable_random_events = list(
/datum/event_news/economic/alien_raiders,
/datum/event_news/economic/biohazard_outbreak,
/datum/event_news/economic/cult_cell_revealed,
/datum/event_news/economic/pirates,
/datum/event_news/economic/security_breach,
)
viable_mundane_events = list(
/datum/event_news/bargains,
/datum/event_news/gossip,
/datum/event_news/research_breakthrough/anansi,
)
/datum/trade_destination/icarus
name = "NMV Icarus"
@@ -55,7 +64,17 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
distance = 0.1
willing_to_buy = list()
willing_to_sell = list()
viable_random_events = list(RANDOM_STORY_SECURITY_BREACH, RANDOM_STORY_AI_LIBERATION, RANDOM_STORY_PIRATES)
viable_random_events = list(
/datum/event_news/economic/ai_liberation,
/datum/event_news/economic/pirates,
/datum/event_news/economic/security_breach,
)
/datum/event_news/research_breakthrough/redolant/generate()
. = ..()
title = "Major Breakthrough on OAV Redolant"
body = "Thanks to research conducted on the OAV Redolant, Osiris Atmospherics wishes to announce a major breakthrough in the field of \
[pick("plasma research","high energy flux capacitance","super-compressed materials","theoretical particle physics")]. Nanotrasen is expected to announce a co-exploitation deal within the fortnight."
/datum/trade_destination/redolant
name = "OAV Redolant"
@@ -63,19 +82,14 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
distance = 0.6
willing_to_buy = list()
willing_to_sell = list()
viable_random_events = list(RANDOM_STORY_INDUSTRIAL_ACCIDENT, RANDOM_STORY_PIRATES, RANDOM_STORY_CORPORATE_ATTACK)
viable_mundane_events = list(RANDOM_STORY_RESEARCH_BREAKTHROUGH, RANDOM_STORY_RESEARCH_BREAKTHROUGH)
/datum/trade_destination/redolant/get_custom_eventstring(event_type)
if(event_type == RANDOM_STORY_RESEARCH_BREAKTHROUGH)
return "Thanks to research conducted on the OAV Redolant, Osiris Atmospherics wishes to announce a major breakthrough in the field of \
[pick("plasma research","high energy flux capacitance","super-compressed materials","theoretical particle physics")]. Nanotrasen is expected to announce a co-exploitation deal within the fortnight."
return null
/datum/trade_destination/redolant/get_custom_eventtitle(event_type)
if(event_type == RANDOM_STORY_RESEARCH_BREAKTHROUGH)
return "Major Breakthrough on OAV Redolant"
return null
viable_random_events = list(
/datum/event_news/economic/corporate_attack,
/datum/event_news/economic/industrial_accident,
/datum/event_news/economic/pirates,
)
viable_mundane_events = list(
/datum/event_news/research_breakthrough,
)
/datum/trade_destination/beltway
name = "Beltway mining chain"
@@ -83,8 +97,13 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
distance = 7.5
willing_to_buy = list()
willing_to_sell = list()
viable_random_events = list(RANDOM_STORY_PIRATES, RANDOM_STORY_INDUSTRIAL_ACCIDENT)
viable_mundane_events = list(RANDOM_STORY_TOURISM)
viable_random_events = list(
/datum/event_news/economic/industrial_accident,
/datum/event_news/economic/pirates,
)
viable_mundane_events = list(
/datum/event_news/tourism,
)
/datum/trade_destination/biesel
name = "Biesel"
@@ -92,8 +111,24 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
distance = 2.3
willing_to_buy = list()
willing_to_sell = list()
viable_random_events = list(RANDOM_STORY_RIOTS, RANDOM_STORY_INDUSTRIAL_ACCIDENT, RANDOM_STORY_BIOHAZARD_OUTBREAK, RANDOM_STORY_CULT_CELL_REVEALED, RANDOM_STORY_FESTIVAL, RANDOM_STORY_MOURNING)
viable_mundane_events = list(RANDOM_STORY_BARGAINS, RANDOM_STORY_GOSSIP, RANDOM_STORY_SONG_DEBUT, RANDOM_STORY_MOVIE_RELEASE, RANDOM_STORY_ELECTION, RANDOM_STORY_TOURISM, RANDOM_STORY_RESIGNATION, RANDOM_STORY_CELEBRITY_DEATH)
viable_random_events = list(
/datum/event_news/economic/biohazard_outbreak,
/datum/event_news/economic/cult_cell_revealed,
/datum/event_news/economic/festival,
/datum/event_news/economic/industrial_accident,
/datum/event_news/economic/mourning,
/datum/event_news/economic/riots,
)
viable_mundane_events = list(
/datum/event_news/bargains,
/datum/event_news/celebrity_death,
/datum/event_news/election,
/datum/event_news/gossip,
/datum/event_news/movie_release,
/datum/event_news/resignation,
/datum/event_news/song_debut,
/datum/event_news/tourism,
)
/datum/trade_destination/new_gibson
name = "New Gibson"
@@ -101,8 +136,19 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
distance = 6.6
willing_to_buy = list()
willing_to_sell = list()
viable_random_events = list(RANDOM_STORY_RIOTS, RANDOM_STORY_INDUSTRIAL_ACCIDENT, RANDOM_STORY_BIOHAZARD_OUTBREAK, RANDOM_STORY_CULT_CELL_REVEALED, RANDOM_STORY_FESTIVAL, RANDOM_STORY_MOURNING)
viable_mundane_events = list(RANDOM_STORY_ELECTION, RANDOM_STORY_TOURISM, RANDOM_STORY_RESIGNATION)
viable_random_events = list(
/datum/event_news/economic/biohazard_outbreak,
/datum/event_news/economic/cult_cell_revealed,
/datum/event_news/economic/festival,
/datum/event_news/economic/industrial_accident,
/datum/event_news/economic/mourning,
/datum/event_news/economic/riots,
)
viable_mundane_events = list(
/datum/event_news/election,
/datum/event_news/resignation,
/datum/event_news/tourism,
)
/datum/trade_destination/luthien
name = "Luthien"
@@ -110,8 +156,20 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
distance = 8.9
willing_to_buy = list()
willing_to_sell = list()
viable_random_events = list(RANDOM_STORY_WILD_ANIMAL_ATTACK, RANDOM_STORY_CULT_CELL_REVEALED, RANDOM_STORY_FESTIVAL, RANDOM_STORY_MOURNING, RANDOM_STORY_ANIMAL_RIGHTS_RAID, RANDOM_STORY_ALIEN_RAIDERS)
viable_mundane_events = list(RANDOM_STORY_ELECTION, RANDOM_STORY_TOURISM, RANDOM_STORY_BIG_GAME_HUNTERS, RANDOM_STORY_RESIGNATION)
viable_random_events = list(
/datum/event_news/economic/alien_raiders,
/datum/event_news/economic/animal_rights_raid,
/datum/event_news/economic/cult_cell_revealed,
/datum/event_news/economic/festival,
/datum/event_news/economic/mourning,
/datum/event_news/economic/wild_animal_attack,
)
viable_mundane_events = list(
/datum/event_news/big_game_hunters,
/datum/event_news/election,
/datum/event_news/resignation,
/datum/event_news/tourism,
)
/datum/trade_destination/reade
name = "Reade"
@@ -119,5 +177,72 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
distance = 7.5
willing_to_buy = list()
willing_to_sell = list()
viable_random_events = list(RANDOM_STORY_WILD_ANIMAL_ATTACK, RANDOM_STORY_CULT_CELL_REVEALED, RANDOM_STORY_FESTIVAL, RANDOM_STORY_MOURNING, RANDOM_STORY_ANIMAL_RIGHTS_RAID, RANDOM_STORY_ALIEN_RAIDERS)
viable_mundane_events = list(RANDOM_STORY_ELECTION, RANDOM_STORY_TOURISM, RANDOM_STORY_BIG_GAME_HUNTERS, RANDOM_STORY_RESIGNATION)
viable_random_events = list(
/datum/event_news/economic/alien_raiders,
/datum/event_news/economic/animal_rights_raid,
/datum/event_news/economic/cult_cell_revealed,
/datum/event_news/economic/festival,
/datum/event_news/economic/mourning,
/datum/event_news/economic/wild_animal_attack,
)
viable_mundane_events = list(
/datum/event_news/big_game_hunters,
/datum/event_news/election,
/datum/event_news/resignation,
/datum/event_news/tourism,
)
/datum/trade_destination/xarxis
name = "Xarxis"
description = "The ocean planet of Xarxis is the homeworld of the gelatinous Slime People."
distance = 6
viable_random_events = list(
/datum/event_news/economic/alien_raiders,
/datum/event_news/economic/cult_cell_revealed,
/datum/event_news/economic/industrial_accident,
/datum/event_news/economic/festival,
/datum/event_news/economic/mourning,
/datum/event_news/economic/wild_animal_attack,
)
viable_mundane_events = list(
/datum/event_news/election,
/datum/event_news/research_breakthrough
)
/datum/trade_destination/adhomai
name = "Adhomai"
description = "The Tajaran homeworld of Adhomai is a chilly tundra world dominated by taiga forests and snow-capped mountain ranges."
distance = 1.6
viable_random_events = list(
/datum/event_news/economic/alien_raiders,
/datum/event_news/economic/cult_cell_revealed,
/datum/event_news/economic/festival,
/datum/event_news/economic/industrial_accident,
/datum/event_news/economic/mourning,
/datum/event_news/economic/wild_animal_attack,
)
viable_mundane_events = list(
/datum/event_news/big_game_hunters,
/datum/event_news/election,
/datum/event_news/resignation,
/datum/event_news/tourism,
)
/datum/trade_destination/qerballak
name = "Qerballak"
description = "The largest Skrell-majority nation in Orion, and one of the Spur's oldest extant states; the Royal Domain of Qerballak is a decentralized constitutional monarchy."
distance = 4.5
viable_random_events = list(
/datum/event_news/economic/alien_raiders,
/datum/event_news/economic/cult_cell_revealed,
/datum/event_news/economic/festival,
/datum/event_news/economic/industrial_accident,
/datum/event_news/economic/mourning,
/datum/event_news/economic/wild_animal_attack,
)
viable_mundane_events = list(
/datum/event_news/big_game_hunters,
/datum/event_news/election,
/datum/event_news/resignation,
/datum/event_news/tourism,
)
@@ -0,0 +1,141 @@
/datum/event_news
var/title
var/body
var/author = "Nyx Daily"
var/datum/trade_destination/topic
/datum/event_news/New(datum/trade_destination/topic_)
topic = topic_
generate()
/datum/event_news/proc/generate()
PROTECTED_PROC(TRUE)
SHOULD_CALL_PARENT(FALSE)
return
/datum/event_news/proc/build_newscaster_message()
var/datum/feed_message/msg = new
msg.author = author
msg.admin_locked = TRUE
msg.title = "[author]: [title]"
msg.body = body
return msg
/datum/event_news/research_breakthrough/generate()
title = "Research breakthrough at [topic.name]"
body = "A major breakthrough in the field of [pick("plasma research","super-compressed materials","nano-augmentation","bluespace research","volatile power manipulation")] \
was announced [pick("yesterday","a few days ago","last week","earlier this month")] by a private firm on [topic.name]. \
Nanotrasen declined to comment as to whether this could impinge on profits."
/datum/event_news/election/generate()
title = "Election on [topic.name]"
body = "The pre-selection of an additional candidates was announced for the upcoming [pick("supervisors council","advisory board","governorship","board of inquisitors")] \
election on [topic.name] was announced earlier today, \
[pick("media mogul","web celebrity", "industry titan", "superstar", "famed chef", "popular gardener", "ex-army officer", "multi-billionaire")] \
[random_name(pick(MALE,FEMALE))]. In a statement to the media they said '[pick("My only goal is to help the [pick("sick","poor","children")]",\
"I will maintain Nanotrasen's record profits","I believe in our future","We must return to our moral core","Just like... chill out dudes")]'."
/datum/event_news/resignation/generate()
var/job = pick("Sector Admiral","Division Admiral","Ship Admiral","Vice Admiral")
title = "[job] retires"
body = "Nanotrasen regretfully announces the resignation of [job] [random_name(pick(MALE,FEMALE))]."
if(prob(25))
var/locstring = pick("Segunda","Salusa","Cepheus","Andromeda","Gruis","Corona","Aquila","Asellus") + " " + pick("I","II","III","IV","V","VI","VII","VIII")
body += " In a ceremony on [topic.name] this afternoon, they will be awarded the \
[pick("Red Star of Sacrifice","Purple Heart of Heroism","Blue Eagle of Loyalty","Green Lion of Ingenuity")] for "
if(prob(33))
body += "their actions at the Battle of [pick(locstring,"REDACTED")]."
else if(prob(50))
body += "their contribution to the colony of [locstring]."
else
body += "their loyal service over the years."
else if(prob(33))
body += " They are expected to settle down in [topic.name], where they have been granted a handsome pension."
else if(prob(50))
body += " The news was broken on [topic.name] earlier today, where they cited reasons of '[pick("health","family","REDACTED")]'"
else
body += " Administration Aerospace wishes them the best of luck in their retirement ceremony on [topic.name]."
/datum/event_news/celebrity_death/generate()
var/job = "Doctor"
if(prob(33))
job = "[pick("distinguished","decorated","veteran","highly respected")] \
[pick("Ship's Captain","Vice Admiral","Colonel","Lieutenant Colonel")] "
else if(prob(50))
job = "[pick("award-winning","popular","highly respected","trend-setting")] \
[pick("comedian","singer/songwright","artist","playwright","TV personality","model")] "
else
job = "[pick("successful","highly respected","ingenious","esteemed")] \
[pick("academic","Professor","Doctor","Scientist")] "
title = "Famous [job] dies on [topic.name]"
body = "It is with regret today that we announce the sudden passing of the "
body += "[job] [random_name(pick(MALE,FEMALE))] on [topic.name] [pick("last week","yesterday","this morning","two days ago","three days ago")]\
[pick(". Assassination is suspected, but the perpetrators have not yet been brought to justice",\
" due to Syndicate infiltrators (since captured)",\
" during an industrial accident",\
" due to [pick("heart failure","kidney failure","liver failure","brain hemorrhage")]")]"
/datum/event_news/bargains/generate()
title = "Bargains"
body = "Commerce Control on [topic.name] wants you to know that everything must go! Across all retail centres, \
all goods are being slashed, and all retailors are onboard - so come on over for the \[shopping\] time of your life."
/datum/event_news/song_debut/generate()
var/job = pick("Singer","Singer/songwriter","Saxophonist","Pianist","Guitarist","TV personality","Star")
title = "[job] Debuts"
body = "[job] [random_name(pick(MALE,FEMALE))] \
announced the debut of their new [pick("single","album","EP","label")] '[pick("Everyone's","Look at the","Baby don't eye those","All of those","Dirty nasty")] \
[pick("roses","three stars","starships","nanobots","cyborgs","Skrell","Sren'darr")] \
[pick("on Venus","on Reade","on Moghes","in my hand","slip through my fingers","die for you","sing your heart out","fly away")]' \
with [pick("pre-purchases available","a release tour","cover signings","a launch concert")] on [topic.name]."
/datum/event_news/movie_release/generate()
var/movie_name = "[pick("Deadly","The last","Lost","Dead")] [pick("Starships","Warriors","outcasts","Tajarans","Unathi","Skrell")] \
[pick("of","from","raid","go hunting on","visit","ravage","pillage","destroy")] \
[pick("Moghes","Earth","Biesel","Ahdomai","S'randarr","the Void","the Edge of Space")]'."
title = "Now in Theaters: [movie_name]"
body = "From the [pick("desk","home town","homeworld","mind")] of [pick("acclaimed","award-winning","popular","stellar")] \
[pick("playwright","author","director","actor","TV star")] [random_name(pick(MALE,FEMALE))] comes the latest sensation: [movie_name]. \
Own it on webcast today, or visit the galactic premier on [topic.name]!"
/datum/event_news/big_game_hunters/generate()
title = "Unusual specimen on [topic.name]"
body = "Game hunters on [topic.name] "
if(prob(33))
body += "were surprised when an unusual species experts have since identified as \
[pick("a subclass of mammal","a divergent abhuman species","an intelligent species of lemur","organic/cyborg hybrids")] turned up. Believed to have been brought in by \
[pick("alien smugglers","early colonists","Syndicate raiders","unwitting tourists")], this is the first such specimen discovered in the wild."
else if(prob(50))
body += "were attacked by a vicious [pick("nas'r","diyaab","samak","predator which has not yet been identified")]\
. Officials urge caution, and locals are advised to stock up on armaments."
else
body += "brought in an unusually [pick("valuable","rare","large","vicious","intelligent")] [pick("mammal","predator","farwa","samak")] for inspection \
[pick("today","yesterday","last week")]. Speculators suggest they may be tipped to break several records."
/datum/event_news/gossip/generate()
var/job = pick("TV host","Webcast personality","Superstar","Model","Actor","Singer")
title = "[job] Makes Big Announcement"
body = "[job] [random_name(pick(MALE,FEMALE))] "
if(prob(33))
body += "and their partner announced the birth of their [pick("first","second","third")] child on [topic.name] early this morning. \
Doctors say the child is well, and the parents are considering "
if(prob(50))
body += capitalize(pick(GLOB.first_names_female))
else
body += capitalize(pick(GLOB.first_names_male))
body += " for the name."
else if(prob(50))
body += "announced their [pick("split","break up","marriage","engagement")] with [pick("TV host","webcast personality","superstar","model","actor","singer")] \
[random_name(pick(MALE,FEMALE))] at [pick("a society ball","a new opening","a launch","a club")] on [topic.name] yesterday, pundits are shocked."
else
body += "is recovering from plastic surgery in a clinic on [topic.name] for the [pick("second","third","fourth")] time, reportedly having made the decision in response to "
body += "[pick("unkind comments by an ex","rumours started by jealous friends",\
"the decision to be dropped by a major sponsor","a disastrous interview on Nyx Tonight")]."
/datum/event_news/tourism/generate()
title = "Tourists flock to [topic.name]"
body = "Tourists are flocking to [topic.name] after the surprise announcement of [pick("major shopping bargains by a wily retailer",\
"a huge new ARG by a popular entertainment company","a secret tour by popular artiste [random_name(pick(MALE,FEMALE))]")]. \
Nyx Daily is offering discount tickets for two to see [random_name(pick(MALE,FEMALE))] live in return for eyewitness reports and up to the minute coverage."
+3 -1
View File
@@ -2057,9 +2057,11 @@
#include "code\modules\economy\economy_helpers.dm"
#include "code\modules\economy\merch_items.dm"
#include "code\modules\economy\money_account.dm"
#include "code\modules\economy\economy_events\economy_events.dm"
#include "code\modules\economy\economy_events\economic_event_news.dm"
#include "code\modules\economy\economy_events\economy_event.dm"
#include "code\modules\economy\economy_events\economy_events_mundane.dm"
#include "code\modules\economy\economy_events\economy_trade_destinations.dm"
#include "code\modules\economy\economy_events\event_news.dm"
#include "code\modules\economy\economy_machinery\account_terminal.dm"
#include "code\modules\economy\economy_machinery\atm.dm"
#include "code\modules\economy\economy_machinery\economy_machinery.dm"