mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-21 07:32:02 +00:00
The results are in: Science doesn't always provide mining with kinetic accelerators. As a result of these findings, high level kinetic accelerators now have increased drop chances in the warehouse and in abandoned crates. Also, kinetic accelerators no longer dig holes.
221 lines
7.7 KiB
Plaintext
221 lines
7.7 KiB
Plaintext
/obj/structure/closet/crate/secure/loot
|
|
name = "abandoned crate"
|
|
desc = "What could be inside?"
|
|
icon_state = "securecrate"
|
|
icon_opened = "securecrateopen"
|
|
icon_closed = "securecrate"
|
|
var/list/code = list()
|
|
var/list/lastattempt = list()
|
|
var/attempts = 10
|
|
var/codelen = 4
|
|
locked = 1
|
|
|
|
/obj/structure/closet/crate/secure/loot/Initialize()
|
|
. = ..()
|
|
var/list/digits = list("1", "2", "3", "4", "5", "6", "7", "8", "9", "0")
|
|
|
|
for(var/i in 1 to codelen)
|
|
code += pick(digits)
|
|
digits -= code[code.len]
|
|
|
|
generate_loot()
|
|
|
|
/obj/structure/closet/crate/secure/loot/proc/generate_loot()
|
|
var/loot = rand(1, 100)
|
|
switch(loot)
|
|
if(1 to 5) // Common things go, 5%
|
|
new/obj/item/weapon/reagent_containers/food/drinks/bottle/rum(src)
|
|
new/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey(src)
|
|
new/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus(src)
|
|
new/obj/item/weapon/flame/lighter/zippo(src)
|
|
if(6 to 10)
|
|
new/obj/random/custom_ka(src)
|
|
new/obj/random/custom_ka(src)
|
|
new/obj/random/custom_ka(src)
|
|
if(11 to 15)
|
|
new/obj/item/weapon/reagent_containers/glass/beaker/bluespace(src)
|
|
if(16 to 20)
|
|
for(var/i = 0, i < 10, i++)
|
|
new/obj/item/weapon/ore/diamond(src)
|
|
if(21 to 25)
|
|
for(var/i = 0, i < 3, i++)
|
|
new/obj/machinery/portable_atmospherics/hydroponics(src)
|
|
if(26 to 30)
|
|
for(var/i = 0, i < 3, i++)
|
|
new/obj/item/weapon/reagent_containers/glass/beaker/noreact(src)
|
|
if(31 to 35)
|
|
spawn_money(rand(300,800), src)
|
|
if(36 to 40)
|
|
new/obj/item/weapon/melee/baton(src)
|
|
if(41 to 45)
|
|
new/obj/item/clothing/under/shorts/red(src)
|
|
new/obj/item/clothing/under/shorts/blue(src)
|
|
if(46 to 50)
|
|
new/obj/item/clothing/under/chameleon(src)
|
|
for(var/i = 0, i < 7, i++)
|
|
new/obj/item/clothing/accessory/horrible(src)
|
|
if(51 to 52) // Uncommon, 2% each
|
|
new/obj/item/weapon/melee/classic_baton(src)
|
|
if(53 to 54)
|
|
new/obj/item/latexballon(src)
|
|
if(55 to 56)
|
|
var/newitem = pick(typesof(/obj/item/toy/prize) - /obj/item/toy/prize)
|
|
new newitem(src)
|
|
if(57 to 58)
|
|
new/obj/item/toy/syndicateballoon(src)
|
|
if(59 to 60)
|
|
new/obj/item/weapon/rig/eva(src)
|
|
if(61 to 62)
|
|
for(var/i = 0, i < 12, ++i)
|
|
new/obj/item/clothing/head/kitty(src)
|
|
if(63 to 64)
|
|
var/t = rand(4,7)
|
|
for(var/i = 0, i < t, ++i)
|
|
var/newcoin = pick(/obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/gold, /obj/item/weapon/coin/diamond, /obj/item/weapon/coin/phoron, /obj/item/weapon/coin/uranium, /obj/item/weapon/coin/platinum)
|
|
new newcoin(src)
|
|
if(65 to 66)
|
|
new/obj/item/clothing/suit/ianshirt(src)
|
|
if(67 to 68)
|
|
var/t = rand(4,7)
|
|
for(var/i = 0, i < t, ++i)
|
|
var/newitem = pick(typesof(/obj/item/weapon/stock_parts) - /obj/item/weapon/stock_parts - /obj/item/weapon/stock_parts/subspace)
|
|
new newitem(src)
|
|
if(69 to 70)
|
|
new/obj/item/weapon/pickaxe/silver(src)
|
|
if(71 to 72)
|
|
new/obj/item/weapon/pickaxe/drill(src)
|
|
if(73 to 74)
|
|
new/obj/item/weapon/pickaxe/jackhammer(src)
|
|
if(75 to 76)
|
|
new/obj/item/weapon/pickaxe/diamond(src)
|
|
if(77 to 78)
|
|
new/obj/item/weapon/pickaxe/diamonddrill(src)
|
|
if(79 to 80)
|
|
new/obj/item/weapon/pickaxe/gold(src)
|
|
if(81 to 82)
|
|
new/obj/item/weapon/gun/energy/plasmacutter(src)
|
|
if(83 to 84)
|
|
new/obj/item/toy/katana(src)
|
|
if(85)
|
|
new/obj/item/seeds/random(src)
|
|
if(86) // Rarest things, some are unobtainble otherwise, some are just robust, 1% each
|
|
new/obj/item/weed_extract(src)
|
|
if(87)
|
|
new/obj/item/xenos_claw(src)
|
|
if(88)
|
|
new/obj/item/weapon/gun/projectile/shotgun/pump/rifle(src)
|
|
new/obj/item/ammo_magazine/boltaction(src)
|
|
new/obj/item/clothing/under/soviet(src)
|
|
new/obj/item/clothing/head/ushanka(src)
|
|
if(89)
|
|
new/obj/item/organ/xenos/plasmavessel(src)
|
|
if(90)
|
|
new/obj/item/organ/heart(src)
|
|
if(91)
|
|
new/obj/item/poppet(src)
|
|
if(92)
|
|
new/obj/item/weapon/material/sword/katana(src)
|
|
if(93)
|
|
new/obj/item/weapon/dnainjector/xraymut(src) // Probably the least OP
|
|
if(94) // Why the hell not
|
|
new/obj/item/weapon/storage/backpack/clown(src)
|
|
new/obj/item/clothing/under/rank/clown(src)
|
|
new/obj/item/clothing/shoes/clown_shoes(src)
|
|
new/obj/item/device/pda/clown(src)
|
|
new/obj/item/clothing/mask/gas/clown_hat(src)
|
|
new/obj/item/weapon/bikehorn(src)
|
|
//new/obj/item/weapon/stamp/clown(src) I'd add it, but only clowns can use it
|
|
new/obj/item/weapon/pen/crayon/rainbow(src)
|
|
new/obj/item/toy/waterflower(src)
|
|
if(95)
|
|
new/obj/item/clothing/under/mime(src)
|
|
new/obj/item/clothing/shoes/black(src)
|
|
new/obj/item/device/pda/mime(src)
|
|
new/obj/item/clothing/gloves/white(src)
|
|
new/obj/item/clothing/mask/gas/mime(src)
|
|
new/obj/item/clothing/head/beret(src)
|
|
new/obj/item/clothing/accessory/suspenders(src)
|
|
new/obj/item/weapon/pen/crayon/mime(src)
|
|
new/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(src)
|
|
if(96)
|
|
new/obj/item/weapon/vampiric(src)
|
|
if(97)
|
|
new/obj/item/weapon/archaeological_find(src)
|
|
if(98)
|
|
new/obj/item/weapon/melee/energy/sword(src)
|
|
if(99)
|
|
new/obj/item/weapon/storage/belt/champion(src)
|
|
new/obj/item/clothing/mask/luchador(src)
|
|
if(100)
|
|
new/obj/item/weapon/gun/projectile/tanto(src)
|
|
new/obj/item/ammo_magazine/t40(src)
|
|
new/obj/item/ammo_magazine/t40(src)
|
|
new/obj/item/ammo_magazine/t40/rubber(src)
|
|
new/obj/item/clothing/under/rank/dispatch(src)
|
|
new/obj/item/clothing/accessory/badge/old(src)
|
|
new/obj/item/clothing/head/helmet/formalcaptain(src)
|
|
|
|
/obj/structure/closet/crate/secure/loot/togglelock(mob/user as mob)
|
|
if(!locked)
|
|
return
|
|
|
|
user << "<span class='notice'>The crate is locked with a Deca-code lock.</span>"
|
|
var/input = input(user, "Enter [codelen] digits.", "Deca-Code Lock", "") as text
|
|
if(!Adjacent(user))
|
|
return
|
|
|
|
if(input == null || length(input) != codelen)
|
|
user << "<span class='notice'>You leave the crate alone.</span>"
|
|
else if(check_input(input))
|
|
user << "<span class='notice'>The crate unlocks!</span>"
|
|
playsound(user, 'sound/machines/lockreset.ogg', 50, 1)
|
|
set_locked(0)
|
|
else
|
|
visible_message("<span class='warning'>A red light on \the [src]'s control panel flashes briefly.</span>")
|
|
attempts--
|
|
if (attempts == 0)
|
|
user << "<span class='danger'>The crate's anti-tamper system activates!</span>"
|
|
var/turf/T = get_turf(src.loc)
|
|
explosion(T, 0, 0, 1, 2)
|
|
qdel(src)
|
|
|
|
/obj/structure/closet/crate/secure/loot/emag_act(var/remaining_charges, var/mob/user)
|
|
if (locked)
|
|
user << "<span class='notice'>The crate unlocks!</span>"
|
|
locked = 0
|
|
|
|
/obj/structure/closet/crate/secure/loot/proc/check_input(var/input)
|
|
if(length(input) != codelen)
|
|
return 0
|
|
|
|
. = 1
|
|
lastattempt.Cut()
|
|
for(var/i in 1 to codelen)
|
|
var/guesschar = copytext(input, i, i+1)
|
|
lastattempt += guesschar
|
|
if(guesschar != code[i])
|
|
. = 0
|
|
|
|
/obj/structure/closet/crate/secure/loot/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(locked)
|
|
if (ismultitool(W)) // Greetings Urist McProfessor, how about a nice game of cows and bulls?
|
|
user << "<span class='notice'>DECA-CODE LOCK ANALYSIS:</span>"
|
|
if (attempts == 1)
|
|
user << "<span class='warning'>* Anti-Tamper system will activate on the next failed access attempt.</span>"
|
|
else
|
|
user << "<span class='notice'>* Anti-Tamper system will activate after [src.attempts] failed access attempts.</span>"
|
|
if(lastattempt.len)
|
|
var/bulls = 0
|
|
var/cows = 0
|
|
|
|
var/list/code_contents = code.Copy()
|
|
for(var/i in 1 to codelen)
|
|
if(lastattempt[i] == code[i])
|
|
++bulls
|
|
else if(lastattempt[i] in code_contents)
|
|
++cows
|
|
code_contents -= lastattempt[i]
|
|
user << "<span class='notice'>Last code attempt had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions.</span>"
|
|
return
|
|
..()
|