Removing unused vore files and commented out code.
This commit is contained in:
@@ -1,45 +0,0 @@
|
||||
/mob/living/carbon/human/proc/examine_nutrition()
|
||||
var/message = ""
|
||||
var/nutrition_examine = round(nutrition)
|
||||
var/t_He = "It" //capitalised for use at the start of each line.
|
||||
var/t_His = "Its"
|
||||
var/t_his = "its"
|
||||
var/t_is = "is"
|
||||
var/t_has = "has"
|
||||
switch(gender)
|
||||
if(MALE)
|
||||
t_He = "He"
|
||||
t_his = "his"
|
||||
t_His = "His"
|
||||
if(FEMALE)
|
||||
t_He = "She"
|
||||
t_his = "her"
|
||||
t_His = "Her"
|
||||
if(PLURAL)
|
||||
t_He = "They"
|
||||
t_his = "their"
|
||||
t_His = "Their"
|
||||
t_is = "are"
|
||||
t_has = "have"
|
||||
if(NEUTER)
|
||||
t_He = "It"
|
||||
t_his = "its"
|
||||
t_His = "Its"
|
||||
switch(nutrition_examine)
|
||||
if(0 to 49)
|
||||
message = "<span class='warning'>[t_He] [t_is] starving! You can hear [t_his] stomach snarling from across the room!</span>\n"
|
||||
if(50 to 99)
|
||||
message = "<span class='warning'>[t_He] [t_is] extremely hungry. A deep growl occasionally rumbles from [t_his] empty stomach.</span>\n"
|
||||
if(100 to 499)
|
||||
return message //Well that's pretty normal, really.
|
||||
if(500 to 864) // Fat.
|
||||
message = "[t_He] [t_has] a stuffed belly, bloated fat and round from eating too much.\n"
|
||||
if(1200 to 1934) // One person fully digested.
|
||||
message = "<span class='warning'>[t_He] [t_is] sporting a large, round, sagging stomach. It's contains at least their body weight worth of glorping slush.</span>\n"
|
||||
if(1935 to 3004) // Two people.
|
||||
message = "<span class='warning'>[t_He] [t_is] engorged with a huge stomach that sags and wobbles as they move. [t_He] must have consumed at least twice their body weight. It looks incredibly soft.</span>\n"
|
||||
if(3005 to 4074) // Three people.
|
||||
message = "<span class='warning'>[t_His] stomach is firmly packed with digesting slop. [t_He] must have eaten at least a few times worth their body weight! It looks hard for them to stand, and [t_his] gut jiggles when they move.</span>\n"
|
||||
if(4075 to 10000) // Four or more people.
|
||||
message = "<span class='warning'>[t_He] [t_is] so absolutely stuffed that you aren't sure how it's possible to move. [t_He] can't seem to swell any bigger. The surface of [t_his] belly looks sorely strained!</span>\n"
|
||||
return message
|
||||
@@ -533,9 +533,6 @@
|
||||
//Yes, it's ""safe"" to drop items here
|
||||
/obj/belly/AllowDrop()
|
||||
return TRUE
|
||||
/*
|
||||
/obj/belly/onDropInto(var/atom/movable/AM)
|
||||
return null */
|
||||
|
||||
//Handle a mob struggling
|
||||
// Called from /mob/living/carbon/relaymove()
|
||||
|
||||
@@ -71,14 +71,6 @@
|
||||
/////////////
|
||||
// Some special treatment
|
||||
/////////////
|
||||
/*
|
||||
//PDAs need to lose their ID to not take it with them, so we can get a digested ID
|
||||
/obj/item/pda/digest_act(var/atom/movable/item_storage = null)
|
||||
if(id)
|
||||
id = null
|
||||
|
||||
. = ..()
|
||||
*/
|
||||
|
||||
/obj/item/reagent_containers/food/digest_act(var/atom/movable/item_storage = null)
|
||||
if(isbelly(item_storage))
|
||||
@@ -92,15 +84,6 @@
|
||||
|
||||
. = ..()
|
||||
|
||||
/*
|
||||
/obj/item/holder/digest_act(var/atom/movable/item_storage = null)
|
||||
for(var/mob/living/M in contents)
|
||||
if(item_storage)
|
||||
M.forceMove(item_storage)
|
||||
held_mob = null
|
||||
|
||||
. = ..() */
|
||||
|
||||
/obj/item/organ/digest_act(var/atom/movable/item_storage = null)
|
||||
if((. = ..()))
|
||||
. += 70 //Organs give a little more
|
||||
|
||||
@@ -400,10 +400,4 @@
|
||||
taste_message += "they haven't bothered to set their flavor text"
|
||||
else
|
||||
taste_message += "a plain old normal [src]"
|
||||
|
||||
/* if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(H.touching.reagent_list.len) //Just the first one otherwise I'll go insane.
|
||||
var/datum/reagent/R = H.touching.reagent_list[1]
|
||||
taste_message += " You also get the flavor of [R.taste_description] from something on them"*/
|
||||
return taste_message
|
||||
|
||||
@@ -30,33 +30,3 @@
|
||||
H.visible_message("<span class='danger'>[H] contracts strangely, spewing out contents on the floor!</span>", \
|
||||
"<span class='userdanger'>You spew out everything inside you on the floor!</span>")
|
||||
return BULLET_ACT_HIT
|
||||
|
||||
|
||||
////////////////////////// Anti-Noms Drugs //////////////////////////
|
||||
/*
|
||||
/datum/reagent/medicine/ickypak
|
||||
name = "Ickypak"
|
||||
description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things."
|
||||
reagent_state = LIQUID
|
||||
color = "#0E900E"
|
||||
metabolization_rate = 0.25 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/medicine/ickypak/on_mob_life(var/mob/living/M, method=INGEST)
|
||||
if(prob(10))
|
||||
M.visible_message("<span class='danger'>[M] retches!</span>", \
|
||||
"<span class='userdanger'>You don't feel good...</span>")
|
||||
for(var/I in M.vore_organs)
|
||||
var/datum/belly/B = M.vore_organs[I]
|
||||
for(var/atom/movable/A in B.internal_contents)
|
||||
if(prob(55))
|
||||
playsound(M, 'sound/effects/splat.ogg', 50, 1)
|
||||
B.release_specific_contents(A)
|
||||
M.visible_message("<span class='danger'>[M] contracts strangely, spewing out something!</span>", \
|
||||
"<span class='userdanger'>You spew out something from inside you!</span>")
|
||||
return ..()
|
||||
|
||||
/datum/chemical_reaction/ickypak
|
||||
name = "Ickypak"
|
||||
id = /datum/reagent/medicine/ickypak
|
||||
results = list(/datum/reagent/medicine/ickypak = 2)
|
||||
required_reagents = list(/datum/reagent/chlorine = 2 , /datum/reagent/oil = 1) */
|
||||
@@ -1,63 +0,0 @@
|
||||
//
|
||||
// Gravity Pull effect which draws in movable objects to its center.
|
||||
// In this case, "number" refers to the range. directions is ignored.
|
||||
//
|
||||
/datum/effect/effect/system/grav_pull
|
||||
var/pull_radius = 3
|
||||
var/pull_anchored = 0
|
||||
var/break_windows = 0
|
||||
|
||||
/datum/effect/effect/system/grav_pull/set_up(range, num, loca)
|
||||
pull_radius = range
|
||||
number = num
|
||||
if(istype(loca, /turf/))
|
||||
location = loca
|
||||
else
|
||||
location = get_turf(loca)
|
||||
|
||||
/datum/effect/effect/system/grav_pull/start()
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
for(var/i=0, i < number, i++)
|
||||
do_pull()
|
||||
sleep(25)
|
||||
|
||||
/datum/effect/effect/system/grav_pull/proc/do_pull()
|
||||
//following is adapted from supermatter and singulo code
|
||||
if(defer_powernet_rebuild != 2)
|
||||
defer_powernet_rebuild = 1
|
||||
|
||||
// Let's just make this one loop.
|
||||
for(var/atom/X in orange(pull_radius, location))
|
||||
// Movable atoms only
|
||||
if(istype(X, /atom/movable))
|
||||
if(istype(X, /obj/effect/overlay)) continue
|
||||
if(X && !istype(X, /mob/living/carbon/human))
|
||||
if(break_windows && istype(X, /obj/structure/window)) //shatter windows
|
||||
var/obj/structure/window/W = X
|
||||
W.ex_act(2.0)
|
||||
|
||||
if(istype(X, /obj))
|
||||
var/obj/O = X
|
||||
if(O.anchored)
|
||||
if (!pull_anchored) continue // Don't pull anchored stuff unless configured
|
||||
step_towards(X, location) // step just once if anchored
|
||||
continue
|
||||
|
||||
step_towards(X, location) // Step twice
|
||||
step_towards(X, location)
|
||||
|
||||
else if(istype(X,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = X
|
||||
if(istype(H.shoes,/obj/item/clothing/shoes/magboots))
|
||||
var/obj/item/clothing/shoes/magboots/M = H.shoes
|
||||
if(M.magpulse)
|
||||
step_towards(H, location) //step just once with magboots
|
||||
continue
|
||||
step_towards(H, location) //step twice
|
||||
step_towards(H, location)
|
||||
|
||||
if(defer_powernet_rebuild != 2)
|
||||
defer_powernet_rebuild = 0
|
||||
return
|
||||
@@ -1,34 +0,0 @@
|
||||
// Micro Holders - Extends /obj/item/holder
|
||||
|
||||
/obj/item/holder/micro
|
||||
name = "micro"
|
||||
desc = "Another crewmember, small enough to fit in your hand."
|
||||
icon_state = "micro"
|
||||
slot_flags = SLOT_FEET | SLOT_HEAD | SLOT_ID
|
||||
w_class = 2
|
||||
item_icons = null // Override value from parent. We don't have magic sprites.
|
||||
pixel_y = 0 // Override value from parent.
|
||||
|
||||
/obj/item/holder/micro/examine(var/mob/user)
|
||||
. = list()
|
||||
for(var/mob/living/M in contents)
|
||||
. += M.examine(user)
|
||||
|
||||
/obj/item/holder/MouseDrop(mob/M as mob)
|
||||
..()
|
||||
if(M != usr) return
|
||||
if(usr == src) return
|
||||
if(!Adjacent(usr)) return
|
||||
if(istype(M,/mob/living/silicon/ai)) return
|
||||
for(var/mob/living/carbon/human/O in contents)
|
||||
O.show_inv(usr)
|
||||
|
||||
/obj/item/holder/micro/attack_self(var/mob/living/user)
|
||||
for(var/mob/living/carbon/human/M in contents)
|
||||
M.help_shake_act(user)
|
||||
|
||||
/obj/item/holder/micro/update_state()
|
||||
// If any items have been dropped by contained mob, drop them to floor.
|
||||
for(var/obj/O in contents)
|
||||
O.forceMove(get_turf(src))
|
||||
..()
|
||||
@@ -1,207 +0,0 @@
|
||||
/*
|
||||
//these aren't defines so they can stay in this file
|
||||
GLOBAL_VAR_CONST(SIZESCALE_HUGE, 2)
|
||||
GLOBAL_VAR_CONST(SIZESCALE_BIG, 1.5)
|
||||
GLOBAL_VAR_CONST(SIZESCALE_NORMAL, 1)
|
||||
GLOBAL_VAR_CONST(SIZESCALE_SMALL, 0.85)
|
||||
GLOBAL_VAR_CONST(SIZESCALE_TINY, 0.60)
|
||||
|
||||
GLOBAL_VAR_CONST(SIZESCALE_A_HUGEBIG, (GLOB.SIZESCALE_HUGE + GLOB.SIZESCALE_BIG) / 2)
|
||||
GLOBAL_VAR_CONST(SIZESCALE_A_BIGNORMAL, (GLOB.SIZESCALE_BIG + GLOB.SIZESCALE_NORMAL) / 2)
|
||||
GLOBAL_VAR_CONST(SIZESCALE_A_NORMALSMALL,(GLOB.SIZESCALE_NORMAL + GLOB.SIZESCALE_SMALL) / 2)
|
||||
GLOBAL_VAR_CONST(SIZESCALE_A_SMALLTINY,(GLOB.SIZESCALE_SMALL + GLOB.SIZESCALE_TINY) / 2)
|
||||
*/
|
||||
// Adding needed defines to /mob/living
|
||||
// Note: Polaris had this on /mob/living/carbon/human We need it higher up for animals and stuff.
|
||||
/mob/living
|
||||
var/size_multiplier = 1 //multiplier for the mob's icon size
|
||||
|
||||
// Define holder_type on types we want to be scoop-able
|
||||
//mob/living/carbon/human
|
||||
// holder_type = /obj/item/holder/micro
|
||||
|
||||
/**
|
||||
* Scale up the size of a mob's icon by the size_multiplier.
|
||||
* NOTE: mob/living/carbon/human/update_transform() has a more complicated system and
|
||||
* is already applying this transform. BUT, it does not call ..()
|
||||
* as long as that is true, we should be fine. If that changes we need to
|
||||
* re-evaluate.
|
||||
*/
|
||||
/mob/living/update_transform()
|
||||
ASSERT(!iscarbon(src))
|
||||
var/matrix/M = matrix()
|
||||
M.Scale(size_multiplier)
|
||||
M.Translate(0, 16*(size_multiplier-1))
|
||||
src.transform = M
|
||||
|
||||
/**
|
||||
* Get the effective size of a mob.
|
||||
* Currently this is based only on size_multiplier for micro/macro stuff,
|
||||
* but in the future we may also incorporate the "mob_size", so that
|
||||
* a macro mouse is still only effectively "normal" or a micro dragon is still large etc.
|
||||
*/
|
||||
/mob/living/proc/get_effective_size()
|
||||
return src.size_multiplier
|
||||
|
||||
/**
|
||||
* Resizes the mob immediately to the desired mod, animating it growing/shrinking.
|
||||
* It can be used by anything that calls it.
|
||||
*/
|
||||
/mob/living/proc/sizescale(var/new_size)
|
||||
var/matrix/sizescale = matrix() // Defines the matrix to change the player's size
|
||||
sizescale.Scale(new_size) //Change the size of the matrix
|
||||
|
||||
if(new_size >= SIZESCALE_NORMAL)
|
||||
sizescale.Translate(0, -1 * (1 - new_size) * 16) //Move the player up in the tile so their feet align with the bottom
|
||||
|
||||
animate(src, transform = sizescale, time = 5) //Animate the player resizing
|
||||
size_multiplier = new_size //Change size_multiplier so that other items can interact with them
|
||||
|
||||
/*
|
||||
* Verb proc for a command that lets players change their size OOCly.
|
||||
* Ace was here! Redid this a little so we'd use math for shrinking characters. This is the old code.
|
||||
|
||||
/mob/living/proc/set_size()
|
||||
set name = "Set Character Size"
|
||||
set category = "Vore"
|
||||
var/nagmessage = "DO NOT ABUSE THESE COMMANDS. They are not here for you to play with. \
|
||||
We were originally going to remove them but kept them for popular demand. \
|
||||
Do not abuse their existence outside of ERP scenes where they apply, \
|
||||
or reverting OOCly unwanted changes like someone lolshooting the crew with a shrink ray. -Ace"
|
||||
|
||||
var/size_name = input(nagmessage, "Pick a Size") in player_sizes_list
|
||||
if (size_name && player_sizes_list[size_name])
|
||||
src.sizescale(player_sizes_list[size_name])
|
||||
message_admins("[key_name(src)] used the sizescale command in-game to be [size_name]. \
|
||||
([src ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>" : "null"])")
|
||||
|
||||
/** Add the set_size() proc to usable verbs. */
|
||||
/hook/living_new/proc/sizescale_setup(mob/living/M)
|
||||
M.verbs += /mob/living/proc/set_size
|
||||
return 1
|
||||
|
||||
|
||||
* Attempt to scoop up this mob up into M's hands, if the size difference is large enough.
|
||||
* @return false if normal code should continue, 1 to prevent normal code.
|
||||
|
||||
/mob/living/proc/attempt_to_scoop(var/mob/living/carbon/human/M)
|
||||
if(!istype(M))
|
||||
return 0;
|
||||
if(M.buckled)
|
||||
usr << "<span class='notice'>You have to unbuckle \the [M] before you pick them up.</span>"
|
||||
return 0
|
||||
if(M.get_effective_size() - src.get_effective_size() >= 0.75)
|
||||
var/obj/item/holder/m_holder = get_scooped(M)
|
||||
if (m_holder)
|
||||
return 1
|
||||
else
|
||||
return 0; // Unable to scoop, let other code run
|
||||
*/
|
||||
/*
|
||||
* Handle bumping into someone with helping intent.
|
||||
* Called from /mob/living/Bump() in the 'brohugs all around' section.
|
||||
* @return false if normal code should continue, 1 to prevent normal code.
|
||||
* // TODO - can the now_pushing = 0 be moved up? What does it do anyway?
|
||||
*/
|
||||
/mob/living/proc/handle_micro_bump_helping(var/mob/living/tmob)
|
||||
if(src.get_effective_size() <= SIZESCALE_A_SMALLTINY && tmob.get_effective_size() <= SIZESCALE_A_SMALLTINY)
|
||||
// Both small! Go ahead and
|
||||
now_pushing = 0
|
||||
src.forceMove(tmob.loc)
|
||||
return 1
|
||||
if(abs(src.get_effective_size() - tmob.get_effective_size()) >= 0.20)
|
||||
now_pushing = 0
|
||||
src.forceMove(tmob.loc)
|
||||
|
||||
if(src.get_effective_size() > tmob.get_effective_size())
|
||||
/* var/mob/living/carbon/human/tmob = src
|
||||
if(istype(tmob) && istype(tmob.tail_style, /datum/sprite_accessory/tail/taur/naga))
|
||||
src << "You carefully slither around [tmob]."
|
||||
M << "[src]'s huge tail slithers past beside you!"
|
||||
else
|
||||
*/
|
||||
src.forceMove(tmob.loc)
|
||||
src << "You carefully step over [tmob]."
|
||||
tmob << "[src] steps over you carefully!"
|
||||
if(tmob.get_effective_size() > src.get_effective_size())
|
||||
/* var/mob/living/carbon/human/M = M
|
||||
if(istype(M) && istype(M.tail_style, /datum/sprite_accessory/tail/taur/naga))
|
||||
src << "You jump over [M]'s thick tail."
|
||||
M << "[src] bounds over your tail."
|
||||
else
|
||||
*/
|
||||
src.forceMove(tmob.loc)
|
||||
src << "You run between [tmob]'s legs."
|
||||
tmob << "[src] runs between your legs."
|
||||
return 1
|
||||
|
||||
/**
|
||||
* Handle bumping into someone without mutual help intent.
|
||||
* Called from /mob/living/Bump()
|
||||
* NW was here, adding even more options for stomping!
|
||||
*
|
||||
* @return false if normal code should continue, 1 to prevent normal code.
|
||||
*/
|
||||
/mob/living/proc/handle_micro_bump_other(var/mob/living/tmob)
|
||||
ASSERT(isliving(tmob)) // Baby don't hurt me
|
||||
|
||||
if(src.a_intent == "disarm" && src.canmove && !src.buckled)
|
||||
// If bigger than them by at least 0.75, move onto them and print message.
|
||||
if((src.get_effective_size() - tmob.get_effective_size()) >= 0.20)
|
||||
now_pushing = 0
|
||||
src.forceMove(tmob.loc)
|
||||
tmob.Stun(4)
|
||||
/*
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
|
||||
src << "You carefully squish [tmob] under your tail!"
|
||||
tmob << "[src] pins you under their tail!"
|
||||
else
|
||||
*/
|
||||
src << "You pin [tmob] beneath your foot!"
|
||||
tmob << "[src] pins you beneath their foot!"
|
||||
return 1
|
||||
|
||||
if(src.a_intent == "harm" && src.canmove && !src.buckled)
|
||||
if((src.get_effective_size() - tmob.get_effective_size()) >= 0.20)
|
||||
now_pushing = 0
|
||||
src.forceMove(tmob.loc)
|
||||
tmob.adjustStaminaLoss(35)
|
||||
tmob.adjustBruteLoss(5)
|
||||
/* var/mob/living/carbon/human/M = src
|
||||
if(istype(M) && istype(M.tail_style, /datum/sprite_accessory/tail/taur/naga))
|
||||
src << "You steamroller over [tmob] with your heavy tail!"
|
||||
tmob << "[src] ploughs you down mercilessly with their heavy tail!"
|
||||
else
|
||||
*/
|
||||
src << "You bring your foot down heavily upon [tmob]!"
|
||||
tmob << "[src] steps carelessly on your body!"
|
||||
return 1
|
||||
|
||||
// until I figure out grabbing micros with the godawful pull code...
|
||||
if(src.a_intent == "grab" && src.canmove && !src.buckled)
|
||||
if((src.get_effective_size() - tmob.get_effective_size()) >= 0.20)
|
||||
now_pushing = 0
|
||||
tmob.adjustStaminaLoss(15)
|
||||
src.forceMove(tmob.loc)
|
||||
src << "You press [tmob] beneath your foot!"
|
||||
tmob << "[src] presses you beneath their foot!"
|
||||
/*
|
||||
var/mob/living/carbon/human/M = src
|
||||
if(istype(M) && !M.shoes)
|
||||
// User is a human (capable of scooping) and not wearing shoes! Scoop into foot slot!
|
||||
equip_to_slot_if_possible(tmob.get_scooped(M), slot_shoes, 0, 1)
|
||||
if(istype(M.tail_style, /datum/sprite_accessory/tail/taur/naga))
|
||||
src << "You wrap up [tmob] with your powerful tail!"
|
||||
tmob << "[src] binds you with their powerful tail!"
|
||||
else
|
||||
src << "You clench your toes around [tmob]'s body!"
|
||||
tmob << "[src] grabs your body with their toes!"
|
||||
else if(istype(M) && istype(M.tail_style, /datum/sprite_accessory/tail/taur/naga))
|
||||
src << "You carefully squish [tmob] under your tail!"
|
||||
tmob << "[src] pins you under their tail!"
|
||||
else
|
||||
src << "You pin [tmob] beneath your foot!"
|
||||
tmob << "[src] pins you beneath their foot!"
|
||||
return 1
|
||||
*/
|
||||
@@ -1,110 +0,0 @@
|
||||
|
||||
////////////////////////////
|
||||
/// shrinking serum ///
|
||||
////////////////////////////
|
||||
|
||||
/datum/reagent/medicine/macrocillin
|
||||
name = "Macrocillin"
|
||||
description = "Glowing yellow liquid."
|
||||
reagent_state = LIQUID
|
||||
color = "#FFFF00" // rgb: 255, 255, 0
|
||||
overdose_threshold = 20
|
||||
|
||||
/datum/reagent/medicine/macrocillin/on_mob_life(mob/living/M, method=INGEST)
|
||||
for(var/size in list(SIZESCALE_SMALL, SIZESCALE_NORMAL, SIZESCALE_BIG, SIZESCALE_HUGE))
|
||||
if(M.size_multiplier < size)
|
||||
M.sizescale(size)
|
||||
M << "<font color='green'>You grow!</font>"
|
||||
break
|
||||
if(M.reagents.has_reagent(/datum/reagent/medicine/macrocillin))
|
||||
M.reagents.remove_reagent(/datum/reagent/medicine/macrocillin, 20)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/microcillin
|
||||
name = "Microcillin"
|
||||
description = "Murky purple liquid."
|
||||
reagent_state = LIQUID
|
||||
color = "#800080"
|
||||
overdose_threshold = 20
|
||||
|
||||
/datum/reagent/microcillin/on_mob_life(mob/living/M, method=INGEST)
|
||||
for(var/size in list(SIZESCALE_BIG, SIZESCALE_NORMAL, SIZESCALE_SMALL, SIZESCALE_TINY))
|
||||
if(M.size_multiplier > size)
|
||||
M.sizescale(size)
|
||||
M << "<span class='alert'>You shrink!</span>"
|
||||
break;
|
||||
if(M.reagents.has_reagent(/datum/reagent/medicine/microcillin))
|
||||
M.reagents.remove_reagent(/datum/reagent/medicine/microcillin, 20)
|
||||
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/normalcillin
|
||||
name = "Normalcillin"
|
||||
description = "Translucent cyan liquid."
|
||||
reagent_state = LIQUID
|
||||
color = "#00FFFF"
|
||||
overdose_threshold = 20
|
||||
|
||||
/datum/reagent/medicine/normalcillin/on_mob_life(mob/living/M, method=INGEST)
|
||||
if(M.size_multiplier > SIZESCALE_BIG)
|
||||
M.sizescale(SIZESCALE_BIG)
|
||||
M << "<span class='alert'>You shrink!</span>"
|
||||
else if(M.size_multiplier > SIZESCALE_NORMAL)
|
||||
M.sizescale(SIZESCALE_NORMAL)
|
||||
M << "<span class='alert'>You shrink!</span>"
|
||||
else if(M.size_multiplier < SIZESCALE_NORMAL)
|
||||
M.sizescale(SIZESCALE_NORMAL)
|
||||
M << "<font color='green'>You grow!</font>"
|
||||
else if(M.size_multiplier < SIZESCALE_SMALL)
|
||||
M.sizescale(SIZESCALE_SMALL)
|
||||
M << "<font color='green'>You grow!</font>"
|
||||
|
||||
if(M.reagents.has_reagent(/datum/reagent/medicine/normalcillin))
|
||||
M.reagents.remove_reagent(/datum/reagent/medicine/normalcillin, 20)
|
||||
..()
|
||||
|
||||
|
||||
/datum/reagent/medicine/sizeoxadone
|
||||
name = "Sizeoxadone"
|
||||
description = "A volatile liquid used as a precursor to size-altering chemicals. Causes dizziness if taken unprocessed."
|
||||
reagent_state = LIQUID
|
||||
color = "#1E90FF"
|
||||
overdose_threshold = 30
|
||||
metabolization_rate = 0.8 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/sizeoxadone/on_mob_life(var/mob/living/carbon/M, var/removed)
|
||||
if(M.hallucination < volume && prob(20))
|
||||
M.hallucination += 5
|
||||
if(!M.confused) M.confused = 1
|
||||
M.confused = max(M.confused, 20)
|
||||
return
|
||||
|
||||
/datum/reagent/medicine/sizeoxadone/overdose_process(mob/living/M)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1)
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
////////////////////////// Anti-Noms Drugs //////////////////////////
|
||||
|
||||
/datum/reagent/medicine/ickypak
|
||||
name = "Ickypak"
|
||||
description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things."
|
||||
reagent_state = LIQUID
|
||||
color = "#0E900E"
|
||||
metabolization_rate = 0.25 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/medicine/ickypak/on_mob_life(var/mob/living/M, method=INGEST)
|
||||
..()
|
||||
if(M.hallucination < volume && prob(20))
|
||||
M.hallucination += 5
|
||||
M.adjustToxLoss(-5)
|
||||
|
||||
for(var/I in M.vore_organs)
|
||||
var/datum/belly/B = M.vore_organs[I]
|
||||
for(var/atom/movable/A in B.internal_contents)
|
||||
if(prob(55))
|
||||
playsound(M, 'sound/effects/splat.ogg', 50, 1)
|
||||
B.release_vore_contents(A)
|
||||
..()
|
||||
. = 1
|
||||
@@ -1,173 +0,0 @@
|
||||
//
|
||||
// Size Gun
|
||||
//
|
||||
/*
|
||||
/obj/item/gun/energy/sizegun
|
||||
name = "shrink ray"
|
||||
desc = "A highly advanced ray gun with two settings: Shrink and Grow. Warning: Do not insert into mouth."
|
||||
icon = 'icons/obj/gun_vr.dmi'
|
||||
icon_state = "sizegun-shrink100" // Someone can probably do better. -Ace
|
||||
item_state = null //so the human update icon uses the icon_state instead
|
||||
fire_sound = 'sound/weapons/wave.ogg'
|
||||
charge_cost = 100
|
||||
projectile_type = /obj/item/projectile/beam/shrinklaser
|
||||
modifystate = "sizegun-shrink"
|
||||
selfcharge = EGUN_SELFCHARGE
|
||||
firemodes = list(
|
||||
list(mode_name = "grow",
|
||||
projectile_type = /obj/item/projectile/beam/growlaser,
|
||||
modifystate = "sizegun-grow",
|
||||
fire_sound = 'sound/weapons/pulse3.ogg'
|
||||
),
|
||||
list(mode_name = "shrink",
|
||||
projectile_type = /obj/item/projectile/beam/shrinklaser,
|
||||
modifystate = "sizegun-shrink",
|
||||
fire_sound = 'sound/weapons/wave.ogg'
|
||||
))
|
||||
|
||||
//
|
||||
// Beams for size gun
|
||||
//
|
||||
// tracers TBD
|
||||
|
||||
/obj/item/projectile/beam/shrinklaser
|
||||
name = "shrink beam"
|
||||
icon_state = "xray"
|
||||
nodamage = 1
|
||||
damage = 0
|
||||
check_armour = "laser"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/xray/muzzle
|
||||
tracer_type = /obj/effect/projectile/xray/tracer
|
||||
impact_type = /obj/effect/projectile/xray/impact
|
||||
|
||||
/obj/item/projectile/beam/shrinklaser/on_hit(var/atom/target, var/blocked = 0)
|
||||
. = ..()
|
||||
if(isliving(target))
|
||||
var/mob/living/M = target
|
||||
switch(M.size_multiplier)
|
||||
if(SIZESCALE_HUGE to INFINITY)
|
||||
M.sizescale(SIZESCALE_BIG)
|
||||
if(SIZESCALE_BIG to SIZESCALE_HUGE)
|
||||
M.sizescale(SIZESCALE_NORMAL)
|
||||
if(SIZESCALE_NORMAL to SIZESCALE_BIG)
|
||||
M.sizescale(SIZESCALE_SMALL)
|
||||
if((0 - INFINITY) to SIZESCALE_NORMAL)
|
||||
M.sizescale(SIZESCALE_TINY)
|
||||
M.update_transform()
|
||||
return BULLET_ACT_HIT
|
||||
|
||||
/obj/item/projectile/beam/growlaser
|
||||
name = "growth beam"
|
||||
icon_state = "bluelaser"
|
||||
nodamage = 1
|
||||
damage = 0
|
||||
check_armour = "laser"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/laser_blue/muzzle
|
||||
tracer_type = /obj/effect/projectile/laser_blue/tracer
|
||||
impact_type = /obj/effect/projectile/laser_blue/impact
|
||||
|
||||
/obj/item/projectile/beam/growlaser/on_hit(var/atom/target, var/blocked = 0)
|
||||
. = ..()
|
||||
if(isliving(target))
|
||||
var/mob/living/M = target
|
||||
switch(M.size_multiplier)
|
||||
if(SIZESCALE_BIG to SIZESCALE_HUGE)
|
||||
M.sizescale(SIZESCALE_HUGE)
|
||||
if(SIZESCALE_NORMAL to SIZESCALE_BIG)
|
||||
M.sizescale(SIZESCALE_BIG)
|
||||
if(SIZESCALE_SMALL to SIZESCALE_NORMAL)
|
||||
M.sizescale(SIZESCALE_NORMAL)
|
||||
if((0 - INFINITY) to SIZESCALE_TINY)
|
||||
M.sizescale(SIZESCALE_SMALL)
|
||||
M.update_transform()
|
||||
return BULLET_ACT_HIT
|
||||
*/
|
||||
|
||||
datum/design/sizeray
|
||||
name = "Size Ray"
|
||||
desc = "Abuse bluespace tech to alter living matter scale."
|
||||
id = "sizeray"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 1000, MAT_DIAMOND = 2500, MAT_URANIUM = 2500, MAT_TITANIUM = 1000)
|
||||
build_path = /obj/item/gun/energy/laser/sizeray
|
||||
category = list("Weapons")
|
||||
|
||||
/obj/item/projectile/sizeray
|
||||
name = "sizeray beam"
|
||||
icon_state = "omnilaser"
|
||||
hitsound = null
|
||||
damage = 0
|
||||
damage_type = STAMINA
|
||||
flag = "laser"
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
||||
|
||||
/obj/item/projectile/sizeray/shrinkray
|
||||
icon_state="bluelaser"
|
||||
|
||||
/obj/item/projectile/sizeray/growthray
|
||||
icon_state="laser"
|
||||
|
||||
/obj/item/projectile/sizeray/shrinkray/on_hit(var/atom/target, var/blocked = 0)
|
||||
. = ..()
|
||||
if(isliving(target))
|
||||
var/mob/living/M = target
|
||||
switch(M.size_multiplier)
|
||||
if(SIZESCALE_HUGE to INFINITY)
|
||||
M.sizescale(SIZESCALE_BIG)
|
||||
if(SIZESCALE_BIG to SIZESCALE_HUGE)
|
||||
M.sizescale(SIZESCALE_NORMAL)
|
||||
if(SIZESCALE_NORMAL to SIZESCALE_BIG)
|
||||
M.sizescale(SIZESCALE_SMALL)
|
||||
if((0 - INFINITY) to SIZESCALE_NORMAL)
|
||||
M.sizescale(SIZESCALE_TINY)
|
||||
M.update_transform()
|
||||
return BULLET_ACT_
|
||||
|
||||
/obj/item/projectile/sizeray/growthray/on_hit(var/atom/target, var/blocked = 0)
|
||||
. = ..()
|
||||
if(isliving(target))
|
||||
var/mob/living/M = target
|
||||
switch(M.size_multiplier)
|
||||
if(SIZESCALE_BIG to SIZESCALE_HUGE)
|
||||
M.sizescale(SIZESCALE_HUGE)
|
||||
if(SIZESCALE_NORMAL to SIZESCALE_BIG)
|
||||
M.sizescale(SIZESCALE_BIG)
|
||||
if(SIZESCALE_SMALL to SIZESCALE_NORMAL)
|
||||
M.sizescale(SIZESCALE_NORMAL)
|
||||
if((0 - INFINITY) to SIZESCALE_TINY)
|
||||
M.sizescale(SIZESCALE_SMALL)
|
||||
M.update_transform()
|
||||
return BULLET_ACT_HIT
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/growthray
|
||||
projectile_type = /obj/item/projectile/sizeray/growthray
|
||||
select_name = "Growth"
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/shrinkray
|
||||
projectile_type = /obj/item/projectile/sizeray/shrinkray
|
||||
select_name = "Shrink"
|
||||
|
||||
|
||||
//Gun here
|
||||
/obj/item/gun/energy/laser/sizeray
|
||||
name = "size ray"
|
||||
icon_state = "bluetag"
|
||||
desc = "Size manipulator using bluespace breakthroughs."
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/laser/shrinkray, /obj/item/ammo_casing/energy/laser/growthray)
|
||||
selfcharge = EGUN_SELFCHARGE
|
||||
charge_delay = 5
|
||||
ammo_x_offset = 2
|
||||
clumsy_check = 1
|
||||
|
||||
attackby(obj/item/W, mob/user)
|
||||
if(W==src)
|
||||
if(icon_state=="bluetag")
|
||||
icon_state="redtag"
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/laser/growthray)
|
||||
else
|
||||
icon_state="bluetag"
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/laser/shrinkray)
|
||||
return ..()
|
||||
@@ -2202,7 +2202,6 @@
|
||||
#include "code\modules\mob\living\carbon\human\dummy.dm"
|
||||
#include "code\modules\mob\living\carbon\human\emote.dm"
|
||||
#include "code\modules\mob\living\carbon\human\examine.dm"
|
||||
#include "code\modules\mob\living\carbon\human\examine_vr.dm"
|
||||
#include "code\modules\mob\living\carbon\human\human.dm"
|
||||
#include "code\modules\mob\living\carbon\human\human_defense.dm"
|
||||
#include "code\modules\mob\living\carbon\human\human_defines.dm"
|
||||
|
||||
Reference in New Issue
Block a user