Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nabbers & Backend #8913

Open
wants to merge 20 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions code/__defines/chemistry.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#define IS_TESHARI 7
#define IS_SLIME 8
#define IS_ZADDAT 9
#define IS_INSECTOID 10

#define CE_STABLE "stable" // Inaprovaline
#define CE_ANTIBIOTIC "antibiotic" // Antibiotics
Expand Down
10 changes: 9 additions & 1 deletion code/__defines/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
#define FAKEDEATH 0x2000 // Replaces stuff like changeling.changeling_fakedeath.
#define DISFIGURED 0x4000 // Set but never checked. Remove this sometime and replace occurrences with the appropriate organ code

#define GRAB_NORMAL "grab"
#define GRAB_NAB "nab"

// Grab levels.
#define GRAB_PASSIVE 1
#define GRAB_AGGRESSIVE 2
Expand Down Expand Up @@ -255,8 +258,11 @@
#define O_RESIN "resin spinner"
#define O_AREJECT "immune hub"
#define O_VENTC "morphoplastic node"
#define O_TRACH "tracheae"
#define O_PHORON "phoron filter"
#define O_ACETONE "acetone reactor"
#define O_VRLINK "virtual node"
#define O_ALL list(O_STANDARD, O_MOUTH, O_CELL, O_PLASMA, O_HIVE, O_NUTRIENT, O_STRATA, O_RESPONSE, O_GBLADDER, O_POLYP, O_ANCHOR, O_REGBRUTE, O_REGBURN, O_REGOXY, O_REGTOX, O_ACID, O_EGG, O_RESIN, O_AREJECT, O_VENTC, O_VRLINK)
#define O_ALL list(O_STANDARD, O_MOUTH, O_CELL, O_PLASMA, O_HIVE, O_NUTRIENT, O_STRATA, O_RESPONSE, O_GBLADDER, O_POLYP, O_ANCHOR, O_REGBRUTE, O_REGBURN, O_REGOXY, O_REGTOX, O_ACID, O_EGG, O_RESIN, O_AREJECT, O_VENTC, O_TRACH, O_PHORON, O_ACETONE, O_VRLINK)

// External organs, aka limbs
#define BP_L_FOOT "l_foot"
Expand Down Expand Up @@ -358,6 +364,8 @@
#define SPECIES_EVENT1 "X Occursus"
#define SPECIES_EVENT2 "X Anomalous"
#define SPECIES_EVENT3 "X Unowas"
#define SPECIES_NABBER "Serpentid"
#define SPECIES_NABBER_MONARCH "Monarch Serpentid"

// Replicant types. Currently only used for alien pods and events.
#define SPECIES_REPLICANT "Replicant"
Expand Down
4 changes: 4 additions & 0 deletions code/modules/antagonist/antagonist_update.dm
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@
var/indicator = (faction_indicator && (other in faction_members)) ? faction_indicator : antag_indicator
var/image/returnimage = image('icons/mob/mob.dmi', loc = other.current, icon_state = indicator)
returnimage.plane = PLANE_LIGHTING_ABOVE
if(ishuman(other.current))
var/mob/living/carbon/human/H = other.current
returnimage.pixel_x = H.species.antaghud_offset_x
returnimage.pixel_y = H.species.antaghud_offset_y
return returnimage

/datum/antagonist/proc/update_all_icons()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
/datum/gear/utility/implant/language
cost = 2
exploitable = 0
display_name = "vocal synthesizer, GalComm"
description = "A surgically implanted vocal synthesizer which allows the owner to speak GalCom, if they know it."
path = /obj/item/implant/language

/datum/gear/utility/implant/language/eal
display_name = "vocal synthesizer, EAL"
Expand Down
31 changes: 22 additions & 9 deletions code/modules/clothing/clothing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,9 @@ var/global/list/light_overlay_cache = list() //see get_worn_overlay() on helmets
throwforce = 2
slot_flags = SLOT_EARS
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/teshari/ears.dmi'
SPECIES_TESHARI = 'icons/mob/species/teshari/ears.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/ears.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/ears.dmi'
)

/obj/item/clothing/ears/attack_hand(mob/user as mob)
Expand Down Expand Up @@ -296,7 +298,9 @@ var/global/list/light_overlay_cache = list() //see get_worn_overlay() on helmets
attack_verb = list("challenged")
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/teshari/gloves.dmi',
SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi'
SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/gloves.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/gloves.dmi'
)
drop_sound = 'sound/items/drop/gloves.ogg'
pickup_sound = 'sound/items/pickup/gloves.ogg'
Expand Down Expand Up @@ -407,7 +411,7 @@ var/global/list/light_overlay_cache = list() //see get_worn_overlay() on helmets
w_class = ITEMSIZE_TINY
icon = 'icons/obj/clothing/rings.dmi'
gender = NEUTER
species_restricted = list("exclude", SPECIES_DIONA)
species_restricted = list("exclude", SPECIES_DIONA, SPECIES_NABBER, SPECIES_NABBER_MONARCH)
siemens_coefficient = 1
glove_level = 1
fingerprint_chance = 100
Expand Down Expand Up @@ -439,7 +443,9 @@ var/global/list/light_overlay_cache = list() //see get_worn_overlay() on helmets

sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi',
SPECIES_VOX = 'icons/mob/species/vox/head.dmi'
SPECIES_VOX = 'icons/mob/species/vox/head.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/head.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/head.dmi'
)
drop_sound = 'sound/items/drop/hat.ogg'
pickup_sound = 'sound/items/pickup/hat.ogg'
Expand Down Expand Up @@ -563,11 +569,14 @@ var/global/list/light_overlay_cache = list() //see get_worn_overlay() on helmets
slot_flags = SLOT_MASK
body_parts_covered = FACE|EYES
blood_sprite_state = "maskblood"

sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/teshari/masks.dmi',
SPECIES_VOX = 'icons/mob/species/vox/masks.dmi',
SPECIES_TAJ = 'icons/mob/species/tajaran/mask.dmi',
SPECIES_UNATHI = 'icons/mob/species/unathi/mask.dmi'
SPECIES_UNATHI = 'icons/mob/species/unathi/mask.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/mask.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/mask.dmi'
)

var/voicechange = 0
Expand Down Expand Up @@ -616,7 +625,7 @@ var/global/list/light_overlay_cache = list() //see get_worn_overlay() on helmets
slowdown = SHOES_SLOWDOWN
force = 2
var/overshoes = 0
species_restricted = list("exclude",SPECIES_TESHARI, SPECIES_VOX)
species_restricted = list("exclude",SPECIES_TESHARI, SPECIES_VOX, SPECIES_NABBER, SPECIES_NABBER_MONARCH)
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/teshari/shoes.dmi',
SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi'
Expand Down Expand Up @@ -723,10 +732,11 @@ var/global/list/light_overlay_cache = list() //see get_worn_overlay() on helmets
preserve_item = 1
equip_sound = 'sound/items/jumpsuit_equip.ogg'


sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi',
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi'
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/suit.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/suit.dmi'
)

valid_accessory_slots = (ACCESSORY_SLOT_OVER | ACCESSORY_SLOT_ARMBAND)
Expand Down Expand Up @@ -781,9 +791,12 @@ var/global/list/light_overlay_cache = list() //see get_worn_overlay() on helmets
var/displays_id = 1
var/rolled_down = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled
var/rolled_sleeves = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled

sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/teshari/uniform.dmi',
SPECIES_VOX = 'icons/mob/species/vox/uniform.dmi'
SPECIES_VOX = 'icons/mob/species/vox/uniform.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/uniform.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/uniform.dmi'
)

//convenience var for defining the icon state for the overlay used when the clothing is worn.
Expand Down
4 changes: 4 additions & 0 deletions code/modules/clothing/spacesuits/rig/rig.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
permeability_coefficient = 0.1
unacidable = 1
preserve_item = 1
var/list/species_restricted

var/suit_state //The string used for the suit's icon_state.

Expand Down Expand Up @@ -167,6 +168,9 @@
piece.unacidable = unacidable
if(islist(armor)) piece.armor = armor.Copy()
if(islist(armorsoak)) piece.armorsoak = armorsoak.Copy()
if(islist(species_restricted) && istype(piece, /obj/item/clothing))
var/obj/item/clothing/rigpiece = piece
rigpiece.species_restricted = species_restricted.Copy()

update_icon(1)

Expand Down
14 changes: 12 additions & 2 deletions code/modules/clothing/spacesuits/rig/rig_pieces.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi',
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
SPECIES_VOX = 'icons/mob/species/vox/head.dmi',
SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi'
SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/head_space.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/head_space.dmi'
)
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, Diona, and zaddat can't use hardsuits not designed for them
max_pressure_protection = null
Expand All @@ -27,6 +29,12 @@
body_parts_covered = HANDS
heat_protection = HANDS
cold_protection = HANDS
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/teshari/gloves.dmi',
SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/gloves_space.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/gloves_space.dmi'
)
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI)
gender = PLURAL

Expand Down Expand Up @@ -56,7 +64,9 @@
SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi',
SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi',
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi',
SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi'
SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/suit_space.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/suit_space.dmi'
)
supporting_limbs = list()
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, Diona, and zaddat can't use hardsuits not designed for them
Expand Down
52 changes: 52 additions & 0 deletions code/modules/clothing/spacesuits/rig/suits/alien.dm
Original file line number Diff line number Diff line change
Expand Up @@ -123,3 +123,55 @@
/obj/item/rig_module/power_sink,
/obj/item/rig_module/self_destruct
)

/*
* Nabber
*/

/obj/item/rig/nabber
name = "alien control module"
desc = "This strange harness is far too large for most species you know..."
suit_type = "alien"
icon_state = "kexosuit"
armor = list(melee = 80, bullet = 60, laser = 60, energy = 15, bomb = 30, bio = 100, rad = 80)
item_flags = THICKMATERIAL | PHORONGUARD
siemens_coefficient = 0.2
offline_slowdown = 2.5
allowed = list(
/obj/item/gun,
/obj/item/flashlight,
/obj/item/tank,
/obj/item/suit_cooling_unit,
/obj/item/storage
)

