Merge branch 'master' into hell
This commit is contained in:
@@ -29,10 +29,10 @@
|
||||
restricted_roles = list("Security Officer")
|
||||
|
||||
/datum/gear/navyblueuniformofficer
|
||||
name = "security officer navyblue uniform"
|
||||
name = "Security officer navyblue uniform"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/security/navyblue
|
||||
restricted_roles = list("Security officer")
|
||||
restricted_roles = list("Security Officer")
|
||||
|
||||
/datum/gear/navybluejacketwarden
|
||||
name = "warden navyblue jacket"
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet)
|
||||
var/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/linkedhelm
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
var/energy_color = "#35FFF0"
|
||||
|
||||
@@ -101,7 +102,14 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/update_icon()
|
||||
var/mutable_appearance/suit_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
var/mutable_appearance/suit_overlay
|
||||
|
||||
if(taurmode == SNEK_TAURIC)
|
||||
suit_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else if(taurmode == PAW_TAURIC)
|
||||
suit_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else
|
||||
suit_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
|
||||
if(energy_color)
|
||||
suit_overlay.color = energy_color
|
||||
@@ -122,7 +130,14 @@
|
||||
emissivelightsoff()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/proc/emissivelights(mob/user = usr)
|
||||
var/mutable_appearance/energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
var/mutable_appearance/energy_overlay
|
||||
if(taurmode == SNEK_TAURIC)
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else if(taurmode == PAW_TAURIC)
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
|
||||
energy_overlay.color = energy_color
|
||||
energy_overlay.plane = LIGHTING_PLANE + 1
|
||||
user.cut_overlay(energy_overlay) //honk
|
||||
|
||||
@@ -1,33 +1,54 @@
|
||||
/obj/item/integrated_circuit/manipulation/electric_stimulator
|
||||
name = "electronic stimulation module"
|
||||
desc = "Used to induce sexual stimulation with electricity."
|
||||
desc = "Used to induce sexual stimulation in a target via electricity."
|
||||
icon_state = "power_relay"
|
||||
extended_desc = "The circuit accepts a reference to a person and upon activation, attempts to stimulate them to orgasm."
|
||||
complexity = 10
|
||||
size = 3
|
||||
inputs = list("target" = IC_PINTYPE_REF)
|
||||
outputs = list()
|
||||
activators = list("fire" = IC_PINTYPE_PULSE_IN)
|
||||
extended_desc = "The circuit accepts a reference to a person, as well as a number representing the strength of the shock, and upon activation, attempts to stimulate them to orgasm. The number ranges from -35 to 35, with negative numbers reducing arousal and positive numbers increasing it by that amount."
|
||||
complexity = 15
|
||||
size = 2
|
||||
inputs = list("target" = IC_PINTYPE_REF, "strength" = IC_PINTYPE_NUMBER)
|
||||
outputs = list("arousal gain"=IC_PINTYPE_NUMBER)
|
||||
activators = list("fire" = IC_PINTYPE_PULSE_IN, "on success" = IC_PINTYPE_PULSE_OUT, "on fail" = IC_PINTYPE_PULSE_OUT, "on orgasm" = IC_PINTYPE_PULSE_OUT)
|
||||
spawn_flags = IC_SPAWN_RESEARCH
|
||||
power_draw_per_use = 500
|
||||
cooldown_per_use = 50
|
||||
ext_cooldown = 25
|
||||
|
||||
/obj/item/integrated_circuit/manipulation/electric_stimulator/do_work()
|
||||
..()
|
||||
set_pin_data(IC_OUTPUT, 1, 0)
|
||||
var/mob/living/M = get_pin_data_as_type(IC_INPUT, 1, /mob/living)
|
||||
if(!check_target(M))
|
||||
return
|
||||
if(ismob(M) && M.canbearoused)
|
||||
if(M.getArousalLoss() >= 100 && ishuman(M) && M.has_dna())
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/orgasm_message = pick("A sharp pulse of electricity pushes you to orgasm!", "You feel a jolt of electricity force you into orgasm!")
|
||||
H.visible_message("<span class='warning'>\The [assembly] electrodes shock [H]!</span>", "<span class='warning'>[orgasm_message]</span>")
|
||||
playsound(src, "sound/effects/light_flicker.ogg", 30, 1)
|
||||
H.mob_climax(forced_climax=TRUE)
|
||||
|
||||
var/arousal_gain = CLAMP(get_pin_data(IC_INPUT, 2),-35,35)
|
||||
set_pin_data(IC_OUTPUT, 1, arousal_gain)
|
||||
|
||||
if(ismob(M) && M.canbearoused && arousal_gain != 0)
|
||||
var/orgasm = FALSE
|
||||
if(arousal_gain > 0)
|
||||
if(M.getArousalLoss() >= 100 && ishuman(M) && M.has_dna())
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/orgasm_message = pick("A sharp pulse of electricity pushes you to orgasm!", "You feel a jolt of electricity force you into orgasm!")
|
||||
H.visible_message("<span class='warning'>\The [assembly] electrodes shock [H]!</span>", "<span class='warning'>[orgasm_message]</span>")
|
||||
playsound(src, "sound/effects/light_flicker.ogg", 30, 1)
|
||||
H.mob_climax(forced_climax=TRUE)
|
||||
orgasm = TRUE
|
||||
else
|
||||
M.adjustArousalLoss(arousal_gain)
|
||||
var/stimulate_message = pick("You feel a sharp warming tingle of electricity through your body!", "A burst of arousing electricity flows through your body!")
|
||||
M.visible_message("<span class='warning'>\The [assembly] electrodes shock [M]!</span>", "<span class='warning'>[stimulate_message]</span>")
|
||||
|
||||
else
|
||||
M.adjustArousalLoss(35)
|
||||
var/stimulate_message = pick("You feel a sharp warming tingle of electricity through your body!", "A burst of arousing electricity flows through your body!")
|
||||
var/stimulate_message = pick("You feel a dull prickle of electricity through your body!", "A burst of dull electricity flows through your body!")
|
||||
M.visible_message("<span class='warning'>\The [assembly] electrodes shock [M]!</span>", "<span class='warning'>[stimulate_message]</span>")
|
||||
playsound(src, "sound/effects/light_flicker.ogg", 30, 1)
|
||||
M.adjustArousalLoss(arousal_gain)
|
||||
|
||||
playsound(src, "sound/effects/light_flicker.ogg", 30, 1)
|
||||
push_data()
|
||||
activate_pin(2)
|
||||
if(orgasm) activate_pin(4)
|
||||
|
||||
else
|
||||
visible_message("<span class='warning'>\The [assembly] electrodes fail to shock [M]!</span>")
|
||||
push_data()
|
||||
activate_pin(3)
|
||||
|
||||
@@ -70,16 +70,16 @@
|
||||
|
||||
else //recipient is an mentor but sender is not
|
||||
to_chat(C, "<font color='purple'>Reply PM from-<b>[key_name_mentor(src, C, 1, 0, show_char)]</b>: [msg]</font>")
|
||||
to_chat(src, "<font color='green'>Mentor PM to-<b>[key_name_mentor(C, C, 1, 0, 0)]</b>: [msg]</font>")
|
||||
to_chat(src, "<font color='brown'>Mentor PM to-<b>[key_name_mentor(C, C, 1, 0, 0)]</b>: [msg]</font>")
|
||||
|
||||
else
|
||||
if(is_mentor()) //sender is an mentor but recipient is not.
|
||||
to_chat(C, "<font color='purple'>Mentor PM from-<b>[key_name_mentor(src, C, 1, 0, 0)]</b>: [msg]</font>")
|
||||
to_chat(src, "<font color='green'>Mentor PM to-<b>[key_name_mentor(C, C, 1, 0, show_char)]</b>: [msg]</font>")
|
||||
to_chat(src, "<font color='brown'>Mentor PM to-<b>[key_name_mentor(C, C, 1, 0, show_char)]</b>: [msg]</font>")
|
||||
|
||||
//we don't use message_Mentors here because the sender/receiver might get it too
|
||||
var/show_char_sender = !is_mentor() && CONFIG_GET(flag/mentors_mobname_only)
|
||||
var/show_char_recip = !C.is_mentor() && CONFIG_GET(flag/mentors_mobname_only)
|
||||
for(var/client/X in GLOB.mentors | GLOB.admins)
|
||||
if(X.key!=key && X.key!=C.key) //check client/X is an Mentor and isn't the sender or recipient
|
||||
to_chat(X, "<B><font color='green'>Mentor PM: [key_name_mentor(src, X, 0, 0, show_char_sender)]->[key_name_mentor(C, X, 0, 0, show_char_recip)]:</B> <font color ='blue'> [msg]</font>") //inform X
|
||||
to_chat(X, "<B><font color='brown'>Mentor PM: [key_name_mentor(src, X, 0, 0, show_char_sender)]->[key_name_mentor(C, X, 0, 0, show_char_recip)]:</B> <font color ='blue'> [msg]</font>") //inform X
|
||||
|
||||
@@ -159,71 +159,26 @@
|
||||
*/
|
||||
|
||||
/******************************************
|
||||
************ Human Ears/Tails *************
|
||||
*************** Human Ears ****************
|
||||
*******************************************/
|
||||
|
||||
/datum/sprite_accessory/tails/human/ailurus
|
||||
name = "Red Panda"
|
||||
icon_state = "wah"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/axolotl
|
||||
name = "Axolotl"
|
||||
icon_state = "axolotl"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails/human/axolotl
|
||||
name = "Axolotl"
|
||||
icon_state = "axolotl"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/axolotl
|
||||
name = "Axolotl"
|
||||
icon_state = "axolotl"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/bear
|
||||
name = "Bear"
|
||||
icon_state = "bear"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/bear
|
||||
name = "Bear"
|
||||
icon_state = "bear"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/bear
|
||||
name = "Bear"
|
||||
icon_state = "bear"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails/human/catbig
|
||||
name = "Cat, Big"
|
||||
icon_state = "catbig"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/catbig
|
||||
name = "Cat, Big"
|
||||
icon_state = "catbig"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/cow
|
||||
name = "Cow"
|
||||
icon_state = "cow"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/cow
|
||||
name = "Cow"
|
||||
icon_state = "cow"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/cow
|
||||
name = "Cow"
|
||||
icon_state = "cow"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/curled
|
||||
name = "Curled Horn"
|
||||
icon_state = "horn1"
|
||||
@@ -236,16 +191,6 @@
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/eevee
|
||||
name = "Eevee"
|
||||
icon_state = "eevee"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/eevee
|
||||
name = "Eevee"
|
||||
icon_state = "eevee"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/elephant
|
||||
name = "Elephant"
|
||||
icon_state = "elephant"
|
||||
@@ -258,47 +203,210 @@
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/fennec
|
||||
name = "Fennec"
|
||||
icon_state = "fennec"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/fennec
|
||||
name = "Fennec"
|
||||
icon_state = "fennec"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/fish
|
||||
name = "Fish"
|
||||
icon_state = "fish"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/fish
|
||||
name = "Fish"
|
||||
icon_state = "fish"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/fish
|
||||
name = "Fish"
|
||||
icon_state = "fish"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/fox
|
||||
name = "Fox"
|
||||
icon_state = "fox"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/jellyfish
|
||||
name = "Jellyfish"
|
||||
icon_state = "jellyfish"
|
||||
color_src = HAIR
|
||||
|
||||
/datum/sprite_accessory/ears/lab
|
||||
name = "Dog, Floppy"
|
||||
icon_state = "lab"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/murid
|
||||
name = "Murid"
|
||||
icon_state = "murid"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/otie
|
||||
name = "Otusian"
|
||||
icon_state = "otie"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/pede
|
||||
name = "Scolipede"
|
||||
icon_state = "pede"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/rabbit
|
||||
name = "Rabbit"
|
||||
icon_state = "rabbit"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/sergal
|
||||
name = "Sergal"
|
||||
icon_state = "sergal"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/skunk
|
||||
name = "skunk"
|
||||
icon_state = "skunk"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/squirrel
|
||||
name = "Squirrel"
|
||||
icon_state = "squirrel"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/wolf
|
||||
name = "Wolf"
|
||||
icon_state = "wolf"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
|
||||
|
||||
/******************************************
|
||||
************** Human Tails ****************
|
||||
*******************************************/
|
||||
|
||||
/datum/sprite_accessory/tails/human/ailurus
|
||||
name = "Red Panda"
|
||||
icon_state = "wah"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/ailurus
|
||||
name = "Red Panda"
|
||||
icon_state = "wah"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/axolotl
|
||||
name = "Axolotl"
|
||||
icon_state = "axolotl"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/axolotl
|
||||
name = "Axolotl"
|
||||
icon_state = "axolotl"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/bee
|
||||
name = "Bee"
|
||||
icon_state = "bee"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/bee
|
||||
name = "Bee"
|
||||
icon_state = "bee"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/cat
|
||||
name = "Cat"
|
||||
icon_state = "cat"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = HAIR
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/cat
|
||||
name = "Cat"
|
||||
icon_state = "cat"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = HAIR
|
||||
|
||||
/datum/sprite_accessory/tails/human/catbig
|
||||
name = "Cat, Big"
|
||||
icon_state = "catbig"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/catbig
|
||||
name = "Cat, Big"
|
||||
icon_state = "catbig"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/cow
|
||||
name = "Cow"
|
||||
icon_state = "cow"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/cow
|
||||
name = "Cow"
|
||||
icon_state = "cow"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/corvid
|
||||
name = "Corvid"
|
||||
icon_state = "crow"
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/corvid
|
||||
name = "Corvid"
|
||||
icon_state = "crow"
|
||||
|
||||
/datum/sprite_accessory/tails/human/eevee
|
||||
name = "Eevee"
|
||||
icon_state = "eevee"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/eevee
|
||||
name = "Eevee"
|
||||
icon_state = "eevee"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/fennec
|
||||
name = "Fennec"
|
||||
icon_state = "fennec"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/fennec
|
||||
name = "Fennec"
|
||||
icon_state = "fennec"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/fish
|
||||
name = "Fish"
|
||||
icon_state = "fish"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/fish
|
||||
name = "Fish"
|
||||
icon_state = "fish"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/fox
|
||||
name = "Fox"
|
||||
icon_state = "fox"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/fox
|
||||
name = "Fox"
|
||||
icon_state = "fox"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/horse
|
||||
name = "Horse"
|
||||
@@ -316,27 +424,26 @@
|
||||
name = "Husky"
|
||||
icon_state = "husky"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/husky
|
||||
name = "Husky"
|
||||
icon_state = "husky"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/insect
|
||||
name = "Insect"
|
||||
icon_state = "insect"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/insect
|
||||
name = "insect"
|
||||
icon_state = "insect"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/jellyfish
|
||||
name = "Jellyfish"
|
||||
icon_state = "jellyfish"
|
||||
color_src = HAIR
|
||||
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/kitsune
|
||||
name = "Kitsune"
|
||||
icon_state = "kitsune"
|
||||
@@ -348,19 +455,7 @@
|
||||
icon_state = "kitsune"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/lab
|
||||
name = "Dog, Floppy"
|
||||
icon_state = "lab"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/murid
|
||||
name = "Murid"
|
||||
icon_state = "murid"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/murid
|
||||
name = "Murid"
|
||||
icon_state = "murid"
|
||||
@@ -372,13 +467,7 @@
|
||||
icon_state = "murid"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/otie
|
||||
name = "Otusian"
|
||||
icon_state = "otie"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/otie
|
||||
name = "Otusian"
|
||||
icon_state = "otie"
|
||||
@@ -402,13 +491,7 @@
|
||||
icon_state = "orca"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/pede
|
||||
name = "Scolipede"
|
||||
icon_state = "pede"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/pede
|
||||
name = "Scolipede"
|
||||
icon_state = "pede"
|
||||
@@ -420,13 +503,7 @@
|
||||
icon_state = "pede"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/rabbit
|
||||
name = "Rabbit"
|
||||
icon_state = "rabbit"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/rabbit
|
||||
name = "Rabbit"
|
||||
icon_state = "rabbit"
|
||||
@@ -438,13 +515,7 @@
|
||||
icon_state = "rabbit"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/sergal
|
||||
name = "Sergal"
|
||||
icon_state = "sergal"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/sergal
|
||||
name = "Sergal"
|
||||
icon_state = "sergal"
|
||||
@@ -456,13 +527,7 @@
|
||||
icon_state = "sergal"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/skunk
|
||||
name = "skunk"
|
||||
icon_state = "skunk"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/skunk
|
||||
name = "skunk"
|
||||
icon_state = "skunk"
|
||||
@@ -481,18 +546,32 @@
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails/human/shark/datashark
|
||||
/datum/sprite_accessory/tails_animated/human/shark
|
||||
name = "Shark"
|
||||
icon_state = "shark"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails/human/datashark
|
||||
name = "datashark"
|
||||
icon_state = "datashark"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/squirrel
|
||||
name = "Squirrel"
|
||||
icon_state = "squirrel"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
/datum/sprite_accessory/tails_animated/human/datashark
|
||||
name = "datashark"
|
||||
icon_state = "datashark"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails/human/straighttail
|
||||
name = "Straight Tail"
|
||||
icon_state = "straighttail"
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/straighttail
|
||||
name = "Straight Tail"
|
||||
icon_state = "straighttail"
|
||||
|
||||
/datum/sprite_accessory/tails/human/squirrel
|
||||
name = "Squirrel"
|
||||
icon_state = "squirrel"
|
||||
@@ -505,7 +584,7 @@
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails/human/yentacle
|
||||
/datum/sprite_accessory/tails/human/tentacle
|
||||
name = "Tentacle"
|
||||
icon_state = "tentacle"
|
||||
color_src = MATRIXED
|
||||
@@ -516,13 +595,19 @@
|
||||
icon_state = "tentacle"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/wolf
|
||||
name = "Wolf"
|
||||
icon_state = "wolf"
|
||||
|
||||
/datum/sprite_accessory/tails/human/tiger
|
||||
name = "Tiger"
|
||||
icon_state = "tiger"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/tiger
|
||||
name = "Tiger"
|
||||
icon_state = "tiger"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails/human/wolf
|
||||
name = "Wolf"
|
||||
icon_state = "wolf"
|
||||
@@ -534,9 +619,9 @@
|
||||
icon_state = "wolf"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
|
||||
/******************************************
|
||||
*************** Body Parts ****************
|
||||
*********** Mammal Body Parts *************
|
||||
*******************************************/
|
||||
|
||||
/datum/sprite_accessory/mam_ears
|
||||
@@ -626,6 +711,10 @@
|
||||
name = "WahCoon"
|
||||
icon_state = "wah"
|
||||
|
||||
/datum/sprite_accessory/mam_snouts/redpandaalt
|
||||
name = "WahCoon ALT"
|
||||
icon_state = "wahalt"
|
||||
|
||||
/datum/sprite_accessory/mam_snouts/rhino
|
||||
name = "Horn"
|
||||
icon_state = "rhino"
|
||||
@@ -933,13 +1022,13 @@
|
||||
name = "Axolotl"
|
||||
icon_state = "axolotl"
|
||||
|
||||
/datum/sprite_accessory/mam_tails/bear
|
||||
name = "Bear"
|
||||
icon_state = "bear"
|
||||
/datum/sprite_accessory/mam_tails/bee
|
||||
name = "Bee"
|
||||
icon_state = "bee"
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/bear
|
||||
name = "Bear"
|
||||
icon_state = "bear"
|
||||
/datum/sprite_accessory/mam_tails_animated/bee
|
||||
name = "Bee"
|
||||
icon_state = "bee"
|
||||
|
||||
/datum/sprite_accessory/mam_tails/cat
|
||||
name = "Cat"
|
||||
@@ -1191,7 +1280,7 @@ datum/sprite_accessory/mam_tails/insect
|
||||
/datum/sprite_accessory/mam_body_markings/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
color_src = MUTCOLORS
|
||||
ckeys_allowed = list("yousshouldnteverbeseeingthisyoumeme")
|
||||
|
||||
/datum/sprite_accessory/mam_body_markings/plain
|
||||
name = "Plain"
|
||||
@@ -1732,7 +1821,7 @@ datum/sprite_accessory/mam_tails/insect
|
||||
icon_state = "lunasune"
|
||||
|
||||
/*************** VIRGO PORTED HAIRS ****************************/
|
||||
#define VHAIR(_name, new_state) /datum/sprite_accessory/hair/##new_state/icon_state=#new_state;/datum/sprite_accessory/hair/##new_state/name = "Virgo - " + #_name
|
||||
#define VHAIR(_name, new_state) /datum/sprite_accessory/hair/##new_state/icon_state=#new_state;/datum/sprite_accessory/hair/##new_state/name = #_name + " (Virgo)"
|
||||
//VIRGO PORTED HAIRS
|
||||
VHAIR("Short Hair Rosa", hair_rosa_s)
|
||||
VHAIR("Short Hair 80s", hair_80s_s)
|
||||
@@ -1890,7 +1979,7 @@ VHAIR("Tressshoulder", hair_tressshoulder_s)
|
||||
//END
|
||||
#undef VHAIR
|
||||
|
||||
#define VFACE(_name, new_state) /datum/sprite_accessory/facial_hair/##new_state/icon_state=#new_state;;/datum/sprite_accessory/facial_hair/##new_state/name="Virgo" + #_name
|
||||
#define VFACE(_name, new_state) /datum/sprite_accessory/facial_hair/##new_state/icon_state=#new_state;;/datum/sprite_accessory/facial_hair/##new_state/name= #_name + " (Virgo)"
|
||||
VFACE("Watson", facial_watson_s)
|
||||
VFACE("Chaplin", facial_chaplin_s)
|
||||
VFACE("Fullbeard", facial_fullbeard_s)
|
||||
@@ -1929,4 +2018,4 @@ VFACE("Cropped Fullbeard", facial_croppedfullbeard_s)
|
||||
VFACE("Chinless Beard", facial_chinlessbeard_s)
|
||||
VFACE("Moonshiner", facial_moonshiner_s)
|
||||
VFACE("Tribearder", facial_tribearder_s)
|
||||
#undef VFACE
|
||||
#undef VFACE
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
if(get_turf(target) == target_oldturf)
|
||||
target_table = locate(/obj/structure/table) in target_shove_turf.contents
|
||||
shove_blocked = TRUE
|
||||
|
||||
|
||||
if(shove_blocked && !target.is_shove_knockdown_blocked())
|
||||
var/directional_blocked = FALSE
|
||||
if(shove_dir in GLOB.cardinals) //Directional checks to make sure that we're not shoving through a windoor or something like that
|
||||
@@ -151,28 +151,3 @@
|
||||
|
||||
/obj/item/bodypart
|
||||
var/should_draw_citadel = FALSE
|
||||
|
||||
/datum/species/proc/citadel_mutant_bodyparts(bodypart, mob/living/carbon/human/H)
|
||||
switch(bodypart)
|
||||
if("ipc_screen")
|
||||
return GLOB.ipc_screens_list[H.dna.features["ipc_screen"]]
|
||||
if("ipc_antenna")
|
||||
return GLOB.ipc_antennas_list[H.dna.features["ipc_antenna"]]
|
||||
if("mam_tail")
|
||||
return GLOB.mam_tails_list[H.dna.features["mam_tail"]]
|
||||
if("mam_waggingtail")
|
||||
return GLOB.mam_tails_animated_list[H.dna.features["mam_tail"]]
|
||||
if("mam_body_markings")
|
||||
return GLOB.mam_body_markings_list[H.dna.features["mam_body_markings"]]
|
||||
if("mam_ears")
|
||||
return GLOB.mam_ears_list[H.dna.features["mam_ears"]]
|
||||
if("mam_snouts")
|
||||
return GLOB.mam_snouts_list[H.dna.features["mam_snouts"]]
|
||||
if("taur")
|
||||
return GLOB.taur_list[H.dna.features["taur"]]
|
||||
if("xenodorsal")
|
||||
return GLOB.xeno_dorsal_list[H.dna.features["xenodorsal"]]
|
||||
if("xenohead")
|
||||
return GLOB.xeno_head_list[H.dna.features["xenohead"]]
|
||||
if("xenotail")
|
||||
return GLOB.xeno_tail_list[H.dna.features["xenotail"]]
|
||||
|
||||
@@ -195,10 +195,10 @@
|
||||
say_mod = "hisses"
|
||||
default_color = "00FF00"
|
||||
should_draw_citadel = TRUE
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,DIGITIGRADE)
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,LIPS)
|
||||
inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
mutant_bodyparts = list("xenotail", "xenohead", "xenodorsal", "mam_body_markings", "taur")
|
||||
default_features = list("xenotail"="Xenomorph Tail","xenohead"="Standard","xenodorsal"="Standard", "mam_body_markings" = "Xeno","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None")
|
||||
mutant_bodyparts = list("xenotail", "xenohead", "xenodorsal", "mam_body_markings", "taur", "legs")
|
||||
default_features = list("xenotail"="Xenomorph Tail","xenohead"="Standard","xenodorsal"="Standard", "mam_body_markings" = "Xeno","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None", "legs" = "Digitigrade Legs")
|
||||
attack_verb = "slash"
|
||||
attack_sound = 'sound/weapons/slash.ogg'
|
||||
miss_sound = 'sound/weapons/slashmiss.ogg'
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
default_color = "00FFFF"
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD)
|
||||
inherent_traits = list(TRAIT_TOXINLOVER)
|
||||
mutant_bodyparts = list("mam_tail", "mam_ears", "taur")
|
||||
default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None")
|
||||
mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur")
|
||||
default_features = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "Plain", "mam_snouts" = "None", "taur" = "None")
|
||||
say_mod = "says"
|
||||
hair_color = "mutcolor"
|
||||
hair_alpha = 180
|
||||
@@ -20,6 +20,34 @@
|
||||
heatmod = 1
|
||||
burnmod = 1
|
||||
|
||||
/datum/species/jelly/roundstartslime/spec_death(gibbed, mob/living/carbon/human/H)
|
||||
if(H)
|
||||
stop_wagging_tail(H)
|
||||
|
||||
/datum/species/jelly/roundstartslime/spec_stun(mob/living/carbon/human/H,amount)
|
||||
if(H)
|
||||
stop_wagging_tail(H)
|
||||
. = ..()
|
||||
|
||||
/datum/species/jelly/roundstartslime/can_wag_tail(mob/living/carbon/human/H)
|
||||
return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts)
|
||||
|
||||
/datum/species/jelly/roundstartslime/is_wagging_tail(mob/living/carbon/human/H)
|
||||
return ("mam_waggingtail" in mutant_bodyparts)
|
||||
|
||||
/datum/species/jelly/roundstartslime/start_wagging_tail(mob/living/carbon/human/H)
|
||||
if("mam_tail" in mutant_bodyparts)
|
||||
mutant_bodyparts -= "mam_tail"
|
||||
mutant_bodyparts |= "mam_waggingtail"
|
||||
H.update_body()
|
||||
|
||||
/datum/species/jelly/roundstartslime/stop_wagging_tail(mob/living/carbon/human/H)
|
||||
if("mam_waggingtail" in mutant_bodyparts)
|
||||
mutant_bodyparts -= "mam_waggingtail"
|
||||
mutant_bodyparts |= "mam_tail"
|
||||
H.update_body()
|
||||
|
||||
|
||||
/datum/action/innate/slime_change
|
||||
name = "Alter Form"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
@@ -41,7 +69,7 @@
|
||||
|
||||
/datum/action/innate/slime_change/proc/change_form()
|
||||
var/mob/living/carbon/human/H = owner
|
||||
var/select_alteration = input(owner, "Select what part of your form to alter", "Form Alteration", "cancel") in list("Hair Style", "Genitals", "Tail", "Ears", "Taur body", "Cancel")
|
||||
var/select_alteration = input(owner, "Select what part of your form to alter", "Form Alteration", "cancel") in list("Hair Style", "Genitals", "Tail", "Snout", "Markings", "Ears", "Taur body", "Cancel")
|
||||
if(select_alteration == "Hair Style")
|
||||
if(H.gender == MALE)
|
||||
var/new_style = input(owner, "Select a facial hair style", "Hair Alterations") as null|anything in GLOB.facial_hair_styles_list
|
||||
@@ -102,6 +130,39 @@
|
||||
H.dna.features["mam_ears"] = new_ears
|
||||
H.update_body()
|
||||
|
||||
else if (select_alteration == "Snout")
|
||||
var/list/snowflake_snouts_list = list("Normal" = null)
|
||||
for(var/path in GLOB.mam_snouts_list)
|
||||
var/datum/sprite_accessory/mam_snouts/instance = GLOB.mam_snouts_list[path]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
var/datum/sprite_accessory/S = instance
|
||||
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(H.client.ckey)))
|
||||
snowflake_snouts_list[S.name] = path
|
||||
var/new_snout
|
||||
new_snout = input(owner, "Choose your character's face:", "Face Alteration") as null|anything in snowflake_snouts_list
|
||||
if(new_snout)
|
||||
H.dna.features["mam_snouts"] = new_snout
|
||||
H.update_body()
|
||||
|
||||
else if (select_alteration == "Markings")
|
||||
var/list/snowflake_markings_list = list()
|
||||
for(var/path in GLOB.mam_body_markings_list)
|
||||
var/datum/sprite_accessory/mam_body_markings/instance = GLOB.mam_body_markings_list[path]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
var/datum/sprite_accessory/S = instance
|
||||
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(H.client.ckey)))
|
||||
snowflake_markings_list[S.name] = path
|
||||
var/new_mam_body_markings
|
||||
new_mam_body_markings = input(H, "Choose your character's body markings:", "Marking Alteration") as null|anything in snowflake_markings_list
|
||||
if(new_mam_body_markings)
|
||||
H.dna.features["mam_body_markings"] = new_mam_body_markings
|
||||
if(new_mam_body_markings == "None")
|
||||
H.dna.features["mam_body_markings"] = "Plain"
|
||||
for(var/X in H.bodyparts) //propagates the markings changes
|
||||
var/obj/item/bodypart/BP = X
|
||||
BP.update_limb(FALSE, H)
|
||||
H.update_body()
|
||||
|
||||
else if (select_alteration == "Tail")
|
||||
var/list/snowflake_tails_list = list("Normal" = null)
|
||||
for(var/path in GLOB.mam_tails_list)
|
||||
@@ -113,7 +174,7 @@
|
||||
var/new_tail
|
||||
new_tail = input(owner, "Choose your character's Tail(s):", "Tail Alteration") as null|anything in snowflake_tails_list
|
||||
if(new_tail)
|
||||
H.dna.features["mam_tails"] = new_tail
|
||||
H.dna.features["mam_tail"] = new_tail
|
||||
if(new_tail != "None")
|
||||
H.dna.features["taur"] = "None"
|
||||
H.update_body()
|
||||
@@ -132,7 +193,6 @@
|
||||
H.dna.features["taur"] = new_taur
|
||||
if(new_taur != "None")
|
||||
H.dna.features["mam_tail"] = "None"
|
||||
H.dna.features["xenotail"] = "None"
|
||||
H.update_body()
|
||||
else
|
||||
return
|
||||
|
||||
@@ -1,85 +1,141 @@
|
||||
/mob/living/simple_animal/pet/cat
|
||||
devourable = TRUE
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal/crab
|
||||
devourable = TRUE
|
||||
|
||||
/mob/living/simple_animal/pet/dog
|
||||
devourable = TRUE
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/goat
|
||||
devourable = TRUE
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal/cow
|
||||
devourable = TRUE
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal/chick
|
||||
devourable = TRUE
|
||||
|
||||
/mob/living/simple_animal/chicken
|
||||
devourable = TRUE
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal/pet/fox
|
||||
devourable = TRUE
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/lizard
|
||||
devourable = TRUE
|
||||
|
||||
/mob/living/simple_animal/mouse
|
||||
devourable = TRUE
|
||||
|
||||
/mob/living/simple_animal/pet/penguin
|
||||
no_vore = TRUE
|
||||
|
||||
/mob/living/simple_animal/pet
|
||||
devourable = TRUE
|
||||
|
||||
/mob/living/simple_animal/sloth
|
||||
devourable = TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/alien
|
||||
devourable = TRUE
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/bear
|
||||
devourable = TRUE
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/giant_spider
|
||||
devourable = TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/poison/snake
|
||||
devourable = TRUE
|
||||
no_vore = FALSE //oh yes my pretty.
|
||||
|
||||
/mob/living/simple_animal/hostile/gorilla
|
||||
devourable = TRUE
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/dragon
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/goliath
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal/parrot
|
||||
devourable = TRUE
|
||||
no_vore = FALSE
|
||||
|
||||
/mob/living/simple_animal
|
||||
no_vore = TRUE
|
||||
|
||||
//CARBON MOBS
|
||||
/mob/living/carbon/alien
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
|
||||
/mob/living/carbon/monkey
|
||||
devourable = TRUE
|
||||
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
|
||||
|
||||
/*
|
||||
REFER TO code/modules/mob/living/simple_animal/simple_animal_vr.dm for Var information!
|
||||
*/
|
||||
|
||||
|
||||
//NUETRAL MOBS
|
||||
/mob/living/simple_animal/crab
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
|
||||
/mob/living/simple_animal/cow
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/chick
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
|
||||
/mob/living/simple_animal/chicken
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
|
||||
/mob/living/simple_animal/mouse
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
|
||||
//STATION PETS
|
||||
/mob/living/simple_animal/pet
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
|
||||
/mob/living/simple_animal/pet/fox
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/pet/cat
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/pet/dog
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/sloth
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
|
||||
/mob/living/simple_animal/parrot
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
|
||||
//HOSTILE MOBS
|
||||
/mob/living/simple_animal/hostile/retaliate/goat
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_stomach_flavor = "You find yourself squeezed into the hollow of the goat, the smell of oats and hay thick in the tight space, all of which grinds in on you. Harmless for now..."
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/hostile/lizard
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/alien
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/hostile/bear
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/giant_spider
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/poison/snake
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/hostile/gorilla
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/goliath
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/hostile/carp
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
@@ -361,7 +361,42 @@
|
||||
build_path = /obj/item/ammo_box/magazine/mmag_e/small
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
///magrifle///
|
||||
/obj/item/projectile/bullet/reusable/foam_dart/mag
|
||||
name = "magfoam dart"
|
||||
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
|
||||
icon_state = "magjectile-toy"
|
||||
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
|
||||
light_range = 2
|
||||
light_color = LIGHT_COLOR_YELLOW
|
||||
|
||||
/obj/item/ammo_casing/caseless/foam_dart/mag
|
||||
name = "magfoam dart"
|
||||
desc = "A foam dart with fun light-up projectiles powered by magnets!"
|
||||
projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/mag
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/shot/toy/mag
|
||||
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
|
||||
max_ammo = 14
|
||||
|
||||
/obj/item/gun/ballistic/shotgun/toy/mag
|
||||
name = "foam force magpistol"
|
||||
desc = "A fancy toy sold alongside light-up foam force darts. Ages 8 and up."
|
||||
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
|
||||
icon_state = "toymag"
|
||||
item_state = "gun"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/mag
|
||||
fire_sound = 'sound/weapons/magpistol.ogg'
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/ammo_box/foambox/mag
|
||||
name = "ammo box (Magnetic Foam Darts)"
|
||||
icon = 'icons/obj/guns/toy.dmi'
|
||||
icon_state = "foambox"
|
||||
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
|
||||
max_ammo = 42
|
||||
|
||||
///////////////// Mag rifle/////////////////
|
||||
|
||||
/obj/item/gun/ballistic/automatic/magrifle_e
|
||||
name = "\improper Magnetic Rifle"
|
||||
|
||||
@@ -36,6 +36,10 @@
|
||||
/obj/effect/decal/cleanable/semen/New()
|
||||
..()
|
||||
dir = pick(1,2,4,8)
|
||||
add_blood_DNA(list("Non-human DNA" = "A+"))
|
||||
|
||||
/obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S)
|
||||
S.add_blood_DNA(return_blood_DNA())
|
||||
|
||||
/datum/reagent/consumable/femcum
|
||||
name = "Female Ejaculate"
|
||||
|
||||
@@ -232,10 +232,11 @@
|
||||
|
||||
M.forceMove(drop_location()) // Move the belly contents into the same location as belly's owner.
|
||||
items_preserved -= M
|
||||
for(var/mob/H in get_hearers_in_view(2, get_turf(owner)))
|
||||
if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES))
|
||||
var/sound/releasement = GLOB.release_sounds[release_sound]
|
||||
playsound(get_turf(owner),releasement,50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
if(!silent)
|
||||
for(var/mob/H in get_hearers_in_view(2, get_turf(owner)))
|
||||
if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES))
|
||||
var/sound/releasement = GLOB.release_sounds[release_sound]
|
||||
playsound(get_turf(owner),releasement,50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
|
||||
if(istype(M,/mob/living))
|
||||
var/mob/living/ML = M
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
var/vore_taste = null // What the character tastes like
|
||||
var/no_vore = FALSE // If the character/mob can vore.
|
||||
var/openpanel = 0 // Is the vore panel open?
|
||||
var/noisy = FALSE // tummies are rumbly?
|
||||
var/absorbed = FALSE //are we absorbed?
|
||||
var/next_preyloop
|
||||
var/vore_init = FALSE //Has this mob's vore been initialized yet?
|
||||
@@ -140,51 +139,6 @@
|
||||
var/belly = input("Choose Belly") in pred.vore_organs
|
||||
return perform_the_nom(user, prey, pred, belly)
|
||||
|
||||
//Dragon noms need to be faster
|
||||
/mob/living/proc/dragon_feeding(var/mob/living/user, var/mob/living/prey)
|
||||
var/belly = user.vore_selected
|
||||
return perform_dragon(user, prey, user, belly)
|
||||
|
||||
/mob/living/proc/perform_dragon(var/mob/living/user, var/mob/living/prey, var/mob/living/pred, var/obj/belly/belly, swallow_time = 20)
|
||||
//Sanity
|
||||
if(!user || !prey || !pred || !istype(belly) || !(belly in pred.vore_organs))
|
||||
testing("[user] attempted to feed [prey] to [pred], via [lowertext(belly.name)] but it went wrong.")
|
||||
return FALSE
|
||||
|
||||
if(istype(pred, /mob/living/simple_animal/hostile/megafauna/dragon))
|
||||
if(isliving(prey) && !prey.Adjacent(pred))
|
||||
return FALSE
|
||||
|
||||
// The belly selected at the time of noms
|
||||
var/attempt_msg = "ERROR: Vore message couldn't be created. Notify a dev. (at)"
|
||||
var/success_msg = "ERROR: Vore message couldn't be created. Notify a dev. (sc)"
|
||||
|
||||
// Prepare messages
|
||||
if(user == pred) //Feeding someone to yourself
|
||||
attempt_msg = text("<span class='warning'>[] starts to [] [] into their []!</span>",pred,lowertext(belly.vore_verb),prey,lowertext(belly.name))
|
||||
success_msg = text("<span class='warning'>[] manages to [] [] into their []!</span>",pred,lowertext(belly.vore_verb),prey,lowertext(belly.name))
|
||||
|
||||
if(!prey.Adjacent(user)) // let's doublecheck for sanity's sake.
|
||||
return FALSE
|
||||
|
||||
// Announce that we start the attempt!
|
||||
user.visible_message(attempt_msg)
|
||||
|
||||
if(!do_mob(src, user, swallow_time))
|
||||
return FALSE // Prey escaped (or user disabled) before timer expired.
|
||||
|
||||
// If we got this far, nom successful! Announce it!
|
||||
user.visible_message(success_msg)
|
||||
playsound(get_turf(user), "[belly.vore_sound]",75,0,-6,0)
|
||||
|
||||
// Actually shove prey into the belly.
|
||||
belly.nom_mob(prey, user)
|
||||
if (pred == user)
|
||||
message_admins("[key_name(pred)] ate [key_name(prey)].")
|
||||
pred.log_message("[key_name(pred)] ate [key_name(prey)].", LOG_ATTACK)
|
||||
prey.log_message("[key_name(prey)] was eaten by [key_name(pred)].", LOG_ATTACK)
|
||||
return TRUE
|
||||
|
||||
//
|
||||
// Master vore proc that actually does vore procedures
|
||||
//
|
||||
@@ -335,8 +289,7 @@
|
||||
if(!confirm == "Okay" || loc != B)
|
||||
return
|
||||
//Actual escaping
|
||||
forceMove(get_turf(src)) //Just move me up to the turf, let's not cascade through bellies, there's been a problem, let's just leave.
|
||||
src.cure_blind("belly_[REF(src)]")
|
||||
B.release_specific_contents(src,TRUE) //we might as well take advantage of that specific belly's handling. Else we stay blinded forever.
|
||||
src.stop_sound_channel(CHANNEL_PREYLOOP)
|
||||
SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "fedprey", /datum/mood_event/fedprey)
|
||||
for(var/mob/living/simple_animal/SA in range(10))
|
||||
@@ -391,7 +344,6 @@
|
||||
P.digestable = src.digestable
|
||||
P.devourable = src.devourable
|
||||
P.feeding = src.feeding
|
||||
P.noisy = src.noisy
|
||||
P.vore_taste = src.vore_taste
|
||||
|
||||
var/list/serialized = list()
|
||||
@@ -417,7 +369,6 @@
|
||||
digestable = P.digestable
|
||||
devourable = P.devourable
|
||||
feeding = P.feeding
|
||||
noisy = P.noisy
|
||||
vore_taste = P.vore_taste
|
||||
|
||||
release_vore_contents(silent = TRUE)
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
///////////////////// Simple Animal /////////////////////
|
||||
/mob/living/simple_animal
|
||||
var/isPredator = FALSE //Are they capable of performing and pre-defined vore actions for their species?
|
||||
var/swallowTime = 5 SECONDS //How long it takes to eat its prey in 1/10 of a second. The default is 5 seconds.
|
||||
var/list/prey_excludes = list() //For excluding people from being eaten.
|
||||
|
||||
//
|
||||
// Simple proc for animals to have their digestion toggled on/off externally
|
||||
//
|
||||
/mob/living/simple_animal/verb/toggle_digestion()
|
||||
set name = "Toggle Animal's Digestion"
|
||||
set desc = "Enables digestion on this mob for 20 minutes."
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
var/datum/belly/B = vore_organs[vore_selected]
|
||||
if(faction != usr.faction)
|
||||
to_chat(usr,"<span class='warning'>This predator isn't friendly, and doesn't give a shit about your opinions of it digesting you.</span>")
|
||||
return
|
||||
if(B.digest_mode == "Hold")
|
||||
var/confirm = alert(usr, "Enabling digestion on [name] will cause it to digest all stomach contents. Using this to break OOC prefs is against the rules. Digestion will disable itself after 20 minutes.", "Enabling [name]'s Digestion", "Enable", "Cancel")
|
||||
if(confirm == "Enable")
|
||||
B.digest_mode = "Digest"
|
||||
sleep(20 MINUTES) //12000=20 minutes
|
||||
B.digest_mode = "Hold"
|
||||
else
|
||||
var/confirm = alert(usr, "This mob is currently set to digest all stomach contents. Do you want to disable this?", "Disabling [name]'s Digestion", "Disable", "Cancel")
|
||||
if(confirm == "Disable")
|
||||
B.digest_mode = "Hold"
|
||||
|
||||
//
|
||||
// Simple nom proc for if you get ckey'd into a simple_animal mob! Avoids grabs.
|
||||
//
|
||||
/mob/living/simple_animal/proc/animal_nom(var/mob/living/T in oview(1))
|
||||
set name = "Animal Nom"
|
||||
set category = "Vore"
|
||||
set desc = "Since you can't grab, you get a verb!"
|
||||
|
||||
if (stat != CONSCIOUS)
|
||||
return
|
||||
if (T.devourable == FALSE)
|
||||
to_chat(usr, "<span class='warning'>You can't eat this!</span>")
|
||||
return
|
||||
return feed_grabbed_to_self(src,T)
|
||||
@@ -28,7 +28,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
|
||||
// The datum type bolted onto normal preferences datums for storing Vore stuff
|
||||
//
|
||||
|
||||
#define VORE_VERSION 3
|
||||
#define VORE_VERSION 4
|
||||
|
||||
GLOBAL_LIST_EMPTY(vore_preferences_datums)
|
||||
|
||||
@@ -41,7 +41,6 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
|
||||
var/devourable = FALSE
|
||||
var/feeding = FALSE
|
||||
// var/allowmobvore = TRUE
|
||||
var/noisy = FALSE
|
||||
var/list/belly_prefs = list()
|
||||
var/vore_taste = "nothing in particular"
|
||||
// var/can_be_drop_prey = FALSE
|
||||
@@ -108,7 +107,6 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
|
||||
digestable = json_from_file["digestable"]
|
||||
devourable = json_from_file["devourable"]
|
||||
feeding = json_from_file["feeding"]
|
||||
noisy = json_from_file["noisy"]
|
||||
vore_taste = json_from_file["vore_taste"]
|
||||
belly_prefs = json_from_file["belly_prefs"]
|
||||
|
||||
@@ -119,8 +117,6 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
|
||||
devourable = FALSE
|
||||
if(isnull(feeding))
|
||||
feeding = FALSE
|
||||
if(isnull(noisy))
|
||||
noisy = FALSE
|
||||
if(isnull(belly_prefs))
|
||||
belly_prefs = list()
|
||||
|
||||
@@ -136,7 +132,6 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
|
||||
"digestable" = digestable,
|
||||
"devourable" = devourable,
|
||||
"feeding" = feeding,
|
||||
"noisy" = noisy,
|
||||
"vore_taste" = vore_taste,
|
||||
"belly_prefs" = belly_prefs,
|
||||
)
|
||||
|
||||
@@ -229,7 +229,6 @@
|
||||
dat += "<br><a style='background:#990000;' href='?src=\ref[src];b_del=\ref[selected]'>Delete Belly</a>"
|
||||
|
||||
dat += "<a href='?src=\ref[src];setflavor=1'>Set Flavor</a>"
|
||||
dat += "<a href='?src=\ref[src];togglenoisy=1'>Toggle Hunger Noises</a>"
|
||||
|
||||
dat += "<HR>"
|
||||
|
||||
@@ -730,15 +729,5 @@
|
||||
if(user.client.prefs_vr)
|
||||
user.client.prefs_vr.feeding = user.feeding
|
||||
|
||||
if(href_list["togglenoisy"])
|
||||
var/choice = alert(user, "Toggle audible hunger noises. Currently: [user.noisy ? "Enabled" : "Disabled"]", "", "Enable audible hunger", "Cancel", "Disable audible hunger")
|
||||
switch(choice)
|
||||
if("Cancel")
|
||||
return 0
|
||||
if("Enable audible hunger")
|
||||
user.noisy = TRUE
|
||||
if("Disable audible hunger")
|
||||
user.noisy = FALSE
|
||||
|
||||
//Refresh when interacted with, returning 1 makes vore_look.Topic update
|
||||
return 1
|
||||
Reference in New Issue
Block a user