mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Merge remote-tracking branch 'upstream/dev-freeze' into dev
Conflicts: html/changelogs/.all_changelog.yml
This commit is contained in:
@@ -23,5 +23,5 @@
|
|||||||
/datum/antagonist/proc/place_mob(var/mob/living/mob)
|
/datum/antagonist/proc/place_mob(var/mob/living/mob)
|
||||||
if(!starting_locations || !starting_locations.len)
|
if(!starting_locations || !starting_locations.len)
|
||||||
return
|
return
|
||||||
var/turf/T = pick_mobless_turf_if_exists(mob)
|
var/turf/T = pick_mobless_turf_if_exists(starting_locations)
|
||||||
mob.forceMove(T)
|
mob.forceMove(T)
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
certain though... there is never just one of them. Good luck."
|
certain though... there is never just one of them. Good luck."
|
||||||
config_tag = "changeling"
|
config_tag = "changeling"
|
||||||
required_players = 2
|
required_players = 2
|
||||||
required_players_secret = 10
|
|
||||||
required_enemies = 1
|
required_enemies = 1
|
||||||
end_on_antag_death = 1
|
end_on_antag_death = 1
|
||||||
antag_scaling_coeff = 10
|
antag_scaling_coeff = 10
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
extended_round_description = "The station has been infiltrated by a fanatical group of death-cultists! They will use powers from beyond your comprehension to subvert you to their cause and ultimately please their gods through sacrificial summons and physical immolation! Try to survive!"
|
extended_round_description = "The station has been infiltrated by a fanatical group of death-cultists! They will use powers from beyond your comprehension to subvert you to their cause and ultimately please their gods through sacrificial summons and physical immolation! Try to survive!"
|
||||||
config_tag = "cult"
|
config_tag = "cult"
|
||||||
required_players = 5
|
required_players = 5
|
||||||
required_players_secret = 15
|
|
||||||
required_enemies = 3
|
required_enemies = 3
|
||||||
end_on_antag_death = 1
|
end_on_antag_death = 1
|
||||||
antag_tags = list(MODE_CULTIST)
|
antag_tags = list(MODE_CULTIST)
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
name = "epidemic"
|
name = "epidemic"
|
||||||
config_tag = "epidemic"
|
config_tag = "epidemic"
|
||||||
required_players = 1
|
required_players = 1
|
||||||
required_players_secret = 15
|
|
||||||
round_description = "A deadly epidemic is spreading on the station. Find a cure as fast as possible, and keep your distance to anyone who speaks in a hoarse voice!"
|
round_description = "A deadly epidemic is spreading on the station. Find a cure as fast as possible, and keep your distance to anyone who speaks in a hoarse voice!"
|
||||||
|
|
||||||
var/cruiser_arrival
|
var/cruiser_arrival
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ var/global/list/additional_antag_types = list()
|
|||||||
var/probability = 0
|
var/probability = 0
|
||||||
|
|
||||||
var/required_players = 0 // Minimum players for round to start if voted in.
|
var/required_players = 0 // Minimum players for round to start if voted in.
|
||||||
var/required_players_secret = 0 // Minimum number of players for that game mode to be chose in Secret
|
|
||||||
var/required_enemies = 0 // Minimum antagonists for round to start.
|
var/required_enemies = 0 // Minimum antagonists for round to start.
|
||||||
var/newscaster_announcements = null
|
var/newscaster_announcements = null
|
||||||
var/end_on_antag_death = 0 // Round will end when all antagonists are dead.
|
var/end_on_antag_death = 0 // Round will end when all antagonists are dead.
|
||||||
@@ -147,12 +146,8 @@ var/global/list/additional_antag_types = list()
|
|||||||
if((player.client)&&(player.ready))
|
if((player.client)&&(player.ready))
|
||||||
playerC++
|
playerC++
|
||||||
|
|
||||||
if(master_mode=="secret")
|
if(playerC < required_players)
|
||||||
if(playerC < required_players_secret)
|
return 0
|
||||||
return 0
|
|
||||||
else
|
|
||||||
if(playerC < required_players)
|
|
||||||
return 0
|
|
||||||
|
|
||||||
if(!(antag_templates && antag_templates.len))
|
if(!(antag_templates && antag_templates.len))
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
|
|||||||
name = "heist"
|
name = "heist"
|
||||||
config_tag = "heist"
|
config_tag = "heist"
|
||||||
required_players = 15
|
required_players = 15
|
||||||
required_players_secret = 25
|
|
||||||
required_enemies = 4
|
required_enemies = 4
|
||||||
round_description = "An unidentified bluespace signature has slipped past the Icarus and is approaching the station!"
|
round_description = "An unidentified bluespace signature has slipped past the Icarus and is approaching the station!"
|
||||||
end_on_antag_death = 1
|
end_on_antag_death = 1
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
extended_round_description = "The AI will attempt to hack the APCs around the station in order to gain as much control as possible."
|
extended_round_description = "The AI will attempt to hack the APCs around the station in order to gain as much control as possible."
|
||||||
config_tag = "malfunction"
|
config_tag = "malfunction"
|
||||||
required_players = 2
|
required_players = 2
|
||||||
required_players_secret = 7
|
|
||||||
required_enemies = 1
|
required_enemies = 1
|
||||||
end_on_antag_death = 0
|
end_on_antag_death = 0
|
||||||
auto_recall_shuttle = 0
|
auto_recall_shuttle = 0
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
name = "Memetic Anomaly"
|
name = "Memetic Anomaly"
|
||||||
config_tag = "meme"
|
config_tag = "meme"
|
||||||
required_players = 3
|
required_players = 3
|
||||||
required_players_secret = 10
|
|
||||||
restricted_jobs = list("AI", "Cyborg")
|
restricted_jobs = list("AI", "Cyborg")
|
||||||
recommended_enemies = 2 // need at least a meme and a host
|
recommended_enemies = 2 // need at least a meme and a host
|
||||||
votable = 0 // temporarily disable this mode for voting
|
votable = 0 // temporarily disable this mode for voting
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
only hope this unknown assassin isn't here for you."
|
only hope this unknown assassin isn't here for you."
|
||||||
config_tag = "ninja"
|
config_tag = "ninja"
|
||||||
required_players = 1
|
required_players = 1
|
||||||
required_players_secret = 10
|
|
||||||
required_enemies = 1
|
required_enemies = 1
|
||||||
end_on_antag_death = 1
|
end_on_antag_death = 1
|
||||||
antag_tags = list(MODE_NINJA)
|
antag_tags = list(MODE_NINJA)
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ var/list/nuke_disks = list()
|
|||||||
round_description = "A mercenary strike force is approaching the station!"
|
round_description = "A mercenary strike force is approaching the station!"
|
||||||
config_tag = "mercenary"
|
config_tag = "mercenary"
|
||||||
required_players = 15
|
required_players = 15
|
||||||
required_players_secret = 25 // 25 players - 5 players to be the nuke ops = 20 players remaining
|
|
||||||
required_enemies = 1
|
required_enemies = 1
|
||||||
end_on_antag_death = 1
|
end_on_antag_death = 1
|
||||||
var/nuke_off_station = 0 //Used for tracking if the syndies actually haul the nuke to the station
|
var/nuke_off_station = 0 //Used for tracking if the syndies actually haul the nuke to the station
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
round_description = "Some crewmembers are attempting to start a revolution!"
|
round_description = "Some crewmembers are attempting to start a revolution!"
|
||||||
extended_round_description = "Revolutionaries - Remove the heads of staff from power. Convert other crewmembers to your cause using the 'Convert Bourgeoise' verb. Protect your leaders."
|
extended_round_description = "Revolutionaries - Remove the heads of staff from power. Convert other crewmembers to your cause using the 'Convert Bourgeoise' verb. Protect your leaders."
|
||||||
required_players = 4
|
required_players = 4
|
||||||
required_players_secret = 15
|
|
||||||
required_enemies = 3
|
required_enemies = 3
|
||||||
auto_recall_shuttle = 1
|
auto_recall_shuttle = 1
|
||||||
end_on_antag_death = 1
|
end_on_antag_death = 1
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
extended_round_description = "A powerful entity capable of manipulating the elements around him, most commonly referred to as a 'wizard', has infiltrated the station. They have a wide variety of powers and spells available to them that makes your own simple moral self tremble with fear and excitement. Ultimately, their purpose is unknown. However, it is up to you and your crew to decide if their powers can be used for good or if their arrival foreshadows the destruction of the entire station."
|
extended_round_description = "A powerful entity capable of manipulating the elements around him, most commonly referred to as a 'wizard', has infiltrated the station. They have a wide variety of powers and spells available to them that makes your own simple moral self tremble with fear and excitement. Ultimately, their purpose is unknown. However, it is up to you and your crew to decide if their powers can be used for good or if their arrival foreshadows the destruction of the entire station."
|
||||||
config_tag = "wizard"
|
config_tag = "wizard"
|
||||||
required_players = 1
|
required_players = 1
|
||||||
required_players_secret = 10
|
|
||||||
required_enemies = 1
|
required_enemies = 1
|
||||||
end_on_antag_death = 1
|
end_on_antag_death = 1
|
||||||
antag_tags = list(MODE_WIZARD)
|
antag_tags = list(MODE_WIZARD)
|
||||||
|
|||||||
@@ -137,6 +137,7 @@
|
|||||||
if (istype(O, /obj/item/stack))
|
if (istype(O, /obj/item/stack))
|
||||||
var/obj/item/stack/S = O
|
var/obj/item/stack/S = O
|
||||||
S.amount = produced
|
S.amount = produced
|
||||||
|
S.add_to_stacks(user)
|
||||||
|
|
||||||
if (istype(O, /obj/item/weapon/storage)) //BubbleWrap - so newly formed boxes are empty
|
if (istype(O, /obj/item/weapon/storage)) //BubbleWrap - so newly formed boxes are empty
|
||||||
for (var/obj/item/I in O)
|
for (var/obj/item/I in O)
|
||||||
@@ -284,13 +285,13 @@
|
|||||||
return
|
return
|
||||||
return max_amount
|
return max_amount
|
||||||
|
|
||||||
/obj/item/stack/proc/add_to_stacks(mob/usr as mob)
|
/obj/item/stack/proc/add_to_stacks(mob/user as mob)
|
||||||
for (var/obj/item/stack/item in usr.loc)
|
for (var/obj/item/stack/item in user.loc)
|
||||||
if (item==src)
|
if (item==src)
|
||||||
continue
|
continue
|
||||||
var/transfer = src.transfer_to(item)
|
var/transfer = src.transfer_to(item)
|
||||||
if (transfer)
|
if (transfer)
|
||||||
usr << "You add a new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s."
|
user << "<span class='notice'>You add a new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s.</span>"
|
||||||
if(!amount)
|
if(!amount)
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|||||||
@@ -65,9 +65,10 @@
|
|||||||
var/obj/item/stack/material/M = S
|
var/obj/item/stack/material/M = S
|
||||||
if(!istype(M) || material.name != M.material.name)
|
if(!istype(M) || material.name != M.material.name)
|
||||||
return 0
|
return 0
|
||||||
..(S,tamount,1)
|
var/transfer = ..(S,tamount,1)
|
||||||
if(src) update_strings()
|
if(src) update_strings()
|
||||||
if(M) M.update_strings()
|
if(M) M.update_strings()
|
||||||
|
return transfer
|
||||||
|
|
||||||
/obj/item/stack/material/attack_self(var/mob/user)
|
/obj/item/stack/material/attack_self(var/mob/user)
|
||||||
if(!material.build_windows(user, src))
|
if(!material.build_windows(user, src))
|
||||||
@@ -207,4 +208,4 @@
|
|||||||
desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures. It is reinforced with few rods."
|
desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures. It is reinforced with few rods."
|
||||||
singular_name = "reinforced borosilicate glass sheet"
|
singular_name = "reinforced borosilicate glass sheet"
|
||||||
icon_state = "sheet-phoronrglass"
|
icon_state = "sheet-phoronrglass"
|
||||||
default_type = "reinforced borosilicate glass"
|
default_type = "reinforced borosilicate glass"
|
||||||
|
|||||||
@@ -127,8 +127,6 @@ var/list/name_to_material
|
|||||||
var/obj/item/stack/S = new rod_product(get_turf(user))
|
var/obj/item/stack/S = new rod_product(get_turf(user))
|
||||||
S.add_fingerprint(user)
|
S.add_fingerprint(user)
|
||||||
S.add_to_stacks(user)
|
S.add_to_stacks(user)
|
||||||
if(!(user.l_hand && user.r_hand))
|
|
||||||
user.put_in_hands(S)
|
|
||||||
|
|
||||||
/material/proc/build_wired_product(var/mob/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack)
|
/material/proc/build_wired_product(var/mob/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack)
|
||||||
if(!wire_product)
|
if(!wire_product)
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ Works together with spawning an observer, noted above.
|
|||||||
if(key)
|
if(key)
|
||||||
var/mob/dead/observer/ghost = new(src) //Transfer safety to observer spawning proc.
|
var/mob/dead/observer/ghost = new(src) //Transfer safety to observer spawning proc.
|
||||||
ghost.can_reenter_corpse = can_reenter_corpse
|
ghost.can_reenter_corpse = can_reenter_corpse
|
||||||
ghost.timeofdeath = src.timeofdeath //BS12 EDIT
|
ghost.timeofdeath = src.stat == DEAD ? src.timeofdeath : world.time
|
||||||
ghost.key = key
|
ghost.key = key
|
||||||
if(ghost.client && !ghost.client.holder && !config.antag_hud_allowed) // For new ghosts we remove the verb from even showing up if it's not allowed.
|
if(ghost.client && !ghost.client.holder && !config.antag_hud_allowed) // For new ghosts we remove the verb from even showing up if it's not allowed.
|
||||||
ghost.verbs -= /mob/dead/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing!
|
ghost.verbs -= /mob/dead/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing!
|
||||||
|
|||||||
@@ -1282,11 +1282,10 @@
|
|||||||
if(C.body_parts_covered & FEET)
|
if(C.body_parts_covered & FEET)
|
||||||
feet_exposed = 0
|
feet_exposed = 0
|
||||||
|
|
||||||
flavor_text = flavor_texts["general"]
|
flavor_text = ""
|
||||||
flavor_text += "\n\n"
|
|
||||||
for (var/T in flavor_texts)
|
for (var/T in flavor_texts)
|
||||||
if(flavor_texts[T] && flavor_texts[T] != "")
|
if(flavor_texts[T] && flavor_texts[T] != "")
|
||||||
if((T == "head" && head_exposed) || (T == "face" && face_exposed) || (T == "eyes" && eyes_exposed) || (T == "torso" && torso_exposed) || (T == "arms" && arms_exposed) || (T == "hands" && hands_exposed) || (T == "legs" && legs_exposed) || (T == "feet" && feet_exposed))
|
if((T == "general") || (T == "head" && head_exposed) || (T == "face" && face_exposed) || (T == "eyes" && eyes_exposed) || (T == "torso" && torso_exposed) || (T == "arms" && arms_exposed) || (T == "hands" && hands_exposed) || (T == "legs" && legs_exposed) || (T == "feet" && feet_exposed))
|
||||||
flavor_text += flavor_texts[T]
|
flavor_text += flavor_texts[T]
|
||||||
flavor_text += "\n\n"
|
flavor_text += "\n\n"
|
||||||
if(!shrink)
|
if(!shrink)
|
||||||
|
|||||||
@@ -347,26 +347,16 @@
|
|||||||
if(status_flags & GODMODE)
|
if(status_flags & GODMODE)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(status_flags & GODMODE)
|
//exposure to extreme pressures can rupture lungs
|
||||||
return
|
if(breath && (breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5))
|
||||||
|
if(!is_lung_ruptured() && prob(5))
|
||||||
//exposure to extreme pressures can rupture lungs
|
rupture_lung()
|
||||||
if(breath && (breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5))
|
|
||||||
if(!is_lung_ruptured() && prob(5))
|
|
||||||
rupture_lung()
|
|
||||||
|
|
||||||
//check if we actually need to process breath
|
|
||||||
if(!breath || (breath.total_moles == 0) || suiciding)
|
|
||||||
failed_last_breath = 1
|
|
||||||
if(suiciding)
|
|
||||||
adjustOxyLoss(2)//If you are suiciding, you should die a little bit faster
|
|
||||||
oxygen_alert = max(oxygen_alert, 1)
|
|
||||||
return 0
|
|
||||||
if(health > config.health_threshold_crit)
|
|
||||||
adjustOxyLoss(HUMAN_MAX_OXYLOSS)
|
|
||||||
else
|
|
||||||
adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
|
|
||||||
|
|
||||||
|
//check if we actually need to process breath
|
||||||
|
if(!breath || (breath.total_moles == 0) || suiciding)
|
||||||
|
failed_last_breath = 1
|
||||||
|
if(suiciding)
|
||||||
|
adjustOxyLoss(2)//If you are suiciding, you should die a little bit faster
|
||||||
oxygen_alert = max(oxygen_alert, 1)
|
oxygen_alert = max(oxygen_alert, 1)
|
||||||
return 0
|
return 0
|
||||||
if(health > config.health_threshold_crit)
|
if(health > config.health_threshold_crit)
|
||||||
@@ -375,7 +365,6 @@
|
|||||||
adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
|
adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
|
||||||
|
|
||||||
oxygen_alert = max(oxygen_alert, 1)
|
oxygen_alert = max(oxygen_alert, 1)
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
var/safe_pressure_min = 16 // Minimum safe partial pressure of breathable gas in kPa
|
var/safe_pressure_min = 16 // Minimum safe partial pressure of breathable gas in kPa
|
||||||
|
|||||||
@@ -67,6 +67,17 @@
|
|||||||
<li class="tweak">Light replacers now hold up to 32 light bulbs.</li>
|
<li class="tweak">Light replacers now hold up to 32 light bulbs.</li>
|
||||||
<li class="tweak">Light replacers can be obtained through janitorial supply crates.</li>
|
<li class="tweak">Light replacers can be obtained through janitorial supply crates.</li>
|
||||||
<li class="tweak">A sheet of glass fills the light replacer by 16 bulbs.</li>
|
<li class="tweak">A sheet of glass fills the light replacer by 16 bulbs.</li>
|
||||||
|
<h2 class="date">14 October 2015</h2>
|
||||||
|
<h3 class="author">Hubblenaut updated:</h3>
|
||||||
|
<ul class="changes bgimages16">
|
||||||
|
<li class="bugfix">Airlock backup power test light properly offline when backup power down.</li>
|
||||||
|
<li class="bugfix">Empty flavor texts no longer draw an empty line on examination.</li>
|
||||||
|
<li class="bugfix">Material stacks now properly merge upon creation.</li>
|
||||||
|
<li class="bugfix">Messages for adding to existing stack appear again.</li>
|
||||||
|
</ul>
|
||||||
|
<h3 class="author">TheWelp updated:</h3>
|
||||||
|
<ul class="changes bgimages16">
|
||||||
|
<li class="rscdel">Removed higher Secret player requirements.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2 class="date">10 October 2015</h2>
|
<h2 class="date">10 October 2015</h2>
|
||||||
|
|||||||
@@ -2327,3 +2327,11 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
|||||||
- tweak: Light replacers now hold up to 32 light bulbs.
|
- tweak: Light replacers now hold up to 32 light bulbs.
|
||||||
- tweak: Light replacers can be obtained through janitorial supply crates.
|
- tweak: Light replacers can be obtained through janitorial supply crates.
|
||||||
- tweak: A sheet of glass fills the light replacer by 16 bulbs.
|
- tweak: A sheet of glass fills the light replacer by 16 bulbs.
|
||||||
|
2015-10-14:
|
||||||
|
Hubblenaut:
|
||||||
|
- bugfix: Airlock backup power test light properly offline when backup power down.
|
||||||
|
- bugfix: Empty flavor texts no longer draw an empty line on examination.
|
||||||
|
- bugfix: Material stacks now properly merge upon creation.
|
||||||
|
- bugfix: Messages for adding to existing stack appear again.
|
||||||
|
TheWelp:
|
||||||
|
- rscdel: Removed higher Secret player requirements.
|
||||||
|
|||||||
Reference in New Issue
Block a user