mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Adding telecrystal stuff for event
This commit is contained in:
73
code/game/machinery/telecrystal_storage_ch.dm
Normal file
73
code/game/machinery/telecrystal_storage_ch.dm
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
/obj/machinery/smartfridge/tcrystal
|
||||||
|
name = "Telecrystal storage"
|
||||||
|
desc = "Some kind of storage machine that only accepts telecrystals"
|
||||||
|
icon_state = "donkvendor"
|
||||||
|
icon_base = "donkvendor"
|
||||||
|
icon_contents = null
|
||||||
|
icon = 'icons/obj/survival_pod_vend.dmi'
|
||||||
|
light_range = 5
|
||||||
|
light_power = 1.2
|
||||||
|
light_color = "#DDFFD3"
|
||||||
|
pixel_y = -4
|
||||||
|
max_n_of_items = 1000000
|
||||||
|
|
||||||
|
/obj/machinery/smartfridge/tcrystal/accept_check(obj/item/O)
|
||||||
|
return istype(O,/obj/item/stack/telecrystal)
|
||||||
|
|
||||||
|
/obj/machinery/smartfridge/tcrystal/proc/mod_amount(var/datum/stored_item/I,var/mod)
|
||||||
|
if(I.amount + mod <= 0)
|
||||||
|
item_records.Remove(I)
|
||||||
|
qdel(I)
|
||||||
|
else
|
||||||
|
I.amount += mod
|
||||||
|
|
||||||
|
/obj/machinery/smartfridge/tcrystal/stock(obj/item/stack/telecrystal/O)
|
||||||
|
var/hasRecord = FALSE //Check to see if this passes or not.
|
||||||
|
for(var/datum/stored_item/I in item_records)
|
||||||
|
if((O.type == I.item_path) && (O.name == I.item_name))
|
||||||
|
mod_amount(I,O.amount)
|
||||||
|
hasRecord = TRUE
|
||||||
|
break
|
||||||
|
if(!hasRecord)
|
||||||
|
var/datum/stored_item/item = new/datum/stored_item(src,O.type,O.name,O.amount)
|
||||||
|
item_records.Add(item)
|
||||||
|
|
||||||
|
/obj/machinery/smartfridge/tcrystal/tgui_act(action, params)
|
||||||
|
add_fingerprint(usr)
|
||||||
|
switch(action)
|
||||||
|
if("Release")
|
||||||
|
var/amount = 0
|
||||||
|
if(params["amount"])
|
||||||
|
amount = params["amount"]
|
||||||
|
else
|
||||||
|
amount = input("How many items?", "How many items would you like to take out?", 1) as num|null
|
||||||
|
|
||||||
|
if(QDELETED(src) || QDELETED(usr) || !usr.Adjacent(src))
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
var/index = text2num(params["index"])
|
||||||
|
var/datum/stored_item/I = item_records[index]
|
||||||
|
var/count = I.get_amount()
|
||||||
|
|
||||||
|
// Sanity check, there are probably ways to press the button when it shouldn't be possible.
|
||||||
|
if(count > 0)
|
||||||
|
if((count - amount) < 0)
|
||||||
|
amount = count
|
||||||
|
mod_amount(I,-amount)
|
||||||
|
var/crystal_amount = min(240,amount)
|
||||||
|
while(crystal_amount > 0)
|
||||||
|
new /obj/item/stack/telecrystal(loc,crystal_amount)
|
||||||
|
amount -= crystal_amount
|
||||||
|
crystal_amount = min(240,amount)
|
||||||
|
|
||||||
|
return TRUE
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
/datum/stored_item/telecrystals
|
||||||
|
item_name = "Telecrystals"
|
||||||
|
|
||||||
|
/datum/stored_item/telecrystals/get_amount()
|
||||||
|
return amount
|
||||||
|
|
||||||
|
/datum/stored_item/telecrystals/init_products()
|
||||||
|
return
|
||||||
35
code/game/objects/effects/bluespace_spawner_ch.dm
Normal file
35
code/game/objects/effects/bluespace_spawner_ch.dm
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/obj/effect/bspawner
|
||||||
|
anchored = 1
|
||||||
|
icon = 'icons/obj/stationobjs_vr.dmi'
|
||||||
|
icon_state = "portalgateway"
|
||||||
|
var/obj/item_to_spawn = /obj/item/stack/telecrystal
|
||||||
|
var/item_arg = 8
|
||||||
|
var/time_between_spawn = 1 MINUTE
|
||||||
|
var/time_to_end = 45 MINUTES
|
||||||
|
var/spawned_num = 0
|
||||||
|
var/init_time
|
||||||
|
|
||||||
|
/obj/effect/bspawner/Initialize()
|
||||||
|
. = ..()
|
||||||
|
START_PROCESSING(SSobj,src)
|
||||||
|
init_time = world.time
|
||||||
|
|
||||||
|
/obj/effect/bspawner/proc/spawn_item()
|
||||||
|
if(!isnull(item_arg))
|
||||||
|
new item_to_spawn(loc,item_arg)
|
||||||
|
else
|
||||||
|
new item_to_spawn(loc)
|
||||||
|
|
||||||
|
/obj/effect/bspawner/process()
|
||||||
|
if(world.time > init_time + time_between_spawn * (spawned_num + 1))
|
||||||
|
spawn_item()
|
||||||
|
spawned_num++
|
||||||
|
if(world.time > init_time + time_to_end)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/effect/bspawner/Destroy()
|
||||||
|
STOP_PROCESSING(SSobj,src)
|
||||||
|
. = ..()
|
||||||
|
|
||||||
|
/obj/effect/bspawner/min30
|
||||||
|
time_to_end = 30 MINUTES
|
||||||
@@ -869,6 +869,7 @@
|
|||||||
#include "code\game\machinery\supplybeacon.dm"
|
#include "code\game\machinery\supplybeacon.dm"
|
||||||
#include "code\game\machinery\syndicatebeacon.dm"
|
#include "code\game\machinery\syndicatebeacon.dm"
|
||||||
#include "code\game\machinery\syndicatebeacon_vr.dm"
|
#include "code\game\machinery\syndicatebeacon_vr.dm"
|
||||||
|
#include "code\game\machinery\telecrystal_storage_ch.dm"
|
||||||
#include "code\game\machinery\teleporter.dm"
|
#include "code\game\machinery\teleporter.dm"
|
||||||
#include "code\game\machinery\transportpod.dm"
|
#include "code\game\machinery\transportpod.dm"
|
||||||
#include "code\game\machinery\turret_control.dm"
|
#include "code\game\machinery\turret_control.dm"
|
||||||
@@ -1086,6 +1087,7 @@
|
|||||||
#include "code\game\objects\stumble_into_vr.dm"
|
#include "code\game\objects\stumble_into_vr.dm"
|
||||||
#include "code\game\objects\weapons.dm"
|
#include "code\game\objects\weapons.dm"
|
||||||
#include "code\game\objects\effects\blockers_yw.dm"
|
#include "code\game\objects\effects\blockers_yw.dm"
|
||||||
|
#include "code\game\objects\effects\bluespace_spawner_ch.dm"
|
||||||
#include "code\game\objects\effects\bump_teleporter.dm"
|
#include "code\game\objects\effects\bump_teleporter.dm"
|
||||||
#include "code\game\objects\effects\effect_system.dm"
|
#include "code\game\objects\effects\effect_system.dm"
|
||||||
#include "code\game\objects\effects\effect_system_ch.dm"
|
#include "code\game\objects\effects\effect_system_ch.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user