Merge remote-tracking branch 'Upstream/master'

This commit is contained in:
The0bserver
2021-04-02 19:57:41 -04:00
10 changed files with 192 additions and 193 deletions
-64
View File
@@ -33,70 +33,6 @@
/datum/sabotage_objective/processing/check_conditions()
return won
/*
/datum/sabotage_objective/processing/power_sink
name = "Drain at least 100 megajoules of power using a power sink."
sabotage_type = "powersink"
special_equipment = list(/obj/item/sbeacondrop/powersink)
var/sink_found = FALSE
var/count = 0
/datum/sabotage_objective/processing/power_sink/check_condition_processing()
for(var/s in GLOB.power_sinks)
var/obj/item/powersink/sink = s
won = max(won,sink.power_drained/1e8)
*/
/obj/item/paper/guides/antag/supermatter_sabotage
info = "Ways to sabotage a supermatter:<br>\
<ul>\
<li>Set the air alarm's operating mode to anything that isn't 'draught' (yes, anything, though 'off' works best). Or just smash the air alarm, that works too.</li>\
<li>Wrench a pipe (the junction to the cold loop is most effective, but some setups will robust through this no issue; best to try for multiple)</li>\
<li>Pump in as much carbon dioxide, oxygen, plasma or tritium as you can find (this will likely also cause a singularity or tesla delamination, so watch out!)</li>\
<li>Unset the filters on the cooling loop, or, perhaps more insidious, set them to oxygen/plasma.</li>\
<li>Deactivate the digital valve that sends the exhaust gases to space (note: only works on box station; others you must unwrench).</li>\
<li>There are many other ways; be creative!</li>\
</ul>"
/*/datum/sabotage_objective/processing/supermatter
name = "Sabotage the supermatter so that it goes under 50% integrity. If it is delaminated, you will fail."
sabotage_type = "supermatter"
special_equipment = list(/obj/item/paper/guides/antag/supermatter_sabotage)
var/list/supermatters = list()
excludefromjob = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
/datum/sabotage_objective/processing/supermatter/check_condition_processing()
if(!supermatters.len)
supermatters = list()
for(var/obj/machinery/power/supermatter_crystal/S in GLOB.machines)
// Delaminating, not within coverage, not on a tile.
if (!isturf(S.loc) || !(is_station_level(S.z) || is_mining_level(S.z)))
continue
supermatters.Add(S)
for(var/obj/machinery/power/supermatter_crystal/S in supermatters) // you can win this with a wishgranter... lol.
won = max(1-((S.get_integrity()-50)/50),won)
return FALSE
/datum/sabotage_objective/processing/supermatter/can_run()
return (locate(/obj/machinery/power/supermatter_crystal) in GLOB.machines)
/datum/sabotage_objective/station_integrity
name = "Make sure the station is at less than 80% integrity by the end. Smash walls, windows etc. to reach this goal."
sabotage_type = "integrity"
/datum/sabotage_objective/station_integrity/check_conditions()
return 5-(max(SSticker.station_integrity*4,320)/80)
*/
/datum/sabotage_objective/cloner
name = "Destroy all Nanotrasen cloning machines."
sabotage_type = "cloner"
/datum/sabotage_objective/cloner/check_conditions()
for(var/obj/machinery/clonepod/cloner in GLOB.machines)
if(is_station_level(cloner.z))
return FALSE
return TRUE
/datum/sabotage_objective/ai_law
name = "Upload a hacked law to the AI."
sabotage_type = "ailaw"
+68 -59
View File
@@ -7,6 +7,10 @@
earliest_start = 30 MINUTES
gamemode_blacklist = list("nuclear")
#define PIRATES_ROGUES "Rogues"
// #define PIRATES_SILVERSCALES "Silverscales"
// #define PIRATES_DUTCHMAN "Flying Dutchman"
/datum/round_event_control/pirates/preRunEvent()
if (!SSmapping.empty_space)
return EVENT_CANT_RUN
@@ -15,31 +19,54 @@
/datum/round_event/pirates
startWhen = 60 //2 minutes to answer
var/datum/comm_message/threat_message
var/datum/comm_message/threat_msg
var/payoff = 0
var/payoff_min = 20000
var/paid_off = FALSE
var/pirate_type
var/ship_template
var/ship_name = "Space Privateers Association"
var/shuttle_spawned = FALSE
/datum/round_event/pirates/setup()
ship_name = pick(strings(PIRATE_NAMES_FILE, "ship_names"))
pirate_type = PIRATES_ROGUES //pick(PIRATES_ROGUES, PIRATES_SILVERSCALES, PIRATES_DUTCHMAN)
switch(pirate_type)
if(PIRATES_ROGUES)
ship_name = pick(strings(PIRATE_NAMES_FILE, "rogue_names"))
// if(PIRATES_SILVERSCALES)
// ship_name = pick(strings(PIRATE_NAMES_FILE, "silverscale_names"))
// if(PIRATES_DUTCHMAN)
// ship_name = "Flying Dutchman"
/datum/round_event/pirates/announce(fake)
priority_announce("A business proposition has been downloaded and printed out at all communication consoles.", "Incoming Business Proposition", "commandreport")
priority_announce("Incoming subspace communication. Secure channel opened at all communication consoles.", "Incoming Message", "commandreport")
if(fake)
return
threat_message = new
threat_msg = new
var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR)
if(D)
payoff = round(D.account_balance * 0.80)
threat_message.title = "Business proposition"
threat_message.content = "This is [ship_name]. Pay up [payoff] credits or you'll walk the plank."
threat_message.possible_answers = list("We'll pay.","No way.")
threat_message.answer_callback = CALLBACK(src,.proc/answered)
SScommunications.send_message(threat_message,unique = TRUE)
payoff = max(payoff_min, FLOOR(D.account_balance * 0.80, 1000))
switch(pirate_type)
if(PIRATES_ROGUES)
ship_template = /datum/map_template/shuttle/pirate/default
threat_msg.title = "Sector protection offer"
threat_msg.content = "Hey, pal, this is the [ship_name]. Can't help but notice you're rocking a wild and crazy shuttle there with NO INSURANCE! Crazy. What if something happened to it, huh?! We've done a quick evaluation on your rates in this sector and we're offering [payoff] to cover for your shuttle in case of any disaster."
threat_msg.possible_answers = list("Purchase Insurance.","Reject Offer.")
// if(PIRATES_SILVERSCALES)
// ship_template = /datum/map_template/shuttle/pirate/silverscale
// threat_msg.title = "Tribute to high society"
// threat_msg.content = "This is the [ship_name]. The Silver Scales wish for some tribute from your plebeian lizards. [payoff] credits should do the trick."
// threat_msg.possible_answers = list("We'll pay.","Tribute? Really? Go away.")
// if(PIRATES_DUTCHMAN)
// ship_template = /datum/map_template/shuttle/pirate/dutchman
// threat_msg.title = "Business proposition"
// threat_msg.content = "Ahoy! This be the [ship_name]. Cough up [payoff] credits or you'll walk the plank."
// threat_msg.possible_answers = list("We'll pay.","We will not be extorted.")
threat_msg.answer_callback = CALLBACK(src,.proc/answered)
SScommunications.send_message(threat_msg,unique = TRUE)
/datum/round_event/pirates/proc/answered()
if(threat_message && threat_message.answered == 1)
if(threat_msg && threat_msg.answered == 1)
var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR)
if(D)
if(D.adjust_money(-payoff))
@@ -49,10 +76,14 @@
else
priority_announce("Trying to cheat us? You'll regret this!",sender_override = ship_name)
if(!shuttle_spawned)
priority_announce("You won't listen to reason? Then we'll take what's yours or die trying!",sender_override = ship_name)
spawn_shuttle()
else
priority_announce("Too late to beg for mercy!",sender_override = ship_name)
/datum/round_event/pirates/start()
if(threat_msg && !threat_msg.answered)
threat_msg.possible_answers = list("Too late")
threat_msg.answered = 1
if(!paid_off && !shuttle_spawned)
spawn_shuttle()
@@ -62,10 +93,7 @@
var/list/candidates = pollGhostCandidates("Do you wish to be considered for pirate crew?", ROLE_TRAITOR)
shuffle_inplace(candidates)
if(!SSmapping.empty_space)
SSmapping.empty_space = SSmapping.add_new_zlevel("Empty Area For Pirates", list(ZTRAIT_LINKAGE = SELFLOOPING))
var/datum/map_template/shuttle/pirate/default/ship = new
var/datum/map_template/shuttle/pirate/ship = new ship_template
var/x = rand(TRANSITIONEDGE,world.maxx - TRANSITIONEDGE - ship.width)
var/y = rand(TRANSITIONEDGE,world.maxy - TRANSITIONEDGE - ship.height)
var/z = SSmapping.empty_space.z_value
@@ -75,6 +103,7 @@
if(!ship.load(T))
CRASH("Loading pirate ship failed!")
for(var/turf/A in ship.get_affected_turfs(T))
for(var/obj/effect/mob_spawn/human/pirate/spawner in A)
if(candidates.len > 0)
@@ -84,7 +113,8 @@
announce_to_ghosts(M)
else
announce_to_ghosts(spawner)
priority_announce("Unidentified ship detected near the station.")
priority_announce("Unidentified armed ship detected near the station.")
//Shuttle equipment
@@ -145,7 +175,7 @@
new /obj/effect/temp_visual/emp(get_turf(S))
/obj/machinery/shuttle_scrambler/proc/dump_loot(mob/user)
if(credits_stored) // Prevents spamming empty holochips
if(credits_stored) // Prevents spamming empty holochips
new /obj/item/holochip(drop_location(), credits_stored)
to_chat(user,"<span class='notice'>You retrieve the siphoned credits!</span>")
credits_stored = 0
@@ -161,10 +191,8 @@
STOP_PROCESSING(SSobj,src)
/obj/machinery/shuttle_scrambler/update_icon_state()
if(active)
icon_state = "dominator-blue"
else
icon_state = "dominator"
icon_state = active ? "dominator-blue" : "dominator"
return ..()
/obj/machinery/shuttle_scrambler/Destroy()
toggle_off()
@@ -175,7 +203,6 @@
shuttleId = "pirateship"
icon_screen = "syndishuttle"
icon_keyboard = "syndie_key"
resistance_flags = INDESTRUCTIBLE
light_color = LIGHT_COLOR_RED
possible_destinations = "pirateship_away;pirateship_home;pirateship_custom"
@@ -183,7 +210,6 @@
name = "pirate shuttle navigation computer"
desc = "Used to designate a precise transit location for the pirate shuttle."
shuttleId = "pirateship"
resistance_flags = INDESTRUCTIBLE
lock_override = CAMERA_LOCK_STATION
shuttlePortId = "pirateship_custom"
x_offset = 9
@@ -193,41 +219,20 @@
/obj/docking_port/mobile/pirate
name = "pirate shuttle"
id = "pirateship"
var/engines_cooling = FALSE
var/engine_cooldown = 3 MINUTES
/obj/docking_port/mobile/pirate/getStatusText()
. = ..()
if(engines_cooling)
return "[.] - Engines cooling."
/obj/docking_port/mobile/pirate/initiate_docking(obj/docking_port/stationary/new_dock, movement_direction, force=FALSE)
. = ..()
if(. == DOCKING_SUCCESS && !is_reserved_level(new_dock.z))
engines_cooling = TRUE
addtimer(CALLBACK(src,.proc/reset_cooldown),engine_cooldown,TIMER_UNIQUE)
/obj/docking_port/mobile/pirate/proc/reset_cooldown()
engines_cooling = FALSE
/obj/docking_port/mobile/pirate/canMove()
if(engines_cooling)
return FALSE
return ..()
rechargeTime = 3 MINUTES
/obj/machinery/suit_storage_unit/pirate
suit_type = /obj/item/clothing/suit/space
helmet_type = /obj/item/clothing/head/helmet/space
mask_type = /obj/item/clothing/mask/breath
storage_type = /obj/item/tank/jetpack/void
// storage_type = /obj/item/tank/internals/oxygen
/obj/machinery/loot_locator
name = "Booty Locator"
desc = "This sophisticated machine scans the nearby space for items of value."
icon = 'icons/obj/machines/research.dmi'
icon_state = "tdoppler"
resistance_flags = INDESTRUCTIBLE
density = TRUE
var/cooldown = 300
var/next_use = 0
@@ -261,23 +266,20 @@
name = "cargo hold pad"
icon = 'icons/obj/telescience.dmi'
icon_state = "lpad-idle-o"
resistance_flags = INDESTRUCTIBLE
var/idle_state = "lpad-idle-o"
var/warmup_state = "lpad-idle"
var/sending_state = "lpad-beam"
var/cargo_hold_id
/obj/machinery/piratepad/multitool_act(mob/living/user, obj/item/I)
if(I.tool_behaviour == TOOL_MULTITOOL)
/obj/machinery/piratepad/multitool_act(mob/living/user, obj/item/multitool/I)
. = ..()
if (istype(I))
to_chat(user, "<span class='notice'>You register [src] in [I]s buffer.</span>")
I.buffer = src
return TRUE
/obj/machinery/computer/piratepad_control
name = "cargo hold control terminal"
resistance_flags = INDESTRUCTIBLE
ui_x = 600
ui_y = 230
var/status_report = "Ready for delivery."
var/obj/machinery/piratepad/pad
var/warmup_time = 100
@@ -291,8 +293,9 @@
..()
return INITIALIZE_HINT_LATELOAD
/obj/machinery/computer/piratepad_control/multitool_act(mob/living/user, obj/item/I)
if(I.tool_behaviour == TOOL_MULTITOOL && istype(I.buffer,/obj/machinery/piratepad))
/obj/machinery/computer/piratepad_control/multitool_act(mob/living/user, obj/item/multitool/I)
. = ..()
if (istype(I) && istype(I.buffer,/obj/machinery/piratepad))
to_chat(user, "<span class='notice'>You link [src] with [I.buffer] in [I] buffer.</span>")
pad = I.buffer
return TRUE
@@ -322,7 +325,8 @@
return data
/obj/machinery/computer/piratepad_control/ui_act(action, params)
if(..())
. = ..()
if(.)
return
if(!pad)
return
@@ -341,6 +345,7 @@
/obj/machinery/computer/piratepad_control/proc/recalc()
if(sending)
return
status_report = "Predicted value: "
var/value = 0
var/datum/export_report/ex = new
@@ -386,11 +391,13 @@
for(var/datum/export/E in ex.total_amount)
total_report.total_amount[E] += ex.total_amount[E]
total_report.total_value[E] += ex.total_value[E]
// playsound(loc, 'sound/machines/wewewew.ogg', 70, TRUE)
points += value
if(!value)
status_report += "Nothing"
pad.visible_message("<span class='notice'>[pad] activates!</span>")
flick(pad.sending_state,pad)
pad.icon_state = pad.idle_state
@@ -400,16 +407,18 @@
if(sending)
return
sending = TRUE
status_report = "Sending..."
status_report = "Sending... "
pad.visible_message("<span class='notice'>[pad] starts charging up.</span>")
pad.icon_state = pad.warmup_state
sending_timer = addtimer(CALLBACK(src,.proc/send),warmup_time, TIMER_STOPPABLE)
/obj/machinery/computer/piratepad_control/proc/stop_sending()
/obj/machinery/computer/piratepad_control/proc/stop_sending(custom_report)
if(!sending)
return
sending = FALSE
status_report = "Idle"
status_report = "Ready for delivery."
if(custom_report)
status_report = custom_report
pad.icon_state = pad.idle_state
deltimer(sending_timer)
@@ -905,6 +905,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
mob_eye.observers |= src
mob_eye.hud_used.show_hud(mob_eye.hud_used.hud_version, src)
observetarget = mob_eye
mob_eye.investigate_log("was observed by [src] as a ghost.", INVESTIGATE_GHOST)
/mob/dead/observer/verb/register_pai_candidate()
set category = "Ghost"
@@ -29,7 +29,7 @@
verb_yell = "buzzes intensely"
emote_see = list("buzzes.", "makes a loud buzz.", "rolls several times.", "buzzes happily.")
speak_chance = 1
unique_name = TRUE
unique_name = FALSE
/mob/living/simple_animal/pet/bumbles/Initialize()
. = ..()
+6 -39
View File
@@ -50,6 +50,12 @@
-->
<div class="commit sansserif">
<h2 class="date">02 April 2021</h2>
<h3 class="author">LetterN updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">piratepayment</li>
</ul>
<h2 class="date">29 March 2021</h2>
<h3 class="author">BlueWildrose updated:</h3>
<ul class="changes bgimages16">
@@ -893,45 +899,6 @@
<li class="rscadd">some more FUCKING hairs</li>
<li class="imageadd">uncodersprites the advanced extinguisher</li>
</ul>
<h2 class="date">29 January 2021</h2>
<h3 class="author">MrJWhit updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Ported the QM, Captain, CMO, and HoS cloaks from beestation.</li>
<li class="rscdel">Removes excess air alarms from boxstation</li>
</ul>
<h3 class="author">TripleShades updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">fixes engineering secure storage being the wrong area because I fucked that up previously my bad</li>
<li class="bugfix">removes funny extra light switch under right surgery table in surgery oops</li>
<li class="rscadd">Added chairs to the corpse launch viewing area</li>
<li class="rscadd">Small garden plot for flowers for parity with other station Chapels</li>
<li class="rscadd">Plain Bible to glass tables in Chapel</li>
<li class="rscadd">Candles and Matchbox to glass tables in Chapel</li>
<li class="rscadd">More glass tables, with a chaplain figure and another spare bible.</li>
<li class="rscadd">Bookcase to Box Chapel for parity with other station Chapels</li>
<li class="rscadd">Minimoog to Box Chapel as substitute for a church organ</li>
<li class="rscadd">Holy department sign just below Chapel change: Expanded the corpse launching area to feel less congested change: Added windows to the corpse launch so you can look inside I guess? change: Moved flowers and burial garments to the corner next to the corpse launcher change: Box Chaplain's office door is moved over one change: Confessional is now connected to Chaplain's office for parity with other station Chapels change: Moved coffins over to old confessional location change: Box Chapel now has pews instead of stools change: Box Chapel Confessional is now lit instead of being nearly pitch black remove: Two coffins from Chapel</li>
</ul>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">the miner bedsheet will now increment its progress when you redeem points from the ORM</li>
<li class="rscadd">you can add custom names and descriptions to item's on the loadout now</li>
</ul>
<h3 class="author">zeroisthebiggay updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">roundstart aesthetic sterile masks and roundstart paper masks</li>
<li class="rscadd">more accessory slot items</li>
<li class="rscadd">cowbell necklace happy 2021</li>
<li class="rscadd">shibari ropes & torn pantyhose</li>
</ul>
<h2 class="date">28 January 2021</h2>
<h3 class="author">silicons updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">colormates can now paint some mobs.</li>
<li class="bugfix">1 dev explosions shouldn't delete brains anymore</li>
</ul>
</div>
<b>GoonStation 13 Development Team</b>
+3
View File
@@ -28938,3 +28938,6 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
- rscadd: Added Smoke Grenade
silicons:
- bugfix: automated hydroponics system design now works properly
2021-04-02:
LetterN:
- bugfix: piratepayment
@@ -0,0 +1,5 @@
author: "Putnam3145"
delete-after: True
changes:
- rscdel: "\"Destroy all nanotrasen cloning machines\" objective is gone"
- code_imp: "Removed all the commented-out sabotage objectives (we can just get them from history)"
@@ -0,0 +1,4 @@
author: "Putnam3145"
delete-after: True
changes:
- rscadd: "Observe verb logging"
@@ -0,0 +1,4 @@
author: "BlueWildrose"
delete-after: True
changes:
- bugfix: "The hydroponics pet bee, Bumbles no longer has a number besides their name."
+100 -30
View File
@@ -1,31 +1,101 @@
{
"beginnings":[
"Star",
"Oort",
"Comet",
"Pulsar",
"Plasma",
"Void",
"Space",
"Solar",
"Laser",
"Ion"
],
"endings":[
"keel",
"beard",
"bilge",
"hull",
"hook",
"flag",
"deck",
"salt",
"knot",
"fish",
"helm"
],
"ship_names":[
"Space Queen's Revenge",
"Syndicate Privateer"
]
}
"beginnings":[
"Comet",
"Ion",
"Laser",
"Oort",
"Plasma",
"Pulsar",
"Solar",
"Space",
"Star",
"Void"
],
"endings":[
"beard",
"bilge",
"deck",
"fish",
"flag",
"helm",
"hook",
"hull",
"keel",
"knot",
"salt"
],
"rogue_names":[
"Abyssal Titan",
"Ashes to Ashes",
"Asteroid Blaster",
"Asteroid Dragger",
"Bellowing Spacedragon",
"Blargbeam Solar-slider",
"Blood Money",
"Cosmic Gunboat",
"Customer Service",
"Deadman's Switch",
"Diplomacy Disputer",
"Driftbeam",
"Echoing Laughter",
"Electric Boogaloo",
"Fat Leg",
"Heaven's Cavaliers",
"I Am Become Death",
"I Love the Bomb",
"Ickity Pickety Startooth Knuckle Dragger",
"John Ship",
"Lizard Melter",
"Lost in Deep Space",
"Missile Rack",
"Moth Splatterer",
"New Sins for Old",
"One Last Job",
"Paint Asteroids Red",
"Pastafarianism",
"Raging Meteor",
"Reverse Far Leap",
"Scourge of the Milky Way",
"Silicon Policy",
"Space Grease",
"Space Justice",
"Space Pearl",
"Star Scraper",
"War as a Business",
"Xenophobia",
"Space Queen's Revenge",
"Syndicate Privateer"
],
"silverscale_names":[
"Antelope's Run",
"Aristocrat's Principle",
"Aristocratic Tributary",
"Bane of Serfs",
"Benevolence of the Serpentine",
"Casus Belli",
"Celestial Lizardhawk",
"Divine Space Wind",
"Empire Sprawl",
"Guiding Hand",
"His Majesty's Chosen",
"Home Away from Home",
"Jewel of Tizira",
"Manifest Destiny",
"Necessary Evil",
"Pearly Gates",
"Pinnacle of the Stratocracy",
"Prince Regent",
"Right to Rule",
"Ruling Body",
"Serpentine Dominion",
"Silver Fox",
"Silver Sterling",
"Silverchain's Sovereignty",
"Spaceflower",
"Status Quo",
"Swords and Sandals",
"Thesaurus Terror",
"Archduke's Silver Ring",
"Silver Steed"
]
}