mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-26 17:11:52 +00:00
* START * aaaaa * Update assaultops.dm * aaa * Logic Systematic Sense * Logic v2 * Update assaultops.dm * Update assaultops.dm * Update assaultops.dm * Updates. * Update assaultops.dm * a * Update radial.dmi * Docs * Update assaultops.dm * Update one_click_antag.dm * shuttle! * Update syndicate_cruiser.dmm * Update syndicate_cruiser.dmm * aaaa * Update shuttle.dm * Update syndicate_cruiser.dmm * aaa * SMMS+Centcom * Shuttles now get decals! * Update to shuttle, centcom level! * Update CentCom_Skyrat.dmm * New objectives+win conditions * a * Merge branch 'master' into assaultops * system updates + prison area * Desc fix * Delete assaultops_dynamic.dm * a * Update assaultops.dm * Make Ass Team * Update assaultops.dm * fixes * Update syndicate_cruiser.dmm * watch! * Update assaultops.dm * Merge branch 'master' into assaultops * super datumized * aaaa * nothing to see here * Massive map changes. * Update CentCom_Skyrat.dmm * Update CentCom_Skyrat.dmm * Update syndicate_cruiser.dmm * Merge branch 'master' into assaultops * Merge branch 'master' into assaultops * aaaa * Update large_doors.dm * aaa * Update assaultops_gamemode.dm * Update assaultops_datum.dm * aa * spawners! * aaa * Update assaultops_outfits.dm * Update assaultops_spawners.dm * Update assaultops_spawners.dm * Update assaultops_spawners.dm * Update CentCom_Skyrat.dmm * Update CentCom_Skyrat.dmm * a * Base alarm! * Update base_alarm.dm * a * aa * Update CentCom_Skyrat.dmm * Update CentCom_Skyrat.dmm * Update CentCom_Skyrat.dmm * aaa * Update areas.dm * aaaa * Update CentCom_Skyrat.dmm * Update CentCom_Skyrat.dmm * WOOO MORE SHIT! * Update CentCom_Skyrat.dmm * Update CentCom_Skyrat.dmm * aa * Update CentCom_Skyrat.dmm * Update CentCom_Skyrat.dmm * Update CentCom_Skyrat.dmm * Update CentCom_Skyrat.dmm * Update syndicate_frigate.dmm * a * Update CentCom_Skyrat.dmm * Assault Ops Card Stuff (#2803) * Automatic changelog generation for PR #2803 [ci skip] * Assault Ops Map Tweaks (#2861) * Update CentCom_Skyrat.dmm * Update syndicate_frigate.dmm * Update CentCom_Skyrat.dmm * Update CentCom_Skyrat.dmm * modularmaps * duisables mining * Removes the gosh darn Orbital Mech Pad (#2917) Co-authored-by: BluBerry016 <50649185+unit0016@users.noreply.github.com> Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
117 lines
4.1 KiB
Plaintext
117 lines
4.1 KiB
Plaintext
//These are sort of shitcode right now
|
|
|
|
/proc/check_assaultops_target(mob/user) //Should only be passed mobs
|
|
if(!istype(user))
|
|
stack_trace("Check assaultops target was passed an incorrect type.")
|
|
return FALSE
|
|
if(isnull(user))
|
|
stack_trace("Check assaultops target was passed a null value.")
|
|
return FALSE
|
|
if(isnull(user.mind))
|
|
stack_trace("Check assaultops target was given a mob without a mind: [user]")
|
|
return FALSE
|
|
if(!ishuman(user))
|
|
return FALSE
|
|
var/mob/living/carbon/human/H = user
|
|
if(H.job == "Captain" || H.job == "Head of Personnel" || H.job == "Quartermaster" || H.job == "Head of Security" || H.job == "Chief Engineer" || H.job == "Research Director" || H.job == "Blueshield" || H.job == "Security Officer" || H.job == "Warden" || H.job == "Detective")
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/proc/add_assaultops_target(mob/user, notify=TRUE, notify_target=FALSE, override=FALSE)
|
|
if(!override)
|
|
if(GLOB.assaultops_targets.len >= MAX_ASSAULTOPS_TARGETS)
|
|
return FALSE
|
|
|
|
if(isnull(user.mind))
|
|
stack_trace("Critical error, add assaultops target was given a user with no mind, this should never happen.")
|
|
return FALSE
|
|
|
|
GLOB.assaultops_targets.Add(user.mind)
|
|
|
|
if(notify)
|
|
send_to_assaultops_watch("<span class='redtext'>Newly assigned target: [user] - [user.mind.assigned_role], capture them!</span>")
|
|
if(notify_target)
|
|
to_chat(user, "<span class='danger'>An intense feeling of dread washes over you!</span>")
|
|
|
|
forge_assaultops_targets()
|
|
|
|
return TRUE
|
|
|
|
/proc/remove_assaultops_target(datum/mind/M, notify=TRUE, original=FALSE)
|
|
GLOB.assaultops_targets.Remove(M)
|
|
|
|
if(notify)
|
|
send_to_assaultops_watch("<span class='greentext'>[original ? M.original_character : M.current] has been removed from your targets list! You no longer need to care about them!</span>")
|
|
to_chat(M.current, "<span class='notice'>You feel at ease.</span>")
|
|
|
|
forge_assaultops_targets()
|
|
|
|
/proc/forge_assaultops_targets()
|
|
var/datum/team/assaultops/team = get_assaultops_team()
|
|
for(var/i in team.members)
|
|
var/datum/mind/M = i
|
|
var/datum/antagonist/assaultops/assops = M.has_antag_datum(/datum/antagonist/assaultops)
|
|
assops.memorise_kills()
|
|
|
|
/proc/send_to_assaultops_watch(message, buzz=TRUE)
|
|
if(!SSticker.mode.name == "assaultops")
|
|
return
|
|
if(!message)
|
|
return FALSE
|
|
|
|
var/datum/team/assaultops/team = get_assaultops_team()
|
|
|
|
for(var/i in team.members)
|
|
var/datum/mind/M = i
|
|
to_chat(M.current, "<span class='notice'>Your watch SyndIwatch buzzes!</span>")
|
|
to_chat(M.current, message)
|
|
if(buzz)
|
|
M.current.playsound_local(get_turf(M.current), 'sound/machines/triple_beep.ogg', 100, 0, use_reverb = FALSE)
|
|
return TRUE
|
|
|
|
/proc/sanity_check_assaultops_targets()
|
|
for(var/i in GLOB.assaultops_targets)
|
|
if(isnull(i))
|
|
GLOB.assaultops_targets.Remove(i)
|
|
message_admins("Warning, null detected in antag assault operatives target list and was removed. Contact a maintainer.")
|
|
stack_trace("Null detected in global list assaultops_targets!")
|
|
continue
|
|
if(!istype(i, /datum/mind))
|
|
GLOB.assaultops_targets.Remove(i)
|
|
message_admins("Warning, invalid list datum type in assault operatives target list and was removed. Contact a maintainer.")
|
|
stack_trace("Invalid type detected in global list assaultops_targets!")
|
|
continue
|
|
|
|
var/datum/mind/M = i
|
|
|
|
if(!check_assaultops_target(M.current))
|
|
if(!check_assaultops_target(M.original_character))
|
|
remove_assaultops_target(M)
|
|
|
|
/proc/is_assaultops_target(datum/mind/M)
|
|
for(var/i in GLOB.assaultops_targets)
|
|
var/datum/mind/them = i
|
|
if(them == M)
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/proc/is_assault_operative(mob/user)
|
|
if(!ishuman(user))
|
|
return
|
|
if(!user.mind)
|
|
return
|
|
if(user.mind.has_antag_datum(/datum/antagonist/assaultops))
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/proc/get_assaultops_team() //Is there an easier way to do this?!!!
|
|
if(!SSticker.mode.name == "assaultops")
|
|
return
|
|
var/datum/game_mode/assaultops/assteam = SSticker.mode
|
|
return assteam.assault_team
|
|
|
|
/proc/get_assault_loadout(mob/M)
|
|
if(istype(M) && M.mind && M.mind.has_antag_datum(/datum/antagonist/assaultops))
|
|
var/datum/antagonist/assaultops/assops = M.mind.has_antag_datum(/datum/antagonist/assaultops)
|
|
return assops.loadout
|