tinytweaks (#6206)

* tinytweaks

* 5 != 2

* smfix

* requested changes + fixes exploit from 6212

* it compiled and worked anyway but go off i guess travis

* requested changes
This commit is contained in:
mistyLuminescence
2019-06-21 22:06:44 +01:00
committed by Anewbe
parent 6a86783e32
commit 0d51ea81d5
15 changed files with 146 additions and 35 deletions

View File

@@ -6,7 +6,8 @@ var/datum/category_collection/autolathe/autolathe_recipes
if(I.matter && !resources)
resources = list()
for(var/material in I.matter)
resources[material] = I.matter[material]*1.25 // More expensive to produce than they are to recycle.
var/coeff = (no_scale ? 1 : 1.25) //most objects are more expensive to produce than to recycle
resources[material] = I.matter[material]*coeff // but if it's a sheet or RCD cartridge, it's 1:1
if(is_stack && istype(I, /obj/item/stack))
var/obj/item/stack/IS = I
max_stack = IS.max_amount
@@ -66,6 +67,7 @@ var/datum/category_collection/autolathe/autolathe_recipes
var/power_use = 0
var/is_stack
var/max_stack
var/no_scale
/datum/category_item/autolathe/dd_SortValue()
return name

View File

@@ -93,6 +93,7 @@
/datum/category_item/autolathe/engineering/rcd_ammo
name = "matter cartridge"
path =/obj/item/weapon/rcd_ammo
no_scale = TRUE //prevents material duplication exploits
/datum/category_item/autolathe/engineering/rcd
name = "rapid construction device"

View File

@@ -73,22 +73,26 @@
/datum/category_item/autolathe/general/metal
name = "steel sheets"
path =/obj/item/stack/material/steel
is_stack = 1
is_stack = TRUE
no_scale = TRUE //prevents material duplication exploits
/datum/category_item/autolathe/general/glass
name = "glass sheets"
path =/obj/item/stack/material/glass
is_stack = 1
is_stack = TRUE
no_scale = TRUE //prevents material duplication exploits
/datum/category_item/autolathe/general/rglass
name = "reinforced glass sheets"
path =/obj/item/stack/material/glass/reinforced
is_stack = 1
is_stack = TRUE
no_scale = TRUE //prevents material duplication exploits
/datum/category_item/autolathe/general/rods
name = "metal rods"
path =/obj/item/stack/rods
is_stack = 1
is_stack = TRUE
no_scale = TRUE //prevents material duplication exploits
/datum/category_item/autolathe/general/knife
name = "kitchen knife"

View File

@@ -83,16 +83,17 @@
else
//Make sure it's buildable and list requires resources.
for(var/material in R.resources)
var/sheets = round(stored_material[material]/round(R.resources[material]*mat_efficiency))
var/coeff = (R.no_scale ? 1 : mat_efficiency) //stacks are unaffected by production coefficient
var/sheets = round(stored_material[material]/round(R.resources[material]*coeff))
if(isnull(max_sheets) || max_sheets > sheets)
max_sheets = sheets
if(!isnull(stored_material[material]) && stored_material[material] < round(R.resources[material]*mat_efficiency))
if(!isnull(stored_material[material]) && stored_material[material] < round(R.resources[material]*coeff))
can_make = 0
if(!comma)
comma = 1
else
material_string += ", "
material_string += "[round(R.resources[material] * mat_efficiency)] [material]"
material_string += "[round(R.resources[material] * coeff)] [material]"
material_string += ".<br></td>"
//Build list of multipliers for sheets.
if(R.is_stack)
@@ -251,15 +252,16 @@
update_use_power(2)
//Check if we still have the materials.
var/coeff = (making.no_scale ? 1 : mat_efficiency) //stacks are unaffected by production coefficient
for(var/material in making.resources)
if(!isnull(stored_material[material]))
if(stored_material[material] < round(making.resources[material] * mat_efficiency) * multiplier)
if(stored_material[material] < round(making.resources[material] * coeff) * multiplier)
return
//Consume materials.
for(var/material in making.resources)
if(!isnull(stored_material[material]))
stored_material[material] = max(0, stored_material[material] - round(making.resources[material] * mat_efficiency) * multiplier)
stored_material[material] = max(0, stored_material[material] - round(making.resources[material] * coeff) * multiplier)
update_icon() // So lid closes

View File

@@ -384,7 +384,7 @@
if(!opened)
icon_state = icon_closed
if(sealed)
overlays += "sealed"
overlays += "welded"
else
icon_state = icon_opened

View File

@@ -298,6 +298,14 @@
/obj/structure/flora/sif
icon = 'icons/obj/flora/sifflora.dmi'
/obj/structure/flora/sif/attack_hand(mob/user)
if (user.a_intent == I_HURT)
if(do_after(user, 5 SECONDS))
user.visible_message("\The [user] digs up \the [src.name].", "You dig up \the [src.name].")
qdel(src)
else
user.visible_message("\The [user] pokes \the [src.name].", "You poke \the [src.name].")
/datum/category_item/catalogue/flora/subterranean_bulbs
name = "Sivian Flora - Subterranean Bulbs"
desc = "A plant which is native to Sif, it continues the trend of being a bioluminescent specimen. These plants \

View File

@@ -41,6 +41,9 @@
set_flooring(get_flooring_data(floortype))
else
footstep_sounds = base_footstep_sounds
if(can_dirty)
if(prob(2))
new /obj/effect/decal/cleanable/dirt(src) //5% chance to start with dirt on a floor tile- give the janitor something to do
/turf/simulated/floor/proc/set_flooring(var/decl/flooring/newflooring)
make_plating(defer_icon_update = 1)

View File

@@ -29,7 +29,7 @@ var/list/grass_types = list(
name = "growth"
icon_state = "grass_sif"
edge_blending_priority = 4
grass_chance = 0
grass_chance = 5
var/tree_chance = 2
grass_types = list(

View File

@@ -6,6 +6,7 @@ var/list/blob_cores = list()
icon = 'icons/mob/blob.dmi'
icon_state = "blank_blob"
desc = "A huge, pulsating yellow mass."
density = TRUE //bandaid fix for PolarisSS13/6173
max_integrity = 150
point_return = -1
health_regen = 0 //we regen in Life() instead of when pulsed

View File

@@ -6,9 +6,9 @@
intelligence_level = SA_ANIMAL
icon_state = "cat2"
item_state = "cat2"
icon_living = "cat2"
icon_dead = "cat2_dead"
icon_rest = "cat2_rest"
icon_living = "[initial(icon_state)]"
icon_dead = "[initial(icon_state)]_dead"
icon_rest = "[initial(icon_state)]_rest"
investigates = 1
specific_targets = 1 //Only targets with Found()
@@ -161,9 +161,6 @@
gender = FEMALE
icon_state = "cat"
item_state = "cat"
icon_living = "cat"
icon_dead = "cat_dead"
icon_rest = "cat_rest"
befriend_job = "Chief Medical Officer"
/mob/living/simple_animal/cat/kitten
@@ -188,9 +185,6 @@
gender = MALE
icon_state = "cat3"
item_state = "cat3"
icon_living = "cat3"
icon_dead = "cat3_dead"
icon_rest = "cat3_rest"
holder_type = /obj/item/weapon/holder/cat/fluff/bones
friend_name = "Erstatz Vryroxes"

View File

@@ -4,9 +4,6 @@
tt_desc = "E Felis silvestris catus"
icon_state = "cat2"
item_state = "cat2"
icon_living = "cat2"
icon_dead = "cat2_dead"
icon_rest = "cat2_rest"
movement_cooldown = 0.5 SECONDS
@@ -21,6 +18,14 @@
has_langs = list("Cat")
var/mob/living/friend = null // Our best pal, who we'll follow. Meow.
var/named = FALSE //have I been named yet?
/mob/living/simple_mob/animal/passive/cat/Initialize()
icon_living = "[initial(icon_state)]"
icon_dead = "[initial(icon_state)]_dead"
icon_rest = "[initial(icon_state)]_rest"
update_icon()
return ..()
/mob/living/simple_mob/animal/passive/cat/handle_special()
if(!stat && prob(2)) // spooky
@@ -90,17 +95,13 @@
gender = FEMALE
icon_state = "cat"
item_state = "cat"
icon_living = "cat"
icon_dead = "cat_dead"
icon_rest = "cat_rest"
named = TRUE
/mob/living/simple_mob/animal/passive/cat/kitten
name = "kitten"
desc = "D'aaawwww"
desc = "D'aaawwww!"
icon_state = "kitten"
item_state = "kitten"
icon_living = "kitten"
icon_dead = "kitten_dead"
gender = NEUTER
/mob/living/simple_mob/animal/passive/cat/kitten/Initialize()
@@ -108,6 +109,10 @@
gender = pick(MALE, FEMALE)
return ..()
/mob/living/simple_mob/animal/passive/cat/black
icon_state = "cat"
item_state = "cat"
// Leaving this here for now.
/obj/item/weapon/holder/cat/fluff/bones
name = "Bones"
@@ -121,12 +126,9 @@
gender = MALE
icon_state = "cat3"
item_state = "cat3"
icon_living = "cat3"
icon_dead = "cat3_dead"
icon_rest = "cat3_rest"
named = TRUE
holder_type = /obj/item/weapon/holder/cat/fluff/bones
/datum/say_list/cat
speak = list("Meow!","Esp!","Purr!","HSSSSS")
emote_hear = list("meows","mews")
@@ -134,3 +136,34 @@
say_maybe_target = list("Meow?","Mew?","Mao?")
say_got_target = list("MEOW!","HSSSS!","REEER!")
/mob/living/simple_mob/animal/passive/cat/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
if(named)
to_chat(user, "<span class='notice'>\the [name] already has a name!</span>")
else
var/tmp_name = sanitizeSafe(input(user, "Give \the [name] a name", "Name"), MAX_NAME_LEN)
if(length(tmp_name) > 50)
to_chat(user, "<span class='notice'>The name can be at most 50 characters long.</span>")
else
to_chat(user, "<span class='notice'>You name \the [name]. Meow!</span>")
name = tmp_name
named = TRUE
else
..()
/obj/item/weapon/cat_box
name = "faintly purring box"
desc = "This box is purring faintly. You're pretty sure there's a cat inside it."
icon = 'icons/obj/storage.dmi'
icon_state = "box"
var/cattype = /mob/living/simple_mob/animal/passive/cat
/obj/item/weapon/cat_box/attack_self(var/mob/user)
var/turf/catturf = get_turf(src)
to_chat(user, "<span class='notice'>You peek into \the [name]-- and a cat jumps out!</span>")
new cattype(catturf)
new /obj/item/stack/material/cardboard(catturf) //if i fits i sits
qdel(src)
/obj/item/weapon/cat_box/black
cattype = /mob/living/simple_mob/animal/passive/cat/black

View File

@@ -99,6 +99,7 @@
return ..()
/obj/machinery/power/supermatter/Destroy()
STOP_PROCESSING(SSobj, src)
QDEL_NULL(soundloop)
return ..()
@@ -150,6 +151,8 @@
H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) )
spawn(pull_time)
explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1)
spawn(5) //to allow the explosion to finish
new /obj/item/broken_sm(TS)
qdel(src)
return
@@ -452,3 +455,21 @@
/obj/machinery/power/supermatter/shard/announce_warning() //Shards don't get announcements
return
/obj/item/broken_sm
name = "shattered supermatter plinth"
desc = "The shattered remains of a supermatter shard plinth. It doesn't look safe to be around."
icon = 'icons/obj/engine.dmi'
icon_state = "darkmatter_broken"
/obj/item/broken_sm/New()
message_admins("Broken SM shard created at ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
START_PROCESSING(SSobj, src)
return ..()
/obj/item/broken_sm/process()
radiation_repository.radiate(src, 50)
/obj/item/broken_sm/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()

View File

@@ -0,0 +1,42 @@
################################
# 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
# maptweak
# spellcheck (typo fixes)
# experiment
#################################
# Your name.
author: mistyLuminescence
# 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, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- tweak: "When the supermatter explodes, it now leaves behind a shattered plinth that continues to emit radiation. You should probably get rid of it."
- bugfix: "If you destroy the supermatter early (e.g. through admin deletion shenanigans), it no longer irradiates everyone forever."
- bugfix: "Welding lockers now actually updates their sprite properly."
- tweak: "Every floor tile now has a minor (2%) chance to spawn with some dirt on it. The Janitor now has a job again."
- tweak: "Similarly, every Sif grass tile now has a minor (5%) chance to spawn with some fancy eyebulb grass on it. It can be removed by clicking on it with harm intent."
- rscadd: "Adds cats-in-boxes, which can be activated (once) to spawn cats. There's an orange tabby (Cargo cats) and a tuxedo (Runtime) version."
- bugfix: "Fixes a material duplication exploit."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB