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

Temporary Werewolf Code #561

Closed
wants to merge 40 commits into from
Closed
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
64013f9
Update parts.dm
Bluedino1025 Aug 12, 2024
1147b2f
Update head.dm
Bluedino1025 Aug 12, 2024
d3c4ace
Update _tongue.dm
Bluedino1025 Aug 12, 2024
dc8d141
Update _eyes.dm
Bluedino1025 Aug 12, 2024
14735ef
Update _ears.dm
Bluedino1025 Aug 12, 2024
116b5a3
Create werewolf
Bluedino1025 Aug 12, 2024
8f1e35b
Rename werewolf to werewolf.dm
Bluedino1025 Aug 12, 2024
825321e
Update misc_bodyparts.dm
Bluedino1025 Aug 12, 2024
e2d66c2
Update _tongue.dm
Bluedino1025 Aug 12, 2024
b03e5ff
Update head.dm
Bluedino1025 Aug 12, 2024
5a7de77
Update misc_bodyparts.dm
Bluedino1025 Aug 12, 2024
edf02c9
Update head.dm
Bluedino1025 Aug 12, 2024
e268dbd
Update parts.dm
Bluedino1025 Aug 12, 2024
2bb6e9a
Update misc_bodyparts.dm
Bluedino1025 Aug 12, 2024
01b725b
Update _tongue.dm
Bluedino1025 Aug 12, 2024
14c86d3
Update werewolf.dm
Bluedino1025 Aug 13, 2024
414cd6c
Create werewolf.dm
Bluedino1025 Aug 14, 2024
9049fe5
Update mobs.dm
Bluedino1025 Aug 17, 2024
74164d3
Update maplestation.dme
Bluedino1025 Aug 17, 2024
5a23169
Update werewolf.dm
Bluedino1025 Aug 17, 2024
c202505
Update werewolf.dm
Bluedino1025 Aug 17, 2024
39c8611
Update werewolf.dm
Bluedino1025 Aug 17, 2024
363eb9a
Update werewolf.dm
Bluedino1025 Aug 17, 2024
faec84b
Update werewolf.dm
Bluedino1025 Aug 17, 2024
cd36053
Update misc_bodyparts.dm
Bluedino1025 Aug 17, 2024
07a3fad
Update werewolf.dm
Bluedino1025 Aug 17, 2024
8f89e24
extreme agony
Bluedino1025 Aug 18, 2024
6aafb3b
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Bluedino1025 Aug 18, 2024
d6be63e
this caused so many errors
Bluedino1025 Aug 18, 2024
5b32ffe
eck
Bluedino1025 Aug 18, 2024
b9b8952
holy shit it finally works
Bluedino1025 Aug 18, 2024
d0b4000
Merge branch 'master' into patch-2
Bluedino1025 Aug 18, 2024
096ee38
agh
Bluedino1025 Aug 18, 2024
c6c0c4e
shit was fucked, less fucked now
Bluedino1025 Aug 18, 2024
f6b8ab9
a
Bluedino1025 Aug 18, 2024
75ade92
agony
Bluedino1025 Aug 18, 2024
539dbf3
fix the check
Bluedino1025 Aug 18, 2024
8d5eedc
YIPPEE
Bluedino1025 Aug 19, 2024
b67f97d
forgor a detail
Bluedino1025 Aug 19, 2024
c502531
Merge branch 'master' into patch-2
Bluedino1025 Aug 19, 2024
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/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@
#define SPECIES_PODPERSON "pod"
#define SPECIES_SHADOW "shadow"
#define SPECIES_SKELETON "skeleton"
#define SPECIES_WEREWOLF "werewolf"
#define SPECIES_SNAIL "snail"
#define SPECIES_VAMPIRE "vampire"
#define SPECIES_ZOMBIE "zombie"
Expand Down
66 changes: 66 additions & 0 deletions code/modules/mob/living/carbon/human/species_types/werewolf.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/datum/species/werewolf
name = "werewolf"
id = SPECIES_WEREWOLF
inherent_traits = list(
TRAIT_USES_SKINTONES,
TRAIT_NO_UNDERWEAR,
Bluedino1025 marked this conversation as resolved.
Show resolved Hide resolved
TRAIT_NO_AUGMENTS,
)
mutanttongue = /obj/item/organ/internal/tongue/werewolf
mutantears = /obj/item/organ/internal/ears/werewolf
mutanteyes = /obj/item/organ/internal/eyes/werewolf
mutantbrain = /obj/item/organ/internal/brain/werewolf
external_organs = list(
/obj/item/organ/external/tail/cat = "Cat",
)
skinned_type = /obj/item/stack/sheet/animalhide/human
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
no_equip_flags = ITEM_SLOT_MASK | ITEM_SLOT_OCLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_FEET | ITEM_SLOT_ICLOTHING | ITEM_SLOT_SUITSTORE
payday_modifier = 1.1
Bluedino1025 marked this conversation as resolved.
Show resolved Hide resolved

