mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Merge pull request #6018 from Hubblenaut/master
Patch of fixes for bugs and oversights
This commit is contained in:
@@ -20,7 +20,7 @@
|
|||||||
/datum/game_mode/cult
|
/datum/game_mode/cult
|
||||||
name = "cult"
|
name = "cult"
|
||||||
config_tag = "cult"
|
config_tag = "cult"
|
||||||
restricted_jobs = list("Chaplain","AI", "Cyborg", "Lawyer", "Head of Security", "Captain")
|
restricted_jobs = list("Chaplain","AI", "Cyborg", "Internal Affairs Agent", "Head of Security", "Captain")
|
||||||
protected_jobs = list("Security Officer", "Warden", "Detective")
|
protected_jobs = list("Security Officer", "Warden", "Detective")
|
||||||
required_players = 5
|
required_players = 5
|
||||||
required_players_secret = 15
|
required_players_secret = 15
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
/datum/game_mode/revolution
|
/datum/game_mode/revolution
|
||||||
name = "revolution"
|
name = "revolution"
|
||||||
config_tag = "revolution"
|
config_tag = "revolution"
|
||||||
restricted_jobs = list("Lawyer", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
|
restricted_jobs = list("Internal Affairs Agent", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
|
||||||
protected_jobs = list("Security Officer", "Warden", "Detective")
|
protected_jobs = list("Security Officer", "Warden", "Detective")
|
||||||
required_players = 4
|
required_players = 4
|
||||||
required_players_secret = 15
|
required_players_secret = 15
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
name = "traitor"
|
name = "traitor"
|
||||||
config_tag = "traitor"
|
config_tag = "traitor"
|
||||||
restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances
|
restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances
|
||||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain")//AI", Currently out of the list as malf does not work for shit
|
protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Captain")//AI", Currently out of the list as malf does not work for shit
|
||||||
required_players = 0
|
required_players = 0
|
||||||
required_enemies = 1
|
required_enemies = 1
|
||||||
recommended_enemies = 4
|
recommended_enemies = 4
|
||||||
|
|||||||
@@ -325,7 +325,8 @@ var/global/list/frozen_items = list()
|
|||||||
time_entered = world.time
|
time_entered = world.time
|
||||||
|
|
||||||
// Book keeping!
|
// Book keeping!
|
||||||
log_admin("[key_name_admin(M)] has entered a stasis pod.")
|
var/turf/location = get_turf(src)
|
||||||
|
log_admin("[key_name_admin(M)] has entered a stasis pod. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[location.x];Y=[location.y];Z=[location.z]'>JMP</a>)")
|
||||||
message_admins("\blue [key_name_admin(M)] has entered a stasis pod.")
|
message_admins("\blue [key_name_admin(M)] has entered a stasis pod.")
|
||||||
|
|
||||||
//Despawning occurs when process() is called with an occupant without a client.
|
//Despawning occurs when process() is called with an occupant without a client.
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user)
|
/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user)
|
||||||
|
var/turf/location = get_turf(src) // For admin logs
|
||||||
if(istype(item, /obj/item/weapon/tank))
|
if(istype(item, /obj/item/weapon/tank))
|
||||||
if(tank_one && tank_two)
|
if(tank_one && tank_two)
|
||||||
user << "<span class='warning'>There are already two tanks attached, remove one first.</span>"
|
user << "<span class='warning'>There are already two tanks attached, remove one first.</span>"
|
||||||
@@ -31,7 +32,7 @@
|
|||||||
user.drop_item()
|
user.drop_item()
|
||||||
item.loc = src
|
item.loc = src
|
||||||
user << "<span class='notice'>You attach the tank to the transfer valve.</span>"
|
user << "<span class='notice'>You attach the tank to the transfer valve.</span>"
|
||||||
message_admins("[key_name_admin(user)] attached both tanks to a transfer valve.")
|
message_admins("[key_name_admin(user)] attached both tanks to a transfer valve. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[location.x];Y=[location.y];Z=[location.z]'>JMP</a>)")
|
||||||
log_game("[key_name_admin(user)] attached both tanks to a transfer valve.")
|
log_game("[key_name_admin(user)] attached both tanks to a transfer valve.")
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -53,7 +54,7 @@
|
|||||||
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
|
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
|
||||||
|
|
||||||
bombers += "[key_name(user)] attached a [item] to a transfer valve."
|
bombers += "[key_name(user)] attached a [item] to a transfer valve."
|
||||||
message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.")
|
message_admins("[key_name_admin(user)] attached a [item] to a transfer valve. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[location.x];Y=[location.y];Z=[location.z]'>JMP</a>)")
|
||||||
log_game("[key_name_admin(user)] attached a [item] to a transfer valve.")
|
log_game("[key_name_admin(user)] attached a [item] to a transfer valve.")
|
||||||
attacher = user
|
attacher = user
|
||||||
nanomanager.update_uis(src) // update all UIs attached to src
|
nanomanager.update_uis(src) // update all UIs attached to src
|
||||||
|
|||||||
@@ -170,7 +170,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
|||||||
var/response = alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost, you won't be able to play this round for another 30 minutes! You can't change your mind so choose wisely!)","Are you sure you want to ghost?","Ghost","Stay in body")
|
var/response = alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost, you won't be able to play this round for another 30 minutes! You can't change your mind so choose wisely!)","Are you sure you want to ghost?","Ghost","Stay in body")
|
||||||
if(response != "Ghost") return //didn't want to ghost after-all
|
if(response != "Ghost") return //didn't want to ghost after-all
|
||||||
resting = 1
|
resting = 1
|
||||||
message_admins("[key_name_admin(usr)] has ghosted.")
|
var/turf/location = get_turf(src)
|
||||||
|
message_admins("[key_name_admin(usr)] has ghosted. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[location.x];Y=[location.y];Z=[location.z]'>JMP</a>)")
|
||||||
log_game("[key_name_admin(usr)] has ghosted.")
|
log_game("[key_name_admin(usr)] has ghosted.")
|
||||||
var/mob/dead/observer/ghost = ghostize(0) //0 parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3
|
var/mob/dead/observer/ghost = ghostize(0) //0 parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3
|
||||||
ghost.timeofdeath = world.time // Because the living mob won't have a time of death and we want the respawn timer to work properly.
|
ghost.timeofdeath = world.time // Because the living mob won't have a time of death and we want the respawn timer to work properly.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/mob/living/carbon/Life()
|
/mob/living/carbon/Life()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
// Increase germ_level regularly
|
// Increase germ_level regularly
|
||||||
if(germ_level < GERM_LEVEL_AMBIENT && prob(30)) //if you're just standing there, you shouldn't get more germs beyond an ambient level
|
if(germ_level < GERM_LEVEL_AMBIENT && prob(30)) //if you're just standing there, you shouldn't get more germs beyond an ambient level
|
||||||
germ_level++
|
germ_level++
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
src.nutrition -= HUNGER_FACTOR/10
|
src.nutrition -= HUNGER_FACTOR/10
|
||||||
if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360)
|
if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360)
|
||||||
src.bodytemperature += 2
|
src.bodytemperature += 2
|
||||||
|
|
||||||
// Moving around increases germ_level faster
|
// Moving around increases germ_level faster
|
||||||
if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
|
if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
|
||||||
germ_level++
|
germ_level++
|
||||||
@@ -104,9 +104,9 @@
|
|||||||
shock_damage *= siemens_coeff
|
shock_damage *= siemens_coeff
|
||||||
if (shock_damage<1)
|
if (shock_damage<1)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
src.apply_damage(shock_damage, BURN, def_zone, used_weapon="Electrocution")
|
src.apply_damage(shock_damage, BURN, def_zone, used_weapon="Electrocution")
|
||||||
|
|
||||||
playsound(loc, "sparks", 50, 1, -1)
|
playsound(loc, "sparks", 50, 1, -1)
|
||||||
if (shock_damage > 10)
|
if (shock_damage > 10)
|
||||||
src.visible_message(
|
src.visible_message(
|
||||||
@@ -211,8 +211,8 @@
|
|||||||
if (istype(src,/mob/living/carbon/human) && src:w_uniform)
|
if (istype(src,/mob/living/carbon/human) && src:w_uniform)
|
||||||
var/mob/living/carbon/human/H = src
|
var/mob/living/carbon/human/H = src
|
||||||
H.w_uniform.add_fingerprint(M)
|
H.w_uniform.add_fingerprint(M)
|
||||||
|
|
||||||
if(lying)
|
if(lying || src.sleeping)
|
||||||
src.sleeping = max(0,src.sleeping-5)
|
src.sleeping = max(0,src.sleeping-5)
|
||||||
if(src.sleeping == 0)
|
if(src.sleeping == 0)
|
||||||
src.resting = 0
|
src.resting = 0
|
||||||
@@ -221,7 +221,7 @@
|
|||||||
else
|
else
|
||||||
M.visible_message("<span class='notice'>[M] hugs [src] to make [t_him] feel better!</span>", \
|
M.visible_message("<span class='notice'>[M] hugs [src] to make [t_him] feel better!</span>", \
|
||||||
"<span class='notice'>You hug [src] to make [t_him] feel better!</span>")
|
"<span class='notice'>You hug [src] to make [t_him] feel better!</span>")
|
||||||
|
|
||||||
AdjustParalysis(-3)
|
AdjustParalysis(-3)
|
||||||
AdjustStunned(-3)
|
AdjustStunned(-3)
|
||||||
AdjustWeakened(-3)
|
AdjustWeakened(-3)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
//NOTE: Breathing happens once per FOUR TICKS, unless the last breath fails. In which case it happens once per ONE TICK! So oxyloss healing is done once per 4 ticks while oxyloss damage is applied once per tick!
|
//NOTE: Breathing happens once per FOUR TICKS, unless the last breath fails. In which case it happens once per ONE TICK! So oxyloss healing is done once per 4 ticks while oxyloss damage is applied once per tick!
|
||||||
#define HUMAN_MAX_OXYLOSS 1 //Defines how much oxyloss humans can get per tick. A tile with no air at all (such as space) applies this value, otherwise it's a percentage of it.
|
#define HUMAN_MAX_OXYLOSS 1 //Defines how much oxyloss humans can get per tick. A tile with no air at all (such as space) applies this value, otherwise it's a percentage of it.
|
||||||
#define HUMAN_CRIT_MAX_OXYLOSS ( (last_tick_duration) /5) //The amount of damage you'll get when in critical condition. We want this to be a 5 minute deal = 300s. There are 100HP to get through, so (1/3)*last_tick_duration per second. Breaths however only happen every 4 ticks.
|
#define HUMAN_CRIT_MAX_OXYLOSS ( (last_tick_duration) /6) //The amount of damage you'll get when in critical condition. We want this to be a 5 minute deal = 300s. There are 50HP to get through, so (1/6)*last_tick_duration per second. Breaths however only happen every 4 ticks.
|
||||||
|
|
||||||
#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point
|
#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point
|
||||||
#define HEAT_DAMAGE_LEVEL_2 4 //Amount of damage applied when your body temperature passes the 400K point
|
#define HEAT_DAMAGE_LEVEL_2 4 //Amount of damage applied when your body temperature passes the 400K point
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
//No need to update all of these procs if the guy is dead.
|
//No need to update all of these procs if the guy is dead.
|
||||||
if(stat != DEAD && !in_stasis)
|
if(stat != DEAD && !in_stasis)
|
||||||
if(air_master.current_cycle%4==2 || failed_last_breath) //First, resolve location and get a breath
|
if(air_master.current_cycle%4==2 || failed_last_breath || (health < config.health_threshold_crit)) //First, resolve location and get a breath
|
||||||
breathe() //Only try to take a breath every 4 ticks, unless suffocating
|
breathe() //Only try to take a breath every 4 ticks, unless suffocating
|
||||||
|
|
||||||
else //Still give containing object the chance to interact
|
else //Still give containing object the chance to interact
|
||||||
|
|||||||
@@ -202,7 +202,7 @@
|
|||||||
|
|
||||||
var/is_chest_organ_damaged = 0
|
var/is_chest_organ_damaged = 0
|
||||||
var/datum/organ/external/chest/chest = target.get_organ("chest")
|
var/datum/organ/external/chest/chest = target.get_organ("chest")
|
||||||
for(var/datum/organ/internal/I in chest.internal_organs)
|
for(var/datum/organ/internal/I in chest.internal_organs)
|
||||||
if(I.damage > 0)
|
if(I.damage > 0)
|
||||||
is_chest_organ_damaged = 1
|
is_chest_organ_damaged = 1
|
||||||
break
|
break
|
||||||
@@ -244,7 +244,7 @@
|
|||||||
if(I && I.damage > 0)
|
if(I && I.damage > 0)
|
||||||
if(I.robotic < 2)
|
if(I.robotic < 2)
|
||||||
user.visible_message("\blue [user] treats damage to [target]'s [I.name] with [tool_name].", \
|
user.visible_message("\blue [user] treats damage to [target]'s [I.name] with [tool_name].", \
|
||||||
"You treat damage to [target]'s [I.name] with [tool_name]." )
|
"\blue You treat damage to [target]'s [I.name] with [tool_name]." )
|
||||||
else
|
else
|
||||||
user.visible_message("\blue [user] pokes [target]'s mechanical [I.name] with [tool_name]...", \
|
user.visible_message("\blue [user] pokes [target]'s mechanical [I.name] with [tool_name]...", \
|
||||||
"\blue You poke [target]'s mechanical [I.name] with [tool_name]... \red For no effect, since it's robotic.")
|
"\blue You poke [target]'s mechanical [I.name] with [tool_name]... \red For no effect, since it's robotic.")
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ proc/do_surgery(mob/living/M, mob/living/user, obj/item/tool)
|
|||||||
//We had proper tools! (or RNG smiled.) and User did not move or change hands.
|
//We had proper tools! (or RNG smiled.) and User did not move or change hands.
|
||||||
if( prob(S.tool_quality(tool)) && do_mob(user, M, rand(S.min_duration, S.max_duration)))
|
if( prob(S.tool_quality(tool)) && do_mob(user, M, rand(S.min_duration, S.max_duration)))
|
||||||
S.end_step(user, M, user.zone_sel.selecting, tool) //finish successfully
|
S.end_step(user, M, user.zone_sel.selecting, tool) //finish successfully
|
||||||
else //or
|
else if (tool in user.contents && user.Adjacent(M)) //or
|
||||||
S.fail_step(user, M, user.zone_sel.selecting, tool) //malpractice~
|
S.fail_step(user, M, user.zone_sel.selecting, tool) //malpractice~
|
||||||
return 1 //don't want to do weapony things after surgery
|
return 1 //don't want to do weapony things after surgery
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
Reference in New Issue
Block a user