mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-26 10:03:45 +00:00
Merge pull request #2229 from Neerti/7/28/2016_more_technomancer
Technomancer Additions Yet Again
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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)
|
||||
|
||||
11
code/game/gamemodes/technomancer/devices/implants.dm
Normal file
11
code/game/gamemodes/technomancer/devices/implants.dm
Normal 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
|
||||
@@ -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")
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user