bodypart_overrides = list(
BODY_ZONE_HEAD = /obj/item/bodypart/head/werewolf,
BODY_ZONE_CHEST = /obj/item/bodypart/chest/werewolf,
BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/werewolf,
BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/werewolf,
BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/werewolf,
BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/werewolf,
)

/obj/item/organ/internal/brain/werewolf/get_attacking_limb(mob/living/carbon/human/target)
organ_traits = list(TRAIT_PRIMITIVE)
Bluedino1025 marked this conversation as resolved.
Show resolved Hide resolved
if(target.body_position == LYING_DOWN)
return owner.get_bodypart(BODY_ZONE_HEAD)
return ..()

/datum/species/werewolf/prepare_human_for_preview(mob/living/carbon/human/human)
human.set_haircolor("#bb9966", update = FALSE) // brown
human.set_hairstyle("Business Hair", update = TRUE)

/datum/species/werewolf/get_species_description()
return "N/A"

/datum/species/human/get_species_lore()
return list(
"N/A",
)

/datum/species/werewolf/create_pref_unique_perks()
var/list/to_add = list()

to_add += list(
list(
SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK,
SPECIES_PERK_ICON = "paw",
SPECIES_PERK_NAME = "Primal Primate",
SPECIES_PERK_DESC = "Werewolves are monstrous humans, and can't do most things a human can do. Computers are impossible, \
complex machines are right out, and most clothes don't fit your larger form.",
),
list(
SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK,
SPECIES_PERK_ICON = "assistive-listening-systems",
SPECIES_PERK_NAME = "Sensitive Hearing",
SPECIES_PERK_DESC = "Werewolves are more sensitive to loud sounds, such as flashbangs.",
))

return to_add
80 changes: 80 additions & 0 deletions code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,86 @@
limb_id = SPECIES_PODPERSON
burn_modifier = 1.25

///WEREWOLF
/obj/item/bodypart/head/werewolf
limb_id = SPECIES_WEREWOLF
is_dimorphic = FALSE
burn_modifier = 0.75
brute_modifier = 0.25
unarmed_attack_verb = "bite"
grappled_attack_verb = "mauls"
unarmed_attack_effect = ATTACK_EFFECT_BITE
unarmed_attack_sound = 'sound/weapons/bite.ogg'
unarmed_miss_sound = 'sound/weapons/bite.ogg'
unarmed_damage_low = 60
unarmed_damage_high = 75
unarmed_effectiveness = 50
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

60 damage unarmed attack? Erm

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's for the bite, which requires you to be prone. getting bit by a werewolf is gonna hurt

dmg_overlay_type = null
biological_state = (BIO_FLESH|BIO_BLOODED)
head_flags = HEAD_EYESPRITES|HEAD_EYECOLOR|HEAD_EYEHOLES|HEAD_DEBRAIN

/obj/item/bodypart/chest/werewolf
limb_id = SPECIES_WEREWOLF
is_dimorphic = TRUE
burn_modifier = 0.75
brute_modifier = 0.25
dmg_overlay_type = null
biological_state = (BIO_FLESH|BIO_BLOODED)
bodypart_traits = list(TRAIT_NO_JUMPSUIT, TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_PUSHIMMUNE, TRAIT_STUNIMMUNE)
wing_types = NONE

/obj/item/bodypart/arm/left/werewolf
limb_id = SPECIES_WEREWOLF
unarmed_attack_verb = "slash"
grappled_attack_verb = "lacerate"
unarmed_attack_effect = ATTACK_EFFECT_CLAW
unarmed_attack_sound = 'sound/weapons/slice.ogg'
unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'
unarmed_damage_low = 20
unarmed_damage_high = 25
unarmed_effectiveness = 20
burn_modifier = 0.75
brute_modifier = 0.25
dmg_overlay_type = null
bodypart_traits = list(TRAIT_CHUNKYFINGERS)
biological_state = (BIO_FLESH|BIO_BLOODED)

/obj/item/bodypart/arm/right/werewolf
limb_id = SPECIES_WEREWOLF
unarmed_attack_verb = "slash"
grappled_attack_verb = "lacerate"
unarmed_attack_effect = ATTACK_EFFECT_CLAW
unarmed_attack_sound = 'sound/weapons/slice.ogg'
unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'
unarmed_damage_low = 20
unarmed_damage_high = 25
unarmed_effectiveness = 20
burn_modifier = 0.75
brute_modifier = 0.25
dmg_overlay_type = null
bodypart_traits = list(TRAIT_CHUNKYFINGERS)
biological_state = (BIO_FLESH|BIO_BLOODED)

