mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-20 06:22:41 +00:00
* meta resolution * emerald resolution * delta resolution * fartgas resolution * box box * stay out stay out * metastation fixes * faragus fix * delta fix * Changes to role impact on event weight * adds disaster level to the event config * weight changes and starts adding disaster level to the ui * ui fixes * adjust disaster level timing * changes disaster timing, weights, disease outbreak role requirements and weights * lots of weight an requirement adjustments * Update tear.dm * some fixes * meta changes * Starting over with farragus * Starting over in faragus * faragus changes * Update cerestation.dmm * Update cerestation.dmm * Update cerestation.dmm * Update cerestation.dmm * Update cerestation.dmm * resolving some faragus conflicts * resolve faragus conflicts * resolves delta conflicts * resolves cyberiad conflicts * resolves emerald conflicts * fixes cables in faragus * fixes meta cables * fixes delta cables * more meta fixes * more farragus cable fixes * more cable fixes * meta and faragus fixes * box and delta fixes * more mapping fixes * hopefully the last fix * Update metastation.dmm * Update metastation.dmm * fixes shorts on cyberiad cerebron and farragus * CI fixes * move new event listing to new system * Adds tracking and cost calculation for blob * finishes setting up blob event detection and costs * minor boolog corrections * fixes events being created at the wrong severity * adds ongoing cost to disease outbreak * moves terror spider event to new system * moves to component based event cost calculation * morph abductor and carps adjusted for new system * various fixes and adjusts rev event * Update revenant_spawn_event.dm * various fixes and adjusts demon incursion to the new system * adjusts some major event weights * correct wrong values of autoend on vendor uprising and rev * Update event_container.dm * more event timing adjustments * adds requirements to traders and incursion * slightly lowers requirements for biohazards * timing changes * temporarily disable loading event times from the config and increases major nothing chance * adjustments to costs and weights of various events * Update event_container.dm * additional adjustments to weights and requirements. moves rev to major * typo fix * ion storm adjustment * Update event_container.dm * more moderate changes * e * Update meteors_event.dm * removes cooldown from nothing event and changes its weight based on the number of remaining enabled events in the container * increases morph event requirements and chance of nothing moderate event * makes morph a major event * Update morph_event.dm * adds viro requirement for disease outbreak and fixes a bug with incorrect resource calculation * allows varediting extra roles for the event system for debug and testing * Adjust weights of traders and abductors and corrects wrong nominal severity for demonic incursion * Adds crew cound to rev weight * makes disasters start rolling later * reduces weight of communications blackout and increases weight of major nothing * adjusts door runtime and prisonbreak weights to make them less frequent. kudzu now scales with total crew * apc overload made less frequent * oopsy * Gives the scrubber clog event a name * fixes a type in a define name * adjusts demonic incursion weight * changes brand intelligence weight an d reduces door runtime weight * more adjustments to demon incursion. Makes additional weight from surplus roles diminish * adjustments to some minor events * Increases event length and requirements of some engineering events and lowers their weight slightly. Also increases cost of ongoing diseases events * fixes a type * Update meteors_event.dm * corrects traders nominal severity and adjusts demon weights * shifts anomaly weights down and increases costs * rebalance rod requirements * Update cerestation.dmm * moves net resource calculation to its own proc and changes the ASSIGNMENT_TOTAL macro to ASSIGNMENT_CREW. * Adds individual first run time for some events and makes majors start rolling slightly later * reduces weight of major nothing * minor reduction to rev and apc overload weight * Changes the way event weight is calculated * end time corrections for anomaly rod and meteors * slightly adjusts down the weights of nothing and some minor events * Adjusts moedrates towards about 3.5 per round and mundanes towards 8 per round * adds first run restrictions on traders and incursion and increases the cooldown time of events * resolve faragus conflicts * resolve emerald conflict * fix some faragus cabling * more cabling correction in faragus * more cable fixes * Update cerestation.dmm * remove doubled scrubber pipe on tile * reduces moderates nothing chance * slightly reduces crew requirements for disasters and also reduces crew weight for disasters * fixes meteor event not removing the alert, and makes it announce a bit later * Adds an event debugging window for real time midround event data * Revert "Adds an event debugging window for real time midround event data" This reverts commitecd99a6c9e. * Adds a resource view button to the event manager window and fixes a null in the total resource list * various bug fixes * slightly lowers chance of meteor and similar events * Slightly lowers requirement weights on disaster level events * resolves faragus conflict * changes the default power input of engineering SMES to 200kw and 80kW respectively * connects power monitoring computers to the grid that weren't * meta station elec maints improvements * adds missing power monitoring computers on box and delta * removes dirt from wall * corrects area boundry on meta * adds missing cable on box sci * removes dirt from wall on box * connects cyberiad bridge to the rest of the powernet * connects box brig to powernet * Adds catwalks to box maints * adds catwalks to meta * Adds catwalks to delta * Update deltastation.dmm * adds ability to insulate cables * Moves stations to using extra insulated cables for high power network * Removes catwalks from meta * Removes catwalks from box * Removes catwalks from delta * Delays moderates and majors more and increases disaster chance * resolves box conflicts * Update cable.dm * remove floating request console * corrects position of fire alarm and removes extra intercom on metastation * resolves faragus conflict * reduces meteor variant weights. meaty ores event now has the correct nominal severity * meaty ore weight to 8 * fixes a stray light bulb and light switch in maints as well as a doubled power * Delays meteor type events to 40 minutes at the earliest. Moves the time check to be against round time instead of world time * wires kerberos security checkpoint to the grid * Update cerestation.dmm * Removes stray extinguisher cabinet from meta station * resolves area conflict on faragus * resolves more faragus issues * fixes faragus cabling issues * Update cerestation.dmm * removes another stray fire extinguisher cabinet * insulates the APC in delta PTL room * increases pop requirement and weight for demons and increases medbay and viro weights for diseases * connect delta fore starboard solars to the high power grid instead of the low power * Update deltastation.dmm * deconflict * solves some unconnected cables * connects delta customs to network and finishes resolving conflicts * Update deltastation.dmm * adds the new cables. needs coils and mapping * moves connection perms to the heavy duty cables. toggled with engineering permission ID. box gets new cables * sorts cables on stations * faragus cable connections * cable corrections. Adds heavy duty cables to the autolathe * CI fix * more fixes and makes the new cables show up on t ray scanners * box station mapping fixes * delta mapping fixes * meta fix * Update deltastation.dmm * delta and faragus fixes * Update emeraldstation.dmm * removes APC overloard(major) from event pool * adds diagonal sprites to heavy duty cables. allows sillicons to toggle them and * Makes borg versions of the heavy duty cable coil * palete consolidation * Improves visibility of high power cables * converts shuttle event to new system * makes disaster event last run calc use round time instead of world time * fixes wrong define being used in some event requirements. further increases requirements for demons and meteors. lowers weight of major diseases * Update slaughterevent.dm * reduces cargo requirements for shuttle load event * reduces base weight of major disease event and further increases medical requirements * fixes a wrong wire under the pet store maints door in delta station * resolve mapping conflicts * Revert "resolve mapping conflicts" This reverts commit129db52501. * Revert "Merge branch 'HighPowerMaints' into event_timing" This reverts commit2594ac8928, reversing changes made toa738b5f2f2. * fixes some wonky stuff with xeno code * Adds a crew cost to diseases * makes player contribution towards events variable * changes major event weights and slightly increases demon requirements * slightly increases major disease outbreak weight * comment changes * Adds safeties to protect against null events getting into container or the active list * blob fix * Adds a confirmation to random event toggle * Adjust particulate event weight to fit the new moderate weights * Adds additional security costs to changeling and vamp * Update revenant_spawn_event.dm * uses correct path for rev event cost proc * changes some lists to alists * correctly accesses the event container list and actually uses the config for the event timing --------- Co-authored-by: FunnyMan3595 (Charlie Nolan) <funnyman3595@gmail.com> Co-authored-by: warriorstar-orion <orion@snowfrost.garden>
247 lines
10 KiB
Plaintext
247 lines
10 KiB
Plaintext
GLOBAL_LIST_INIT(unused_trade_stations, list("sol"))
|
|
|
|
// Traders event.
|
|
// Heavily copy-pasted from "heist" gamemode.
|
|
|
|
/datum/event/traders
|
|
name = "Traders"
|
|
role_weights = list(ASSIGNMENT_CREW = 0.5)
|
|
role_requirements = list(ASSIGNMENT_CREW = 30)
|
|
nominal_severity = EVENT_LEVEL_MAJOR
|
|
var/success_spawn = 0
|
|
var/station = null
|
|
var/spawn_count = 2
|
|
var/list/trader_objectives = list()
|
|
|
|
/datum/event/traders/setup()
|
|
if(length(GLOB.unused_trade_stations))
|
|
station = pick_n_take(GLOB.unused_trade_stations)
|
|
|
|
/datum/event/traders/fake_announce()
|
|
. = TRUE
|
|
var/datum/traders/T = pick(/datum/traders/sol,
|
|
/datum/traders/cyber,
|
|
/datum/traders/commie,
|
|
/datum/traders/unathi,
|
|
/datum/traders/vulp,
|
|
/datum/traders/ipc,
|
|
/datum/traders/vox,
|
|
/datum/traders/skrell,
|
|
/datum/traders/grey,
|
|
/datum/traders/nian)
|
|
|
|
if(SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED)
|
|
GLOB.minor_announcement.Announce("A trading shuttle from [T.trader_location] has been denied docking permission due to the heightened security alert aboard [station_name()].", "Trader Shuttle Docking Request Refused", 'sound/AI/traderdeny.ogg')
|
|
return
|
|
GLOB.minor_announcement.Announce("A trading shuttle from [T.trader_location] has been granted docking permission at [station_name()] arrivals port 4.", "Trader Shuttle Docking Request Accepted", 'sound/AI/tradergranted.ogg')
|
|
|
|
|
|
/datum/event/traders/start()
|
|
if(!station) // If there are no unused stations, just no.
|
|
return
|
|
|
|
var/datum/traders/T = pick(/datum/traders/sol,
|
|
/datum/traders/cyber,
|
|
/datum/traders/commie,
|
|
/datum/traders/unathi,
|
|
/datum/traders/vulp,
|
|
/datum/traders/ipc,
|
|
/datum/traders/vox,
|
|
/datum/traders/skrell,
|
|
/datum/traders/grey,
|
|
/datum/traders/nian)
|
|
|
|
if(SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED)
|
|
GLOB.minor_announcement.Announce("A trading shuttle from [T.trader_location] has been denied docking permission due to the heightened security alert aboard [station_name()].", "Trader Shuttle Docking Request Refused", 'sound/AI/traderdeny.ogg')
|
|
// if the docking request was refused, fire another major event in 60 seconds
|
|
var/datum/event_container/EC = SSevents.event_containers[EVENT_LEVEL_MAJOR]
|
|
EC.next_event_time = world.time + (60 * 10)
|
|
return
|
|
|
|
//Get the list of spawn locations for traders
|
|
var/list/spawnlocs = list()
|
|
for(var/obj/effect/landmark/spawner/trader/S in GLOB.landmarks_list)
|
|
spawnlocs += get_turf(S)
|
|
if(!length(spawnlocs))
|
|
return
|
|
|
|
trader_objectives = forge_trader_objectives()
|
|
|
|
INVOKE_ASYNC(src, PROC_REF(spawn_traders), spawnlocs, T)
|
|
|
|
/datum/event/traders/proc/spawn_traders(list/spawnlocs, datum/traders/T)
|
|
var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as a [T.trader_type] Trader?", ROLE_TRADER, TRUE)
|
|
var/index = 1
|
|
while(spawn_count > 0 && length(candidates))
|
|
if(index > length(spawnlocs))
|
|
index = 1
|
|
|
|
var/turf/picked_loc = spawnlocs[index]
|
|
index++
|
|
var/mob/C = pick_n_take(candidates)
|
|
spawn_count--
|
|
if(C)
|
|
var/mob/living/carbon/human/M = new T.trader_species(picked_loc)
|
|
M.ckey = C.ckey // must be before equipOutfit, or that will runtime due to lack of mind
|
|
dust_if_respawnable(C)
|
|
M.equipOutfit(T.trader_outfit)
|
|
M.add_language("Tradeband")
|
|
M.dna.species.after_equip_job(null, M)
|
|
for(var/datum/objective/O in trader_objectives)
|
|
M.mind.objective_holder.add_objective(O) // traders dont have a team, so we manually have to add this objective to all of their minds, without setting an owner
|
|
M.mind.offstation_role = TRUE
|
|
greet_trader(M, T)
|
|
success_spawn = TRUE
|
|
if(success_spawn)
|
|
var/template = new T.ship_template()
|
|
SSshuttle.set_trader_shuttle(template)
|
|
GLOB.minor_announcement.Announce("A trading shuttle from [T.trader_location] has been granted docking permission at [station_name()] arrivals port 4.", "Trader Shuttle Docking Request Accepted", 'sound/AI/tradergranted.ogg')
|
|
// Get the list of spawn locations for company specific items, spawn gear
|
|
for(var/obj/effect/landmark/spawner/tradergearminor/A in GLOB.landmarks_list)
|
|
var/obj/structure/closet/locker = new /obj/structure/closet(get_turf(A))
|
|
locker.open()
|
|
new T.trader_minor_special(locker)
|
|
locker.close()
|
|
|
|
for(var/obj/effect/landmark/spawner/tradergearmajor/B in GLOB.landmarks_list)
|
|
var/obj/structure/closet/locker = new /obj/structure/closet(get_turf(B))
|
|
locker.open()
|
|
new T.trader_major_special(locker)
|
|
locker.close()
|
|
else
|
|
GLOB.unused_trade_stations += station // Return the station to the list of usable stations.
|
|
|
|
/datum/event/traders/proc/greet_trader(mob/living/carbon/human/M, datum/traders/T)
|
|
var/list/messages = list()
|
|
messages.Add("<span class='boldnotice'>You are a trader!</span> <span class='notice'>You are currently docked at [T.dock_site].<br>You are about to trade with [station_name()].</span><br>")
|
|
messages.Add(M.mind.prepare_announce_objectives())
|
|
to_chat(M, chat_box_green(messages.Join("<br>")))
|
|
M.create_log(MISC_LOG, "[M] was made into a [T.trader_type] Trader")
|
|
|
|
/datum/event/traders/proc/forge_trader_objectives()
|
|
var/list/objs = list()
|
|
|
|
objs += new /datum/objective/trade/plasma
|
|
objs += new /datum/objective/trade/credits
|
|
|
|
return objs
|
|
|
|
//Datums that handle the various announcements, species, outfits, and item lists.
|
|
/datum/traders
|
|
/// What faction the trader is
|
|
var/trader_type
|
|
/// Where the traders originate from
|
|
var/trader_location
|
|
/// What specific station the traders came from
|
|
var/dock_site
|
|
/// What species the traders consist of
|
|
var/trader_species
|
|
/// What outfit do the traders spawn with
|
|
var/trader_outfit
|
|
/// What standard faction gear do they start with
|
|
var/trader_minor_special
|
|
/// What big ticket faction gear do they start with
|
|
var/trader_major_special
|
|
/// The type of shuttle the traders get
|
|
var/datum/map_template/shuttle/ship_template
|
|
|
|
/datum/traders/sol
|
|
trader_type = "Trans-Solar Federation"
|
|
trader_location = "Kayani Station"
|
|
dock_site = "Kayani Station"
|
|
trader_species = /mob/living/carbon/human
|
|
trader_outfit = /datum/outfit/admin/trader/sol
|
|
trader_minor_special = /obj/effect/spawner/random/traders/federation_minor
|
|
trader_major_special = /obj/effect/spawner/random/traders/federation_major
|
|
ship_template = /datum/map_template/shuttle/trader/sol
|
|
|
|
/datum/traders/cyber
|
|
trader_type = "Cybersun Industries"
|
|
trader_location = "-=ERROR: Unregistered Station Charter=-"
|
|
dock_site = "an undercover robotics factory"
|
|
trader_species = /mob/living/carbon/human
|
|
trader_outfit = /datum/outfit/admin/trader/cyber
|
|
trader_minor_special = /obj/effect/spawner/random/traders/cybersun_minor
|
|
trader_major_special = /obj/effect/spawner/random/traders/cybersun_major
|
|
ship_template = /datum/map_template/shuttle/trader/cybersun
|
|
|
|
/datum/traders/commie
|
|
trader_type = "USSP"
|
|
trader_location = "Belastrav"
|
|
dock_site = "Belastrav Station"
|
|
trader_species = /mob/living/carbon/human
|
|
trader_outfit = /datum/outfit/admin/trader/commie
|
|
trader_minor_special = /obj/effect/spawner/random/traders/ussp_minor
|
|
trader_major_special = /obj/effect/spawner/random/traders/ussp_major
|
|
ship_template = /datum/map_template/shuttle/trader/ussp
|
|
|
|
/datum/traders/unathi
|
|
trader_type = "Glint Scales"
|
|
trader_location = "Moghes"
|
|
dock_site = "a Glint-Scale outpost"
|
|
trader_species = /mob/living/carbon/human/unathi
|
|
trader_outfit = /datum/outfit/admin/trader/unathi
|
|
trader_minor_special = /obj/effect/spawner/random/traders/glintscale_minor
|
|
trader_major_special = /obj/effect/spawner/random/traders/glintscale_major
|
|
ship_template = /datum/map_template/shuttle/trader/glint_scale
|
|
|
|
/datum/traders/vulp
|
|
trader_type = "Steadfast Trading Co."
|
|
trader_location = "Vazzend"
|
|
dock_site = "the MV Steadfast Platinum"
|
|
trader_species = /mob/living/carbon/human/vulpkanin
|
|
trader_outfit = /datum/outfit/admin/trader/vulp
|
|
trader_minor_special = /obj/effect/spawner/random/traders/steadfast_minor
|
|
trader_major_special = /obj/effect/spawner/random/traders/steadfast_major
|
|
ship_template = /datum/map_template/shuttle/trader/steadfast
|
|
|
|
/datum/traders/ipc
|
|
trader_type = "Synthetic Union"
|
|
trader_location = "Cadraenov Epsilon"
|
|
dock_site = "Cadraenov Station"
|
|
trader_species = /mob/living/carbon/human/machine
|
|
trader_outfit = /datum/outfit/admin/trader/ipc
|
|
trader_minor_special = /obj/effect/spawner/random/traders/syntheticunion_minor
|
|
trader_major_special = /obj/effect/spawner/random/traders/syntheticunion_major
|
|
ship_template = /datum/map_template/shuttle/trader/synthetic
|
|
|
|
/datum/traders/vox
|
|
trader_type = "Skipjack"
|
|
trader_location = "a nearby skipjack"
|
|
dock_site = "a trading skipjack"
|
|
trader_species = /mob/living/carbon/human/vox
|
|
trader_outfit = /datum/outfit/admin/trader/vox
|
|
trader_minor_special = /obj/effect/spawner/random/traders/skipjack_minor
|
|
trader_major_special = /obj/effect/spawner/random/traders/skipjack_major
|
|
ship_template = /datum/map_template/shuttle/trader/skipjack
|
|
|
|
/datum/traders/skrell
|
|
trader_type = "Skrellian Central Authority"
|
|
trader_location = "the Crown"
|
|
dock_site = "Crown Station"
|
|
trader_species = /mob/living/carbon/human/skrell
|
|
trader_outfit = /datum/outfit/admin/trader/skrell
|
|
trader_minor_special = /obj/effect/spawner/random/traders/solarcentral_minor
|
|
trader_major_special = /obj/effect/spawner/random/traders/solarcentral_major
|
|
ship_template = /datum/map_template/shuttle/trader/skrell
|
|
|
|
/datum/traders/grey
|
|
trader_type = "Technocracy"
|
|
trader_location = "Mauna-b"
|
|
dock_site = "Orbital Commerce Outpost 58"
|
|
trader_species = /mob/living/carbon/human/grey
|
|
trader_outfit = /datum/outfit/admin/trader/grey
|
|
trader_minor_special = /obj/effect/spawner/random/traders/technocracy_minor
|
|
trader_major_special = /obj/effect/spawner/random/traders/technocracy_major
|
|
ship_template = /datum/map_template/shuttle/trader/technocracy
|
|
|
|
/datum/traders/nian
|
|
trader_type = "Merchant Guild"
|
|
trader_location = "the Nian Merchant Guild"
|
|
dock_site = "Guild Subsidiary Station 'Gilded Comet'"
|
|
trader_species = /mob/living/carbon/human/moth
|
|
trader_outfit = /datum/outfit/admin/trader/nian
|
|
trader_minor_special = /obj/effect/spawner/random/traders/merchantguild_minor
|
|
trader_major_special = /obj/effect/spawner/random/traders/merchantguild_major
|
|
ship_template = /datum/map_template/shuttle/trader/guild
|