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
|
/html/templates/ @yogstation13/head-coders
|
||||||
/sound/ @yogstation13/head-coders
|
/sound/ @yogstation13/head-coders
|
||||||
/yogstation/sound/ @yogstation13/head-coders
|
/yogstation/sound/ @yogstation13/head-coders
|
||||||
|
/yogstation/code/game/world.dm @yogstation13/head-coders
|
||||||
|
|
||||||
#Teams
|
#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
|
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||||
"aa" = (
|
"aa" = (
|
||||||
/turf/open/space,
|
/turf/template_noop,
|
||||||
/area/space)
|
/area/template_noop)
|
||||||
"ab" = (
|
"ab" = (
|
||||||
/obj/machinery/door/airlock/shuttle{
|
/obj/machinery/door/airlock/shuttle{
|
||||||
name = "cargo bay";
|
name = "cargo bay";
|
||||||
@@ -92,6 +92,9 @@
|
|||||||
"al" = (
|
"al" = (
|
||||||
/obj/structure/closet/emcloset,
|
/obj/structure/closet/emcloset,
|
||||||
/obj/effect/decal/cleanable/dirt,
|
/obj/effect/decal/cleanable/dirt,
|
||||||
|
/obj/item/pen,
|
||||||
|
/obj/item/pen,
|
||||||
|
/obj/item/pen,
|
||||||
/turf/open/floor/mineral/titanium,
|
/turf/open/floor/mineral/titanium,
|
||||||
/area/shuttle/abandoned)
|
/area/shuttle/abandoned)
|
||||||
"am" = (
|
"am" = (
|
||||||
@@ -309,7 +312,9 @@
|
|||||||
/turf/open/floor/mineral/titanium,
|
/turf/open/floor/mineral/titanium,
|
||||||
/area/shuttle/abandoned)
|
/area/shuttle/abandoned)
|
||||||
"aN" = (
|
"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,
|
/turf/open/floor/mineral/titanium/white,
|
||||||
/area/shuttle/abandoned)
|
/area/shuttle/abandoned)
|
||||||
"aO" = (
|
"aO" = (
|
||||||
@@ -679,6 +684,12 @@
|
|||||||
"fw" = (
|
"fw" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/storage/photo_album,
|
/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,
|
/turf/open/floor/mineral/titanium/white,
|
||||||
/area/shuttle/abandoned)
|
/area/shuttle/abandoned)
|
||||||
"gv" = (
|
"gv" = (
|
||||||
@@ -905,7 +916,9 @@
|
|||||||
/turf/open/floor/mineral/titanium,
|
/turf/open/floor/mineral/titanium,
|
||||||
/area/shuttle/abandoned)
|
/area/shuttle/abandoned)
|
||||||
"pP" = (
|
"pP" = (
|
||||||
/obj/machinery/computer/shuttle/white_ship/miner,
|
/obj/machinery/computer/shuttle/white_ship/miner{
|
||||||
|
dir = 8
|
||||||
|
},
|
||||||
/turf/open/floor/mineral/titanium/white,
|
/turf/open/floor/mineral/titanium/white,
|
||||||
/area/shuttle/abandoned)
|
/area/shuttle/abandoned)
|
||||||
"qA" = (
|
"qA" = (
|
||||||
@@ -1055,6 +1068,7 @@
|
|||||||
pixel_x = -1;
|
pixel_x = -1;
|
||||||
pixel_y = 2
|
pixel_y = 2
|
||||||
},
|
},
|
||||||
|
/obj/item/pen/fountain,
|
||||||
/turf/open/floor/mineral/titanium/white,
|
/turf/open/floor/mineral/titanium/white,
|
||||||
/area/shuttle/abandoned)
|
/area/shuttle/abandoned)
|
||||||
"Fj" = (
|
"Fj" = (
|
||||||
|
|||||||
@@ -44,10 +44,10 @@
|
|||||||
return ..() || ((obj_flags & CAN_BE_HIT) && I.attack_obj(src, user))
|
return ..() || ((obj_flags & CAN_BE_HIT) && I.attack_obj(src, user))
|
||||||
|
|
||||||
/mob/living/attackby(obj/item/I, mob/living/user, params)
|
/mob/living/attackby(obj/item/I, mob/living/user, params)
|
||||||
|
var/dist = get_dist(src,user)
|
||||||
if(..())
|
if(..())
|
||||||
return TRUE
|
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 ? min(dist, I.weapon_stats[REACH]) * 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 ? dist * I.range_cooldown_mod : I.range_cooldown_mod) : 1)) //range increases attack cooldown by swing speed
|
|
||||||
user.weapon_slow(I)
|
user.weapon_slow(I)
|
||||||
if(user.a_intent == INTENT_HARM && stat == DEAD && (butcher_results || guaranteed_butcher_results)) //can we butcher it?
|
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)
|
var/datum/component/butchering/butchering = I.GetComponent(/datum/component/butchering)
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
if(item_flags & NOBLUDGEON)
|
if(item_flags & NOBLUDGEON)
|
||||||
return
|
return
|
||||||
var/dist = get_dist(O,user)
|
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)
|
user.do_attack_animation(O)
|
||||||
O.attacked_by(src, user)
|
O.attacked_by(src, user)
|
||||||
user.weapon_slow(src)
|
user.weapon_slow(src)
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ SUBSYSTEM_DEF(demo)
|
|||||||
/datum/controller/subsystem/demo/Initialize()
|
/datum/controller/subsystem/demo/Initialize()
|
||||||
WRITE_LOG_NO_FORMAT(GLOB.demo_log, "demo version 1\n") // increment this if you change the format
|
WRITE_LOG_NO_FORMAT(GLOB.demo_log, "demo version 1\n") // increment this if you change the format
|
||||||
if(GLOB.revdata)
|
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.
|
// write a "snapshot" of the world at this point.
|
||||||
// start with turfs
|
// start with turfs
|
||||||
|
|||||||
@@ -58,14 +58,14 @@
|
|||||||
|
|
||||||
var/time_required = 0 // Framework for future setting of required time for antag roles
|
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>The gamemode is: <span class='[announce_span]'>[name]</span>!</b>")
|
||||||
to_chat(world, "<b>[announce_text]</b>")
|
to_chat(world, "<b>[announce_text]</b>")
|
||||||
|
|
||||||
/datum/game_mode/proc/admin_panel()
|
/datum/game_mode/proc/admin_panel()
|
||||||
return
|
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()
|
/datum/game_mode/proc/can_start()
|
||||||
var/playerC = 0
|
var/playerC = 0
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
|
|
||||||
/// 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()
|
/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
|
///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.
|
/datum/game_mode/proc/post_setup(report) //Gamemodes can override the intercept report. Passing TRUE as the argument will force a report.
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h))
|
addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h))
|
||||||
generate_station_goals()
|
generate_station_goals()
|
||||||
gamemode_ready = TRUE
|
gamemode_ready = TRUE
|
||||||
return 1
|
return TRUE
|
||||||
|
|
||||||
|
|
||||||
/// Handles late-join antag assignments
|
/// Handles late-join antag assignments
|
||||||
@@ -170,10 +170,10 @@
|
|||||||
|
|
||||||
switch(SSshuttle.emergency.mode) //Rounds on the verge of ending don't get new antags, they just run out
|
switch(SSshuttle.emergency.mode) //Rounds on the verge of ending don't get new antags, they just run out
|
||||||
if(SHUTTLE_STRANDED, SHUTTLE_ESCAPE)
|
if(SHUTTLE_STRANDED, SHUTTLE_ESCAPE)
|
||||||
return 1
|
return TRUE
|
||||||
if(SHUTTLE_CALL)
|
if(SHUTTLE_CALL)
|
||||||
if(SSshuttle.emergency.timeLeft(1) < initial(SSshuttle.emergencyCallTime)*0.5)
|
if(SSshuttle.emergency.timeLeft(1) < initial(SSshuttle.emergencyCallTime)*0.5)
|
||||||
return 1
|
return TRUE
|
||||||
|
|
||||||
var/matc = CONFIG_GET(number/midround_antag_time_check)
|
var/matc = CONFIG_GET(number/midround_antag_time_check)
|
||||||
if(world.time >= (matc * 600))
|
if(world.time >= (matc * 600))
|
||||||
@@ -210,7 +210,7 @@
|
|||||||
//somewhere between 1 and 3 minutes from now
|
//somewhere between 1 and 3 minutes from now
|
||||||
if(!CONFIG_GET(keyed_list/midround_antag)[SSticker.mode.config_tag])
|
if(!CONFIG_GET(keyed_list/midround_antag)[SSticker.mode.config_tag])
|
||||||
round_converted = 0
|
round_converted = 0
|
||||||
return 1
|
return TRUE
|
||||||
for(var/mob/living/carbon/human/H in antag_candidates)
|
for(var/mob/living/carbon/human/H in antag_candidates)
|
||||||
if(H.client)
|
if(H.client)
|
||||||
replacementmode.make_antag_chance(H)
|
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! --")
|
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()
|
/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()
|
/datum/game_mode/proc/are_special_antags_dead()
|
||||||
return TRUE
|
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)
|
if(!SSticker.setup_done || !gamemode_ready)
|
||||||
return FALSE
|
return FALSE
|
||||||
if(replacementmode && round_converted == 2)
|
if(replacementmode && round_converted == 2)
|
||||||
@@ -245,45 +246,45 @@
|
|||||||
if(Player.mind)
|
if(Player.mind)
|
||||||
if(Player.mind.special_role || LAZYLEN(Player.mind.antag_datums))
|
if(Player.mind.special_role || LAZYLEN(Player.mind.antag_datums))
|
||||||
continuous_sanity_checked = 1
|
continuous_sanity_checked = 1
|
||||||
return 0
|
return FALSE
|
||||||
if(!continuous_sanity_checked)
|
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.")
|
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
|
continuous[config_tag] = TRUE
|
||||||
midround_antag[config_tag] = FALSE
|
midround_antag[config_tag] = FALSE
|
||||||
SSshuttle.clearHostileEnvironment(src)
|
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)))
|
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)
|
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?
|
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)
|
for(var/datum/antagonist/antag_types in Player.mind.antag_datums)
|
||||||
if(antag_types.prevent_roundtype_conversion)
|
if(antag_types.prevent_roundtype_conversion)
|
||||||
living_antag_player = Player //they were an important antag, they're our new mark
|
living_antag_player = Player //they were an important antag, they're our new mark
|
||||||
return 0
|
return FALSE
|
||||||
|
|
||||||
if(!are_special_antags_dead())
|
if(!are_special_antags_dead())
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
if(!continuous[config_tag] || force_ending)
|
if(!continuous[config_tag] || force_ending)
|
||||||
return 1
|
return TRUE
|
||||||
|
|
||||||
else
|
else
|
||||||
round_converted = convert_roundtype()
|
round_converted = convert_roundtype()
|
||||||
if(!round_converted)
|
if(!round_converted)
|
||||||
if(round_ends_with_antag_death)
|
if(round_ends_with_antag_death)
|
||||||
return 1
|
return TRUE
|
||||||
else
|
else
|
||||||
midround_antag[config_tag] = 0
|
midround_antag[config_tag] = 0
|
||||||
return 0
|
return FALSE
|
||||||
|
|
||||||
return 0
|
return FALSE
|
||||||
|
|
||||||
|
// Checks if the antags have won
|
||||||
/datum/game_mode/proc/check_win() //universal trigger to be called at mob death, nuke explosion, etc. To be called from everywhere.
|
/datum/game_mode/proc/check_win()
|
||||||
return 0
|
return FALSE
|
||||||
|
|
||||||
/datum/game_mode/proc/send_intercept()
|
/datum/game_mode/proc/send_intercept()
|
||||||
var/intercepttext = "<b><i>Central Command Status Summary</i></b><hr>"
|
var/intercepttext = "<b><i>Central Command Status Summary</i></b><hr>"
|
||||||
@@ -338,18 +339,19 @@
|
|||||||
. += "[station_trait.get_report()]\n"
|
. += "[station_trait.get_report()]\n"
|
||||||
return
|
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
|
/* 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
|
* "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.
|
* 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:
|
* 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 A: 150 tickets
|
||||||
// Player B: 100 tickets
|
* Player B: 100 tickets
|
||||||
// Total: 250 tickets
|
* Total: 250 tickets
|
||||||
//
|
*
|
||||||
// The odds become:
|
* The odds become:
|
||||||
// Player A: 150 / 250 = 0.6 = 60%
|
* Player A: 150 / 250 = 0.6 = 60%
|
||||||
// Player B: 100 / 250 = 0.4 = 40%
|
* Player B: 100 / 250 = 0.4 = 40%
|
||||||
|
*/
|
||||||
/datum/game_mode/proc/antag_pick(list/datum/candidates)
|
/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
|
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)
|
var/client/C = pick_n_take(GLOB.antag_token_users)
|
||||||
@@ -520,30 +522,30 @@
|
|||||||
|
|
||||||
print_command_report(suicide_command_report, "Central Command Personnel Update")
|
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()
|
. = list()
|
||||||
for(var/mob/living/carbon/human/player in GLOB.mob_list)
|
for(var/mob/living/carbon/human/player in GLOB.mob_list)
|
||||||
if(player.stat != DEAD && player.mind && (player.mind.assigned_role in department))
|
if(player.stat != DEAD && player.mind && (player.mind.assigned_role in department))
|
||||||
. |= player.mind
|
. |= 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()
|
. = list()
|
||||||
for(var/mob/player in GLOB.mob_list)
|
for(var/mob/player in GLOB.mob_list)
|
||||||
if(player.mind && (player.mind.assigned_role in department))
|
if(player.mind && (player.mind.assigned_role in department))
|
||||||
. |= player.mind
|
. |= player.mind
|
||||||
|
|
||||||
/////////////////////////////////////////////
|
|
||||||
//Keeps track of all living silicon members//
|
/// Gets all living silicon members
|
||||||
/////////////////////////////////////////////
|
|
||||||
/datum/game_mode/proc/get_living_silicon()
|
/datum/game_mode/proc/get_living_silicon()
|
||||||
. = list()
|
. = list()
|
||||||
for(var/mob/living/silicon/player in GLOB.mob_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))
|
if(player.stat != DEAD && player.mind && (player.mind.assigned_role in GLOB.nonhuman_positions))
|
||||||
. |= player.mind
|
. |= player.mind
|
||||||
|
|
||||||
///////////////////////////////////////
|
/// Gets all silicon members including dead ones
|
||||||
//Keeps track of all silicon members //
|
|
||||||
///////////////////////////////////////
|
|
||||||
/datum/game_mode/proc/get_all_silicon()
|
/datum/game_mode/proc/get_all_silicon()
|
||||||
. = list()
|
. = list()
|
||||||
for(var/mob/living/silicon/player in GLOB.mob_list)
|
for(var/mob/living/silicon/player in GLOB.mob_list)
|
||||||
@@ -611,13 +613,14 @@
|
|||||||
for (var/C in GLOB.admins)
|
for (var/C in GLOB.admins)
|
||||||
to_chat(C, msg.Join())
|
to_chat(C, msg.Join())
|
||||||
log_admin(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)
|
/datum/game_mode/proc/age_check(client/C)
|
||||||
if(get_remaining_days(C) == 0)
|
if(get_remaining_days(C) == 0)
|
||||||
return 1 //Available in 0 days = available right now = player is old enough to play.
|
return TRUE //Available in 0 days = available right now = player is old enough to play.
|
||||||
return 0
|
return FALSE
|
||||||
|
|
||||||
|
|
||||||
|
/// Returns the numbers of days before the player can access a specific role
|
||||||
/datum/game_mode/proc/get_remaining_days(client/C)
|
/datum/game_mode/proc/get_remaining_days(client/C)
|
||||||
if(!C)
|
if(!C)
|
||||||
return 0
|
return 0
|
||||||
@@ -630,6 +633,7 @@
|
|||||||
|
|
||||||
return max(0, enemy_minimum_age - C.player_age)
|
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)
|
/datum/game_mode/proc/remove_antag_for_borging(datum/mind/newborgie)
|
||||||
SSticker.mode.remove_cultist(newborgie, 0, 0)
|
SSticker.mode.remove_cultist(newborgie, 0, 0)
|
||||||
var/datum/antagonist/rev/rev = newborgie.has_antag_datum(/datum/antagonist/rev)
|
var/datum/antagonist/rev/rev = newborgie.has_antag_datum(/datum/antagonist/rev)
|
||||||
@@ -656,7 +660,7 @@
|
|||||||
/datum/game_mode/proc/special_report()
|
/datum/game_mode/proc/special_report()
|
||||||
return
|
return
|
||||||
|
|
||||||
//Set result and news report here
|
/// Set the round results
|
||||||
/datum/game_mode/proc/set_round_result()
|
/datum/game_mode/proc/set_round_result()
|
||||||
SSticker.mode_result = "undefined"
|
SSticker.mode_result = "undefined"
|
||||||
if(station_was_nuked)
|
if(station_was_nuked)
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
|||||||
cig.attackby(src, user)
|
cig.attackby(src, user)
|
||||||
else
|
else
|
||||||
cig.light(span_notice("[user] holds [src] out for [M], and lights [cig]."))
|
cig.light(span_notice("[user] holds [src] out for [M], and lights [cig]."))
|
||||||
|
playsound(src, 'sound/items/lighter/light.ogg', 50, 2)
|
||||||
else
|
else
|
||||||
..()
|
..()
|
||||||
|
|
||||||
@@ -289,6 +290,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
|||||||
cig.attackby(src, user)
|
cig.attackby(src, user)
|
||||||
else
|
else
|
||||||
cig.light(span_notice("[user] holds the [name] out for [M], and lights [M.p_their()] [cig.name]."))
|
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
|
else
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
@@ -583,6 +585,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
|||||||
/obj/item/lighter/ignition_effect(atom/A, mob/user)
|
/obj/item/lighter/ignition_effect(atom/A, mob/user)
|
||||||
if(is_hot())
|
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.")
|
. = 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)
|
/obj/item/lighter/proc/set_lit(new_lit)
|
||||||
lit = new_lit
|
lit = new_lit
|
||||||
@@ -610,6 +613,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
|||||||
set_lit(TRUE)
|
set_lit(TRUE)
|
||||||
if(fancy)
|
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."))
|
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
|
else
|
||||||
var/prot = FALSE
|
var/prot = FALSE
|
||||||
var/mob/living/carbon/human/H = user
|
var/mob/living/carbon/human/H = user
|
||||||
@@ -623,6 +627,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
|||||||
|
|
||||||
if(prot || prob(75))
|
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]."))
|
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
|
else
|
||||||
var/hitzone = user.held_index_to_dir(user.active_hand_index) == "r" ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND
|
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)
|
user.apply_damage(5, BURN, hitzone)
|
||||||
@@ -633,8 +638,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
|||||||
set_lit(FALSE)
|
set_lit(FALSE)
|
||||||
if(fancy)
|
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."))
|
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
|
else
|
||||||
user.visible_message("[user] quietly shuts off [src].", span_notice("You quietly shut off [src]."))
|
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
|
else
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
@@ -651,8 +658,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
|||||||
else
|
else
|
||||||
if(fancy)
|
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."))
|
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
|
else
|
||||||
cig.light(span_notice("[user] holds the [name] out for [M], and lights [M.p_their()] [cig.name]."))
|
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
|
else
|
||||||
..()
|
..()
|
||||||
|
|
||||||
@@ -710,6 +719,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
|||||||
/obj/item/lighter/greyscale/ignition_effect(atom/A, mob/user)
|
/obj/item/lighter/greyscale/ignition_effect(atom/A, mob/user)
|
||||||
if(is_hot())
|
if(is_hot())
|
||||||
. = span_notice("After some fiddling, [user] manages to light [A] with [src].")
|
. = 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
|
/obj/item/lighter/slime
|
||||||
|
|||||||
@@ -167,17 +167,14 @@
|
|||||||
|
|
||||||
if(H.dna.species.use_skintones)
|
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
|
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))
|
if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||||
return
|
|
||||||
|
|
||||||
if(new_s_tone)
|
if(new_s_tone)
|
||||||
H.skin_tone = new_s_tone
|
H.skin_tone = new_s_tone
|
||||||
H.dna.update_ui_block(DNA_SKIN_TONE_BLOCK)
|
H.dna.update_ui_block(DNA_SKIN_TONE_BLOCK)
|
||||||
|
|
||||||
if((MUTCOLORS in H.dna.species.species_traits) && !(NOCOLORCHANGE in H.dna.species.species_traits))
|
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
|
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))
|
if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||||
return
|
|
||||||
if(new_mutantcolor)
|
if(new_mutantcolor)
|
||||||
var/temp_hsv = RGBtoHSV(new_mutantcolor)
|
var/temp_hsv = RGBtoHSV(new_mutantcolor)
|
||||||
|
|
||||||
|
|||||||
@@ -188,10 +188,9 @@
|
|||||||
else
|
else
|
||||||
if(recipient.holder)
|
if(recipient.holder)
|
||||||
if(holder)
|
if(holder)
|
||||||
to_chat(recipient,
|
to_chat(recipient, "<font color='red' size='4'><b>-- Administrator private message --</b></font>", confidential=TRUE)
|
||||||
type = MESSAGE_TYPE_ADMINPM,
|
to_chat(recipient, span_adminsay("Admin PM from-<b>[key_name(src, recipient, 0)]</b>: [span_linkify("[msg]")]"), confidential=TRUE)
|
||||||
html = span_danger("Admin PM from-<b>[key_name(src, recipient, 1)]</b>: [span_linkify("[keywordparsedmsg]")]"),
|
to_chat(recipient, span_adminsay("<i>Click on the administrator's name to reply.</i>"), confidential=TRUE)
|
||||||
confidential = TRUE)
|
|
||||||
to_chat(src,
|
to_chat(src,
|
||||||
type = MESSAGE_TYPE_ADMINPM,
|
type = MESSAGE_TYPE_ADMINPM,
|
||||||
html = span_notice("Admin PM to-<b>[key_name(recipient, src, 1)]</b>: [span_linkify("[keywordparsedmsg]")]"),
|
html = span_notice("Admin PM to-<b>[key_name(recipient, src, 1)]</b>: [span_linkify("[keywordparsedmsg]")]"),
|
||||||
|
|||||||
@@ -306,6 +306,8 @@
|
|||||||
if(factory)
|
if(factory)
|
||||||
factory.naut = null //remove this naut from its factory
|
factory.naut = null //remove this naut from its factory
|
||||||
factory.max_integrity = initial(factory.max_integrity)
|
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)
|
flick("blobbernaut_death", src)
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/blob/blobbernaut/independent
|
/mob/living/simple_animal/hostile/blob/blobbernaut/independent
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ Contains:
|
|||||||
|
|
||||||
/obj/item/clothing/suit/space/pirate
|
/obj/item/clothing/suit/space/pirate
|
||||||
name = "syndicate pirate coat"
|
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"
|
icon_state = "pirate"
|
||||||
item_state = "pirate"
|
item_state = "pirate"
|
||||||
w_class = WEIGHT_CLASS_NORMAL
|
w_class = WEIGHT_CLASS_NORMAL
|
||||||
@@ -146,7 +146,7 @@ Contains:
|
|||||||
|
|
||||||
/obj/item/clothing/suit/space/pirate/captain
|
/obj/item/clothing/suit/space/pirate/captain
|
||||||
name = "syndicate pirate captain coat"
|
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)
|
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
|
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||||
icon_state = "hgpirate"
|
icon_state = "hgpirate"
|
||||||
|
|||||||
@@ -365,30 +365,38 @@
|
|||||||
filling_color = "#B22222"
|
filling_color = "#B22222"
|
||||||
foodtype = MEAT
|
foodtype = MEAT
|
||||||
tastes = list("meat" = 1)
|
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)
|
juice_results = list(/datum/reagent/consumable/drippings = 15)
|
||||||
burns_on_grill = TRUE
|
burns_on_grill = TRUE
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/meat/steak/plain
|
/obj/item/reagent_containers/food/snacks/meat/steak/plain
|
||||||
|
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/plain
|
||||||
foodtype = MEAT
|
foodtype = MEAT
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/meat/steak/plain/human
|
/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)
|
tastes = list("tender meat" = 1)
|
||||||
foodtype = MEAT | GROSS
|
foodtype = MEAT | GROSS
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/meat/steak/killertomato
|
/obj/item/reagent_containers/food/snacks/meat/steak/killertomato
|
||||||
|
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/killertomato
|
||||||
name = "killer tomato steak"
|
name = "killer tomato steak"
|
||||||
tastes = list("tomato" = 1)
|
tastes = list("tomato" = 1)
|
||||||
foodtype = FRUIT
|
foodtype = FRUIT
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/meat/steak/bear
|
/obj/item/reagent_containers/food/snacks/meat/steak/bear
|
||||||
|
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/bear
|
||||||
name = "bear steak"
|
name = "bear steak"
|
||||||
tastes = list("meat" = 1, "salmon" = 1)
|
tastes = list("meat" = 1, "salmon" = 1)
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/meat/steak/xeno
|
/obj/item/reagent_containers/food/snacks/meat/steak/xeno
|
||||||
|
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/xeno
|
||||||
name = "xeno steak"
|
name = "xeno steak"
|
||||||
tastes = list("meat" = 1, "acid" = 1)
|
tastes = list("meat" = 1, "acid" = 1)
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/meat/steak/spider
|
/obj/item/reagent_containers/food/snacks/meat/steak/spider
|
||||||
|
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/spider
|
||||||
name = "spider steak"
|
name = "spider steak"
|
||||||
tastes = list("cobwebs" = 1)
|
tastes = list("cobwebs" = 1)
|
||||||
|
|
||||||
@@ -402,15 +410,18 @@
|
|||||||
foodtype = MEAT
|
foodtype = MEAT
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/meat/steak/gondola
|
/obj/item/reagent_containers/food/snacks/meat/steak/gondola
|
||||||
|
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/gondola
|
||||||
name = "gondola steak"
|
name = "gondola steak"
|
||||||
tastes = list("meat" = 1, "tranquility" = 1)
|
tastes = list("meat" = 1, "tranquility" = 1)
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/meat/steak/penguin
|
/obj/item/reagent_containers/food/snacks/meat/steak/penguin
|
||||||
|
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet/penguin
|
||||||
name = "penguin steak"
|
name = "penguin steak"
|
||||||
icon_state = "birdsteak"
|
icon_state = "birdsteak"
|
||||||
tastes = list("beef" = 1, "cod fish" = 1)
|
tastes = list("beef" = 1, "cod fish" = 1)
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/meat/steak/plain/human/lizard
|
/obj/item/reagent_containers/food/snacks/meat/steak/plain/human/lizard
|
||||||
|
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet
|
||||||
name = "lizard steak"
|
name = "lizard steak"
|
||||||
icon_state = "birdsteak"
|
icon_state = "birdsteak"
|
||||||
tastes = list("juicy chicken" = 3, "scales" = 1)
|
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)
|
tastes = list("enhanced char" = 2, "suspicious tenderness" = 2, "natural & artificial dyes" = 2, "emulsifying agents" = 1)
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/meat/steak/synth
|
/obj/item/reagent_containers/food/snacks/meat/steak/synth
|
||||||
|
slice_path = /obj/item/reagent_containers/food/snacks/meat/cutlet
|
||||||
name = "synthsteak"
|
name = "synthsteak"
|
||||||
desc = "A synthetic meat steak. It doesn't look quite right, now does it?"
|
desc = "A synthetic meat steak. It doesn't look quite right, now does it?"
|
||||||
icon_state = "meatsteak_old"
|
icon_state = "meatsteak_old"
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
update_icons()
|
update_icons()
|
||||||
status_flags |= CANPUSH
|
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.
|
//When the alien queen dies, all others must pay the price for letting her die.
|
||||||
/mob/living/carbon/alien/humanoid/royal/queen/death(gibbed)
|
/mob/living/carbon/alien/humanoid/royal/queen/death(gibbed)
|
||||||
if(stat == DEAD)
|
if(stat == DEAD)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
GLOBAL_VAR_INIT(permadeath, FALSE)
|
||||||
|
|
||||||
/mob/living/gib(no_brain, no_organs, no_bodyparts)
|
/mob/living/gib(no_brain, no_organs, no_bodyparts)
|
||||||
var/prev_lying = lying
|
var/prev_lying = lying
|
||||||
if(stat != DEAD)
|
if(stat != DEAD)
|
||||||
@@ -89,4 +91,7 @@
|
|||||||
var/datum/soullink/S = s
|
var/datum/soullink/S = s
|
||||||
S.sharerDies(gibbed)
|
S.sharerDies(gibbed)
|
||||||
|
|
||||||
|
if(GLOB.permadeath)
|
||||||
|
ghostize(FALSE)
|
||||||
|
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|||||||
@@ -102,6 +102,8 @@
|
|||||||
if(!.)
|
if(!.)
|
||||||
return
|
return
|
||||||
var/turf/T = get_turf(owner)
|
var/turf/T = get_turf(owner)
|
||||||
|
if(!T)
|
||||||
|
return
|
||||||
var/loot = rand(1,100)
|
var/loot = rand(1,100)
|
||||||
switch(loot)
|
switch(loot)
|
||||||
if(1 to 5)
|
if(1 to 5)
|
||||||
@@ -147,6 +149,9 @@
|
|||||||
. = ..()
|
. = ..()
|
||||||
if(!.)
|
if(!.)
|
||||||
return
|
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/cap = CONFIG_GET(number/ratcap)
|
||||||
var/something_from_nothing = FALSE
|
var/something_from_nothing = FALSE
|
||||||
for(var/mob/living/simple_animal/mouse/M in oview(owner, 5))
|
for(var/mob/living/simple_animal/mouse/M in oview(owner, 5))
|
||||||
@@ -188,6 +193,8 @@
|
|||||||
|
|
||||||
/datum/action/cooldown/domain/proc/domain()
|
/datum/action/cooldown/domain/proc/domain()
|
||||||
var/turf/T = get_turf(owner)
|
var/turf/T = get_turf(owner)
|
||||||
|
if(!T)
|
||||||
|
return
|
||||||
T.atmos_spawn_air("miasma=4;TEMP=[T20C]")
|
T.atmos_spawn_air("miasma=4;TEMP=[T20C]")
|
||||||
switch (rand(1,10))
|
switch (rand(1,10))
|
||||||
if (8)
|
if (8)
|
||||||
|
|||||||
@@ -16,9 +16,9 @@
|
|||||||
/obj/item/ammo_casing/energy/plasma/scatter
|
/obj/item/ammo_casing/energy/plasma/scatter
|
||||||
projectile_type = /obj/item/projectile/plasma/scatter
|
projectile_type = /obj/item/projectile/plasma/scatter
|
||||||
delay = 15
|
delay = 15
|
||||||
e_cost = 70
|
e_cost = 35
|
||||||
pellets = 5
|
pellets = 6
|
||||||
variance = 25
|
variance = 30
|
||||||
|
|
||||||
/obj/item/ammo_casing/energy/plasma/scatter/adv
|
/obj/item/ammo_casing/energy/plasma/scatter/adv
|
||||||
projectile_type = /obj/item/projectile/plasma/scatter/adv
|
projectile_type = /obj/item/projectile/plasma/scatter/adv
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/obj/item/ammo_box/a357
|
/obj/item/ammo_box/a357
|
||||||
name = "speed loader (.357)"
|
name = "speed loader (.357)"
|
||||||
desc = "Designed to quickly reload revolvers."
|
desc = "A seven-shot speed loader designed for .357 revolvers."
|
||||||
icon_state = "357"
|
icon_state = "357"
|
||||||
ammo_type = /obj/item/ammo_casing/a357
|
ammo_type = /obj/item/ammo_casing/a357
|
||||||
max_ammo = 7
|
max_ammo = 7
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
/obj/item/ammo_box/c38
|
/obj/item/ammo_box/c38
|
||||||
name = "speed loader (.38)"
|
name = "speed loader (.38)"
|
||||||
desc = "Designed to quickly reload revolvers."
|
desc = "A six-shot speed loader designed for .38 revolvers."
|
||||||
icon_state = "38"
|
icon_state = "38"
|
||||||
ammo_type = /obj/item/ammo_casing/c38
|
ammo_type = /obj/item/ammo_casing/c38
|
||||||
max_ammo = 6
|
max_ammo = 6
|
||||||
@@ -17,17 +17,20 @@
|
|||||||
|
|
||||||
/obj/item/ammo_box/c38/trac
|
/obj/item/ammo_box/c38/trac
|
||||||
name = "speed loader (.38 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
|
ammo_type = /obj/item/ammo_casing/c38/trac
|
||||||
|
|
||||||
/obj/item/ammo_box/c38/hotshot
|
/obj/item/ammo_box/c38/hotshot
|
||||||
name = "speed loader (.38 Hot Shot)"
|
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
|
ammo_type = /obj/item/ammo_casing/c38/hotshot
|
||||||
|
|
||||||
/obj/item/ammo_box/c38/iceblox
|
/obj/item/ammo_box/c38/iceblox
|
||||||
name = "speed loader (.38 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
|
ammo_type = /obj/item/ammo_casing/c38/iceblox
|
||||||
|
|
||||||
/obj/item/ammo_box/c9mm
|
/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
|
/obj/item/projectile/bullet/c38/hotshot //similar to incendiary bullets, but do not leave a flaming trail
|
||||||
name = ".38 Hot Shot bullet"
|
name = ".38 Hot Shot bullet"
|
||||||
damage = 20
|
damage = 15
|
||||||
|
stamina = 0
|
||||||
|
|
||||||
/obj/item/projectile/bullet/c38/hotshot/on_hit(atom/target, blocked = FALSE)
|
/obj/item/projectile/bullet/c38/hotshot/on_hit(atom/target, blocked = FALSE)
|
||||||
. = ..()
|
. = ..()
|
||||||
if(iscarbon(target))
|
if(iscarbon(target))
|
||||||
var/mob/living/carbon/M = target
|
var/mob/living/carbon/M = target
|
||||||
M.adjust_fire_stacks(6)
|
M.adjust_fire_stacks(2)
|
||||||
M.IgniteMob()
|
M.IgniteMob()
|
||||||
|
|
||||||
/obj/item/projectile/bullet/c38/iceblox //see /obj/item/projectile/temp for the original code
|
/obj/item/projectile/bullet/c38/iceblox //see /obj/item/projectile/temp for the original code
|
||||||
name = ".38 Iceblox bullet"
|
name = ".38 Iceblox bullet"
|
||||||
damage = 20
|
damage = 15
|
||||||
|
stamina = 0
|
||||||
var/temperature = 100
|
var/temperature = 100
|
||||||
|
|
||||||
/obj/item/projectile/bullet/c38/iceblox/on_hit(atom/target, blocked = FALSE)
|
/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
|
color = rgb(51, 19, 3) //Sickly brown
|
||||||
boozepwr = 300 //I warned you
|
boozepwr = 300 //I warned you
|
||||||
taste_description = "a wall of bricks"
|
taste_description = "a wall of bricks"
|
||||||
glass_icon_state = "glass_brown2"
|
glass_icon_state = "bacchus"
|
||||||
glass_name = "Bacchus' Blessing"
|
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...?"
|
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
|
map kilostation
|
||||||
maxplayers 40
|
maxplayers 40
|
||||||
votable
|
disabled
|
||||||
endmap
|
endmap
|
||||||
|
|
||||||
map gaxstation
|
map gaxstation
|
||||||
maxplayers 30
|
maxplayers 30
|
||||||
|
votable
|
||||||
endmap
|
endmap
|
||||||
|
|
||||||
map icebox
|
map icebox
|
||||||
|
|||||||
@@ -58,6 +58,72 @@
|
|||||||
-->
|
-->
|
||||||
<div class="commit sansserif">
|
<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>
|
<h2 class="date">01 July 2022</h2>
|
||||||
<h3 class="author">Mqiib updated:</h3>
|
<h3 class="author">Mqiib updated:</h3>
|
||||||
<ul class="changes bgimages16">
|
<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="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>
|
<li class="rscadd">Added chem spill event</li>
|
||||||
</ul>
|
</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>
|
</div>
|
||||||
|
|
||||||
<b>GoonStation 13 Development Team</b>
|
<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: Bone sword now huge, less block chance
|
||||||
- tweak: All claymores in ruins are now unique items in code, have updated description,
|
- tweak: All claymores in ruins are now unique items in code, have updated description,
|
||||||
also damage/blockchance nerfed
|
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"
|
suffix = "5x3_yogsmaintrpg.dmm"
|
||||||
name = "Maint yogsmaintrpg"
|
name = "Maint yogsmaintrpg"
|
||||||
|
|
||||||
|
///Author: Vaelophis
|
||||||
|
/datum/map_template/ruin/station/maint/fivexthree/smallfish
|
||||||
|
id = "smallfish"
|
||||||
|
suffix = "5x3_smallfish.dmm"
|
||||||
|
name = "Maint smallfish"
|
||||||
|
|
||||||
///Author: Veeblefetzer
|
///Author: Veeblefetzer
|
||||||
/datum/map_template/ruin/station/maint/fivexthree/podmin
|
/datum/map_template/ruin/station/maint/fivexthree/podmin
|
||||||
id = "podmin"
|
id = "podmin"
|
||||||
|
|||||||
@@ -472,7 +472,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
|||||||
|
|
||||||
if(initiator)
|
if(initiator)
|
||||||
to_chat(initiator, msg, confidential=TRUE)
|
to_chat(initiator, msg, confidential=TRUE)
|
||||||
initiator.mentorhelp(name, 1)
|
initiator.mhelp(name, TRUE)
|
||||||
|
|
||||||
SSblackbox.record_feedback("tally", "ahelp_stats", 1, "MHelp")
|
SSblackbox.record_feedback("tally", "ahelp_stats", 1, "MHelp")
|
||||||
msg = "Ticket [TicketHref("#[id]")] marked as MHelp by [key_name]"
|
msg = "Ticket [TicketHref("#[id]")] marked as MHelp by [key_name]"
|
||||||
|
|||||||
@@ -20,11 +20,14 @@
|
|||||||
paycheck_department = ACCOUNT_MED
|
paycheck_department = ACCOUNT_MED
|
||||||
display_order = JOB_DISPLAY_ORDER_PSYCHIATRIST
|
display_order = JOB_DISPLAY_ORDER_PSYCHIATRIST
|
||||||
|
|
||||||
changed_maps = list("OmegaStation")
|
changed_maps = list("OmegaStation","GaxStation")
|
||||||
|
|
||||||
/datum/job/psych/proc/OmegaStationChanges()
|
/datum/job/psych/proc/OmegaStationChanges()
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
|
/datum/job/psych/proc/GaxStationChanges() // I'M SORRY
|
||||||
|
return TRUE
|
||||||
|
|
||||||
/datum/outfit/job/psych
|
/datum/outfit/job/psych
|
||||||
name = "Psych"
|
name = "Psych"
|
||||||
jobtype = /datum/job/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 category = "Mentor"
|
||||||
set name = "Mentorhelp"
|
set name = "Mentorhelp"
|
||||||
|
mhelp(msg, FALSE)
|
||||||
|
|
||||||
|
/client/proc/mhelp(msg as text, fromadmins as num)
|
||||||
//clean the input msg
|
//clean the input msg
|
||||||
if(!msg) return
|
if(!msg) return
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
if(is_mentor())
|
if(is_mentor())
|
||||||
to_chat(src, "<font color='red'>Error: Mentor-PM: Client not found.</font>", confidential=TRUE)
|
to_chat(src, "<font color='red'>Error: Mentor-PM: Client not found.</font>", confidential=TRUE)
|
||||||
else
|
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
|
return
|
||||||
|
|
||||||
//get message text, limit it's length.and clean/escape html
|
//get message text, limit it's length.and clean/escape html
|
||||||
|
|||||||
Reference in New Issue
Block a user