/obj/item/bodypart/leg/left/werewolf
limb_id = SPECIES_WEREWOLF
burn_modifier = 0.75
brute_modifier = 0.25
speed_modifier = 0.5
dmg_overlay_type = null
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE
footstep_type = FOOTSTEP_MOB_CLAW
biological_state = (BIO_FLESH|BIO_BLOODED)

/obj/item/bodypart/leg/right/werewolf
limb_id = SPECIES_WEREWOLF
burn_modifier = 0.75
brute_modifier = 0.25
speed_modifier = 0.5
dmg_overlay_type = null
bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE
footstep_type = FOOTSTEP_MOB_CLAW
biological_state = (BIO_FLESH|BIO_BLOODED)

///FLY
/obj/item/bodypart/head/fly
limb_id = SPECIES_FLYPERSON
Expand Down
18 changes: 18 additions & 0 deletions code/modules/surgery/organs/internal/ears/_ears.dm
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,24 @@
ear_owner.dna.species.mutant_bodyparts -= "ears"
ear_owner.update_body()

/obj/item/organ/internal/ears/werewolf
name = "wolf ears"
icon_state = "kitty"
desc = "Allows the user to more easily hear whispers. The user becomes extra vulnerable to loud noises, however"
// Same sensitivity as felinid ears
damage_multiplier = 2

// The original idea was to use signals to do this not traits. Unfortunately, the star effect used for whispers applies before any relevant signals
// This seems like the least invasive solution
/obj/item/organ/internal/ears/werewolf/on_mob_insert(mob/living/carbon/ear_owner)
. = ..()
ADD_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT)
Bluedino1025 marked this conversation as resolved.
Show resolved Hide resolved

/obj/item/organ/internal/ears/werewolf/on_mob_remove(mob/living/carbon/ear_owner)
. = ..()
REMOVE_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT)


/obj/item/organ/internal/ears/penguin
name = "penguin ears"
desc = "The source of a penguin's happy feet."
Expand Down
6 changes: 6 additions & 0 deletions code/modules/surgery/organs/internal/eyes/_eyes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,12 @@
sight_flags = SEE_MOBS
color_cutoffs = list(25, 5, 42)

/obj/item/organ/internal/eyes/werewolf
name = "wolf eyes"
desc = "Large and powerful eyes."
sight_flags = SEE_MOBS
color_cutoffs = list(25, 5, 42)

/obj/item/organ/internal/eyes/golem
name = "resonating crystal"
icon_state = "adamantine_cords"
Expand Down
34 changes: 34 additions & 0 deletions code/modules/surgery/organs/internal/tongue/_tongue.dm
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,40 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
/obj/item/organ/internal/tongue/ethereal/get_possible_languages()
return ..() + /datum/language/voltaic

/obj/item/organ/internal/tongue/werewolf
name = "wolf tongue"
desc = "A large tongue that looks like a mix of a human's and a wolf's."
icon_state = "tonguewerewolf"
say_mod = "growls"
modifies_speech = TRUE
taste_sensitivity = 5
liked_foodtypes = GROSS | MEAT | RAW | GORE
disliked_foodtypes = SUGAR

/obj/item/organ/internal/tongue/werewolf/modify_speech(datum/source, list/speech_args)
var/message = speech_args[SPEECH_MESSAGE]
if(message[1] != "*")

// all occurrences of characters "eiou" (case-insensitive) are replaced with "r"
message = replacetext(message, regex(@"[eiou]", "ig"), "r")
// all characters other than "zhrgbmna .!?-" (case-insensitive) are stripped
message = replacetext(message, regex(@"[^zhrgbmna.!?-\s]", "ig"), "")
// multiple spaces are replaced with a single (whitespace is trimmed)
message = replacetext(message, regex(@"(\s+)", "g"), " ")

var/list/old_words = splittext(message, " ")
var/list/new_words = list()
for(var/word in old_words)
// lower-case "r" at the end of words replaced with "rh"
word = replacetext(word, regex(@"\lr\b"), "rh")
// an "a" or "A" by itself will be replaced with "hra"
word = replacetext(word, regex(@"\b[Aa]\b"), "hra")
new_words += word

message = new_words.Join(" ")
message = capitalize(message)
speech_args[SPEECH_MESSAGE] = message

/obj/item/organ/internal/tongue/cat
name = "felinid tongue"
desc = "A fleshy muscle mostly used for meowing."
Expand Down
1 change: 1 addition & 0 deletions maplestation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -4872,6 +4872,7 @@
#include "code\modules\mob\living\carbon\human\species_types\skeletons.dm"
#include "code\modules\mob\living\carbon\human\species_types\snail.dm"
#include "code\modules\mob\living\carbon\human\species_types\vampire.dm"
#include "code\modules\mob\living\carbon\human\species_types\werewolf.dm"
#include "code\modules\mob\living\carbon\human\species_types\zombies.dm"
#include "code\modules\mob\living\silicon\damage_procs.dm"
#include "code\modules\mob\living\silicon\death.dm"
Expand Down
Loading