Added a new mob and a weapon for Purpose. (#18500)

* extreme measures

* hunter killer

* Adds a new mob and a weapon for Purpose.

* cl

* Update code/modules/clothing/spacesuits/rig/suits/terminator.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>

* Update code/modules/projectiles/guns/energy/scythe.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>

* Update code/modules/projectiles/guns/energy/scythe.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>

* Update code/modules/projectiles/guns/energy/scythe.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>

* Update code/modules/projectiles/guns/energy/scythe.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>

---------

Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
This commit is contained in:
Matt Atlas
2024-02-26 08:47:49 +00:00
committed by GitHub
co-authored by SleepyGemmy Matt Atlas
parent c04df46244
commit 13cbf1267e
20 changed files with 160 additions and 53 deletions
+1
View File
@@ -3033,6 +3033,7 @@
#include "code\modules\projectiles\guns\energy\nuclear.dm"
#include "code\modules\projectiles\guns\energy\pulse.dm"
#include "code\modules\projectiles\guns\energy\rifle.dm"
#include "code\modules\projectiles\guns\energy\scythe.dm"
#include "code\modules\projectiles\guns\energy\special.dm"
#include "code\modules\projectiles\guns\energy\stun.dm"
#include "code\modules\projectiles\guns\energy\temperature.dm"
+1 -1
View File
@@ -33,7 +33,7 @@
#define SPECIES_IPC_XION_REMOTE "Remote Xion Industrial Frame"
#define SPECIES_IPC_UNBRANDED "Unbranded Frame"
#define SPECIES_IPC_UNBRANDED_REMOTE "Remote Unbranded Frame"
#define SPECIES_IPC_TERMINATOR "Military Frame"
#define SPECIES_IPC_PURPOSE_HK "Hunter-Killer"
#define SPECIES_SLIMEPERSON "Slime"
+1 -1
View File
@@ -400,7 +400,7 @@
if(!(S.status & ORGAN_ASSISTED) || user.a_intent != I_HELP)
return ..()
if(H.isSynthetic() && H == user && !(H.get_species() == SPECIES_IPC_TERMINATOR))
if(H.isSynthetic() && H == user && !(H.get_species() == SPECIES_IPC_PURPOSE_HK))
to_chat(user, SPAN_WARNING("You can't repair damage to your own body - it's against OH&S."))
return
@@ -1,8 +1,9 @@
/obj/item/rig/terminator
name = "\improper Military Frame exoskeleton"
desc = "A robust synth exoskeleton outfitted with state of the art infiltration tools. Creepy."
icon = 'icons/clothing/rig/terminator.dmi'
icon_state = "terminator_rig"
/obj/item/rig/hunter_killer
name = "\improper Purpose combat layer"
desc = "An unknown, sleek mechanical construction that doesn't conform to any technology, culture, or even creature you know. \
It seems largely impervious to any wear and tear."
icon = 'icons/clothing/rig/hunter_killer.dmi'
icon_state = "hunterkiller_rig"
suit_type = "synthetic exoskeleton"
armor = list(
melee = ARMOR_MELEE_VERY_HIGH,
@@ -30,7 +31,7 @@
/obj/item/handcuffs
)
helm_type = /obj/item/clothing/head/helmet/space/rig/terminator
helm_type = /obj/item/clothing/head/helmet/space/rig/hunter_killer
initial_modules = list(
/obj/item/rig_module/maneuvering_jets,
@@ -49,12 +50,12 @@
species_restricted = list(BODYTYPE_IPC_INDUSTRIAL)
allowed_module_types = MODULE_GENERAL | MODULE_LIGHT_COMBAT | MODULE_HEAVY_COMBAT | MODULE_SPECIAL | MODULE_MEDICAL | MODULE_UTILITY | MODULE_VAURCA
/obj/item/clothing/head/helmet/space/rig/terminator
/obj/item/clothing/head/helmet/space/rig/hunter_killer
species_restricted = list(BODYTYPE_IPC_INDUSTRIAL)
light_overlay = "helmet_light_terminator"
light_color = LIGHT_COLOR_RED
/obj/item/rig/terminator/equipped
/obj/item/rig/hunter_killer/equipped
initial_modules = list(
/obj/item/rig_module/maneuvering_jets,
/obj/item/rig_module/grenade_launcher/frag,
+1 -1
View File
@@ -396,7 +396,7 @@ var/list/worths = list(
/obj/item/rig/internalaffairs = 9000,
/obj/item/rig/merc = 25000,
/obj/item/rig/military = 30000,
/obj/item/rig/terminator = 30000,
/obj/item/rig/hunter_killer = 30000,
/obj/item/rig = 15000,
/obj/item/forensics = 65,
/obj/item/evidencebag = 5,
+3 -16
View File
@@ -82,22 +82,6 @@
key = "y"
flags = RESTRICTED | HIVEMIND
/datum/language/terminator
name = LANGUAGE_TERMINATOR
desc = "A heavily encrypted communication network that piggybacks off of the state telecomms relays to covertly link Hephaestus black ops droids to their control AIs."
speech_verb = list("buzzes")
ask_verb = list("buzzes")
exclaim_verb = list("buzzes")
sing_verb = list("buzzes")
colour = "bad"
key = "hd"
flags = RESTRICTED | HIVEMIND
syllables = list("beep","beep","beep","beep","beep","boop","boop","boop","bop","bop","dee","dee","doo","doo","hiss","hss","buzz","buzz","bzz","ksssh","keey","wurr","wahh","tzzz")
space_chance = 10
/datum/language/terminator/get_random_name()
return "HK [pick(list("Hera","Zeus","Artemis","Athena","Ares","Hades","Poseidon","Demeter","Apollo","Aphrodite","Hermes","Hestia","Dionysus","Persephone","Kronos","Odysseus","Ajax","Agamemnon","Chiron","Charon"))]-[rand(100, 999)]"
/datum/language/revenant
name = LANGUAGE_REVENANT
desc = "The language of the forsaken bluespace inhabitants."
@@ -207,3 +191,6 @@
flags = RESTRICTED | NO_STUTTER | HIVEMIND
syllables = list("beep","beep","beep","beep","beep","boop","boop","boop","bop","bop","dee","dee","doo","doo","hiss","hss","buzz","buzz","bzz","ksssh","keey","wurr","wahh","tzzz")
space_chance = 10
/datum/language/purpose/get_random_name()
return "[pick(list("HERA","ZEUS","ARTEMIS","ATHENA","ARES","HADES","POSEIDON","DEMETER","APOLLO","APHORDITE","HERMES","HESTIA","DIONYSUS","PERSEPHONE","KRONOS","ODYSSEUS","AJAX","AGAMENON","CHIRON","CHARON"))][rand(100, 999)]"
@@ -408,7 +408,7 @@
last_special = world.time + 100
/mob/living/carbon/human/proc/detonate_flechettes()
set category = "Military Frame"
set category = "Abilities"
set name = "Detonate Flechettes"
set desc = "Detonate all explosive flechettes in a range of seven meters."
@@ -417,7 +417,7 @@
return
for(var/mob/living/M in range(7, src))
to_chat(M, 'sound/effects/EMPulse.ogg')
playsound(M, 'sound/effects/EMPulse.ogg')
for(var/obj/item/material/shard/shrapnel/flechette/F in M.contents)
playsound(F, 'sound/items/countdown.ogg', 125, 1)
spawn(20)
@@ -434,7 +434,7 @@
/mob/living/carbon/human/proc/state_laws()
set category = "Military Frame"
set category = "Abilities"
set name = "State Laws"
set desc = "State your laws aloud."
@@ -520,7 +520,7 @@
last_special = world.time + 200
/mob/living/carbon/human/proc/self_destruct()
set category = "Military Frame"
set category = "Abilities"
set name = "Engage Self-Destruct"
set desc = "When all else has failed, bite the bullet."
@@ -262,8 +262,8 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
remote_network = REMOTE_BUNKER_ROBOT
SSvirtualreality.add_robot(src, remote_network)
/mob/living/carbon/human/terminator/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_TERMINATOR)
/mob/living/carbon/human/hunter_killer/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_PURPOSE_HK)
add_language(LANGUAGE_SOL_COMMON, 1)
add_language(LANGUAGE_ELYRAN_STANDARD, 1)
add_language(LANGUAGE_UNATHI, 1)
@@ -272,17 +272,13 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
add_language(LANGUAGE_TRADEBAND, 1)
add_language(LANGUAGE_GUTTER, 1)
add_language(LANGUAGE_EAL, 1)
src.equip_to_slot_or_del(new /obj/item/rig/terminator(src),slot_back)
src.equip_to_slot_or_del(new /obj/item/gun/projectile/automatic/terminator(src),slot_l_hand)
accent = ACCENT_TTS
src.equip_to_slot_or_del(new /obj/item/gun/energy/scythe(src),slot_l_hand)
src.equip_to_slot_or_del(new /obj/item/clothing/under/gearharness, slot_w_uniform)
src.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(src), slot_l_ear)
src.equip_to_slot_or_del(new /obj/item/grenade/frag(src), slot_l_store)
src.equip_to_slot_or_del(new /obj/item/melee/energy/sword(src), slot_r_store)
var/obj/item/storage/belt/security/tactical/commando_belt = new(src)
commando_belt.contents += new /obj/item/ammo_magazine/flechette
commando_belt.contents += new /obj/item/ammo_magazine/flechette/explosive
commando_belt.contents += new /obj/item/ammo_magazine/flechette/explosive
commando_belt.contents += new /obj/item/melee/baton/loaded
commando_belt.contents += new /obj/item/shield/energy
commando_belt.contents += new /obj/item/handcuffs
@@ -291,7 +287,7 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
src.equip_to_slot_or_del(commando_belt, slot_belt)
src.gender = NEUTER
/mob/living/carbon/human/terminator
/mob/living/carbon/human/hunter_killer
mob_size = 30
/mob/living/carbon/human/golem/Initialize(mapload)
@@ -190,8 +190,8 @@
/datum/species/machine/industrial/handle_death(var/mob/living/carbon/human/H)
return
/datum/species/machine/terminator
name = SPECIES_IPC_TERMINATOR
/datum/species/machine/hunter_killer
name = SPECIES_IPC_PURPOSE_HK
short_name = "hks"
name_plural = "HKs"
bald = 1
@@ -200,8 +200,8 @@
blurb = "\[REDACTED\]"
icobase = 'icons/mob/human_races/ipc/r_terminator.dmi'
deform = 'icons/mob/human_races/ipc/r_terminator.dmi'
icobase = 'icons/mob/human_races/ipc/r_hunter_killer.dmi'
deform = 'icons/mob/human_races/ipc/r_hunter_killer.dmi'
light_range = 0
light_power = 0
@@ -209,8 +209,8 @@
unarmed_types = list(/datum/unarmed_attack/terminator)
rarity_value = 20
language = LANGUAGE_TERMINATOR
name_language = LANGUAGE_TERMINATOR
language = LANGUAGE_PURPOSE
name_language = LANGUAGE_PURPOSE
eyes = "eyes_terminator"
has_floating_eyes = 1
@@ -288,10 +288,10 @@
sprint_temperature_factor = 0.6
move_charge_factor = 0.3
/datum/species/machine/terminator/get_light_color()
/datum/species/machine/hunter_killer/get_light_color()
return
/datum/species/machine/terminator/handle_death(var/mob/living/carbon/human/H)
/datum/species/machine/hunter_killer/handle_death(var/mob/living/carbon/human/H)
..()
playsound(H.loc, 'sound/items/countdown.ogg', 125, 1)
spawn(15)
+2 -2
View File
@@ -102,8 +102,8 @@ GLOBAL_DATUM(basic_robolimb, /datum/robolimb)
/datum/robolimb/terminator
company = PROSTHETIC_HK
desc = "A ludicrously expensive and EMP shielded component, these types of limbs are best suited for highly specialized cyborgs."
icon = 'icons/mob/human_races/ipc/r_terminator.dmi'
desc = "A ludicrously complex prosthetic created for Purpose Hunter-Killers."
icon = 'icons/mob/human_races/ipc/r_hunter_killer.dmi'
unavailable_at_chargen = TRUE
allows_internal = FALSE
+1 -1
View File
@@ -572,7 +572,7 @@ By design, d1 is the smallest direction and d2 is the highest
if(!(S.status & ORGAN_ASSISTED) || user.a_intent != I_HELP)
return ..()
if(M.isSynthetic() && M == user && !(M.get_species() == SPECIES_IPC_TERMINATOR))
if(M.isSynthetic() && M == user && !(M.get_species() == SPECIES_IPC_PURPOSE_HK))
to_chat(user, SPAN_WARNING("You can't repair damage to your own body - it's against OH&S."))
return
@@ -0,0 +1,78 @@
/obj/item/gun/energy/scythe
name = "\improper Purpose munitions scythe"
desc = "<span class='warning'>A seemingly innocuous metal construction the size of a human arm. Through forces unknown, it produces alloy flechettes \
capable of piercing even the strongest armor known to the Spur.</span>"
icon = 'icons/obj/guns/scythe.dmi'
icon_state = "hunterkiller_scythe"
item_state = "hunterkiller_scythe"
w_class = ITEMSIZE_HUGE
force = 25
armor_penetration = 30
slot_flags = SLOT_BACK
fire_sound = 'sound/weapons/railgun.ogg'
safetyoff_sound = 'sound/weapons/railgun_insert.ogg'
hitsound = 'sound/weapons/heavysmash.ogg'
can_suppress = FALSE
has_safety = FALSE
has_item_ratio = FALSE
max_shots = 20
self_recharge = TRUE
reliability = 100
projectile_type = /obj/item/projectile/bullet/flechette
firemodes = list(
list(mode_name="semiauto", burst=1, projectile_type=/obj/item/projectile/bullet/flechette),
list(mode_name="3-round bursts", burst=3, burst_delay=ROF_SUPERHEAVY, burst_accuracy=list(2,1,1), dispersion=list(0, 10, 15), projectile_type=/obj/item/projectile/bullet/flechette),
list(mode_name="explosive", burst=1, projectile_type=/obj/item/projectile/bullet/flechette/explosive)
)
fire_delay = ROF_UNWIELDY
accuracy = 2
scoped_accuracy = 3
/obj/item/gun/energy/scythe/get_cell()
return DEVICE_NO_CELL
/obj/item/gun/energy/scythe/fire_checks(atom/target, mob/living/user, clickparams, pointblank, reflex)
if(!ishuman(user))
return
var/mob/living/carbon/human/terminator = user
if(!isipc(terminator))
to_chat(terminator, SPAN_WARNING("You have no idea how to even use this. Where's the trigger...?"))
return FALSE
if(!istype(terminator.species, /datum/species/machine/hunter_killer))
to_chat(terminator, SPAN_WARNING("You can't interface with this weapon's systems at all. It feels entirely alien."))
return FALSE
. = ..()
/obj/item/gun/energy/scythe/verb/scope()
set category = "Object"
set name = "Use Scope"
set src in usr
if(!ishuman(usr))
return
var/mob/living/carbon/human/terminator = usr
if(!terminator.use_check_and_message())
return
if(!isipc(terminator))
to_chat(terminator, SPAN_WARNING("You have no idea where to even look..."))
return
if(!istype(terminator.species, /datum/species/machine/hunter_killer))
to_chat(terminator, SPAN_WARNING("These systems are far too alien for even you to figure out."))
return
if(wielded)
playsound(terminator, 'sound/items/goggles_charge.ogg')
toggle_scope(2, terminator)
else
to_chat(terminator, SPAN_WARNING("You can't look through the scope without stabilizing the rifle!"))
@@ -432,6 +432,7 @@
icon = 'icons/obj/terminator.dmi'
icon_state = "flechette_bullet"
damage = 40
armor_penetration = 15
damage_type = DAMAGE_BRUTE
check_armor = "bullet"
embed = 1
@@ -444,6 +445,7 @@
shrapnel_type = /obj/item/material/shard/shrapnel/flechette
penetrating = 0
damage = 10
armor_penetration = 60
/obj/item/projectile/bullet/gauss
name = "slug"
+2 -2
View File
@@ -85,10 +85,10 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE)
/obj/structure/mech_wreckage/powerloader,
// Sleeps in init
/mob/living/carbon/human/terminator,
/mob/living/carbon/human/hunter_killer,
// Mysterious failure in init, with gcdelete -1
/mob/living/carbon/human/terminator,
/mob/living/carbon/human/hunter_killer,
/obj/spellbutton,
+42
View File
@@ -0,0 +1,42 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
# balance
# admin
# backend
# security
# refactor
#################################
# Your name.
author: MattAtlas (Code), Noble Row (Sprites)
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- rscadd: "Added a new mob and a weapon for Purpose."
- rscadd: "Gave flechette ammunition AP."
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB