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

Floran wants to stab #456

Merged
merged 28 commits into from
Nov 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
ff79ad8
adds florans!
Glyphee Oct 11, 2023
64b6aa5
all is lost!!!!!!!!
Glyphee Oct 11, 2023
dda4302
Update floran_accessories.dm
Glyphee Oct 12, 2023
0233af0
Merge branch 'Monkestation:master' into floran-wants-to-stab
Glyphee Oct 12, 2023
3931d6f
Merge branch 'Monkestation:master' into floran-wants-to-stab
Glyphee Oct 14, 2023
d6b3891
some alterations
Glyphee Oct 14, 2023
bdfe6b4
minor changes to try and fix issues
Glyphee Oct 14, 2023
2edd742
mroe fixes
Glyphee Oct 14, 2023
b736e24
more fixes
Glyphee Oct 14, 2023
47573c6
uncommented a line
Glyphee Oct 14, 2023
d8f354b
it WORKS
Glyphee Oct 14, 2023
a30b416
Merge branch 'Monkestation:master' into floran-wants-to-stab
Glyphee Oct 15, 2023
cbcea7d
linter should be good now
Glyphee Oct 15, 2023
11dba54
added gore to food types
Glyphee Oct 15, 2023
630791c
bug fix
Glyphee Oct 15, 2023
9de4ec7
Merge branch 'Monkestation:master' into floran-wants-to-stab
Glyphee Oct 15, 2023
fb47ed5
screenshot test fix, and some commented out code for explosions
Glyphee Oct 15, 2023
bca368e
Merge branch 'master' into floran-wants-to-stab
Glyphee Oct 23, 2023
5b74e15
Merge branch 'master' into floran-wants-to-stab
Glyphee Oct 23, 2023
62b0f14
Merge branch 'Monkestation:master' into floran-wants-to-stab
Glyphee Oct 23, 2023
2de2418
Merge branch 'Monkestation:master' into floran-wants-to-stab
Glyphee Oct 25, 2023
86c1e8f
floran pocketses
Glyphee Oct 25, 2023
f3a685a
Merge branch 'Monkestation:master' into floran-wants-to-stab
Glyphee Oct 25, 2023
688eaa8
Merge branch 'floran-wants-to-stab' of https://github.com/Glyphee/Mon…
Glyphee Oct 25, 2023
5617183
changed their diet
Glyphee Oct 25, 2023
7abc643
removed mutcolors_secondary from traits until i can get it working
Glyphee Oct 25, 2023
2c28cd5
added in (still not working) mutcolors code
Glyphee Oct 25, 2023
0a00db3
modifies burn factor, light healing, and potassium metabolism
Glyphee Oct 28, 2023
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/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@
#define ORGAN_SLOT_EXTERNAL_ANIME_HEAD "anime_head"
#define ORGAN_SLOT_EXTERNAL_ANIME_CHEST "anime_chest"
#define ORGAN_SLOT_EXTERNAL_ANIME_BOTTOM "anime_bottom"
#define ORGAN_SLOT_EXTERNAL_FLORAN_LEAVES "floran_leaves"

/// Xenomorph organ slots
#define ORGAN_SLOT_XENO_ACIDGLAND "acid_gland"
Expand Down
3 changes: 3 additions & 0 deletions code/__DEFINES/external_organs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
#define ORGAN_COLOR_HAIR (1<<2)
///uses the parents anime color
#define ORGAN_COLOR_ANIME (1<<3)
///uses the parents mutcolor secondary
#define ORGAN_COLOR_MUTSECONDARY (1<<4)

