mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 07:08:00 +01:00
Fixes winter coat hood sprite appearing as a bucket.
Removing Smile, Swedish, Chav and Elvis from genetics. These mutation can still be acquired via adminspawned dna injector. Added a dna injector for laser eyes mutation. Fixes using razor on non human shaving non existent hair. Fixes chair deconstruction dropping too much metal. Adding some necessary check for mob buckling in gibber, processor and monkey recycler code, and in ventcrawling proc to fix being able to enter pipe while feeding as a slime. Fixes snapcorn not giving seeds. Fixes portable chem dispenser.
This commit is contained in:
@@ -64,7 +64,7 @@
|
||||
#define DNA_FACIAL_HAIR_STYLE_BLOCK 6
|
||||
#define DNA_HAIR_STYLE_BLOCK 7
|
||||
|
||||
#define DNA_STRUC_ENZYMES_BLOCKS 24
|
||||
#define DNA_STRUC_ENZYMES_BLOCKS 20
|
||||
#define DNA_UNIQUE_ENZYMES_LEN 32
|
||||
|
||||
//Transformation proc stuff
|
||||
|
||||
@@ -461,6 +461,7 @@
|
||||
/datum/mutation/human/smile
|
||||
name = "Smile"
|
||||
quality = MINOR_NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
text_gain_indication = "<span class='notice'>You feel so happy. Nothing can be wrong with anything. :)</span>"
|
||||
text_lose_indication = "<span class='notice'>Everything is terrible again. :(</span>"
|
||||
|
||||
@@ -547,6 +548,7 @@
|
||||
/datum/mutation/human/swedish
|
||||
name = "Swedish"
|
||||
quality = MINOR_NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
text_gain_indication = "<span class='notice'>You feel Swedish, however that works.</span>"
|
||||
text_lose_indication = "<span class='notice'>The feeling of Swedishness passes.</span>"
|
||||
|
||||
@@ -560,6 +562,7 @@
|
||||
/datum/mutation/human/chav
|
||||
name = "Chav"
|
||||
quality = MINOR_NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
text_gain_indication = "<span class='notice'>Ye feel like a reet prat like, innit?</span>"
|
||||
text_lose_indication = "<span class='notice'>You no longer feel like being rude and sassy.</span>"
|
||||
|
||||
@@ -592,6 +595,7 @@
|
||||
/datum/mutation/human/elvis
|
||||
name = "Elvis"
|
||||
quality = MINOR_NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
text_gain_indication = "<span class='notice'>You feel pretty good, honeydoll.</span>"
|
||||
text_lose_indication = "<span class='notice'>You feel a little less conversation would be great.</span>"
|
||||
|
||||
|
||||
@@ -120,7 +120,9 @@
|
||||
/obj/item/weapon/razor/attack(mob/M, mob/user)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if(H.dna.species.id != "human")
|
||||
user << "<span class='warning'>There is nothing to shave!</span>"
|
||||
return
|
||||
var/location = user.zone_sel.selecting
|
||||
if(location == "mouth")
|
||||
if(!get_location_accessible(H, location))
|
||||
|
||||
@@ -373,4 +373,16 @@
|
||||
name = "\improper DNA injector (Anti-Elvis)"
|
||||
New()
|
||||
..()
|
||||
remove_mutations.Add(mutations_list[ELVIS])
|
||||
remove_mutations.Add(mutations_list[ELVIS])
|
||||
|
||||
/obj/item/weapon/dnainjector/lasereyesmut
|
||||
name = "\improper DNA injector (Laser Eyes)"
|
||||
New()
|
||||
..()
|
||||
add_mutations.Add(mutations_list[LASEREYES])
|
||||
|
||||
/obj/item/weapon/dnainjector/antilasereyes
|
||||
name = "\improper DNA injector (Anti-Laser Eyes)"
|
||||
New()
|
||||
..()
|
||||
remove_mutations.Add(mutations_list[LASEREYES])
|
||||
@@ -4,6 +4,7 @@
|
||||
icon_state = "chair"
|
||||
buckle_lying = 0 //you sit in a chair, not lay
|
||||
burn_state = -1 //Not Burnable
|
||||
buildstackamount = 1
|
||||
|
||||
/obj/structure/bed/chair/New()
|
||||
..()
|
||||
@@ -27,6 +28,7 @@
|
||||
SK.loc = E
|
||||
SK.master = E
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/bed/chair/attack_tk(mob/user)
|
||||
if(buckled_mob)
|
||||
..()
|
||||
@@ -105,6 +107,7 @@
|
||||
color = rgb(255,255,255)
|
||||
burn_state = 0 //Burnable
|
||||
burntime = 30
|
||||
buildstackamount = 2
|
||||
var/image/armrest = null
|
||||
|
||||
/obj/structure/bed/chair/comfy/New()
|
||||
|
||||
@@ -97,23 +97,26 @@
|
||||
/obj/machinery/gibber/attackby(obj/item/P, mob/user, params)
|
||||
if (istype(P, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = P
|
||||
if(!istype(G.affecting, /mob/living/carbon/))
|
||||
if(!iscarbon(G.affecting))
|
||||
user << "<span class='danger'>This item is not suitable for the gibber!</span>"
|
||||
return
|
||||
if(G.affecting.abiotic(1) && !ignore_clothing)
|
||||
var/mob/living/carbon/C = G.affecting
|
||||
if(C.buckled ||C.buckled_mob)
|
||||
user << "<span class='warning'>[C] is attached to something!</span>"
|
||||
return
|
||||
if(C.abiotic(1) && !ignore_clothing)
|
||||
user << "<span class='danger'>Subject may not have abiotic items on.</span>"
|
||||
return
|
||||
|
||||
user.visible_message("<span class='danger'>[user] starts to put [G.affecting] into the gibber!</span>")
|
||||
src.add_fingerprint(user)
|
||||
if(do_after(user, gibtime, target = src) && G && G.affecting && !occupant)
|
||||
if(do_after(user, gibtime, target = src) && G && G.affecting && G.affecting == C && !C.buckled && !C.buckled_mob && !occupant)
|
||||
user.visible_message("<span class='danger'>[user] stuffs [G.affecting] into the gibber!</span>")
|
||||
var/mob/M = G.affecting
|
||||
if(M.client)
|
||||
M.client.perspective = EYE_PERSPECTIVE
|
||||
M.client.eye = src
|
||||
M.loc = src
|
||||
src.occupant = M
|
||||
if(C.client)
|
||||
C.client.perspective = EYE_PERSPECTIVE
|
||||
C.client.eye = src
|
||||
C.loc = src
|
||||
occupant = C
|
||||
qdel(G)
|
||||
update_icon()
|
||||
|
||||
@@ -138,7 +141,7 @@
|
||||
set name = "empty gibber"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.stat || !usr.canmove || usr.restrained())
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
src.go_out()
|
||||
add_fingerprint(usr)
|
||||
|
||||
@@ -56,23 +56,26 @@
|
||||
if(!user.Adjacent(G.affecting))
|
||||
return
|
||||
var/grabbed = G.affecting
|
||||
if(istype(grabbed, /mob/living/carbon/monkey))
|
||||
if(ismonkey(grabbed))
|
||||
var/mob/living/carbon/monkey/target = grabbed
|
||||
if(target.stat == 0)
|
||||
user << "<span class='danger'>The monkey is struggling far too much to put it in the recycler.</span>"
|
||||
else
|
||||
if(!user.drop_item())
|
||||
return
|
||||
qdel(target)
|
||||
user << "<span class='notice'>You stuff the monkey into the machine.</span>"
|
||||
playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1)
|
||||
var/offset = prob(50) ? -2 : 2
|
||||
animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = 200) //start shaking
|
||||
use_power(500)
|
||||
src.grinded++
|
||||
sleep(50)
|
||||
pixel_x = initial(pixel_x) //return to its spot after shaking
|
||||
user << "<span class='notice'>The machine now has [grinded] monkey\s worth of material stored.</span>"
|
||||
user << "<span class='warning'>The monkey is struggling far too much to put it in the recycler.</span>"
|
||||
return
|
||||
if(target.buckled || target.buckled_mob)
|
||||
user << "<span class='warning'>The monkey is attached to something.</span>"
|
||||
return
|
||||
if(!user.drop_item())
|
||||
return
|
||||
qdel(target)
|
||||
user << "<span class='notice'>You stuff the monkey into the machine.</span>"
|
||||
playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1)
|
||||
var/offset = prob(50) ? -2 : 2
|
||||
animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = 200) //start shaking
|
||||
use_power(500)
|
||||
grinded++
|
||||
sleep(50)
|
||||
pixel_x = initial(pixel_x) //return to its spot after shaking
|
||||
user << "<span class='notice'>The machine now has [grinded] monkey\s worth of material stored.</span>"
|
||||
|
||||
else
|
||||
user << "<span class='danger'>The machine only accepts monkeys!</span>"
|
||||
|
||||
@@ -152,21 +152,25 @@
|
||||
|
||||
default_deconstruction_crowbar(O)
|
||||
|
||||
var/what = O
|
||||
if (istype(O, /obj/item/weapon/grab))
|
||||
var/atom/movable/what = O
|
||||
if(istype(O, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = O
|
||||
if(!user.Adjacent(G.affecting))
|
||||
return
|
||||
if(G.affecting.buckled || G.affecting.buckled_mob)
|
||||
user << "<span class='warning'>[G.affecting] is attached to somthing!</span>"
|
||||
return
|
||||
what = G.affecting
|
||||
|
||||
var/datum/food_processor_process/P = select_recipe(what)
|
||||
if (!P)
|
||||
user << "<span class='warning'>That probably won't blend!</span>"
|
||||
return 1
|
||||
|
||||
user.visible_message("[user] put [what] into [src].", \
|
||||
"You put the [what] into [src].")
|
||||
user.drop_item()
|
||||
what:loc = src
|
||||
what.loc = src
|
||||
return
|
||||
|
||||
/obj/machinery/processor/attack_hand(mob/user)
|
||||
|
||||
@@ -310,6 +310,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/grown/snapcorn
|
||||
seed = /obj/item/seeds/snapcornseed
|
||||
name = "snap corn"
|
||||
desc = "A cob with snap pops"
|
||||
icon_state = "snapcorn"
|
||||
|
||||
@@ -18,6 +18,9 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/components/unary
|
||||
if(buckled_mob)
|
||||
src << "You can't vent crawl with [buckled_mob] on you!"
|
||||
return
|
||||
if(buckled)
|
||||
src << "You can't vent crawl while buckled!"
|
||||
return
|
||||
|
||||
var/obj/machinery/atmospherics/components/unary/vent_found
|
||||
|
||||
@@ -68,6 +71,12 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/components/unary
|
||||
else
|
||||
src << "<span class='warning'>This ventilation duct is not connected to anything!</span>"
|
||||
|
||||
/mob/living/simple_animal/slime/handle_ventcrawl(atom/A)
|
||||
if(buckled)
|
||||
src << "<i>I can't vent crawl while feeding...</i>"
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
/mob/living/proc/add_ventcrawl(obj/machinery/atmospherics/components/unary/starting_machine)
|
||||
if(!istype(starting_machine) || !starting_machine.returnPipenet())
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
*/
|
||||
/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null)
|
||||
if(stat & (BROKEN)) return
|
||||
if(user.stat || user.restrained()) return
|
||||
if(user.incapacitated()) return
|
||||
|
||||
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "chem_dispenser.tmpl", "[uiname]", 490, 710, 0)
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
data["beakerMaxVolume"] = null
|
||||
|
||||
var chemicals[0]
|
||||
for (var/re in dispensable_reagents)
|
||||
for(var/re in dispensable_reagents)
|
||||
var/datum/reagent/temp = chemical_reagents_list[re]
|
||||
if(temp)
|
||||
chemicals.Add(list(list("title" = temp.name, "id" = temp.id, "commands" = list("dispense" = temp.id)))) // list in a list because Byond merges the first list...
|
||||
@@ -215,7 +215,8 @@
|
||||
recharge_delay /= time/2 //delay between recharges, double the usual time on lowest 50% less than usual on highest
|
||||
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
|
||||
for(i=1, i<=M.rating, i++)
|
||||
dispensable_reagents = sortList(dispensable_reagents | special_reagents[i])
|
||||
dispensable_reagents |= special_reagents[i]
|
||||
dispensable_reagents = sortList(dispensable_reagents)
|
||||
|
||||
/obj/machinery/chem_dispenser/constructable/attackby(var/obj/item/I, var/mob/user, params)
|
||||
..()
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
# tgs (TG-ported fixes?)
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: N3X15
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
|
||||
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "Added a changelog editing system that should cause fewer conflicts and more accurate timestamps."
|
||||
- rscdel: "Killed innocent kittens."
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
Reference in New Issue
Block a user