Merge branch 'master' into spike-loot-differentces
This commit is contained in:
@@ -1,13 +1,3 @@
|
||||
/datum/emote/brain
|
||||
mob_type_allowed_typecache = list(/mob/living/brain)
|
||||
mob_type_blacklist_typecache = list()
|
||||
|
||||
/datum/emote/brain/can_run_emote(mob/user, status_check = TRUE)
|
||||
. = ..()
|
||||
var/mob/living/brain/B = user
|
||||
if(!istype(B) || (!(B.container && istype(B.container, /obj/item/mmi))))
|
||||
return FALSE
|
||||
|
||||
/datum/emote/brain/alarm
|
||||
key = "alarm"
|
||||
message = "sounds an alarm."
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
/datum/emote/living/alien
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon/alien)
|
||||
|
||||
/datum/emote/living/alien/gnarl
|
||||
key = "gnarl"
|
||||
key_third_person = "gnarls"
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
/datum/emote/living/carbon
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon)
|
||||
|
||||
/datum/emote/living/carbon/airguitar
|
||||
key = "airguitar"
|
||||
message = "is strumming the air and headbanging like a safari chimp."
|
||||
@@ -22,7 +19,6 @@
|
||||
muzzle_ignore = TRUE
|
||||
restraint_check = TRUE
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai)
|
||||
|
||||
/datum/emote/living/carbon/clap/run_emote(mob/living/user, params)
|
||||
. = ..()
|
||||
@@ -41,7 +37,6 @@
|
||||
key = "gnarl"
|
||||
key_third_person = "gnarls"
|
||||
message = "gnarls and shows its teeth..."
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon/monkey, /mob/living/carbon/alien)
|
||||
|
||||
/datum/emote/living/carbon/moan
|
||||
key = "moan"
|
||||
@@ -55,27 +50,23 @@
|
||||
key = "roll"
|
||||
key_third_person = "rolls"
|
||||
message = "rolls."
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon/monkey, /mob/living/carbon/alien)
|
||||
restraint_check = TRUE
|
||||
|
||||
/datum/emote/living/carbon/scratch
|
||||
key = "scratch"
|
||||
key_third_person = "scratches"
|
||||
message = "scratches."
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon/monkey, /mob/living/carbon/alien)
|
||||
restraint_check = TRUE
|
||||
|
||||
/datum/emote/living/carbon/screech
|
||||
key = "screech"
|
||||
key_third_person = "screeches"
|
||||
message = "screeches."
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon/monkey, /mob/living/carbon/alien)
|
||||
|
||||
/datum/emote/living/carbon/sign
|
||||
key = "sign"
|
||||
key_third_person = "signs"
|
||||
message_param = "signs the number %t."
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon/monkey, /mob/living/carbon/alien)
|
||||
restraint_check = TRUE
|
||||
|
||||
/datum/emote/living/carbon/sign/select_param(mob/user, params)
|
||||
@@ -87,13 +78,11 @@
|
||||
key = "signal"
|
||||
key_third_person = "signals"
|
||||
message_param = "raises %t fingers."
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon/human)
|
||||
restraint_check = TRUE
|
||||
|
||||
/datum/emote/living/carbon/tail
|
||||
key = "tail"
|
||||
message = "waves their tail."
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon/monkey, /mob/living/carbon/alien)
|
||||
|
||||
/datum/emote/living/carbon/wink
|
||||
key = "wink"
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
/datum/emote/living/carbon/human
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon/human)
|
||||
|
||||
/datum/emote/living/carbon/human/cry
|
||||
key = "cry"
|
||||
key_third_person = "cries"
|
||||
@@ -192,3 +189,71 @@
|
||||
key_third_person = "chimes"
|
||||
message = "chimes."
|
||||
sound = 'sound/machines/chime.ogg'
|
||||
|
||||
//rock paper scissors emote handling
|
||||
/mob/living/carbon/human/proc/beginRockPaperScissors(var/chosen_move)
|
||||
GLOB.rockpaperscissors_players[src] = list(chosen_move, ROCKPAPERSCISSORS_NOT_DECIDED)
|
||||
do_after_advanced(src, ROCKPAPERSCISSORS_TIME_LIMIT, src, DO_AFTER_REQUIRES_USER_ON_TURF|DO_AFTER_NO_COEFFICIENT|DO_AFTER_NO_PROGRESSBAR|DO_AFTER_DISALLOW_MOVING_ABSOLUTE_USER, CALLBACK(src, .proc/rockpaperscissors_tick))
|
||||
var/new_entry = GLOB.rockpaperscissors_players[src]
|
||||
if(new_entry[2] == ROCKPAPERSCISSORS_NOT_DECIDED)
|
||||
to_chat(src, "You put your hand back down.")
|
||||
GLOB.rockpaperscissors_players -= src
|
||||
|
||||
/mob/living/carbon/human/proc/rockpaperscissors_tick() //called every cycle of the progress bar for rock paper scissors while waiting for an opponent
|
||||
var/mob/living/carbon/human/opponent
|
||||
for(var/mob/living/carbon/human/potential_opponent in (GLOB.rockpaperscissors_players - src)) //dont play against yourself
|
||||
if(get_dist(src, potential_opponent) <= ROCKPAPERSCISSORS_RANGE)
|
||||
opponent = potential_opponent
|
||||
break
|
||||
if(opponent)
|
||||
//we found an opponent before they found us
|
||||
var/move_to_number = list("rock" = 0, "paper" = 1, "scissors" = 2)
|
||||
var/our_move = move_to_number[GLOB.rockpaperscissors_players[src][1]]
|
||||
var/their_move = move_to_number[GLOB.rockpaperscissors_players[opponent][1]]
|
||||
var/result_us = ROCKPAPERSCISSORS_WIN
|
||||
var/result_them = ROCKPAPERSCISSORS_LOSE
|
||||
if(our_move == their_move)
|
||||
result_us = ROCKPAPERSCISSORS_TIE
|
||||
result_them = ROCKPAPERSCISSORS_TIE
|
||||
else
|
||||
if(((our_move + 1) % 3) == their_move)
|
||||
result_us = ROCKPAPERSCISSORS_LOSE
|
||||
result_them = ROCKPAPERSCISSORS_WIN
|
||||
//we decided our results so set them in the list
|
||||
GLOB.rockpaperscissors_players[src][2] = result_us
|
||||
GLOB.rockpaperscissors_players[opponent][2] = result_them
|
||||
|
||||
//show what happened
|
||||
src.visible_message("<b>[src]</b> makes [GLOB.rockpaperscissors_players[src][1]] with their hand!")
|
||||
opponent.visible_message("<b>[opponent]</b> makes [GLOB.rockpaperscissors_players[opponent][1]] with their hands!")
|
||||
switch(result_us)
|
||||
if(ROCKPAPERSCISSORS_TIE)
|
||||
src.visible_message("It was a tie!")
|
||||
if(ROCKPAPERSCISSORS_WIN)
|
||||
src.visible_message("<b>[src]</b> wins!")
|
||||
if(ROCKPAPERSCISSORS_LOSE)
|
||||
src.visible_message("<b>[opponent]</b> wins!")
|
||||
|
||||
//make the progress bar end so that each player can handle the result
|
||||
return DO_AFTER_STOP
|
||||
|
||||
//no opponent was found, so keep searching
|
||||
return DO_AFTER_PROCEED
|
||||
|
||||
//the actual emotes
|
||||
/datum/emote/living/carbon/human/rockpaperscissors
|
||||
message = "is attempting to play rock paper scissors!"
|
||||
|
||||
/datum/emote/living/carbon/human/rockpaperscissors/rock
|
||||
key = "rock"
|
||||
|
||||
/datum/emote/living/carbon/human/rockpaperscissors/paper
|
||||
key = "paper"
|
||||
|
||||
/datum/emote/living/carbon/human/rockpaperscissors/scissors
|
||||
key = "scissors"
|
||||
|
||||
/datum/emote/living/carbon/human/rockpaperscissors/run_emote(mob/living/carbon/human/user, params)
|
||||
if(!(user in GLOB.rockpaperscissors_players)) //no using the emote again while already playing!
|
||||
. = ..()
|
||||
user.beginRockPaperScissors(key)
|
||||
|
||||
@@ -113,14 +113,14 @@
|
||||
. += effects_exam
|
||||
|
||||
//CIT CHANGES START HERE - adds genital details to examine text
|
||||
if(LAZYLEN(internal_organs))
|
||||
if(LAZYLEN(internal_organs) && CHECK_BITFIELD(user.client?.prefs.cit_toggles, GENITAL_EXAMINE))
|
||||
for(var/obj/item/organ/genital/dicc in internal_organs)
|
||||
if(istype(dicc) && dicc.is_exposed())
|
||||
. += "[dicc.desc]"
|
||||
|
||||
var/cursed_stuff = attempt_vr(src,"examine_bellies",args) //vore Code
|
||||
if(cursed_stuff)
|
||||
. += cursed_stuff
|
||||
if(CHECK_BITFIELD(user.client?.prefs.cit_toggles, VORE_EXAMINE))
|
||||
var/cursed_stuff = attempt_vr(src,"examine_bellies",args) //vore Code
|
||||
if(cursed_stuff)
|
||||
. += cursed_stuff
|
||||
//END OF CIT CHANGES
|
||||
|
||||
//Jitters
|
||||
|
||||
@@ -75,12 +75,8 @@
|
||||
. = pda.owner
|
||||
else if(istype(tablet))
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = tablet.all_components[MC_CARD]
|
||||
if(card_slot && (card_slot.stored_card2 || card_slot.stored_card))
|
||||
if(card_slot.stored_card2) //The second card is the one used for authorization in the ID changing program, so we prioritize it here for consistency
|
||||
. = card_slot.stored_card2.registered_name
|
||||
else
|
||||
if(card_slot.stored_card)
|
||||
. = card_slot.stored_card.registered_name
|
||||
if(card_slot?.stored_card)
|
||||
. = card_slot.stored_card.registered_name
|
||||
if(!.)
|
||||
. = if_no_id //to prevent null-names making the mob unclickable
|
||||
return
|
||||
|
||||
@@ -114,6 +114,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
/// Our default override for typing indicator state
|
||||
var/typing_indicator_state
|
||||
|
||||
//the ids you can use for your species, if empty, it means default only and not changeable
|
||||
var/list/allowed_limb_ids
|
||||
|
||||
///////////
|
||||
// PROCS //
|
||||
///////////
|
||||
@@ -121,7 +124,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
/datum/species/New()
|
||||
|
||||
if(!limbs_id) //if we havent set a limbs id to use, just use our own id
|
||||
limbs_id = id
|
||||
mutant_bodyparts["limbs_id"] = id //done this way to be non-intrusive to the existing system
|
||||
else
|
||||
mutant_bodyparts["limbs_id"] = limbs_id
|
||||
..()
|
||||
|
||||
//update our mutant bodyparts to include unlocked ones
|
||||
|
||||
@@ -13,10 +13,11 @@
|
||||
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/insect
|
||||
liked_food = MEAT | FRUIT
|
||||
disliked_food = TOXIC
|
||||
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
|
||||
exotic_bloodtype = "BUG"
|
||||
exotic_blood_color = BLOOD_COLOR_BUG
|
||||
|
||||
tail_type = "mam_tail"
|
||||
wagging_type = "mam_waggingtail"
|
||||
species_type = "insect"
|
||||
species_type = "insect"
|
||||
|
||||
allowed_limb_ids = list("insect","apid","moth","moth_not_greyscale")
|
||||
|
||||
@@ -83,17 +83,7 @@
|
||||
|
||||
/obj/item/organ/tongue/dullahan
|
||||
zone = "abstract"
|
||||
modifies_speech = TRUE
|
||||
|
||||
/obj/item/organ/tongue/dullahan/handle_speech(datum/source, list/speech_args)
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(isdullahan(H))
|
||||
var/datum/species/dullahan/D = H.dna.species
|
||||
if(isobj(D.myhead.loc))
|
||||
var/obj/O = D.myhead.loc
|
||||
O.say(speech_args[SPEECH_MESSAGE])
|
||||
speech_args[SPEECH_MESSAGE] = ""
|
||||
accents = list(/datum/accent/dullahan)
|
||||
|
||||
/obj/item/organ/ears/dullahan
|
||||
zone = "abstract"
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "Anthromorph"
|
||||
id = "mammal"
|
||||
default_color = "4B4B4B"
|
||||
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,HORNCOLOR,WINGCOLOR,HAS_FLESH,HAS_BONE)
|
||||
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BEAST
|
||||
mutant_bodyparts = list("mcolor" = "FFFFFF","mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "deco_wings" = "None",
|
||||
@@ -17,3 +16,5 @@
|
||||
tail_type = "mam_tail"
|
||||
wagging_type = "mam_waggingtail"
|
||||
species_type = "furry"
|
||||
|
||||
allowed_limb_ids = list("mammal","aquatic","avian")
|
||||
@@ -3,7 +3,6 @@
|
||||
id = "ipc"
|
||||
say_mod = "beeps"
|
||||
default_color = "00FF00"
|
||||
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
|
||||
blacklisted = 0
|
||||
sexes = 0
|
||||
species_traits = list(MUTCOLORS,NOEYES,NOTRANSSTING,HAS_FLESH,HAS_BONE)
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
|
||||
species_type = "plant"
|
||||
|
||||
allowed_limb_ids = list("pod","mush")
|
||||
|
||||
/datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
C.faction |= "plants"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/datum/species/synthliz
|
||||
name = "Synthetic Lizardperson"
|
||||
id = "synthliz"
|
||||
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
|
||||
say_mod = "beeps"
|
||||
default_color = "00FF00"
|
||||
species_traits = list(MUTCOLORS,NOTRANSSTING,EYECOLOR,LIPS,HAIR,HAS_FLESH,HAS_BONE)
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
mutant_organs = S.mutant_organs.Copy()
|
||||
nojumpsuit = S.nojumpsuit
|
||||
no_equip = S.no_equip.Copy()
|
||||
limbs_id = S.limbs_id
|
||||
limbs_id = S.mutant_bodyparts["limbs_id"]
|
||||
use_skintones = S.use_skintones
|
||||
fixed_mut_color = S.fixed_mut_color
|
||||
hair_color = S.hair_color
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
id = "xeno"
|
||||
say_mod = "hisses"
|
||||
default_color = "00FF00"
|
||||
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,CAN_SCAR)
|
||||
mutant_bodyparts = list("xenotail"="Xenomorph Tail","xenohead"="Standard","xenodorsal"="Standard", "mam_body_markings" = "Xeno","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None", "legs" = "Digitigrade")
|
||||
attack_verb = "slash"
|
||||
|
||||
@@ -660,7 +660,7 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if
|
||||
|
||||
//produces a key based on the human's limbs
|
||||
/mob/living/carbon/human/generate_icon_render_key()
|
||||
. = "[dna.species.limbs_id]"
|
||||
. = "[dna.species.mutant_bodyparts["limbs_id"]]"
|
||||
|
||||
if(dna.check_mutation(HULK))
|
||||
. += "-coloured-hulk"
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
|
||||
/* EMOTE DATUMS */
|
||||
/datum/emote/living
|
||||
mob_type_allowed_typecache = /mob/living
|
||||
mob_type_blacklist_typecache = list(/mob/living/simple_animal/slime, /mob/living/brain)
|
||||
|
||||
/datum/emote/living/blush
|
||||
key = "blush"
|
||||
key_third_person = "blushes"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/datum/emote/sound/silicon
|
||||
mob_type_allowed_typecache = list(/mob/living/silicon, /mob/living/carbon/human)
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
var/unrestricted = FALSE
|
||||
var/unrestricted = TRUE
|
||||
|
||||
/datum/emote/sound/silicon/run_emote(mob/user, params)
|
||||
if(!unrestricted && !(issilicon(user) || isipcperson(user)))
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/datum/emote/sound/gorilla
|
||||
mob_type_allowed_typecache = /mob/living/simple_animal/hostile/gorilla
|
||||
mob_type_blacklist_typecache = list()
|
||||
|
||||
/datum/emote/sound/gorilla/ooga
|
||||
key = "ooga"
|
||||
@@ -8,4 +7,3 @@
|
||||
message = "oogas."
|
||||
message_param = "oogas at %t."
|
||||
sound = 'sound/creatures/gorilla.ogg'
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/datum/emote/slime
|
||||
mob_type_allowed_typecache = /mob/living/simple_animal/slime
|
||||
mob_type_blacklist_typecache = list()
|
||||
|
||||
/datum/emote/slime/bounce
|
||||
key = "bounce"
|
||||
|
||||
Reference in New Issue
Block a user