///Tail wagging
#define WAG_ABLE (1<<0)
#define WAG_WAGGING (1<<1)
5 changes: 3 additions & 2 deletions code/__DEFINES/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ GLOBAL_LIST_INIT(turfs_openspace, typecacheof(list(
#define isgolem(A) (is_species(A, /datum/species/golem))
#define islizard(A) (is_species(A, /datum/species/lizard))
#define isplasmaman(A) (is_species(A, /datum/species/plasmaman))
#define issimian(A) (is_species(A, /datum/species/simian))
#define issimian(A) (is_species(A, /datum/species/simian)) //Monkestation Addition
#define ispodperson(A) (is_species(A, /datum/species/pod))
#define isflyperson(A) (is_species(A, /datum/species/fly))
#define isjellyperson(A) (is_species(A, /datum/species/jelly))
Expand All @@ -97,7 +97,8 @@ GLOBAL_LIST_INIT(turfs_openspace, typecacheof(list(
#define isandroid(A) (is_species(A, /datum/species/android))
#define isnightmare(A) (is_species(A, /datum/species/shadow/nightmare))
#define isipc(A) (is_species(A, /datum/species/ipc))
#define isgoblin(A) (is_species(A, /datum/species/goblin))//monkestation addition
#define isgoblin(A) (is_species(A, /datum/species/goblin)) //Monkestation Addition
#define isfloran(A) (is_species(A, /datum/species/floran)) //Monkestation Addition


//More carbon mobs
Expand Down
5 changes: 3 additions & 2 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,9 @@
#define SPECIES_ZOMBIE_KROKODIL "krokodil_zombie"
#define SPECIES_OOZELING "oozeling"
#define SPECIES_IPC "ipc"
#define SPECIES_SIMIAN "simian"
#define SPECIES_GOBLIN "goblin"//monkestation addition
#define SPECIES_SIMIAN "simian" //Monkestation Addition
#define SPECIES_GOBLIN "goblin" //Monkestation Addition
#define SPECIES_FLORAN "floran" //Monkestation Addition
// Like species IDs, but not specifically attached a species.
#define BODYPART_ID_ALIEN "alien"
#define BODYPART_ID_ROBOTIC "robotic"
Expand Down
1 change: 1 addition & 0 deletions code/__HELPERS/global_lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_appendages, GLOB.arachnid_appendages_list) //Monkestation Addition
init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_chelicerae, GLOB.arachnid_chelicerae_list) //Monkestation Addition
init_sprite_accessory_subtypes(/datum/sprite_accessory/goblin_ears, GLOB.goblin_ears_list) //Monkestation Addition
init_sprite_accessory_subtypes(/datum/sprite_accessory/floran_leaves, GLOB.floran_leaves_list) //Monkestation Addition

//Species
for(var/spath in subtypesof(/datum/species))
Expand Down
5 changes: 4 additions & 1 deletion code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_chelicerae, GLOB.arachnid_chelicerae_list)
if(!GLOB.goblin_ears_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/goblin_ears, GLOB.goblin_ears_list)
if(!GLOB.floran_leaves_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/floran_leaves, GLOB.floran_leaves_list)
//Monkestation Addition End

//For now we will always return none for tail_human and ears. | "For now" he says.
Expand Down Expand Up @@ -142,7 +144,8 @@
"arachnid_appendages" = pick(GLOB.arachnid_appendages_list), //Monkestation Addition
"arachnid_chelicerae" = pick(GLOB.arachnid_chelicerae_list), //Monkestation Addition
"animecolor" = "#[pick("7F","FF")][pick("7F","FF")][pick("7F","FF")]", //Monkestation Addition
"goblin_ears" = pick(GLOB.goblin_ears_list) //Monkestation Addition
"goblin_ears" = pick(GLOB.goblin_ears_list), //Monkestation Addition
"floran_leaves" = pick(GLOB.floran_leaves_list), //Monkestation Addition
))

/proc/random_hairstyle(gender)
Expand Down
2 changes: 2 additions & 0 deletions code/_globalvars/lists/flavor_misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ GLOBAL_LIST_EMPTY(anime_bottom_list) //Monkestation Addition
GLOBAL_LIST_EMPTY(arachnid_appendages_list) //Monkestation Addition
GLOBAL_LIST_EMPTY(arachnid_chelicerae_list) //Monkestation Addition
GLOBAL_LIST_EMPTY(goblin_ears_list) //Monkestation Addition
GLOBAL_LIST_EMPTY(floran_leaves_list) //Monkestation Addition

GLOBAL_LIST_INIT(color_list_ethereal, list(
"Blue" = "#3399ff",
Expand All @@ -58,6 +59,7 @@ GLOBAL_LIST_INIT(color_list_ethereal, list(
"Cyan Blue" = "#00ffff",
"Dark Blue" = "#6666ff",
"Dark Fuschia" = "#cc0066",

"Dark Green" = "#37835b",
"Dark Red" = "#9c3030",
"Dull Yellow" = "#fbdf56",
Expand Down
5 changes: 5 additions & 0 deletions code/datums/bodypart_overlays/mutant_bodypart_overlay.dm
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,11 @@
return
var/mob/living/carbon/human/human_owner = ownerlimb.owner
draw_color = human_owner.dna.features["animecolor"]
if(ORGAN_COLOR_MUTSECONDARY)
if(!ishuman(ownerlimb.owner))
return
var/mob/living/carbon/human/human_owner = ownerlimb.owner
draw_color = human_owner.dna.features["mcolor_secondary"]

return TRUE

Expand Down
1 change: 1 addition & 0 deletions code/modules/mob/living/carbon/human/dummy.dm
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy)
target.dna.features["arachnid_appendages"] = "Long" //Monkestation Addition
target.dna.features["arachnid_chelicerae"] = "Basic" //Monkestation Addition
target.dna.features["goblin_ears"] = "Normal" //Monkestation Addition
target.dna.features["floran_leaves"] = "Furnivour" //Monkestation Addition

/// Provides a dummy that is consistently bald, white, naked, etc.
/mob/living/carbon/human/dummy/consistent
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions config/game_options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,7 @@ ROUNDSTART_RACES arachnid
## Races that are better than humans in some ways, but worse in others
ROUNDSTART_RACES ethereal
ROUNDSTART_RACES goblin
ROUNDSTART_RACES floran
#ROUNDSTART_RACES jelly
#ROUNDSTART_RACES abductor
#ROUNDSTART_RACES synth
Expand Down
Binary file modified icons/mob/species/human/human_face.dmi
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/datum/preference/choiced/floran_leaves
savefile_key = "feature_floran_leaves"
savefile_identifier = PREFERENCE_CHARACTER
category = PREFERENCE_CATEGORY_FEATURES
main_feature_name = "Floran Leaves"
should_generate_icons = TRUE

/datum/preference/choiced/floran_leaves/init_possible_values()
return possible_values_for_sprite_accessory_list_for_body_part(
GLOB.floran_leaves_list,
"floran_leaves",
list("ADJ"),
)

/datum/preference/choiced/floran_leaves/apply_to_human(mob/living/carbon/human/target, value)
target.dna.features["floran_leaves"] = value
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/datum/sprite_accessory/floran_leaves
icon = 'monkestation/icons/mob/species/floran/floran_leaves.dmi'
color_src = MUTCOLORS_SECONDARY
//Should be MUTCOLORS_SECONDARY, but while its not working it will be the inverse of MUTCOLORS

/datum/sprite_accessory/floran_leaves/furnivour
name = "Furnivour"
icon_state = "furnivour"

/datum/sprite_accessory/floran_leaves/leaf
name = "Leaf"
icon_state = "leaf"

/datum/sprite_accessory/floran_leaves/pelt
name = "Pelt"
icon_state = "pelt"

/datum/sprite_accessory/floran_leaves/savage
name = "Savage"
icon_state = "savage"

/datum/sprite_accessory/floran_leaves/survivalist
name = "Survivalist"
icon_state = "survivalist"
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
/datum/species/floran
name = "\improper Floran"
plural_form = "Florans"
id = SPECIES_FLORAN
sexes = FALSE
species_traits = list(
MUTCOLORS,
MUTCOLORS_SECONDARY,
NO_UNDERWEAR,
)
inherent_traits = list(
TRAIT_PLANT_SAFE,
TRAIT_NO_JUMPSUIT,
)
external_organs = list(
/obj/item/organ/external/pod_hair = "None",
/obj/item/organ/external/floran_leaves = "Furnivour",
)
inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_PLANT
inherent_factions = list(FACTION_PLANTS, FACTION_VINES)
burnmod = 1.8
heatmod = 0.67 //Same as lizard people
coldmod = 1.5 //Same as lizard people
speedmod = -0.1 //Same as arachnids
payday_modifier = 0.75
meat = /obj/item/food/meat/slab/human/mutant/plant
exotic_blood = /datum/reagent/water
// disliked_food = VEGETABLES | FRUIT | GRAIN
liked_food = MEAT | BUGS | GORE
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
species_language_holder = /datum/language_holder/plant

bodypart_overrides = list(
BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/floran,
BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/floran,
BODY_ZONE_HEAD = /obj/item/bodypart/head/floran,
BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/floran,
BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/floran,
BODY_ZONE_CHEST = /obj/item/bodypart/chest/floran,
)
mutanttongue = /obj/item/organ/internal/tongue/lizard
mutanteyes = /obj/item/organ/internal/eyes/floran

ass_image = 'icons/ass/asspodperson.png'

/datum/species/floran/spec_life(mob/living/carbon/human/H, seconds_per_tick, times_fired)
if(H.stat == DEAD)
return

var/light_amount = 0
if(isturf(H.loc))
var/turf/T = H.loc
light_amount = min(1, T.get_lumcount()) - 0.5
if(light_amount > 0.3)
H.heal_overall_damage(brute = 0.5 * seconds_per_tick, burn = 0.5 * seconds_per_tick, required_bodytype = BODYTYPE_ORGANIC) //Lowered to 0.25
H.adjustToxLoss(-0.5 * seconds_per_tick)
H.adjustOxyLoss(-0.5 * seconds_per_tick)

/datum/species/floran/on_species_gain(mob/living/carbon/new_floran, datum/species/old_species, pref_load)
. = ..()
if(ishuman(new_floran))
update_mail_goodies(new_floran)

/datum/species/floran/update_quirk_mail_goodies(mob/living/carbon/human/recipient, datum/quirk/quirk, list/mail_goodies = list())
if(istype(quirk, /datum/quirk/blooddeficiency))
mail_goodies += list(
/obj/item/reagent_containers/blood/podperson
)
return ..()

/datum/species/floran/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H, seconds_per_tick, times_fired)
if(chem.type == /datum/reagent/toxin/plantbgone)
H.adjustToxLoss(3 * REM * seconds_per_tick)
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM * seconds_per_tick)
return TRUE
if(chem.type == /datum/reagent/potassium) //Floran "blood" is water, water does not like potassium
to_chat(H, span_danger("You feel your skin bubble and pop painfully!"))
H.adjustBruteLoss(10*REM, FALSE)
return TRUE
return ..()

/datum/species/floran/randomize_features(mob/living/carbon/human_mob)
randomize_external_organs(human_mob)

/datum/species/floran/get_scream_sound(mob/living/carbon/human/human)
return pick(
'sound/voice/lizard/lizard_scream_1.ogg',
'sound/voice/lizard/lizard_scream_2.ogg',
'sound/voice/lizard/lizard_scream_3.ogg',
'monkestation/sound/voice/screams/lizard/lizard_scream_5.ogg',
)

/datum/species/floran/get_laugh_sound(mob/living/carbon/human/human)
return 'monkestation/sound/voice/laugh/lizard/lizard_laugh.ogg'

/datum/species/floran/get_species_description()
return "Plant-based humanoids, they are extremely violent carnivores with no central government or power structure, \
split into numerous tribes spread across the universe, each led by a Greenfinger. \
Though they are biologically a single-sex race, they may adapt sexually dimorphic physical traits and male/female identities if they so choose. \
Their speech is often simplistic, and they tend to hisss their sibilantsss. \
Their primary drives are hunting, acquiring trophies, fighting, eating meat, and more hunting. \
It is speculated that their general casual view towards killing and consuming other intelligent species stems from not viewing \"meat\" as \"alive\" in \
the same sense they are. However, as the Floran spread throughout the galaxy, more and more individuals are recognizing a need to integrate, \
make friends, and maybe not stab anyone that slightly inconveniences them. (E.I. THIS IS NOT AN EXCUSE TO RDM)"

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

to_add += list(
list(
SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK,
SPECIES_PERK_ICON = "",
SPECIES_PERK_NAME = "Carnivore",
SPECIES_PERK_DESC = "As a vicious carnivore, your claws do more damage to your prey.",
),
list(
SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK,
SPECIES_PERK_ICON = "",
SPECIES_PERK_NAME = "Photosynthesis",
SPECIES_PERK_DESC = "Your green skin slowly heals itself while it is illuminated.",
),
list(
SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK,
SPECIES_PERK_ICON = "",
SPECIES_PERK_NAME = "Flammable Skin",
SPECIES_PERK_DESC = "Your flammable skin is highly susceptible to burn damage.",
),
)

return to_add


/obj/item/organ/external/floran_leaves
name = "floran leaves"
desc = "you shouldn't see this"
organ_flags = ORGAN_UNREMOVABLE
icon_state = "floran_leaves"
icon = 'monkestation/icons/obj/medical/organs/organs.dmi'

preference = "feature_floran_leaves"
zone = BODY_ZONE_CHEST
slot = ORGAN_SLOT_EXTERNAL_FLORAN_LEAVES

use_mob_sprite_as_obj_sprite = TRUE
bodypart_overlay = /datum/bodypart_overlay/mutant/floran_leaves

/datum/bodypart_overlay/mutant/floran_leaves
layers = EXTERNAL_ADJACENT
feature_key = "floran_leaves"
37 changes: 37 additions & 0 deletions monkestation/code/modules/surgery/bodyparts/floran_bodyparts.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/obj/item/bodypart/head/floran
icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi'
limb_id = SPECIES_FLORAN
is_dimorphic = FALSE

/obj/item/bodypart/chest/floran
icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi'
limb_id = SPECIES_FLORAN
is_dimorphic = FALSE

/obj/item/bodypart/arm/left/floran
icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi'
limb_id = SPECIES_FLORAN
unarmed_attack_verb = "slash"
unarmed_damage_high = 15
unarmed_damage_low = 5
unarmed_attack_effect = ATTACK_EFFECT_CLAW
unarmed_attack_sound = 'sound/weapons/slice.ogg'
unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'

/obj/item/bodypart/arm/right/floran
icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi'
limb_id = SPECIES_FLORAN
unarmed_attack_verb = "slash"
unarmed_damage_high = 15
unarmed_damage_low = 5
unarmed_attack_effect = ATTACK_EFFECT_CLAW
unarmed_attack_sound = 'sound/weapons/slice.ogg'
unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'

/obj/item/bodypart/leg/left/floran
icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi'
limb_id = SPECIES_FLORAN

/obj/item/bodypart/leg/right/floran
icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi'
limb_id = SPECIES_FLORAN
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/obj/item/organ/external/floran_leaves
name = "floran leaves"
desc = "you shouldn't see this"
organ_flags = ORGAN_UNREMOVABLE
icon_state = "floran_leaves"
icon = 'monkestation/icons/obj/medical/organs/organs.dmi'

preference = "feature_floran_leaves"
zone = BODY_ZONE_CHEST
slot = ORGAN_SLOT_EXTERNAL_FLORAN_LEAVES

use_mob_sprite_as_obj_sprite = TRUE
bodypart_overlay = /datum/bodypart_overlay/mutant/floran_leaves

/datum/bodypart_overlay/mutant/floran_leaves
layers = EXTERNAL_ADJACENT
feature_key = "floran_leaves"
// color_source = ORGAN_COLOR_MUTSECONDARY

var/color_swapped_layer = EXTERNAL_ADJACENT//Remove when MUTCOLORS_SECONDARY works
var/color_inverse_base = 255//Remove when MUTCOLORS_SECONDARY works

/datum/bodypart_overlay/mutant/floran_leaves/get_global_feature_list()
return GLOB.floran_leaves_list

/datum/bodypart_overlay/mutant/floran_leaves/color_image(image/overlay, draw_layer, obj/item/bodypart/limb)//Remove when MUTCOLORS_SECONDARY works
if(draw_layer != bitflag_to_layer(color_swapped_layer))
return ..()

if(draw_color)
var/list/rgb_list = rgb2num(draw_color)
overlay.color = rgb(color_inverse_base - rgb_list[1], color_inverse_base - rgb_list[2], color_inverse_base - rgb_list[3])
else
overlay.color = null

/datum/bodypart_overlay/mutant/floran_leaves/get_base_icon_state()
return sprite_datum.icon_state

/datum/bodypart_overlay/mutant/floran_leaves/can_draw_on_bodypart(mob/living/carbon/human/human)
. = ..()
if(human.wear_suit && (human.wear_suit.flags_inv & HIDEJUMPSUIT))
return FALSE
Loading
Loading