mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-27 06:00:23 +01:00
Merge pull request #7245 from VOREStation/aro-technomark
2 Technomancer things
This commit is contained in:
@@ -25,7 +25,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) -
|
||||
/obj/item/weapon/technomancer_catalog
|
||||
name = "catalog"
|
||||
desc = "A \"book\" featuring a holographic display, metal cover, and miniaturized teleportation device, allowing the user to \
|
||||
requisition various things from.. where ever they came from."
|
||||
requisition various things from... wherever they came from."
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state ="scientology" //placeholder
|
||||
w_class = ITEMSIZE_SMALL
|
||||
@@ -40,6 +40,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) -
|
||||
var/tab = 4 // Info tab, so new players can read it before doing anything.
|
||||
var/spell_tab = ALL_SPELLS
|
||||
var/show_scepter_text = 0
|
||||
var/universal = FALSE //VOREStation Add - Allows non-technomancers to use this catalog
|
||||
|
||||
/obj/item/weapon/technomancer_catalog/apprentice
|
||||
name = "apprentice's catalog"
|
||||
@@ -51,12 +52,22 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) -
|
||||
budget = 2000
|
||||
max_budget = 2000
|
||||
|
||||
//VOREStation Add
|
||||
/obj/item/weapon/technomancer_catalog/universal
|
||||
name = "universal catalog"
|
||||
desc = "A catalog to be used with the KHI 'Universal Core', shamelessly \
|
||||
copied by a Kitsuhana designer from some group of 'technomancers' or another.<br>\
|
||||
The back of the book has <i>'Export Edition'</i> stamped on it."
|
||||
budget = 700
|
||||
max_budget = 700
|
||||
universal = TRUE
|
||||
//VOREStation Add End
|
||||
|
||||
// Proc: bind_to_owner()
|
||||
// Parameters: 1 (new_owner - mob that the book is trying to bind to)
|
||||
// Description: Links the catalog to hopefully the technomancer, so that only they can access it.
|
||||
/obj/item/weapon/technomancer_catalog/proc/bind_to_owner(var/mob/living/carbon/human/new_owner)
|
||||
if(!owner && technomancers.is_antagonist(new_owner.mind))
|
||||
if(!owner && (technomancers.is_antagonist(new_owner.mind) || universal)) //VOREStation Edit - Universal catalogs
|
||||
owner = new_owner
|
||||
|
||||
// Proc: New()
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
var/list/summoned_mobs = list() // Maintained horribly with maintain_summon_list().
|
||||
var/list/wards_in_use = list() // Wards don't count against the cap for other summons.
|
||||
var/max_summons = 10 // Maximum allowed summoned entities. Some cores will have different caps.
|
||||
var/universal = FALSE // Allows non-technomancers to use the core - VOREStation Add
|
||||
|
||||
/obj/item/weapon/technomancer_core/New()
|
||||
..()
|
||||
@@ -88,7 +89,7 @@
|
||||
if(world.time % 5 == 0) // Maintaining fat lists is expensive, I imagine.
|
||||
maintain_summon_list()
|
||||
if(wearer && wearer.mind)
|
||||
if(!(technomancers.is_antagonist(wearer.mind))) // In case someone tries to wear a stolen core.
|
||||
if(!(technomancers.is_antagonist(wearer.mind)) && !universal) // In case someone tries to wear a stolen core. //VOREStation Edit - Add universal cores
|
||||
wearer.adjust_instability(20)
|
||||
if(!wearer || wearer.stat == DEAD) // Unlock if we're dead or not worn.
|
||||
canremove = TRUE
|
||||
@@ -349,4 +350,19 @@
|
||||
set desc = "Toggles the locking mechanism on your manipulation core."
|
||||
|
||||
canremove = !canremove
|
||||
to_chat(usr, "<span class='notice'>You [canremove ? "de" : ""]activate the locking mechanism on \the [src].</span>")
|
||||
to_chat(usr, "<span class='notice'>You [canremove ? "de" : ""]activate the locking mechanism on \the [src].</span>")
|
||||
|
||||
//For the adminbuse! VOREStation Add
|
||||
/obj/item/weapon/technomancer_core/universal
|
||||
name = "universal core"
|
||||
desc = "A bewilderingly complex 'black box' that allows the wearer to accomplish amazing feats. \
|
||||
This one is a copy of a 'technomancer' core, shamelessly ripped off by a Kitsuhana pattern designer \
|
||||
for fun, so that he could perform impressive 'magic'. The pack sloshes slightly if you shake it.<br>\
|
||||
Under the straps, <i>'Export Edition'</i> is printed."
|
||||
energy = 7000
|
||||
max_energy = 7000
|
||||
regen_rate = 30 //233 seconds to full
|
||||
instability_modifier = 0.3
|
||||
spell_power_modifier = 0.7
|
||||
universal = TRUE
|
||||
//VOREStation Add End
|
||||
@@ -188,7 +188,7 @@
|
||||
if(core.loc != owner || owner.back != core) //Make sure the core's being worn.
|
||||
to_chat(owner, "<span class='danger'>You need to be wearing a core on your back!</span>")
|
||||
return 0
|
||||
if(!technomancers.is_antagonist(owner.mind)) //Now make sure the person using this is the actual antag.
|
||||
if(!technomancers.is_antagonist(owner.mind) && !core.universal) //Now make sure the person using this is the actual antag. //VOREStation Edit - Universal cores
|
||||
to_chat(owner, "<span class='danger'>You can't seem to figure out how to make the machine work properly.</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -8,16 +8,30 @@
|
||||
ability_icon_state = "tech_mark"
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
//The object to teleport to when Recall is used.
|
||||
/obj/effect/mark_spell
|
||||
name = "mark"
|
||||
desc = "This is a strange looking disturbance."
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 1
|
||||
/datum/technomancer_marker
|
||||
var/weakref/U
|
||||
var/image/I
|
||||
var/turf/T
|
||||
|
||||
/datum/technomancer_marker/New(var/mob/user)
|
||||
U = weakref(user)
|
||||
T = get_turf(user)
|
||||
I = image('icons/goonstation/featherzone.dmi', T, "spawn-wall")
|
||||
I.plane = TURF_PLANE
|
||||
I.layer = ABOVE_TURF_LAYER
|
||||
user.client?.images |= I
|
||||
spawn(23) //That's just how long the animation is
|
||||
I.icon_state = "spawn-wall-loop"
|
||||
|
||||
/datum/technomancer_marker/Destroy()
|
||||
var/mob/user = U?.resolve()
|
||||
user?.client?.images -= I
|
||||
I?.loc = null
|
||||
U = T = I = null
|
||||
return ..()
|
||||
|
||||
//This is global, to avoid looping through a list of all objects, or god forbid, looping through world.
|
||||
/var/global/obj/effect/mark_spell/mark_spell_ref = null
|
||||
GLOBAL_LIST_INIT(mark_spells, list())
|
||||
|
||||
/obj/item/weapon/spell/mark
|
||||
name = "mark"
|
||||
@@ -26,17 +40,20 @@
|
||||
cast_methods = CAST_USE
|
||||
aspect = ASPECT_TELE
|
||||
|
||||
/obj/item/weapon/spell/mark/on_use_cast(mob/living/user)
|
||||
/obj/item/weapon/spell/mark/on_use_cast(var/mob/living/user)
|
||||
if(!allowed_to_teleport()) // Otherwise you could teleport back to the admin Z-level.
|
||||
to_chat(user, "<span class='warning'>You can't teleport here!</span>")
|
||||
return 0
|
||||
if(pay_energy(1000))
|
||||
if(!mark_spell_ref)
|
||||
mark_spell_ref = new(get_turf(user))
|
||||
to_chat(user, "<span class='notice'>You mark \the [get_turf(user)] under you.</span>")
|
||||
else
|
||||
mark_spell_ref.forceMove(get_turf(user))
|
||||
var/datum/technomancer_marker/marker = GLOB.mark_spells[weakref(user)]
|
||||
//They have one in the list
|
||||
if(istype(marker))
|
||||
qdel(marker)
|
||||
to_chat(user, "<span class='notice'>Your mark is moved from its old position to \the [get_turf(user)] under you.</span>")
|
||||
//They don't have one yet
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You mark \the [get_turf(user)] under you.</span>")
|
||||
GLOB.mark_spells[weakref(user)] = new /datum/technomancer_marker(user)
|
||||
adjust_instability(5)
|
||||
return 1
|
||||
else
|
||||
@@ -62,9 +79,10 @@
|
||||
cast_methods = CAST_USE
|
||||
aspect = ASPECT_TELE
|
||||
|
||||
/obj/item/weapon/spell/recall/on_use_cast(mob/living/user)
|
||||
/obj/item/weapon/spell/recall/on_use_cast(var/mob/living/user)
|
||||
if(pay_energy(3000))
|
||||
if(!mark_spell_ref)
|
||||
var/datum/technomancer_marker/marker = GLOB.mark_spells[weakref(user)]
|
||||
if(!istype(marker))
|
||||
to_chat(user, "<span class='danger'>There's no Mark!</span>")
|
||||
return 0
|
||||
else
|
||||
@@ -86,7 +104,7 @@
|
||||
time_left--
|
||||
sleep(1 SECOND)
|
||||
|
||||
var/turf/target_turf = get_turf(mark_spell_ref)
|
||||
var/turf/target_turf = marker.T
|
||||
var/turf/old_turf = get_turf(user)
|
||||
|
||||
for(var/obj/item/weapon/grab/G in user.contents) // People the Technomancer is grabbing come along for the ride.
|
||||
|
||||
@@ -3501,6 +3501,12 @@
|
||||
/obj/effect/floor_decal/industrial/outline/blue,
|
||||
/turf/simulated/floor/tiled/techfloor,
|
||||
/area/ship/aro/midshipshangars)
|
||||
"CT" = (
|
||||
/obj/structure/table/rack/shelf/steel,
|
||||
/obj/item/weapon/technomancer_core/universal,
|
||||
/obj/item/weapon/technomancer_catalog/universal,
|
||||
/turf/simulated/floor/tiled/techfloor,
|
||||
/area/ship/aro/centralarea)
|
||||
"GH" = (
|
||||
/obj/effect/floor_decal/techfloor/orange{
|
||||
icon_state = "techfloororange_edges";
|
||||
@@ -12705,7 +12711,7 @@ ds
|
||||
bv
|
||||
dG
|
||||
dP
|
||||
Rs
|
||||
CT
|
||||
cH
|
||||
si
|
||||
ek
|
||||
|
||||
Reference in New Issue
Block a user