mirror of
https://github.com/goonstation/goonstation-2020.git
synced 2026-08-22 19:46:15 +01:00
370 lines
9.8 KiB
Plaintext
370 lines
9.8 KiB
Plaintext
/datum/puzzlewizard
|
|
var/name = "Generic Puzzle Element Wizard (YOU SHOULDN'T SEE THIS)"
|
|
var/finished = 0
|
|
|
|
proc/initialize()
|
|
return
|
|
|
|
proc/build_click(var/mob/user, var/datum/buildmode_holder/holder, pa, var/atom/object)
|
|
return
|
|
|
|
/obj/adventurepuzzle
|
|
icon = 'icons/obj/randompuzzles.dmi'
|
|
name = "You shouldn't see this"
|
|
desc = "AND YOU DAMN WELL SHOULDN'T EXAMINE IT"
|
|
var/id = null
|
|
|
|
New()
|
|
if (src.opacity)
|
|
src.opacity = 0
|
|
RL_SetOpacity(1)
|
|
..()
|
|
|
|
ex_act()
|
|
return
|
|
|
|
bullet_act()
|
|
return
|
|
|
|
blob_act(var/power)
|
|
return
|
|
|
|
meteorhit()
|
|
return
|
|
|
|
/obj/adventurepuzzle/marker
|
|
icon_state = "select_generic"
|
|
name = "Selection Marker"
|
|
desc = "Marks a selection in Adventure Mode."
|
|
density = 0
|
|
opacity = 0
|
|
anchored = 1
|
|
|
|
unpooled()
|
|
icon_state = "select_generic"
|
|
..()
|
|
|
|
disposing()
|
|
icon_state = null
|
|
loc = null
|
|
..()
|
|
|
|
serialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
return
|
|
|
|
deserialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
qdel(src)
|
|
|
|
/obj/adventurepuzzle/triggerable
|
|
proc/trigger(var/act)
|
|
return
|
|
|
|
proc/trigger_actions()
|
|
return null
|
|
|
|
serialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
..()
|
|
F["[path].connected_id"] << "ser:\ref[src]"
|
|
|
|
deserialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
. = ..()
|
|
F["[path].connected_id"] >> tag
|
|
|
|
proc/setTarget(var/atom/A)
|
|
return
|
|
|
|
proc/reset()
|
|
return
|
|
|
|
/obj/adventurepuzzle/triggerable/targetable
|
|
var/obj/adventurepuzzle/invisible/target
|
|
setTarget(var/atom/A)
|
|
src.target = A
|
|
|
|
// Hello, goonstation coder reading this piece of code below.
|
|
// I'd like to ask you to stop judging me. Yes, I can hear the thoughts formulating in your brain right now.
|
|
// "what the fuck marquesas. why. why do you do this. why. why is this here. why."
|
|
// I suggest that instead of having those thoughts, go and find some way to make this code less shit.
|
|
// Here's one way to do that: help the efforts to move this shit off byond.
|
|
// I'm serious.
|
|
// Why are you still reading?
|
|
// GO.
|
|
// GO AWAY.
|
|
// CHANGE THE WORLD.
|
|
// DO SOMETHING.
|
|
// LEAVE ME ALONE.
|
|
/obj/adventurepuzzle/triggerable/triggerer
|
|
var/list/triggered = list()
|
|
|
|
proc/post_trigger()
|
|
for (var/obj/adventurepuzzle/triggerable/T in src.triggered)
|
|
var/act = src.triggered[T]
|
|
SPAWN_DBG(0)
|
|
T.trigger(act)
|
|
|
|
proc/special_triggers_required()
|
|
return null
|
|
|
|
proc/special_trigger_set(var/obj/adventurepuzzle/triggerable/T, var/list/toset)
|
|
return
|
|
|
|
proc/special_trigger_input(var/obj/adventurepuzzle/triggerable/T)
|
|
return
|
|
|
|
proc/special_trigger_remove(var/obj/adventurepuzzle/triggerable/T)
|
|
return
|
|
|
|
proc/special_trigger_clear()
|
|
return
|
|
|
|
serialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
..()
|
|
|
|
F["[path].triggered.COUNT"] << triggered.len
|
|
for(var/i = 1, i <= triggered.len, i++)
|
|
var/obj/adventurepuzzle/triggerable/target = triggered[i]
|
|
var/act = triggered[target]
|
|
F["[path].triggered.[i].TARGET"] << "ser:\ref[target]"
|
|
F["[path].triggered.[i].ACTION"] << act
|
|
|
|
deserialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
. = ..()
|
|
var/count
|
|
F["[path].triggered.COUNT"] >> count
|
|
for (var/i = 1, i <= count, i++)
|
|
var/ref
|
|
var/act
|
|
F["[path].triggered.[i].TARGET"] >> ref
|
|
F["[path].triggered.[i].ACTION"] >> act
|
|
triggered += ref
|
|
triggered[ref] = act
|
|
|
|
return . | DESERIALIZE_NEED_POSTPROCESS
|
|
|
|
deserialize_postprocess()
|
|
..()
|
|
var/list/triggered_actual = list()
|
|
for (var/i = 1, i <= triggered.len, i++)
|
|
var/target_tag = triggered[i]
|
|
var/target_act = triggered[target_tag]
|
|
var/obj/adventurepuzzle/triggerable/target = locate(target_tag)
|
|
triggered_actual += target
|
|
triggered_actual[target] = target_act
|
|
triggered = triggered_actual
|
|
|
|
/obj/adventurepuzzle/triggerer
|
|
var/list/triggered = list()
|
|
|
|
proc/post_trigger()
|
|
for (var/obj/adventurepuzzle/triggerable/T in src.triggered)
|
|
var/act = src.triggered[T]
|
|
SPAWN_DBG(0)
|
|
T.trigger(act)
|
|
|
|
proc/special_triggers_required()
|
|
return null
|
|
|
|
proc/special_trigger_set(var/obj/adventurepuzzle/triggerable/T, var/list/toset)
|
|
return
|
|
|
|
proc/special_trigger_input(var/obj/adventurepuzzle/triggerable/T)
|
|
return
|
|
|
|
proc/special_trigger_remove(var/obj/adventurepuzzle/triggerable/T)
|
|
return
|
|
|
|
proc/special_trigger_clear()
|
|
return
|
|
|
|
serialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
..()
|
|
|
|
F["[path].triggered.COUNT"] << triggered.len
|
|
for(var/i = 1, i <= triggered.len, i++)
|
|
var/obj/adventurepuzzle/triggerable/target = triggered[i]
|
|
var/act = triggered[target]
|
|
F["[path].triggered.[i].TARGET"] << "ser:\ref[target]"
|
|
F["[path].triggered.[i].ACTION"] << act
|
|
|
|
deserialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
. = ..()
|
|
var/count
|
|
F["[path].triggered.COUNT"] >> count
|
|
for (var/i = 1, i <= count, i++)
|
|
var/ref
|
|
var/act
|
|
F["[path].triggered.[i].TARGET"] >> ref
|
|
F["[path].triggered.[i].ACTION"] >> act
|
|
triggered += ref
|
|
triggered[ref] = act
|
|
|
|
return . | DESERIALIZE_NEED_POSTPROCESS
|
|
|
|
deserialize_postprocess()
|
|
..()
|
|
var/list/triggered_actual = list()
|
|
for (var/i = 1, i <= triggered.len, i++)
|
|
var/target_tag = triggered[i]
|
|
var/target_act = triggered[target_tag]
|
|
var/obj/adventurepuzzle/triggerable/target = locate(target_tag)
|
|
triggered_actual += target
|
|
triggered_actual[target] = target_act
|
|
triggered = triggered_actual
|
|
|
|
/obj/item/adventurepuzzle
|
|
icon = 'icons/obj/randompuzzles.dmi'
|
|
name = "You shouldn't see this"
|
|
desc = "AND YOU DAMN WELL SHOULDN'T EXAMINE IT"
|
|
var/id = null
|
|
|
|
// WOULDN'T IT BE NICE TO HAVE TRAITS???
|
|
/obj/item/adventurepuzzle/triggerer
|
|
var/list/triggered = list()
|
|
|
|
proc/post_trigger()
|
|
for (var/obj/adventurepuzzle/triggerable/T in src.triggered)
|
|
var/act = src.triggered[T]
|
|
SPAWN_DBG(0)
|
|
T.trigger(act)
|
|
|
|
proc/special_triggers_required()
|
|
return null
|
|
|
|
proc/special_trigger_set(var/obj/adventurepuzzle/triggerable/T, var/list/toset)
|
|
return
|
|
|
|
proc/special_trigger_input(var/obj/adventurepuzzle/triggerable/T)
|
|
return
|
|
|
|
proc/special_trigger_remove(var/obj/adventurepuzzle/triggerable/T)
|
|
return
|
|
|
|
proc/special_trigger_clear()
|
|
return
|
|
|
|
serialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
..()
|
|
|
|
F["[path].triggered.COUNT"] << triggered.len
|
|
for(var/i = 1, i <= triggered.len, i++)
|
|
var/obj/adventurepuzzle/triggerable/target = triggered[i]
|
|
var/act = triggered[target]
|
|
F["[path].triggered.[i].TARGET"] << "ser:\ref[target]"
|
|
F["[path].triggered.[i].ACTION"] << act
|
|
|
|
deserialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
. = ..()
|
|
var/count
|
|
F["[path].triggered.COUNT"] >> count
|
|
for (var/i = 1, i <= count, i++)
|
|
var/ref
|
|
var/act
|
|
F["[path].triggered.[i].TARGET"] >> ref
|
|
F["[path].triggered.[i].ACTION"] >> act
|
|
triggered += ref
|
|
triggered[ref] = act
|
|
|
|
return . | DESERIALIZE_NEED_POSTPROCESS
|
|
|
|
deserialize_postprocess()
|
|
..()
|
|
var/list/triggered_actual = list()
|
|
for (var/i = 1, i <= triggered.len, i++)
|
|
var/target_tag = triggered[i]
|
|
var/target_act = triggered[target_tag]
|
|
var/obj/adventurepuzzle/triggerable/target = locate(target_tag)
|
|
triggered_actual += target
|
|
triggered_actual[target] = target_act
|
|
triggered = triggered_actual
|
|
|
|
/obj/adventurepuzzle/triggerer/twostate
|
|
var/is_pressed = 0
|
|
|
|
var/list/triggered_unpress = list()
|
|
|
|
proc/post_untrigger()
|
|
for (var/obj/adventurepuzzle/triggerable/T in src.triggered_unpress)
|
|
var/act = src.triggered_unpress[T]
|
|
SPAWN_DBG(0)
|
|
T.trigger(act)
|
|
|
|
special_triggers_required()
|
|
return list("untrigger")
|
|
|
|
special_trigger_set(var/obj/adventurepuzzle/triggerable/T, var/list/toset)
|
|
if (T in src.triggered_unpress)
|
|
src.triggered_unpress[T] = toset[1]
|
|
else
|
|
src.triggered_unpress += T
|
|
src.triggered_unpress[T] = toset[1]
|
|
|
|
special_trigger_input(var/obj/adventurepuzzle/triggerable/T)
|
|
if (T in src.triggered_unpress)
|
|
var/act = src.triggered_unpress[T]
|
|
var/list/acts = T.trigger_actions()
|
|
var/newname = input("Modify untrigger action for [src] on [T].", "Modify action", act) in acts
|
|
src.triggered_unpress[T] = acts[newname]
|
|
else
|
|
var/act = src.triggered_unpress[T]
|
|
var/list/acts = T.trigger_actions()
|
|
var/newname = input("Set untrigger action for [src] on [T].", "Set action", act) in acts
|
|
src.triggered_unpress += T
|
|
src.triggered_unpress[T] = acts[newname]
|
|
|
|
special_trigger_remove(var/obj/adventurepuzzle/triggerable/T)
|
|
if (T in src.triggered_unpress)
|
|
src.triggered_unpress -= T
|
|
|
|
special_trigger_clear()
|
|
src.triggered_unpress.len = 0
|
|
|
|
serialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
..()
|
|
|
|
F["[path].triggered_unpress.COUNT"] << triggered_unpress.len
|
|
for(var/i = 1, i <= triggered_unpress.len, i++)
|
|
var/obj/adventurepuzzle/triggerable/target = triggered_unpress[i]
|
|
var/act = triggered_unpress[target]
|
|
F["[path].triggered_unpress.[i].TARGET"] << "ser:\ref[target]"
|
|
F["[path].triggered_unpress.[i].ACTION"] << act
|
|
|
|
deserialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
. = ..()
|
|
var/count
|
|
F["[path].triggered_unpress.COUNT"] >> count
|
|
for (var/i = 1, i <= count, i++)
|
|
var/ref
|
|
var/act
|
|
F["[path].triggered_unpress.[i].TARGET"] >> ref
|
|
F["[path].triggered_unpress.[i].ACTION"] >> act
|
|
triggered_unpress += ref
|
|
triggered_unpress[ref] = act
|
|
|
|
return . | DESERIALIZE_NEED_POSTPROCESS
|
|
|
|
deserialize_postprocess()
|
|
..()
|
|
var/list/untriggered_actual = list()
|
|
for (var/i = 1, i <= triggered_unpress.len, i++)
|
|
var/target_tag = triggered_unpress[i]
|
|
var/target_act = triggered_unpress[target_tag]
|
|
var/obj/adventurepuzzle/triggerable/target = locate(target_tag)
|
|
untriggered_actual += target
|
|
untriggered_actual[target] = target_act
|
|
triggered_unpress = untriggered_actual
|
|
|
|
/obj/adventurepuzzle/invisible
|
|
name = "target marker"
|
|
invisibility = 100
|
|
density = 0
|
|
opacity = 0
|
|
anchored = 1
|
|
|
|
serialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
..()
|
|
F["[path].connected_id"] << "ser:\ref[src]"
|
|
|
|
deserialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
|
|
. = ..()
|
|
F["[path].connected_id"] >> tag
|