mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Merge remote-tracking branch 'origin/master' into luciee
This commit is contained in:
1
.github/CODEOWNERS
vendored
1
.github/CODEOWNERS
vendored
@@ -20,6 +20,7 @@
|
||||
/html/templates/ @yogstation13/head-coders
|
||||
/sound/ @yogstation13/head-coders
|
||||
/yogstation/sound/ @yogstation13/head-coders
|
||||
/yogstation/code/game/world.dm @yogstation13/head-coders
|
||||
|
||||
#Teams
|
||||
|
||||
|
||||
124
_maps/RandomRuins/StationRuins/maint/5x3/5x3_smallfish.dmm
Normal file
124
_maps/RandomRuins/StationRuins/maint/5x3/5x3_smallfish.dmm
Normal file
@@ -0,0 +1,124 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"b" = (
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"d" = (
|
||||
/turf/open/water/safe,
|
||||
/area/template_noop)
|
||||
"e" = (
|
||||
/obj/machinery/vending/fishing,
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"g" = (
|
||||
/obj/effect/turf_decal/pool/corner{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"h" = (
|
||||
/obj/effect/turf_decal/pool,
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"k" = (
|
||||
/obj/effect/turf_decal/pool/corner{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"l" = (
|
||||
/obj/effect/turf_decal/pool{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"p" = (
|
||||
/obj/effect/turf_decal/pool,
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"q" = (
|
||||
/obj/effect/turf_decal/pool/corner,
|
||||
/obj/effect/spawner/lootdrop/trashbin{
|
||||
pixel_x = -2;
|
||||
pixel_y = -7
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"I" = (
|
||||
/obj/effect/turf_decal/pool{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"J" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/effect/decal/cleanable/vomit/old,
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"N" = (
|
||||
/obj/effect/turf_decal/pool{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/chair/stool/bamboo,
|
||||
/obj/item/twohanded/fishingrod{
|
||||
pixel_x = -6;
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/item/reagent_containers/food/snacks/fish/goldfish{
|
||||
bitecount = 0;
|
||||
length = 1;
|
||||
pixel_x = 7;
|
||||
pixel_y = 9;
|
||||
weight = 2
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"R" = (
|
||||
/obj/effect/turf_decal/pool{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
pixel_x = -7;
|
||||
pixel_y = -7
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
"Y" = (
|
||||
/obj/effect/turf_decal/pool/corner{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/template_noop)
|
||||
|
||||
(1,1,1) = {"
|
||||
q
|
||||
l
|
||||
g
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
h
|
||||
d
|
||||
I
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
p
|
||||
d
|
||||
R
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
Y
|
||||
N
|
||||
k
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
e
|
||||
J
|
||||
b
|
||||
"}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"aa" = (
|
||||
/turf/open/space,
|
||||
/area/space)
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"ab" = (
|
||||
/obj/machinery/door/airlock/shuttle{
|
||||
name = "cargo bay";
|
||||
@@ -92,6 +92,9 @@
|
||||
"al" = (
|
||||
/obj/structure/closet/emcloset,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/pen,
|
||||
/obj/item/pen,
|
||||
/obj/item/pen,
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/abandoned)
|
||||
"am" = (
|
||||
@@ -309,7 +312,9 @@
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/abandoned)
|
||||
"aN" = (
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship/miner,
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship/miner{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/white,
|
||||
/area/shuttle/abandoned)
|
||||
"aO" = (
|
||||
@@ -679,6 +684,12 @@
|
||||
"fw" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/photo_album,
|
||||
/obj/item/paper/crumpled{
|
||||
inertia_dir = 0;
|
||||
info = "It was bugging me that we didn't have pens, so I looted a ruin for some more. They're in the emergency closet. -E";
|
||||
pixel_x = 1;
|
||||
pixel_y = 6
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/white,
|
||||
/area/shuttle/abandoned)
|
||||
"gv" = (
|
||||
@@ -886,7 +897,7 @@
|
||||
height = 15;
|
||||
id = "whiteship";
|
||||
launch_status = 0;
|
||||
movement_force = list("KNOCKDOWN" = 0, "THROW" = 0);
|
||||
movement_force = list("KNOCKDOWN"=0,"THROW"=0);
|
||||
name = "Free Miner Ship";
|
||||
port_direction = 8;
|
||||
preferred_direction = 4;
|
||||
@@ -905,7 +916,9 @@
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/abandoned)
|
||||
"pP" = (
|
||||
/obj/machinery/computer/shuttle/white_ship/miner,
|
||||
/obj/machinery/computer/shuttle/white_ship/miner{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/white,
|
||||
/area/shuttle/abandoned)
|
||||
"qA" = (
|
||||
@@ -1055,6 +1068,7 @@
|
||||
pixel_x = -1;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/item/pen/fountain,
|
||||
/turf/open/floor/mineral/titanium/white,
|
||||
/area/shuttle/abandoned)
|
||||
"Fj" = (
|
||||
|
||||
@@ -44,10 +44,10 @@
|
||||
return ..() || ((obj_flags & CAN_BE_HIT) && I.attack_obj(src, user))
|
||||
|
||||
/mob/living/attackby(obj/item/I, mob/living/user, params)
|
||||
var/dist = get_dist(src,user)
|
||||
if(..())
|
||||
return TRUE
|
||||
var/dist = get_dist(src,user)
|
||||
user.changeNext_move(CLICK_CD_MELEE * I.weapon_stats[SWING_SPEED] * (I.range_cooldown_mod ? (dist > 0 ? dist * I.range_cooldown_mod : I.range_cooldown_mod) : 1)) //range increases attack cooldown by swing speed
|
||||
user.changeNext_move(CLICK_CD_MELEE * I.weapon_stats[SWING_SPEED] * (I.range_cooldown_mod ? (dist > 0 ? min(dist, I.weapon_stats[REACH]) * I.range_cooldown_mod : I.range_cooldown_mod) : 1)) //range increases attack cooldown by swing speed
|
||||
user.weapon_slow(I)
|
||||
if(user.a_intent == INTENT_HARM && stat == DEAD && (butcher_results || guaranteed_butcher_results)) //can we butcher it?
|
||||
var/datum/component/butchering/butchering = I.GetComponent(/datum/component/butchering)
|
||||
@@ -110,7 +110,7 @@
|
||||
if(item_flags & NOBLUDGEON)
|
||||
return
|
||||
var/dist = get_dist(O,user)
|
||||
user.changeNext_move(CLICK_CD_MELEE * weapon_stats[SWING_SPEED] * (range_cooldown_mod ? (dist > 0 ? dist * range_cooldown_mod : range_cooldown_mod) : 1)) //range increases attack cooldown by swing speed
|
||||
user.changeNext_move(CLICK_CD_MELEE * weapon_stats[SWING_SPEED] * (range_cooldown_mod ? (dist > 0 ? min(dist, weapon_stats[REACH]) * range_cooldown_mod : range_cooldown_mod) : 1)) //range increases attack cooldown by swing speed
|
||||
user.do_attack_animation(O)
|
||||
O.attacked_by(src, user)
|
||||
user.weapon_slow(src)
|
||||
|
||||
@@ -66,7 +66,7 @@ SUBSYSTEM_DEF(demo)
|
||||
/datum/controller/subsystem/demo/Initialize()
|
||||
WRITE_LOG_NO_FORMAT(GLOB.demo_log, "demo version 1\n") // increment this if you change the format
|
||||
if(GLOB.revdata)
|
||||
WRITE_LOG_NO_FORMAT(GLOB.demo_log, "commit [GLOB.revdata.originmastercommit || GLOB.revdata.commit]\n")
|
||||
WRITE_LOG_NO_FORMAT(GLOB.demo_log, "commit [GLOB.revdata.commit || GLOB.revdata.originmastercommit]\n")
|
||||
|
||||
// write a "snapshot" of the world at this point.
|
||||
// start with turfs
|
||||
|
||||
@@ -58,15 +58,15 @@
|
||||
|
||||
var/time_required = 0 // Framework for future setting of required time for antag roles
|
||||
|
||||
/datum/game_mode/proc/announce() //Shows the gamemode's name and a fast description.
|
||||
/// Shows the gamemode's name and a fast description.
|
||||
/datum/game_mode/proc/announce()
|
||||
to_chat(world, "<b>The gamemode is: <span class='[announce_span]'>[name]</span>!</b>")
|
||||
to_chat(world, "<b>[announce_text]</b>")
|
||||
|
||||
/datum/game_mode/proc/admin_panel()
|
||||
return
|
||||
|
||||
|
||||
///Checks to see if the game can be setup and ran with the current number of players or whatnot.
|
||||
/// Checks to see if the game can be setup and ran with the current number of players or whatnot.
|
||||
/datum/game_mode/proc/can_start()
|
||||
var/playerC = 0
|
||||
var/unreadiedPlayers = 0
|
||||
@@ -90,9 +90,9 @@
|
||||
return TRUE
|
||||
|
||||
|
||||
///Attempts to select players for special roles the mode might have.
|
||||
/// Attempts to select players for special roles the mode might have.
|
||||
/datum/game_mode/proc/pre_setup()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
///Everyone should now be on the station and have their normal gear. This is the place to give the special roles extra things
|
||||
/datum/game_mode/proc/post_setup(report) //Gamemodes can override the intercept report. Passing TRUE as the argument will force a report.
|
||||
@@ -131,17 +131,17 @@
|
||||
addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h))
|
||||
generate_station_goals()
|
||||
gamemode_ready = TRUE
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
///Handles late-join antag assignments
|
||||
/// Handles late-join antag assignments
|
||||
/datum/game_mode/proc/make_antag_chance(mob/living/carbon/human/character)
|
||||
if(replacementmode && round_converted == 2)
|
||||
replacementmode.make_antag_chance(character)
|
||||
return
|
||||
|
||||
|
||||
///Allows rounds to basically be "rerolled" should the initial premise fall through. Also known as mulligan antags.
|
||||
/// Allows rounds to basically be "rerolled" should the initial premise fall through. Also known as mulligan antags.
|
||||
/datum/game_mode/proc/convert_roundtype()
|
||||
set waitfor = FALSE
|
||||
var/list/living_crew = list()
|
||||
@@ -170,10 +170,10 @@
|
||||
|
||||
switch(SSshuttle.emergency.mode) //Rounds on the verge of ending don't get new antags, they just run out
|
||||
if(SHUTTLE_STRANDED, SHUTTLE_ESCAPE)
|
||||
return 1
|
||||
return TRUE
|
||||
if(SHUTTLE_CALL)
|
||||
if(SSshuttle.emergency.timeLeft(1) < initial(SSshuttle.emergencyCallTime)*0.5)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
var/matc = CONFIG_GET(number/midround_antag_time_check)
|
||||
if(world.time >= (matc * 600))
|
||||
@@ -210,7 +210,7 @@
|
||||
//somewhere between 1 and 3 minutes from now
|
||||
if(!CONFIG_GET(keyed_list/midround_antag)[SSticker.mode.config_tag])
|
||||
round_converted = 0
|
||||
return 1
|
||||
return TRUE
|
||||
for(var/mob/living/carbon/human/H in antag_candidates)
|
||||
if(H.client)
|
||||
replacementmode.make_antag_chance(H)
|
||||
@@ -219,16 +219,17 @@
|
||||
message_admins("-- IMPORTANT: The roundtype has been converted to [replacementmode.name], antagonists may have been created! --")
|
||||
|
||||
|
||||
///Called by the gameSSticker
|
||||
/// Called by the SSticker fires every second
|
||||
/datum/game_mode/process()
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
//For things that do not die easily
|
||||
/// For things that do not die easily
|
||||
/datum/game_mode/proc/are_special_antags_dead()
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/game_mode/proc/check_finished(force_ending) //to be called by SSticker
|
||||
/// Determines if a gamemode should end the round
|
||||
/datum/game_mode/proc/check_finished(force_ending)
|
||||
if(!SSticker.setup_done || !gamemode_ready)
|
||||
return FALSE
|
||||
if(replacementmode && round_converted == 2)
|
||||
@@ -245,45 +246,45 @@
|
||||
if(Player.mind)
|
||||
if(Player.mind.special_role || LAZYLEN(Player.mind.antag_datums))
|
||||
continuous_sanity_checked = 1
|
||||
return 0
|
||||
return FALSE
|
||||
if(!continuous_sanity_checked)
|
||||
message_admins("The roundtype ([config_tag]) has no antagonists, continuous round has been defaulted to on and midround_antag has been defaulted to off.")
|
||||
continuous[config_tag] = TRUE
|
||||
midround_antag[config_tag] = FALSE
|
||||
SSshuttle.clearHostileEnvironment(src)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
|
||||
if(living_antag_player && living_antag_player.mind && isliving(living_antag_player) && living_antag_player.stat != DEAD && !isnewplayer(living_antag_player) &&!isbrain(living_antag_player) && (living_antag_player.mind.special_role || LAZYLEN(living_antag_player.mind.antag_datums)))
|
||||
return 0 //A resource saver: once we find someone who has to die for all antags to be dead, we can just keep checking them, cycling over everyone only when we lose our mark.
|
||||
return FALSE //A resource saver: once we find someone who has to die for all antags to be dead, we can just keep checking them, cycling over everyone only when we lose our mark.
|
||||
|
||||
for(var/mob/Player in GLOB.alive_mob_list)
|
||||
if(Player.mind && Player.stat != DEAD && !isnewplayer(Player) &&!isbrain(Player) && Player.client && (Player.mind.special_role || LAZYLEN(Player.mind.antag_datums))) //Someone's still antagging but is their antagonist datum important enough to skip mulligan?
|
||||
for(var/datum/antagonist/antag_types in Player.mind.antag_datums)
|
||||
if(antag_types.prevent_roundtype_conversion)
|
||||
living_antag_player = Player //they were an important antag, they're our new mark
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(!are_special_antags_dead())
|
||||
return FALSE
|
||||
|
||||
if(!continuous[config_tag] || force_ending)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
else
|
||||
round_converted = convert_roundtype()
|
||||
if(!round_converted)
|
||||
if(round_ends_with_antag_death)
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
midround_antag[config_tag] = 0
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
|
||||
/datum/game_mode/proc/check_win() //universal trigger to be called at mob death, nuke explosion, etc. To be called from everywhere.
|
||||
return 0
|
||||
// Checks if the antags have won
|
||||
/datum/game_mode/proc/check_win()
|
||||
return FALSE
|
||||
|
||||
/datum/game_mode/proc/send_intercept()
|
||||
var/intercepttext = "<b><i>Central Command Status Summary</i></b><hr>"
|
||||
@@ -338,18 +339,19 @@
|
||||
. += "[station_trait.get_report()]\n"
|
||||
return
|
||||
|
||||
// This is a frequency selection system. You may imagine it like a raffle where each player can have some number of tickets. The more tickets you have the more likely you are to
|
||||
// "win". The default is 100 tickets. If no players use any extra tickets (earned with the antagonist rep system) calling this function should be equivalent to calling the normal
|
||||
// pick() function. By default you may use up to 100 extra tickets per roll, meaning at maximum a player may double their chances compared to a player who has no extra tickets.
|
||||
//
|
||||
// The odds of being picked are simply (your_tickets / total_tickets). Suppose you have one player using fifty (50) extra tickets, and one who uses no extra:
|
||||
// Player A: 150 tickets
|
||||
// Player B: 100 tickets
|
||||
// Total: 250 tickets
|
||||
//
|
||||
// The odds become:
|
||||
// Player A: 150 / 250 = 0.6 = 60%
|
||||
// Player B: 100 / 250 = 0.4 = 40%
|
||||
/* This is a frequency selection system. You may imagine it like a raffle where each player can have some number of tickets. The more tickets you have the more likely you are to
|
||||
* "win". The default is 100 tickets. If no players use any extra tickets (earned with the antagonist rep system) calling this function should be equivalent to calling the normal
|
||||
* pick() function. By default you may use up to 100 extra tickets per roll, meaning at maximum a player may double their chances compared to a player who has no extra tickets.
|
||||
*
|
||||
* The odds of being picked are simply (your_tickets / total_tickets). Suppose you have one player using fifty (50) extra tickets, and one who uses no extra:
|
||||
* Player A: 150 tickets
|
||||
* Player B: 100 tickets
|
||||
* Total: 250 tickets
|
||||
*
|
||||
* The odds become:
|
||||
* Player A: 150 / 250 = 0.6 = 60%
|
||||
* Player B: 100 / 250 = 0.4 = 40%
|
||||
*/
|
||||
/datum/game_mode/proc/antag_pick(list/datum/candidates)
|
||||
if(GLOB.antag_token_users.len >= 1) //Antag token users get first priority, no matter their preferences
|
||||
var/client/C = pick_n_take(GLOB.antag_token_users)
|
||||
@@ -520,30 +522,30 @@
|
||||
|
||||
print_command_report(suicide_command_report, "Central Command Personnel Update")
|
||||
|
||||
/datum/game_mode/proc/get_living_by_department(var/department)
|
||||
|
||||
/// Gets all living crewmembers for a department
|
||||
/datum/game_mode/proc/get_living_by_department(department)
|
||||
. = list()
|
||||
for(var/mob/living/carbon/human/player in GLOB.mob_list)
|
||||
if(player.stat != DEAD && player.mind && (player.mind.assigned_role in department))
|
||||
. |= player.mind
|
||||
|
||||
/datum/game_mode/proc/get_all_by_department(var/department)
|
||||
/// Gets all crewmembers for a department including dead ones
|
||||
/datum/game_mode/proc/get_all_by_department(department)
|
||||
. = list()
|
||||
for(var/mob/player in GLOB.mob_list)
|
||||
if(player.mind && (player.mind.assigned_role in department))
|
||||
. |= player.mind
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//Keeps track of all living silicon members//
|
||||
/////////////////////////////////////////////
|
||||
|
||||
/// Gets all living silicon members
|
||||
/datum/game_mode/proc/get_living_silicon()
|
||||
. = list()
|
||||
for(var/mob/living/silicon/player in GLOB.mob_list)
|
||||
if(player.stat != DEAD && player.mind && (player.mind.assigned_role in GLOB.nonhuman_positions))
|
||||
. |= player.mind
|
||||
|
||||
///////////////////////////////////////
|
||||
//Keeps track of all silicon members //
|
||||
///////////////////////////////////////
|
||||
/// Gets all silicon members including dead ones
|
||||
/datum/game_mode/proc/get_all_silicon()
|
||||
. = list()
|
||||
for(var/mob/living/silicon/player in GLOB.mob_list)
|
||||
@@ -611,13 +613,14 @@
|
||||
for (var/C in GLOB.admins)
|
||||
to_chat(C, msg.Join())
|
||||
log_admin(msg.Join())
|
||||
//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1
|
||||
|
||||
/// If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1
|
||||
/datum/game_mode/proc/age_check(client/C)
|
||||
if(get_remaining_days(C) == 0)
|
||||
return 1 //Available in 0 days = available right now = player is old enough to play.
|
||||
return 0
|
||||
|
||||
return TRUE //Available in 0 days = available right now = player is old enough to play.
|
||||
return FALSE
|
||||
|
||||
/// Returns the numbers of days before the player can access a specific role
|
||||
/datum/game_mode/proc/get_remaining_days(client/C)
|
||||
if(!C)
|
||||
return 0
|
||||
@@ -630,6 +633,7 @@
|
||||
|
||||
return max(0, enemy_minimum_age - C.player_age)
|
||||
|
||||
/// Used to remove antag status on borging for some gamemodes
|
||||
/datum/game_mode/proc/remove_antag_for_borging(datum/mind/newborgie)
|
||||
SSticker.mode.remove_cultist(newborgie, 0, 0)
|
||||
var/datum/antagonist/rev/rev = newborgie.has_antag_datum(/datum/antagonist/rev)
|
||||
@@ -656,7 +660,7 @@
|
||||
/datum/game_mode/proc/special_report()
|
||||
return
|
||||
|
||||
//Set result and news report here
|
||||
/// Set the round results
|
||||
/datum/game_mode/proc/set_round_result()
|
||||
SSticker.mode_result = "undefined"
|
||||
if(station_was_nuked)
|
||||
|
||||
@@ -86,6 +86,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
cig.attackby(src, user)
|
||||
else
|
||||
cig.light(span_notice("[user] holds [src] out for [M], and lights [cig]."))
|
||||
playsound(src, 'sound/items/lighter/light.ogg', 50, 2)
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -289,6 +290,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
cig.attackby(src, user)
|
||||
else
|
||||
cig.light(span_notice("[user] holds the [name] out for [M], and lights [M.p_their()] [cig.name]."))
|
||||
playsound(src, 'sound/items/lighter/light.ogg', 50, 2)
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -583,6 +585,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/lighter/ignition_effect(atom/A, mob/user)
|
||||
if(is_hot())
|
||||
. = span_rose("With a single flick of [user.p_their()] wrist, [user] smoothly lights [A] with [src]. Damn [user.p_theyre()] cool.")
|
||||
playsound(src, 'sound/items/lighter/light.ogg', 50, 2)
|
||||
|
||||
/obj/item/lighter/proc/set_lit(new_lit)
|
||||
lit = new_lit
|
||||
@@ -610,6 +613,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
set_lit(TRUE)
|
||||
if(fancy)
|
||||
user.visible_message("Without even breaking stride, [user] flips open and lights [src] in one smooth movement.", span_notice("Without even breaking stride, you flip open and light [src] in one smooth movement."))
|
||||
playsound(src, 'sound/items/lighter/strike.ogg', 50, 2)
|
||||
else
|
||||
var/prot = FALSE
|
||||
var/mob/living/carbon/human/H = user
|
||||
@@ -623,6 +627,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
|
||||
if(prot || prob(75))
|
||||
user.visible_message("After a few attempts, [user] manages to light [src].", span_notice("After a few attempts, you manage to light [src]."))
|
||||
playsound(src, 'sound/items/lighter/plastic_strike.ogg', 40, 2)
|
||||
else
|
||||
var/hitzone = user.held_index_to_dir(user.active_hand_index) == "r" ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND
|
||||
user.apply_damage(5, BURN, hitzone)
|
||||
@@ -633,8 +638,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
set_lit(FALSE)
|
||||
if(fancy)
|
||||
user.visible_message("You hear a quiet click, as [user] shuts off [src] without even looking at what [user.p_theyre()] doing. Wow.", span_notice("You quietly shut off [src] without even looking at what you're doing. Wow."))
|
||||
playsound(src, 'sound/items/lighter/close.ogg', 50, 1)
|
||||
else
|
||||
user.visible_message("[user] quietly shuts off [src].", span_notice("You quietly shut off [src]."))
|
||||
playsound(src, 'sound/items/lighter/plastic_close.ogg', 40, 2)
|
||||
else
|
||||
. = ..()
|
||||
|
||||
@@ -651,8 +658,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
else
|
||||
if(fancy)
|
||||
cig.light(span_rose("[user] whips the [name] out and holds it for [M]. [user.p_their(TRUE)] arm is as steady as the unflickering flame [user.p_they()] light[user.p_s()] \the [cig] with."))
|
||||
playsound(src, 'sound/items/lighter/light.ogg', 50, 2)
|
||||
else
|
||||
cig.light(span_notice("[user] holds the [name] out for [M], and lights [M.p_their()] [cig.name]."))
|
||||
playsound(src, 'sound/items/lighter/light.ogg', 50, 2)
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -710,6 +719,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/lighter/greyscale/ignition_effect(atom/A, mob/user)
|
||||
if(is_hot())
|
||||
. = span_notice("After some fiddling, [user] manages to light [A] with [src].")
|
||||
playsound(src, 'sound/items/lighter/light.ogg', 50, 2)
|
||||
|
||||
|
||||
/obj/item/lighter/slime
|
||||
|
||||
@@ -167,25 +167,22 @@
|
||||
|
||||
if(H.dna.species.use_skintones)
|
||||
var/new_s_tone = input(user, "Choose your skin tone:", "Race change") as null|anything in GLOB.skin_tones
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
|
||||
if(new_s_tone)
|
||||
H.skin_tone = new_s_tone
|
||||
H.dna.update_ui_block(DNA_SKIN_TONE_BLOCK)
|
||||
if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(new_s_tone)
|
||||
H.skin_tone = new_s_tone
|
||||
H.dna.update_ui_block(DNA_SKIN_TONE_BLOCK)
|
||||
|
||||
if((MUTCOLORS in H.dna.species.species_traits) && !(NOCOLORCHANGE in H.dna.species.species_traits))
|
||||
var/new_mutantcolor = input(user, "Choose your skin color:", "Race change","#"+H.dna.features["mcolor"]) as color|null
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
if(new_mutantcolor)
|
||||
var/temp_hsv = RGBtoHSV(new_mutantcolor)
|
||||
if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(new_mutantcolor)
|
||||
var/temp_hsv = RGBtoHSV(new_mutantcolor)
|
||||
|
||||
if(ReadHSV(temp_hsv)[3] >= ReadHSV("#7F7F7F")[3]) // mutantcolors must be bright
|
||||
H.dna.features["mcolor"] = sanitize_hexcolor(new_mutantcolor)
|
||||
if(ReadHSV(temp_hsv)[3] >= ReadHSV("#7F7F7F")[3]) // mutantcolors must be bright
|
||||
H.dna.features["mcolor"] = sanitize_hexcolor(new_mutantcolor)
|
||||
|
||||
else
|
||||
to_chat(H, span_notice("Invalid color. Your color is not bright enough."))
|
||||
else
|
||||
to_chat(H, span_notice("Invalid color. Your color is not bright enough."))
|
||||
|
||||
H.update_body()
|
||||
H.update_hair()
|
||||
|
||||
@@ -188,10 +188,9 @@
|
||||
else
|
||||
if(recipient.holder)
|
||||
if(holder)
|
||||
to_chat(recipient,
|
||||
type = MESSAGE_TYPE_ADMINPM,
|
||||
html = span_danger("Admin PM from-<b>[key_name(src, recipient, 1)]</b>: [span_linkify("[keywordparsedmsg]")]"),
|
||||
confidential = TRUE)
|
||||
to_chat(recipient, "<font color='red' size='4'><b>-- Administrator private message --</b></font>", confidential=TRUE)
|
||||
to_chat(recipient, span_adminsay("Admin PM from-<b>[key_name(src, recipient, 0)]</b>: [span_linkify("[msg]")]"), confidential=TRUE)
|
||||
to_chat(recipient, span_adminsay("<i>Click on the administrator's name to reply.</i>"), confidential=TRUE)
|
||||
to_chat(src,
|
||||
type = MESSAGE_TYPE_ADMINPM,
|
||||
html = span_notice("Admin PM to-<b>[key_name(recipient, src, 1)]</b>: [span_linkify("[keywordparsedmsg]")]"),
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
if(factory)
|
||||
factory.naut = null //remove this naut from its factory
|
||||
factory.max_integrity = initial(factory.max_integrity)
|
||||
if(overmind)
|
||||
to_chat(overmind, "<font color=\"#EE4000\">[src] has died in [get_area(src)]!</font>")
|
||||
flick("blobbernaut_death", src)
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/blobbernaut/independent
|
||||
|
||||
@@ -133,7 +133,7 @@ Contains:
|
||||
|
||||
/obj/item/clothing/suit/space/pirate
|
||||
name = "syndicate pirate coat"
|
||||
desc = "Argh! The standard armor of freelance forces contracted by the Syndicate to terrorize and disrupt commercial operations."
|
||||
desc = "Arrrgh! The standard armor of freelance forces contracted by the Syndicate to terrorize and disrupt commercial operations."
|
||||
icon_state = "pirate"
|
||||
item_state = "pirate"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
@@ -146,7 +146,7 @@ Contains:
|
||||
|
||||
/obj/item/clothing/suit/space/pirate/captain
|
||||
name = "syndicate pirate captain coat"
|
||||
desc = "Argh! Adorned with immeasurable protection, this coat serves the most fearsome Syndicate pirates in their neverending quest of loot."
|
||||
desc = "Arrrgh! Adorned with immeasurable protection, this coat serves the most fearsome Syndicate pirates in their neverending quest of loot."
|
||||
armor = list(MELEE = 40, BULLET = 60, LASER = 40, ENERGY = 25, BOMB = 50, BIO = 30, RAD = 30, FIRE = 100, ACID = 100, WOUND = 10)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
icon_state = "hgpirate"
|
||||
|
||||
@@ -365,30 +365,38 @@
|
||||
filling_color = "#B22222"
|
||||
foodtype = MEAT
|
||||
tastes = list("meat" = 1)
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet
|
||||
slices_num = 3
|
||||
juice_results = list(/datum/reagent/consumable/drippings = 15)
|
||||
burns_on_grill = TRUE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/plain
|
||||
foodtype = MEAT
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/plain
|
||||
foodtype = MEAT
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/plain/human
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/plain/human
|
||||
tastes = list("tender meat" = 1)
|
||||
foodtype = MEAT | GROSS
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/killertomato
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/killertomato
|
||||
name = "killer tomato steak"
|
||||
tastes = list("tomato" = 1)
|
||||
foodtype = FRUIT
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/bear
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/bear
|
||||
name = "bear steak"
|
||||
tastes = list("meat" = 1, "salmon" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/xeno
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/xeno
|
||||
name = "xeno steak"
|
||||
tastes = list("meat" = 1, "acid" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/spider
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/spider
|
||||
name = "spider steak"
|
||||
tastes = list("cobwebs" = 1)
|
||||
|
||||
@@ -402,15 +410,18 @@
|
||||
foodtype = MEAT
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/gondola
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/gondola
|
||||
name = "gondola steak"
|
||||
tastes = list("meat" = 1, "tranquility" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/penguin
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/penguin
|
||||
name = "penguin steak"
|
||||
icon_state = "birdsteak"
|
||||
tastes = list("beef" = 1, "cod fish" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/plain/human/lizard
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet
|
||||
name = "lizard steak"
|
||||
icon_state = "birdsteak"
|
||||
tastes = list("juicy chicken" = 3, "scales" = 1)
|
||||
@@ -422,6 +433,7 @@
|
||||
tastes = list("enhanced char" = 2, "suspicious tenderness" = 2, "natural & artificial dyes" = 2, "emulsifying agents" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/synth
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet
|
||||
name = "synthsteak"
|
||||
desc = "A synthetic meat steak. It doesn't look quite right, now does it?"
|
||||
icon_state = "meatsteak_old"
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
update_icons()
|
||||
status_flags |= CANPUSH
|
||||
|
||||
for(var/mob/S in GLOB.player_list)
|
||||
if(!S.stat && S.hivecheck())
|
||||
to_chat(S, span_alien("You sense through your hivemind that [src] has died."))
|
||||
|
||||
//When the alien queen dies, all others must pay the price for letting her die.
|
||||
/mob/living/carbon/alien/humanoid/royal/queen/death(gibbed)
|
||||
if(stat == DEAD)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
GLOBAL_VAR_INIT(permadeath, FALSE)
|
||||
|
||||
/mob/living/gib(no_brain, no_organs, no_bodyparts)
|
||||
var/prev_lying = lying
|
||||
if(stat != DEAD)
|
||||
@@ -89,4 +91,7 @@
|
||||
var/datum/soullink/S = s
|
||||
S.sharerDies(gibbed)
|
||||
|
||||
if(GLOB.permadeath)
|
||||
ghostize(FALSE)
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -102,6 +102,8 @@
|
||||
if(!.)
|
||||
return
|
||||
var/turf/T = get_turf(owner)
|
||||
if(!T)
|
||||
return
|
||||
var/loot = rand(1,100)
|
||||
switch(loot)
|
||||
if(1 to 5)
|
||||
@@ -147,6 +149,9 @@
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
if(!isopenturf(owner.loc))
|
||||
to_chat(owner,"<span class='warning'>You can't use raise soldiers while in an object!</span>")
|
||||
return
|
||||
var/cap = CONFIG_GET(number/ratcap)
|
||||
var/something_from_nothing = FALSE
|
||||
for(var/mob/living/simple_animal/mouse/M in oview(owner, 5))
|
||||
@@ -188,6 +193,8 @@
|
||||
|
||||
/datum/action/cooldown/domain/proc/domain()
|
||||
var/turf/T = get_turf(owner)
|
||||
if(!T)
|
||||
return
|
||||
T.atmos_spawn_air("miasma=4;TEMP=[T20C]")
|
||||
switch (rand(1,10))
|
||||
if (8)
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
/obj/item/ammo_casing/energy/plasma/scatter
|
||||
projectile_type = /obj/item/projectile/plasma/scatter
|
||||
delay = 15
|
||||
e_cost = 70
|
||||
pellets = 5
|
||||
variance = 25
|
||||
e_cost = 35
|
||||
pellets = 6
|
||||
variance = 30
|
||||
|
||||
/obj/item/ammo_casing/energy/plasma/scatter/adv
|
||||
projectile_type = /obj/item/projectile/plasma/scatter/adv
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/ammo_box/a357
|
||||
name = "speed loader (.357)"
|
||||
desc = "Designed to quickly reload revolvers."
|
||||
desc = "A seven-shot speed loader designed for .357 revolvers."
|
||||
icon_state = "357"
|
||||
ammo_type = /obj/item/ammo_casing/a357
|
||||
max_ammo = 7
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
/obj/item/ammo_box/c38
|
||||
name = "speed loader (.38)"
|
||||
desc = "Designed to quickly reload revolvers."
|
||||
desc = "A six-shot speed loader designed for .38 revolvers."
|
||||
icon_state = "38"
|
||||
ammo_type = /obj/item/ammo_casing/c38
|
||||
max_ammo = 6
|
||||
@@ -17,17 +17,20 @@
|
||||
|
||||
/obj/item/ammo_box/c38/trac
|
||||
name = "speed loader (.38 TRAC)"
|
||||
desc = "Designed to quickly reload revolvers. TRAC bullets embed a tracking implant within the target's body."
|
||||
desc = "A six-shot speed loader designed for .38 revolvers. \
|
||||
These rounds deal lessened damage and stopping power, but inject a tracking implant upon burrowing into a target's body. Implant lifespan is fifteen minutes."
|
||||
ammo_type = /obj/item/ammo_casing/c38/trac
|
||||
|
||||
/obj/item/ammo_box/c38/hotshot
|
||||
name = "speed loader (.38 Hot Shot)"
|
||||
desc = "Designed to quickly reload revolvers. Hot Shot bullets contain an incendiary payload."
|
||||
desc = "A six-shot speed loader designed for .38 revolvers. \
|
||||
These rounds trade exhaustive properties for an incendiary payload which sets targets ablaze."
|
||||
ammo_type = /obj/item/ammo_casing/c38/hotshot
|
||||
|
||||
/obj/item/ammo_box/c38/iceblox
|
||||
name = "speed loader (.38 Iceblox)"
|
||||
desc = "Designed to quickly reload revolvers. Iceblox bullets contain a cryogenic payload."
|
||||
desc = "A six-shot speed loader designed for .38 revolvers. \
|
||||
These rounds trade exhaustive properties for a cryogenic payload which significantly reduces the body temperature of targets hit."
|
||||
ammo_type = /obj/item/ammo_casing/c38/iceblox
|
||||
|
||||
/obj/item/ammo_box/c9mm
|
||||
|
||||
@@ -37,18 +37,20 @@
|
||||
|
||||
/obj/item/projectile/bullet/c38/hotshot //similar to incendiary bullets, but do not leave a flaming trail
|
||||
name = ".38 Hot Shot bullet"
|
||||
damage = 20
|
||||
damage = 15
|
||||
stamina = 0
|
||||
|
||||
/obj/item/projectile/bullet/c38/hotshot/on_hit(atom/target, blocked = FALSE)
|
||||
. = ..()
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/M = target
|
||||
M.adjust_fire_stacks(6)
|
||||
M.adjust_fire_stacks(2)
|
||||
M.IgniteMob()
|
||||
|
||||
/obj/item/projectile/bullet/c38/iceblox //see /obj/item/projectile/temp for the original code
|
||||
name = ".38 Iceblox bullet"
|
||||
damage = 20
|
||||
damage = 15
|
||||
stamina = 0
|
||||
var/temperature = 100
|
||||
|
||||
/obj/item/projectile/bullet/c38/iceblox/on_hit(atom/target, blocked = FALSE)
|
||||
|
||||
@@ -1254,7 +1254,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
color = rgb(51, 19, 3) //Sickly brown
|
||||
boozepwr = 300 //I warned you
|
||||
taste_description = "a wall of bricks"
|
||||
glass_icon_state = "glass_brown2"
|
||||
glass_icon_state = "bacchus"
|
||||
glass_name = "Bacchus' Blessing"
|
||||
glass_desc = "You didn't think it was possible for a liquid to be so utterly revolting. Are you sure about this...?"
|
||||
|
||||
|
||||
@@ -34,11 +34,12 @@ endmap
|
||||
|
||||
map kilostation
|
||||
maxplayers 40
|
||||
votable
|
||||
disabled
|
||||
endmap
|
||||
|
||||
map gaxstation
|
||||
maxplayers 30
|
||||
votable
|
||||
endmap
|
||||
|
||||
map icebox
|
||||
|
||||
@@ -58,6 +58,72 @@
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
|
||||
<h2 class="date">05 July 2022</h2>
|
||||
<h3 class="author">VaelophisNyx updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Added a new 5x3 maint ruin theme'd around fishing</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">04 July 2022</h2>
|
||||
<h3 class="author">SomeguyManperson updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">your attack cooldown will no longer be set to actual real life minutes sometimes</li>
|
||||
<li class="bugfix">melee weapons that theoretically have range will not theoretically always use their maximum range cooldown when attacking qdel on death mobs</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">02 July 2022</h2>
|
||||
<h3 class="author"> SuperSlayer updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Regalrat now cannot use abilities while in a tube</li>
|
||||
</ul>
|
||||
<h3 class="author">Addust updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Free Miners now have pens.</li>
|
||||
<li class="tweak">Free Miner ship console orientation is no longer braindead and the map file has passthroughs on the exterior.</li>
|
||||
</ul>
|
||||
<h3 class="author">AlvCyktor updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Sound FX</li>
|
||||
<li class="tweak">sliceable steaks</li>
|
||||
</ul>
|
||||
<h3 class="author">JamieD1 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Replaces Kilo with GaxStation</li>
|
||||
</ul>
|
||||
<h3 class="author">Skrem7 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Syndicate pirate coat descriptions are now 36% more piratey.</li>
|
||||
<li class="tweak">Makes it so experimental .38 does the same brute damage as standard .38, removes stamina damage</li>
|
||||
<li class="tweak">Hotshot firestack application to 2 from 6</li>
|
||||
</ul>
|
||||
<h3 class="author">SomeguyManperson updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">pride's mirror may no longer just not curse people who use it</li>
|
||||
</ul>
|
||||
<h3 class="author">SuperSlayer updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Blob gets a message when a blobbernaut dies</li>
|
||||
<li class="rscadd">Alliens get a message when a humanoid alien dies</li>
|
||||
</ul>
|
||||
<h3 class="author">ToasterBiome updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">kills psych on gaxstation</li>
|
||||
<li class="bugfix">fixes bad areas on gaxstation</li>
|
||||
<li class="tweak">adds more floor trim to gaxstation</li>
|
||||
<li class="tweak">give virology airlock style airlocks on gaxstation</li>
|
||||
</ul>
|
||||
<h3 class="author">adamsong updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">fixed replays not showing test merged icons</li>
|
||||
<li class="bugfix">fixed mhelps asking for your number</li>
|
||||
</ul>
|
||||
<h3 class="author">redmoogle updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="imageadd">Bacchus Blessing has a sprite now</li>
|
||||
<li class="tweak">Plasma Shotgun uses 1/2 energy</li>
|
||||
<li class="tweak">Increase bullet count by 1 and increase variance slightly</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">01 July 2022</h2>
|
||||
<h3 class="author">Mqiib updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
@@ -2483,86 +2549,6 @@
|
||||
<li class="tweak">Changes the message for chem spill, that no one has seen because it can't run because its broken</li>
|
||||
<li class="rscadd">Added chem spill event</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">04 April 2022</h2>
|
||||
<h3 class="author">SomeguyManperson updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">runtime fix</li>
|
||||
<li class="bugfix">organ efficiency now calculates properly</li>
|
||||
<li class="bugfix">escaping brazil no longer requires exactly 0 marbles, now accepts negative numbers</li>
|
||||
</ul>
|
||||
<h3 class="author">TheGamerdk updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">No more notification that the AI revamp is new</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">03 April 2022</h2>
|
||||
<h3 class="author"> code by Chubbygummibear, sprites by Sheets updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">gives pod race hairstyle options</li>
|
||||
<li class="imageadd">hairstyle sprites for pods</li>
|
||||
<li class="imagedel">Phytosians no longer have brush built into their heads</li>
|
||||
</ul>
|
||||
<h3 class="author"> ynot01, maxion12345 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Added the autopsy surgery, performed by detectives</li>
|
||||
<li class="rscadd">Gave detective an autopsy room on boxstation with accompanying tutorial paper</li>
|
||||
</ul>
|
||||
<h3 class="author">00ze-cyclone updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">removed holograms, it's all hard light now.</li>
|
||||
</ul>
|
||||
<h3 class="author">LazennG updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Added new pirate weapon: hand cannon</li>
|
||||
</ul>
|
||||
<h3 class="author">SapphicOverload updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">pda now starts in the id slot with the id inserted for most playable jobs.</li>
|
||||
<li class="tweak">adds an option to the game preferences for whether you want this change or not.</li>
|
||||
</ul>
|
||||
<h3 class="author">Sniblet updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Amanitin and entropic polypnium also work for DNA recovery</li>
|
||||
</ul>
|
||||
<h3 class="author">SomeguyManperson updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">private server byond version maximum has been updated</li>
|
||||
<li class="tweak">the wormhole jaunter will always activate when on your person if you fall into a chasm</li>
|
||||
</ul>
|
||||
<h3 class="author">ToasterBiome updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">closes murder loophole in silicon collective lawset</li>
|
||||
</ul>
|
||||
<h3 class="author">adamsong updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Nukies can no longer nuke themselves for a win</li>
|
||||
</ul>
|
||||
<h3 class="author">capsaicinz, Xoxeyos, arcturus-prime updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Adds supermatter spiders.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">02 April 2022</h2>
|
||||
<h3 class="author">TheGamerdk updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">AI data cores get a 45 tick grace period, up from 15 ticks</li>
|
||||
<li class="rscadd">Admins can now right click AI Data Cores to VV the AIs inside</li>
|
||||
<li class="bugfix">Station traits work again</li>
|
||||
<li class="tweak">When a data core has failed/is failing the AI can now jump directly to the it.</li>
|
||||
</ul>
|
||||
<h3 class="author">ToasterBiome updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Adds 1K, 5K, and 10K mining point transfer cards</li>
|
||||
</ul>
|
||||
<h3 class="author">adamsong updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Dead traitors can no longer shop with the syndicate</li>
|
||||
</ul>
|
||||
<h3 class="author">maxion12345 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Added a pipebomb for your IRA roleplay needs.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<b>GoonStation 13 Development Team</b>
|
||||
|
||||
@@ -32396,3 +32396,46 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- tweak: Bone sword now huge, less block chance
|
||||
- tweak: All claymores in ruins are now unique items in code, have updated description,
|
||||
also damage/blockchance nerfed
|
||||
2022-07-02:
|
||||
' SuperSlayer':
|
||||
- bugfix: Regalrat now cannot use abilities while in a tube
|
||||
Addust:
|
||||
- rscadd: Free Miners now have pens.
|
||||
- tweak: Free Miner ship console orientation is no longer braindead and the map
|
||||
file has passthroughs on the exterior.
|
||||
AlvCyktor:
|
||||
- rscadd: Sound FX
|
||||
- tweak: sliceable steaks
|
||||
JamieD1:
|
||||
- rscadd: Replaces Kilo with GaxStation
|
||||
Skrem7:
|
||||
- bugfix: Syndicate pirate coat descriptions are now 36% more piratey.
|
||||
- tweak: Makes it so experimental .38 does the same brute damage as standard .38,
|
||||
removes stamina damage
|
||||
- tweak: Hotshot firestack application to 2 from 6
|
||||
SomeguyManperson:
|
||||
- bugfix: pride's mirror may no longer just not curse people who use it
|
||||
SuperSlayer:
|
||||
- rscadd: Blob gets a message when a blobbernaut dies
|
||||
- rscadd: Alliens get a message when a humanoid alien dies
|
||||
ToasterBiome:
|
||||
- rscdel: kills psych on gaxstation
|
||||
- bugfix: fixes bad areas on gaxstation
|
||||
- tweak: adds more floor trim to gaxstation
|
||||
- tweak: give virology airlock style airlocks on gaxstation
|
||||
adamsong:
|
||||
- bugfix: fixed replays not showing test merged icons
|
||||
- bugfix: fixed mhelps asking for your number
|
||||
redmoogle:
|
||||
- imageadd: Bacchus Blessing has a sprite now
|
||||
- tweak: Plasma Shotgun uses 1/2 energy
|
||||
- tweak: Increase bullet count by 1 and increase variance slightly
|
||||
2022-07-04:
|
||||
SomeguyManperson:
|
||||
- bugfix: your attack cooldown will no longer be set to actual real life minutes
|
||||
sometimes
|
||||
- bugfix: melee weapons that theoretically have range will not theoretically always
|
||||
use their maximum range cooldown when attacking qdel on death mobs
|
||||
2022-07-05:
|
||||
VaelophisNyx:
|
||||
- rscadd: Added a new 5x3 maint ruin theme'd around fishing
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 103 KiB |
BIN
sound/items/lighter/close.ogg
Normal file
BIN
sound/items/lighter/close.ogg
Normal file
Binary file not shown.
BIN
sound/items/lighter/light.ogg
Normal file
BIN
sound/items/lighter/light.ogg
Normal file
Binary file not shown.
BIN
sound/items/lighter/plastic_close.ogg
Normal file
BIN
sound/items/lighter/plastic_close.ogg
Normal file
Binary file not shown.
BIN
sound/items/lighter/plastic_strike.ogg
Normal file
BIN
sound/items/lighter/plastic_strike.ogg
Normal file
Binary file not shown.
BIN
sound/items/lighter/strike.ogg
Normal file
BIN
sound/items/lighter/strike.ogg
Normal file
Binary file not shown.
@@ -781,6 +781,12 @@
|
||||
suffix = "5x3_yogsmaintrpg.dmm"
|
||||
name = "Maint yogsmaintrpg"
|
||||
|
||||
///Author: Vaelophis
|
||||
/datum/map_template/ruin/station/maint/fivexthree/smallfish
|
||||
id = "smallfish"
|
||||
suffix = "5x3_smallfish.dmm"
|
||||
name = "Maint smallfish"
|
||||
|
||||
///Author: Veeblefetzer
|
||||
/datum/map_template/ruin/station/maint/fivexthree/podmin
|
||||
id = "podmin"
|
||||
|
||||
@@ -472,7 +472,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
|
||||
if(initiator)
|
||||
to_chat(initiator, msg, confidential=TRUE)
|
||||
initiator.mentorhelp(name, 1)
|
||||
initiator.mhelp(name, TRUE)
|
||||
|
||||
SSblackbox.record_feedback("tally", "ahelp_stats", 1, "MHelp")
|
||||
msg = "Ticket [TicketHref("#[id]")] marked as MHelp by [key_name]"
|
||||
|
||||
@@ -20,11 +20,14 @@
|
||||
paycheck_department = ACCOUNT_MED
|
||||
display_order = JOB_DISPLAY_ORDER_PSYCHIATRIST
|
||||
|
||||
changed_maps = list("OmegaStation")
|
||||
changed_maps = list("OmegaStation","GaxStation")
|
||||
|
||||
/datum/job/psych/proc/OmegaStationChanges()
|
||||
return TRUE
|
||||
|
||||
/datum/job/psych/proc/GaxStationChanges() // I'M SORRY
|
||||
return TRUE
|
||||
|
||||
/datum/outfit/job/psych
|
||||
name = "Psych"
|
||||
jobtype = /datum/job/psych
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
/client/verb/mentorhelp(msg as text, fromadmins as null|num)
|
||||
/client/verb/mentorhelp(msg as text)
|
||||
set category = "Mentor"
|
||||
set name = "Mentorhelp"
|
||||
mhelp(msg, FALSE)
|
||||
|
||||
/client/proc/mhelp(msg as text, fromadmins as num)
|
||||
//clean the input msg
|
||||
if(!msg) return
|
||||
|
||||
@@ -25,7 +27,7 @@
|
||||
|
||||
var/admininfo = "MENTORHELP:"
|
||||
if(fromadmins)
|
||||
admininfo = "MENTORHELP(From Admins):"
|
||||
admininfo = "MENTORHELP (From Admins):"
|
||||
var/show_char = CONFIG_GET(flag/mentors_mobname_only)
|
||||
var/mentor_msg = "<span class='mentornotice purple'><b>[admininfo]</b> <b>[key_name_mentor(src, 1, 0, 1, show_char)]</b>: [msg]</span>"
|
||||
log_mentor("[admininfo] [key_name_mentor(src, 0, 0, 0, 0)]: [msg]")
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
if(is_mentor())
|
||||
to_chat(src, "<font color='red'>Error: Mentor-PM: Client not found.</font>", confidential=TRUE)
|
||||
else
|
||||
mentorhelp(msg) //Mentor we are replying to left. Mentorhelp instead(check below)
|
||||
mhelp(msg, FALSE) //Mentor we are replying to left. Mentorhelp instead(check below)
|
||||
return
|
||||
|
||||
//get message text, limit it's length.and clean/escape html
|
||||
|
||||
Reference in New Issue
Block a user