air_type = /obj/item/tank/oxygen/red

helm_type = /obj/item/clothing/head/helmet/space/rig/nabber
chest_type = /obj/item/clothing/suit/space/rig/nabber
glove_type = /obj/item/clothing/gloves/gauntlets/rig/nabber
boot_type = null

sprite_sheets = list(
SPECIES_NABBER = 'icons/mob/species/nabber/back.dmi'
)

/obj/item/clothing/head/helmet/space/rig/nabber
species_restricted = list(SPECIES_NABBER)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
sprite_sheets = list(
SPECIES_NABBER = 'icons/mob/species/nabber/head_space.dmi'
)

/obj/item/clothing/suit/space/rig/nabber
species_restricted = list(SPECIES_NABBER)
sprite_sheets = list(
SPECIES_NABBER = 'icons/mob/species/nabber/suit_space.dmi'
)

/obj/item/clothing/gloves/gauntlets/rig/nabber
siemens_coefficient = 0
species_restricted = list(SPECIES_NABBER)
sprite_sheets = list(
SPECIES_NABBER = 'icons/mob/species/nabber/gloves_space.dmi'
)
7 changes: 7 additions & 0 deletions code/modules/clothing/spacesuits/rig/suits/merc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,10 @@
. = ..()
if(!QDELETED(src))
emag_act()

/obj/item/rig/merc/nabber
name = "atypical crimson hardsuit control module"
desc = "A blood-red hardsuit featuring some fairly illegal technology. This one seems to have been made for a non-humanoid bodyplan."

boot_type = null
species_restricted = list(SPECIES_NABBER)
34 changes: 33 additions & 1 deletion code/modules/clothing/spacesuits/void/merc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@
camera_networks = list(NETWORK_MERCENARY)
light_overlay = "helmet_light_green" //todo: species-specific light overlays

sprite_sheets_refit = list(
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi',
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/head_space.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/head_space.dmi'
)

/obj/item/clothing/suit/space/void/merc
icon_state = "rig-syndie"
name = "blood-red voidsuit"
Expand All @@ -21,6 +29,14 @@
breach_threshold = 16 //Extra Thicc
resilience = 0.05 //Military Armor

sprite_sheets_refit = list(
SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi',
SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi',
SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/suit_space.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/suit_space.dmi'
)

/obj/item/clothing/head/helmet/space/void/merc/fire
icon_state = "rig0-firebug"
name = "soot-covered voidsuit helmet"
Expand All @@ -32,6 +48,14 @@
siemens_coefficient = 0.7
light_overlay = "helmet_light_fire"

sprite_sheets_refit = list(
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi',
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/head_space.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/head_space.dmi'
)

/obj/item/clothing/suit/space/void/merc/fire
icon_state = "rig-firebug"
name = "soot-covered voidsuit"
Expand All @@ -43,4 +67,12 @@
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs,/obj/item/material/twohanded/fireaxe,/obj/item/flamethrower)
siemens_coefficient = 0.7
breach_threshold = 18 //Super Extra Thicc
slowdown = 1
slowdown = 1

sprite_sheets_refit = list(
SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi',
SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi',
SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/suit_space.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/suit_space.dmi'
)
8 changes: 6 additions & 2 deletions code/modules/clothing/spacesuits/void/void.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
sprite_sheets_refit = list(
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi',
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi'
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/head_space.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/head_space.dmi'
//Teshari have a general sprite sheet defined in modules/clothing/clothing.dm
)
sprite_sheets_obj = list(
Expand Down Expand Up @@ -46,7 +48,9 @@
sprite_sheets_refit = list(
SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi',
SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi',
SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi'
SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/suit_space.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/suit_space.dmi'
//Teshari have a general sprite sheet defined in modules/clothing/clothing.dm
)
sprite_sheets_obj = list(
Expand Down
16 changes: 16 additions & 0 deletions code/modules/clothing/spacesuits/void/wizard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@
sprite_sheets_obj = null
wizard_garb = 1

sprite_sheets_refit = list(
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi',
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/head_space.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/head_space.dmi'
)

/obj/item/clothing/suit/space/void/wizard
icon_state = "rig-wiz"
name = "gem-encrusted voidsuit"
Expand All @@ -23,3 +31,11 @@
sprite_sheets_refit = null
sprite_sheets_obj = null
wizard_garb = 1

sprite_sheets_refit = list(
SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi',
SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi',
SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi',
SPECIES_NABBER = 'icons/mob/species/nabber/suit_space.dmi',
SPECIES_NABBER_MONARCH = 'icons/mob/species/nabber/monarch/suit_space.dmi'
)
2 changes: 2 additions & 0 deletions code/modules/clothing/suits/hooded.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
var/toggleicon
action_button_name = "Toggle Hood"

species_restricted = list("exclude", SPECIES_NABBER, SPECIES_NABBER_MONARCH)

/obj/item/clothing/suit/storage/hooded/Initialize()
toggleicon = "[initial(icon_state)]"
MakeHood()
Expand Down
Loading