Create the Judge Strike team (#30252)

This commit is contained in:
DamianX
2021-08-21 23:04:48 +02:00
committed by GitHub
parent a3138867bc
commit 4f195f4b6c
12 changed files with 231 additions and 11 deletions

View File

@@ -21,6 +21,7 @@
#define SPIDERINFESTATION "spider infestation"
#define SPIDERCLAN "spider clan"
#define XENOMORPH_HIVE "alien hivemind"
#define JUSTICE_DEPARTMENT "justice department"
//-------
#define HIVEMIND "changeling hivemind"
#define WIZFEDERATION "wizard federation"
@@ -78,6 +79,7 @@
#define PRISONER "prisoner"
#define CLOWN_LING "clown ling"
#define TAG_MIME "tag mime"
#define JUDGE "judge"
#define GREET_DEFAULT "default"
#define GREET_ROUNDSTART "roundstart"

View File

@@ -852,3 +852,21 @@
return FALSE
return TRUE
//////////////////////////////////////////////
// //
// JUDGE ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
//////////////////////////////////////////////
/datum/dynamic_ruleset/midround/from_ghosts/faction_based/judge
name = "Judge"
role_category = /datum/role/judge
my_fac = /datum/faction/justice
required_pop = list(101,101,101,101,101,101,101,101,101,101)
required_candidates = 1
max_candidates = 5
weight = BASE_RULESET_WEIGHT
cost = 20
requirements = list(10,10,10,10,10,10,10,10,10,10)
logo = "gun-logo"
repeatable = TRUE

View File

@@ -0,0 +1,20 @@
/datum/objective/restore_order
explanation_text = "Restore order to the station."
name = "Restore order"
/datum/objective/restore_order/IsFulfilled()
return count_living_antags() == 0
/proc/count_living_antags()
var/living_antags = 0
for(var/mob/guy in player_list)
if(!guy.client)
continue
if(istype(guy, /mob/new_player))
continue
if(guy.stat == DEAD)
continue
if(!guy.mind || !length(guy.mind.antag_roles))
continue
living_antags++
return living_antags

View File

@@ -0,0 +1,94 @@
/datum/role/judge
name = JUDGE
id = JUDGE
required_pref = JUDGE
special_role = JUDGE
logo_state = "gun-logo"
wikiroute = JUDGE
disallow_job = TRUE
restricted_jobs = list()
/datum/role/judge/OnPostSetup(laterole = FALSE)
. =..()
if(!.)
return
if(ishuman(antag.current))
var/datum/outfit/special/with_id/judge/equipment = new
equipment.equip(antag.current)
var/new_name = pick(antag.current.gender == MALE ? judge_male_names : judge_female_names)
antag.current.fully_replace_character_name(antag.current.real_name, "Judge [new_name]")
/datum/role/judge/ForgeObjectives()
AppendObjective(/datum/objective/restore_order)
/datum/role/judge/Greet(greeting, custom)
if(!greeting)
return
var/icon/logo = icon('icons/logos.dmi', logo_state)
switch(greeting)
if(GREET_CUSTOM)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='danger'>[custom]</span>")
else
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='danger'>You are a Judge! <br>The station has fallen into chaos and the crew needs your help to restore order.</span>")
to_chat(antag.current, "<span class='bold'>Uphold the law.</span>")
to_chat(antag.current, "<span class='info'><a HREF='?src=\ref[antag.current];getwiki=[wikiroute]'>(Wiki Guide)</a></span>")
/datum/outfit/special/with_id/judge
outfit_name = "Judge"
backpack_types = list(
BACKPACK_STRING = /obj/item/weapon/storage/backpack/security,
)
items_to_spawn = list(
"Default" = list(
slot_wear_mask_str = /obj/item/clothing/mask/gas/swat,
slot_ears_str = /obj/item/device/radio/headset/ert,
slot_w_uniform_str = /obj/item/clothing/under/darkred,
slot_shoes_str = /obj/item/clothing/shoes/combat,
slot_head_str = /obj/item/clothing/head/helmet/dredd,
slot_glasses_str = /obj/item/clothing/glasses/hud/security,
slot_gloves_str = /obj/item/clothing/gloves/combat,
slot_belt_str = /obj/item/weapon/storage/belt/security,
slot_wear_suit_str = /obj/item/clothing/suit/armor/xcomsquaddie/dredd,
slot_l_store_str = /obj/item/weapon/storage/bag/ammo_pouch/judge
)
)
items_to_collect = list(
/obj/item/weapon/gun/lawgiver/demolition = GRASP_LEFT_HAND,
/obj/item/binoculars,
/obj/item/weapon/storage/box/flashbangs,
/obj/item/weapon/gun/projectile/shotgun/nt12/widowmaker2000,
/obj/item/weapon/melee/classic_baton/daystick,
/obj/item/weapon/autocuffer,
)
pda_type = /obj/item/device/pda/ert
pda_slot = slot_r_store
id_type = /obj/item/weapon/card/id/judge
/datum/outfit/special/with_id/judge/post_equip(mob/living/carbon/human/H)
equip_accessory(H, /obj/item/clothing/accessory/holster/knife/boot/preloaded/tactical, /obj/item/clothing/shoes, 5)
return ..()
/obj/item/weapon/storage/bag/ammo_pouch/judge
desc = "Designed to hold stray magazines and spare bullets. This one has been enlarged significantly."
storage_slots = 7
/obj/item/weapon/storage/bag/ammo_pouch/judge/New()
..()
for(var/i in 1 to storage_slots)
new /obj/item/ammo_storage/magazine/a12ga(src)
/datum/faction/justice
name = "Justice Department"
ID = JUSTICE_DEPARTMENT
initial_role = JUDGE
late_role = JUDGE
desc = "I AM THE LAW"
logo_state = "gun-logo"
initroletype = /datum/role/judge
roletype = /datum/role/judge

View File

@@ -224,6 +224,11 @@ var/global/list/obj/item/device/pda/PDAs = list()
if (cartridge)
cartridge.initialize()
/obj/item/device/pda/ert
name = "ERT PDA"
default_cartridge = /obj/item/weapon/cartridge/security
icon_state = "pda-ert"
/obj/item/device/pda/medical
name = "Medical PDA"
default_cartridge = /obj/item/weapon/cartridge/medical

View File

@@ -864,3 +864,12 @@
..()
access = get_all_accesses()
access += get_all_centcom_access()
/obj/item/weapon/card/id/judge
name = "Judge ID card"
assignment = "Judge"
icon_state = "ERT_empty"
/obj/item/weapon/card/id/judge/New()
..()
access = get_centcom_access("Emergency Responder")

View File

@@ -31,12 +31,14 @@
flags = FPRINT
slot_flags = SLOT_BELT
force = 10
var/hurt_intent_stun_duration = 0.8 SECONDS
var/normal_stun_duration = 0.5 SECONDS
/obj/item/weapon/melee/classic_baton/attack(mob/M as mob, mob/living/user as mob)
if (clumsy_check(user) && prob(50))
to_chat(user, "<span class='warning'>You club yourself over the head.</span>")
user.Knockdown(8)
user.Stun(8)
user.Knockdown(hurt_intent_stun_duration)
user.Stun(hurt_intent_stun_duration)
if(ishuman(user))
var/mob/living/carbon/human/H = user
H.apply_damage(2*force, BRUTE, LIMB_HEAD)
@@ -54,17 +56,17 @@
if(!..())
return
playsound(src, "swing_hit", 50, 1, -1)
if (M.stuttering < 8 && (!(M_HULK in M.mutations)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stuttering = 8
M.Stun(8)
M.Knockdown(8)
if (M.stuttering < hurt_intent_stun_duration && (!(M_HULK in M.mutations)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stuttering = hurt_intent_stun_duration
M.Stun(hurt_intent_stun_duration)
M.Knockdown(hurt_intent_stun_duration)
for(var/mob/O in viewers(M))
if (O.client)
O.show_message("<span class='danger'>[M] has been beaten with \the [src] by [user]!</span>", 1, "<span class='warning'>You hear someone fall</span>", 2)
else
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1, -1)
M.Stun(5)
M.Knockdown(5)
M.Stun(normal_stun_duration)
M.Knockdown(normal_stun_duration)
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
@@ -79,6 +81,13 @@
if (O.client)
O.show_message("<span class='danger'>[M] has been stunned with \the [src] by [user]!</span>", 1, "<span class='warning'>You hear someone fall</span>", 2)
/obj/item/weapon/melee/classic_baton/daystick
name = "\improper Daystick"
desc = "The Daystick is named as such as a Judge would \"beat the daylights\" out of a target."
hurt_intent_stun_duration = 1.6 SECONDS
normal_stun_duration = 1 SECONDS
force = 15
//Telescopic baton
/obj/item/weapon/melee/telebaton
name = "telescopic baton"

View File

@@ -100,7 +100,7 @@
max_shells = 2
ammo_type = "/obj/item/ammo_casing/shotgun/beanbag"
fire_sound = 'sound/weapons/shotgun_small.ogg'
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/process_chambered()
if(in_chamber)
return 1
@@ -167,7 +167,7 @@
w_class = W_CLASS_MEDIUM
slot_flags = SLOT_BELT
ammo_type = "/obj/item/ammo_casing/shotgun/buckshot"
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawnoff/empty
ammo_type = null
@@ -204,3 +204,8 @@
var/MT = stored_magazine ? "[stored_magazine.max_ammo > 4 ? "-drum-20" : "-mag-4"]" : ""
icon_state = "[initial(icon_state)]["[MT]"][stored_magazine ? "" : "-m"][chambered ? "" : "-e"]"
item_state = icon_state
/obj/item/weapon/gun/projectile/shotgun/nt12/widowmaker2000
name = "\improper Widowmaker 2000"
desc = "Also known as the \"Colt Widowmaker M2000 SMG shotgun\"."
w_class = W_CLASS_MEDIUM

View File

@@ -10,6 +10,8 @@ var/list/last_names = file2list("config/names/last.txt")
var/list/clown_names = file2list("config/names/clown.txt")
var/list/mush_first = file2list("config/names/mushman_first.txt")
var/list/mush_last = file2list("config/names/mushman_last.txt")
var/list/judge_male_names = file2list("config/names/judge_male.txt")
var/list/judge_female_names = file2list("config/names/judge_female.txt")
var/list/verbs = file2list("config/names/verbs.txt")
var/list/adjectives = file2list("config/names/adjectives.txt")
@@ -22,4 +24,4 @@ var/list/golem_names = file2list("config/names/golem.txt")
var/list/borer_names = file2list("config/names/borer.txt")
var/list/hologram_names = file2list("config/names/hologram.txt")
var/list/autoborg_silly_names = file2listExceptComments("config/names/autoborg_silly.txt")
var/list/autoborg_silly_names = file2listExceptComments("config/names/autoborg_silly.txt")

View File

@@ -0,0 +1,16 @@
Anderson
Bachmann
Beeny
Castillo
Dekker
Eastwood
Hershey
Janus
Lamia
Maitland
McGruder
Nixon
Perrier
Pin
Sanchez
Steel

View File

@@ -0,0 +1,38 @@
Bruce
Bulgarin
Buratino
Deacon
Dirty Frank
Dolman
Dredd
Fairfax
Fargo
Francisco
Gerhart
Giant
Goodman
Greel
Griffin
Herriman
Izaaks
Joyce
Kazan
Logan
McTighe
Morphy
Niles
Oldham
Omar
Pepper
Prager
Ramos
Renga
Rico
Roffman
Shenker
Silver
Smiley
Solomon
Stark
Vass
Volt

View File

@@ -414,6 +414,7 @@
#include "code\datums\gamemode\objectives\objective.dm"
#include "code\datums\gamemode\objectives\plague.dm"
#include "code\datums\gamemode\objectives\ramble.dm"
#include "code\datums\gamemode\objectives\restore_order.dm"
#include "code\datums\gamemode\objectives\sample.dm"
#include "code\datums\gamemode\objectives\silence.dm"
#include "code\datums\gamemode\objectives\spesstv.dm"
@@ -463,6 +464,7 @@
#include "code\datums\gamemode\role\cultist.dm"
#include "code\datums\gamemode\role\giant_spider.dm"
#include "code\datums\gamemode\role\grinch.dm"
#include "code\datums\gamemode\role\judge.dm"
#include "code\datums\gamemode\role\legacy_cultist.dm"
#include "code\datums\gamemode\role\madmonkey.dm"
#include "code\datums\gamemode\role\ninja.dm"