Merge pull request #2229 from Neerti/7/28/2016_more_technomancer

Technomancer Additions Yet Again
This commit is contained in:
Anewbe
2016-07-29 17:18:37 -05:00
committed by GitHub
10 changed files with 62 additions and 19 deletions

View File

@@ -41,7 +41,9 @@ var/datum/antagonist/technomancer/technomancers
technomancer_mob.equip_to_slot_or_del(new /obj/item/weapon/disposable_teleporter/free(technomancer_mob), slot_r_store)
technomancer_mob.equip_to_slot_or_del(new /obj/item/weapon/technomancer_catalog(technomancer_mob), slot_l_store)
technomancer_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(technomancer_mob), slot_l_ear)
technomancer_mob.equip_to_slot_or_del(new /obj/item/weapon/technomancer_core(technomancer_mob), slot_back)
var/obj/item/weapon/technomancer_core/core = new /obj/item/weapon/technomancer_core(technomancer_mob)
technomancer_mob.equip_to_slot_or_del(core, slot_back)
technomancer_belongings.Add(core) // So it can be Tracked.
technomancer_mob.equip_to_slot_or_del(new /obj/item/device/flashlight(technomancer_mob), slot_belt)
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(technomancer_mob), slot_shoes)
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/head/technomancer/master(technomancer_mob), slot_head)
@@ -59,7 +61,9 @@ var/datum/antagonist/technomancer/technomancers
technomancer_mob.equip_to_slot_or_del(catalog, slot_l_store)
technomancer_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(technomancer_mob), slot_l_ear)
technomancer_mob.equip_to_slot_or_del(new /obj/item/weapon/technomancer_core(technomancer_mob), slot_back)
var/obj/item/weapon/technomancer_core/core = new /obj/item/weapon/technomancer_core(technomancer_mob)
technomancer_mob.equip_to_slot_or_del(core, slot_back)
technomancer_belongings.Add(core) // So it can be Tracked.
technomancer_mob.equip_to_slot_or_del(new /obj/item/device/flashlight(technomancer_mob), slot_belt)
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(technomancer_mob), slot_shoes)
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/head/technomancer/apprentice(technomancer_mob), slot_head)

View File

@@ -247,7 +247,8 @@ var/list/all_technomancer_presets = typesof(/datum/technomancer/presets) - /datu
if(desired_object.cost <= budget)
budget -= desired_object.cost
H << "<span class='notice'>You have just bought \a [desired_object.name].</span>"
new desired_object.obj_path(get_turf(H))
var/obj/O = new desired_object.obj_path(get_turf(H))
technomancer_belongings.Add(O) // Used for the Track spell.
else //Can't afford.
H << "<span class='danger'>You can't afford that!</span>"

View File

@@ -83,6 +83,9 @@
energy_delta = energy - old_energy
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.
wearer.adjust_instability(20)
/obj/item/weapon/technomancer_core/proc/regenerate()
energy = min(max(energy + regen_rate, 0), max_energy)

View File

@@ -0,0 +1,11 @@
/datum/technomancer/consumable/freedom_implant
name = "Freedom Implant"
desc = "A hidden implant which allows one to escape bindings such as handcuffs."
cost = 50
obj_path = /obj/item/weapon/storage/box/syndie_kit/imp_freedom
/datum/technomancer/consumable/explosive_implant
name = "Explosive Implant"
desc = "A hidden implant which will explode if it hears a passphrase."
cost = 150
obj_path = /obj/item/weapon/storage/box/syndie_kit/imp_explosive

View File

@@ -205,6 +205,11 @@
var/radius = max(get_dist(H, src), 1)
// People next to the source take a third of the instability. Further distance decreases the amount absorbed.
var/outgoing_instability = (instability / 3) * ( 1 / (radius**2) )
// Energy armor like from the AMI RIG can protect from this.
var/armor = getarmor(null, "energy")
var/armor_factor = abs( (armor - 100) / 100)
outgoing_instability = outgoing_instability * armor_factor
H.adjust_instability(outgoing_instability)
set_light(distance, distance, l_color = "#C26DDE")

View File

@@ -13,7 +13,7 @@
icon_state = "generic"
cast_methods = null
aspect = ASPECT_FROST
glow_color = "#FF6A00"
glow_color = "#00B3FF"
/obj/item/weapon/spell/aura/frost/process()
if(!pay_energy(100))

View File

@@ -46,10 +46,19 @@
/obj/item/weapon/spell/illusion/on_use_cast(mob/user)
if(illusion)
var/what_to_say = input(user, "What do you want \the [illusion] to say?","Illusion Speak") as null|text
what_to_say = sanitize(what_to_say)
if(what_to_say)
illusion.say(what_to_say)
var/choice = alert(user, "Would you like to have \the [illusion] speak, or do an emote?", "Illusion", "Speak","Emote","Cancel")
switch(choice)
if("Cancel")
return
if("Speak")
var/what_to_say = input(user, "What do you want \the [illusion] to say?","Illusion Speak") as null|text
//what_to_say = sanitize(what_to_say) //Sanitize occurs inside say() already.
if(what_to_say)
illusion.say(what_to_say)
if("Emote")
var/what_to_emote = input(user, "What do you want \the [illusion] to do?","Illusion Emote") as null|text
if(what_to_emote)
illusion.emote(what_to_emote)
/obj/item/weapon/spell/illusion/Destroy()
if(illusion)

View File

@@ -33,15 +33,24 @@
AM.forceMove(get_turf(src))
..()
/obj/effect/phase_shift/relaymove(mob/user as mob)
if(user.stat)
return
user << "<span class='notice'>You step out of the rift.</span>"
user.forceMove(get_turf(src))
qdel(src)
/obj/item/weapon/spell/phase_shift/on_use_cast(mob/user)
if(isturf(user.loc)) //Check if we're not already in a rift.
var/obj/effect/phase_shift/PS = new(get_turf(user))
visible_message("<span class='warning'>[user] vanishes into a pink rift!</span>")
user << "<span class='info'>You create an unstable rift, and go through it. Be sure to not stay too long.</span>"
user.forceMove(PS)
else //We're already in a rift, time to get out.
if(istype(loc, /obj/effect/phase_shift))
var/obj/effect/phase_shift/PS = user.loc
qdel(PS) //Ejecting is handled in Destory()
visible_message("<span class='warning'>[user] reappears from the rift as it collapses.</span>")
if(pay_energy(2000))
var/obj/effect/phase_shift/PS = new(get_turf(user))
visible_message("<span class='warning'>[user] vanishes into a pink rift!</span>")
user << "<span class='info'>You create an unstable rift, and go through it. Be sure to not stay too long.</span>"
user.forceMove(PS)
adjust_instability(10)
qdel(src)
else
user << "<span class='warning'>You don't have enough energy to make a rift!</span>"
else //We're already in a rift or something like a closet.
user << "<span class='warning'>Making a rift here would probably be a bad idea.</span>"

View File

@@ -58,9 +58,9 @@ var/list/technomancer_belongings = list()
icon_state = "track_unknown"
else
set_dir(get_dir(src,tracked))
set_dir(get_dir(src,get_turf(tracked)))
switch(get_dist(src,tracked))
switch(get_dist(src,get_turf(tracked)))
if(0)
icon_state = "track_direct"
if(1 to 8)