Merge branch 'Citadel-Station-13:master' into wingport

This commit is contained in:
BlueWildrose
2021-12-11 12:53:03 -07:00
committed by GitHub
23 changed files with 386 additions and 209 deletions
@@ -382,6 +382,70 @@
else
return ..()
//////////////////////////////////////////////
// //
// Clock Cult (MID) //
// //
//////////////////////////////////////////////
//changes two people midround into clockwork cultists
/datum/dynamic_ruleset/midround/ratvar_awakening
name = "Ratvar Awakening"
antag_datum = /datum/antagonist/clockcult
antag_flag = "clock mid"
antag_flag_override = ROLE_SERVANT_OF_RATVAR
protected_roles = list("AI", "Cyborg", "Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Chaplain", "Head of Personnel", "Quartermaster", "Chief Engineer", "Chief Medical Officer", "Research Director")
restricted_roles = list("AI", "Cyborg", "Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Chaplain", "Head of Personnel", "Quartermaster", "Chief Engineer", "Chief Medical Officer", "Research Director")
enemy_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Chaplain", "Head of Personnel", "Quartermaster", "Chief Engineer", "Chief Medical Officer", "Research Director")
required_enemies = list(1,1,1,1,1,1,0,0,0,0)
required_candidates = 2
weight = 3
cost = 20
requirements = list(101,101,101,101,50,40,30,20,10,10)
var/list/clock_cap = list(1,1,1,1,2,3,4,5,5,5)
flags = HIGH_IMPACT_RULESET
/datum/dynamic_ruleset/midround/ratvar_awakening/acceptable(population=0, threat=0)
if (locate(/datum/dynamic_ruleset/roundstart/clockcult) in mode.executed_rules)
return FALSE // Unavailable if clockies exist at round start
indice_pop = min(clock_cap.len, round(living_players.len/5)+1)
required_candidates = clock_cap[indice_pop]
return ..()
/datum/dynamic_ruleset/midround/ratvar_awakening/trim_candidates()
..()
candidates = living_players
for(var/mob/living/player as anything in candidates)
var/turf/player_turf = get_turf(player)
if(!player_turf || !is_station_level(player_turf.z))
candidates -= player //no ghost roles
continue
if(!is_eligible_servant(player))
candidates -= player
continue
if(player.mind && (player.mind.special_role || length(player.mind.antag_datums) > 0))
candidates -= player //no double dipping
/datum/dynamic_ruleset/midround/ratvar_awakening/execute()
if(!candidates || !candidates.len)
return FALSE
for(var/i = 0; i < required_candidates; i++)
if(!candidates.len)
break
var/mob/living/clock_antag = pick_n_take(candidates)
assigned += clock_antag.mind
for(var/datum/mind/M in assigned) //add them to the clockwork team
add_servant_of_ratvar(M.current)
SSticker.mode.equip_servant(M.current)
SSticker.mode.greet_servant(M.current)
message_admins("[ADMIN_LOOKUPFLW(M.current)] was selected by the [name] ruleset and has been made into a midround clock cultist.")
log_game("DYNAMIC: [key_name(M.current)] was selected by the [name] ruleset and has been made into a midround clock cultist.")
load_reebe()
return ..()
//////////////////////////////////////////////
// //
// BLOB (GHOST) //
+16 -12
View File
@@ -271,18 +271,7 @@
if(resin_cooldown)
to_chat(user, "<span class='warning'>Resin launcher is still recharging...</span>")
return
resin_cooldown = TRUE
R.remove_any(100)
var/obj/effect/resin_container/A = new (get_turf(src))
log_game("[key_name(user)] used Resin Launcher at [AREACOORD(user)].")
playsound(src,'sound/items/syringeproj.ogg',40,1)
for(var/a=0, a<5, a++)
step_towards(A, target)
sleep(2)
A.Smoke()
spawn(100)
if(src)
resin_cooldown = FALSE
launch_resin(target, user)
return
if(nozzle_mode == RESIN_FOAM)
if(!Adj|| !isturf(target))
@@ -301,6 +290,21 @@
to_chat(user, "<span class='warning'>Resin foam mix is still being synthesized...</span>")
return
/obj/item/extinguisher/mini/nozzle/proc/launch_resin(atom/target, mob/user)
set waitfor = FALSE
resin_cooldown = TRUE
reagents.remove_any(100)
var/obj/effect/resin_container/A = new (get_turf(src))
log_game("[key_name(user)] used Resin Launcher at [AREACOORD(user)].")
playsound(src,'sound/items/syringeproj.ogg',40,1)
for(var/a=0, a<5, a++)
step_towards(A, target)
sleep(2)
A.Smoke()
spawn(100)
if(src)
resin_cooldown = FALSE
/obj/effect/resin_container
name = "resin container"
desc = "A compacted ball of expansive resin, used to repair the atmosphere in a room, or seal off breaches."