From 1d30a7193211a1d9809b28b891c40524fa7270e2 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Thu, 17 Nov 2016 20:11:21 -0600 Subject: [PATCH] Technomancer changes --- .../technomancer/assistance/assistance.dm | 2 +- code/game/gamemodes/technomancer/catalog.dm | 22 +++++----- code/game/gamemodes/technomancer/core_obj.dm | 8 +++- .../technomancer/devices/shield_armor.dm | 4 ++ .../game/gamemodes/technomancer/spell_objs.dm | 5 ++- .../technomancer/spells/aura/aura.dm | 2 +- .../technomancer/spells/aura/biomed_aura.dm | 6 +-- .../technomancer/spells/aura/fire_aura.dm | 8 ++-- .../technomancer/spells/aura/frost_aura.dm | 4 +- .../technomancer/spells/aura/shock_aura.dm | 2 +- .../gamemodes/technomancer/spells/blink.dm | 43 ++++++++++++------- .../technomancer/spells/condensation.dm | 2 +- .../gamemodes/technomancer/spells/control.dm | 6 +-- .../gamemodes/technomancer/spells/illusion.dm | 6 +-- .../technomancer/spells/insert/mend_organs.dm | 2 + .../technomancer/spells/phase_shift.dm | 7 +-- .../spells/projectile/ionic_bolt.dm | 20 +++++++++ .../spells/projectile/overload.dm | 16 ++++++- .../spells/projectile/projectile.dm | 8 +++- .../technomancer/spells/resurrect.dm | 5 ++- .../spells/summon/summon_creature.dm | 10 +++++ 21 files changed, 132 insertions(+), 56 deletions(-) create mode 100644 code/game/gamemodes/technomancer/spells/projectile/ionic_bolt.dm diff --git a/code/game/gamemodes/technomancer/assistance/assistance.dm b/code/game/gamemodes/technomancer/assistance/assistance.dm index 8779824896b..3cdf7014ade 100644 --- a/code/game/gamemodes/technomancer/assistance/assistance.dm +++ b/code/game/gamemodes/technomancer/assistance/assistance.dm @@ -78,7 +78,7 @@ H << "You are the Technomancer's apprentice! Your goal is to assist them in their mission at the [station_name()]." H << "Your service has not gone unrewarded, however. Studying under them, you have learned how to use a Manipulation Core \ - of your own. You also have a Catelog, to purchase your own functions and equipment as you see fit." + of your own. You also have a catalog, to purchase your own functions and equipment as you see fit." H << "It would be wise to speak to your master, and learn what their plans are for today." spawn(1) diff --git a/code/game/gamemodes/technomancer/catalog.dm b/code/game/gamemodes/technomancer/catalog.dm index 87ece90f8b7..25f824d2b38 100644 --- a/code/game/gamemodes/technomancer/catalog.dm +++ b/code/game/gamemodes/technomancer/catalog.dm @@ -42,33 +42,33 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - var/show_scepter_text = 0 /obj/item/weapon/technomancer_catalog/apprentice - name = "apprentice's catelog" + name = "apprentice's catalog" budget = 700 max_budget = 700 /obj/item/weapon/technomancer_catalog/master //for badmins, I suppose - name = "master's catelog" + name = "master's catalog" budget = 2000 max_budget = 2000 // Proc: bind_to_owner() // Parameters: 1 (new_owner - mob that the book is trying to bind to) -// Description: Links the catelog to hopefully the technomancer, so that only they can access it. +// 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)) owner = new_owner // Proc: New() // Parameters: 0 -// Description: Sets up the catelog, as shown below. +// Description: Sets up the catalog, as shown below. /obj/item/weapon/technomancer_catalog/New() ..() set_up() // Proc: set_up() // Parameters: 0 -// Description: Instantiates all the catelog datums for everything that can be bought. +// Description: Instantiates all the catalog datums for everything that can be bought. /obj/item/weapon/technomancer_catalog/proc/set_up() if(!spell_instances.len) for(var/S in all_technomancer_spells) @@ -100,7 +100,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - return "[category]" // Proc: attack_self() -// Parameters: 1 (user - the mob clicking on the catelog) +// Parameters: 1 (user - the mob clicking on the catalog) // Description: Shows an HTML window, to buy equipment and spells, if the user is the legitimate owner. Otherwise it cannot be used. /obj/item/weapon/technomancer_catalog/attack_self(mob/user) if(!user) @@ -207,12 +207,12 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - dat += "You currently have a budget of [budget]/[max_budget].

" dat += "
" dat += "

Manipulation Core Owner's Manual


" - dat += "This brief entry in your catelog will try to explain what everything does. For starters, the thing you're \ + dat += "This brief entry in your catalog will try to explain what everything does. For starters, the thing you're \ probably wearing on your back is known as a Manipulation Core, or just a 'Core'. It allows you to do amazing \ things with almost no effort, depending on what functions you've purchased for it. Don't lose your core!
" dat += "
" dat += "There are a few things you need to keep in mind as you use your Core to manipulate the universe. The core \ - requires a special type of energy, that is referred to as just 'Energy' in the catelog. All cores generate \ + requires a special type of energy, that is referred to as just 'Energy' in the catalog. All cores generate \ their own energy, some more than others. Most functions require energy be spent in order to work, so make sure not \ to run out in a critical moment. Besides waiting for your Core to recharge, you can buy certain functions which \ do something to generate energy.
" @@ -242,13 +242,13 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - dat += "You can refund functions, equipment items, and assistance items, so long as you are in your base. \ Once you leave, you can't refund anything, however you can still buy things if you still have points remaining. \ To refund functions, just click the 'Refund Functions' button on the top, when in the functions tabs. \ - For equipment items, you need to hit it against the catelog.
" + For equipment items, you need to hit it against the catalog.
" dat += "
" dat += "Your blue robes and hat are both stylish, and somewhat protective against hostile energies, which includes \ EXTERNAL instability sources (like Glow), and mundane electricity. If you're looking for protection against other \ things, it's suggested you purchase or otherwise obtain armor.
" dat += "
" - dat += "There are a few terms you may not understand in the catelog, so this will try to explain them.
" + dat += "There are a few terms you may not understand in the catalog, so this will try to explain them.
" dat += "A function can be thought of as a 'spell', that you use by holding in your hands and trying to use it on \ a target of your choice.
" dat += "Some functions can have their abilities enhanced by a special rod called the Scepter of Enhancement. \ @@ -265,7 +265,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - // Proc: Topic() // Parameters: 2 (href - don't know, href_list - the choice that the person using the interface above clicked on.) -// Description: Acts upon clicks on links for the catelog, if they are the rightful owner. +// Description: Acts upon clicks on links for the catalog, if they are the rightful owner. /obj/item/weapon/technomancer_catalog/Topic(href, href_list) ..() var/mob/living/carbon/human/H = usr diff --git a/code/game/gamemodes/technomancer/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm index 491f9c4c3c3..079db9a90be 100644 --- a/code/game/gamemodes/technomancer/core_obj.dm +++ b/code/game/gamemodes/technomancer/core_obj.dm @@ -23,6 +23,7 @@ var/instability_modifier = 0.8 // Multiplier on how much instability is added. var/energy_cost_modifier = 1.0 // Multiplier on how much spells will cost. var/spell_power_modifier = 1.0 // Multiplier on how strong spells are. + var/cooldown_modifier = 1.0 // Multiplier on cooldowns for spells. var/list/spells = list() // This contains the buttons used to make spells in the user's hand. var/list/appearances = list( // Assoc list containing possible icon_states that the wiz can change the core to. "default" = "technomancer_core", @@ -118,7 +119,11 @@ var/mob/living/L = A if(L.stat == DEAD) summoned_mobs -= L - qdel(L) + spawn(1) + L.visible_message("\The [L] begins to fade away...") + animate(L, alpha = 255, alpha = 0, time = 30) // Makes them fade into nothingness. + sleep(30) + qdel(L) // Deletes all the summons and wards from the core, so that Destroy() won't have issues. /obj/item/weapon/technomancer_core/proc/dismiss_all_summons() @@ -248,6 +253,7 @@ regen_rate = 70 //100 seconds to full slowdown = -1 instability_modifier = 0.9 + cooldown_modifier = 0.9 //Big batteries but slow regen, buying energy spells is highly recommended. /obj/item/weapon/technomancer_core/bulky diff --git a/code/game/gamemodes/technomancer/devices/shield_armor.dm b/code/game/gamemodes/technomancer/devices/shield_armor.dm index 3e4ddbce1f7..bacb2c60ed2 100644 --- a/code/game/gamemodes/technomancer/devices/shield_armor.dm +++ b/code/game/gamemodes/technomancer/devices/shield_armor.dm @@ -60,6 +60,10 @@ var/obj/item/projectile/P = damage_source P.sharp = 0 P.edge = 0 + P.embed_chance = 0 + if(P.agony) + var/agony_blocked = P.agony * (modified_block_percentage / 100) + P.agony -= agony_blocked P.damage = P.damage - damage_blocked user.visible_message("\The [user]'s [src] absorbs [attack_text]!") diff --git a/code/game/gamemodes/technomancer/spell_objs.dm b/code/game/gamemodes/technomancer/spell_objs.dm index d4f7b4b7d5b..fb22001d309 100644 --- a/code/game/gamemodes/technomancer/spell_objs.dm +++ b/code/game/gamemodes/technomancer/spell_objs.dm @@ -230,8 +230,9 @@ else if(cast_methods & CAST_RANGED) //Try to use a ranged method if a melee one doesn't exist. on_ranged_cast(target, user) if(cooldown) - user.setClickCooldown(cooldown) - flick("cooldown_[cooldown]",src) + var/effective_cooldown = round(cooldown * core.cooldown_modifier, 5) + user.setClickCooldown(effective_cooldown) + flick("cooldown_[effective_cooldown]",src) // Proc: place_spell_in_hand() // Parameters: 1 (path - the type path for the spell that is desired.) diff --git a/code/game/gamemodes/technomancer/spells/aura/aura.dm b/code/game/gamemodes/technomancer/spells/aura/aura.dm index a265507091d..23e45a2669e 100644 --- a/code/game/gamemodes/technomancer/spells/aura/aura.dm +++ b/code/game/gamemodes/technomancer/spells/aura/aura.dm @@ -8,7 +8,7 @@ /obj/item/weapon/spell/aura/New() ..() - set_light(7, calculate_spell_power(4), l_color = glow_color) + set_light(calculate_spell_power(7), calculate_spell_power(4), l_color = glow_color) processing_objects |= src log_and_message_admins("has started casting [src].") diff --git a/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm b/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm index ec73fb10113..3daddc12d49 100644 --- a/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm +++ b/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm @@ -11,7 +11,7 @@ name = "restoration aura" desc = "Allows everyone, or just your allies, to slowly regenerate." icon_state = "generic" - cast_methods = null + cast_methods = CAST_USE aspect = ASPECT_BIOMED glow_color = "#33CC33" var/regen_tick = 0 @@ -31,8 +31,8 @@ else mobs_to_heal |= L // Heal everyone! for(var/mob/living/L in mobs_to_heal) - L.adjustBruteLoss(calculate_spell_power(-2)) - L.adjustFireLoss(calculate_spell_power(-2)) + L.adjustBruteLoss(calculate_spell_power(-5)) + L.adjustFireLoss(calculate_spell_power(-5)) adjust_instability(2) /obj/item/weapon/spell/aura/biomed/on_use_cast(mob/living/user) diff --git a/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm b/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm index 0cea17f7d9b..952fd5d43d2 100644 --- a/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm +++ b/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm @@ -22,14 +22,14 @@ qdel(src) var/list/nearby_things = range(calculate_spell_power(4),owner) - var/temp_change = calculate_spell_power(40) + var/temp_change = calculate_spell_power(80) var/temp_cap = calculate_spell_power(600) var/fire_power = calculate_spell_power(2) if(check_for_scepter()) - temp_change = calculate_spell_power(80) - temp_cap = calculate_spell_power(1000) - fire_power = calculate_spell_power(4) + temp_change *= 2 + temp_cap *= 2 + fire_power *= 2 for(var/mob/living/carbon/human/H in nearby_things) if(is_ally(H)) diff --git a/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm b/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm index 08986faa9aa..c2106d5aa33 100644 --- a/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm +++ b/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm @@ -22,11 +22,11 @@ qdel(src) var/list/nearby_mobs = range(calculate_spell_power(4),owner) - var/temp_change = calculate_spell_power(25) + var/temp_change = calculate_spell_power(40) var/temp_cap = 260 // Just above the damage threshold, for humans. Unathi are less fortunate. if(check_for_scepter()) - temp_change = calculate_spell_power(50) + temp_change *= 2 temp_cap = 200 for(var/mob/living/carbon/human/H in nearby_mobs) if(is_ally(H)) diff --git a/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm b/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm index 9cf8435de1b..0af246d69c1 100644 --- a/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm +++ b/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm @@ -17,7 +17,7 @@ glow_color = "#0000FF" //TODO /obj/item/weapon/spell/aura/shock/process() - if(!pay_energy(1000)) + if(!pay_energy(500)) qdel(src) var/list/nearby_mobs = range(calculate_spell_power(4),owner) var/power = calculate_spell_power(7) diff --git a/code/game/gamemodes/technomancer/spells/blink.dm b/code/game/gamemodes/technomancer/spells/blink.dm index a3ddae65175..74eba8adb97 100644 --- a/code/game/gamemodes/technomancer/spells/blink.dm +++ b/code/game/gamemodes/technomancer/spells/blink.dm @@ -1,7 +1,8 @@ /datum/technomancer/spell/blink name = "Blink" - desc = "Force the target to teleport a short distance away. This target could be anything from something lying on the ground, to someone trying to \ - fight you, or even yourself. Using this on someone next to you makes their potential distance after teleportation greater." + desc = "Force the target to teleport a short distance away. This target could be anything from something lying on the ground, \ + to someone trying to fight you, or even yourself. Using this on someone next to you makes their potential distance after \ + teleportation greater. Self casting has the greatest potential for distance, as well as the cheapest cost." enhancement_desc = "Blink distance is increased greatly." spell_power_desc = "Blink distance is scaled up with more spell power." cost = 50 @@ -54,25 +55,37 @@ if(!within_range(AM)) user << "\The [AM] is too far away to blink." return - if(check_for_scepter()) - safe_blink(AM, calculate_spell_power(6)) + if(pay_energy(400)) + if(check_for_scepter()) + safe_blink(AM, calculate_spell_power(6)) + else + safe_blink(AM, calculate_spell_power(3)) + adjust_instability(3) + log_and_message_admins("has blinked [AM] away.") else - safe_blink(AM, calculate_spell_power(3)) - log_and_message_admins("has blinked [AM] away.") + to_chat(user, "You need more energy to blink [AM] away!") /obj/item/weapon/spell/blink/on_use_cast(mob/user) - if(check_for_scepter()) - safe_blink(user, calculate_spell_power(10)) + if(pay_energy(200)) + if(check_for_scepter()) + safe_blink(user, calculate_spell_power(10)) + else + safe_blink(user, calculate_spell_power(6)) + adjust_instability(1) + log_and_message_admins("has blinked themselves away.") else - safe_blink(user, calculate_spell_power(6)) - log_and_message_admins("has blinked themselves away.") + to_chat(user, "You need more energy to blink yourself away!") /obj/item/weapon/spell/blink/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) if(istype(hit_atom, /atom/movable)) var/atom/movable/AM = hit_atom - visible_message("\The [user] reaches out towards \the [AM] with a glowing hand.") - if(check_for_scepter()) - safe_blink(AM, 10) + if(pay_energy(300)) + visible_message("\The [user] reaches out towards \the [AM] with a glowing hand.") + if(check_for_scepter()) + safe_blink(AM, 10) + else + safe_blink(AM, 6) + adjust_instability(2) + log_and_message_admins("has blinked [AM] away.") else - safe_blink(AM, 6) - log_and_message_admins("has blinked [AM] away.") \ No newline at end of file + to_chat(user, "You need more energy to blink [AM] away!") \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/condensation.dm b/code/game/gamemodes/technomancer/spells/condensation.dm index f4c7be60ffb..c02e1c1ac54 100644 --- a/code/game/gamemodes/technomancer/spells/condensation.dm +++ b/code/game/gamemodes/technomancer/spells/condensation.dm @@ -30,7 +30,7 @@ W.set_color() W.set_up(desired_turf) flick(initial(icon_state),W) // Otherwise pooling causes the animation to stay stuck at the end. - log_and_message_admins("has wetted the floor with [src] at [T.x],[T.y],[T.z].") + log_and_message_admins("has wetted the floor with [src] at [T.x],[T.y],[T.z].") else if(hit_atom.reagents && !ismob(hit_atom)) hit_atom.reagents.add_reagent(id = "water", amount = 60, data = null, safety = 0) adjust_instability(5) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/control.dm b/code/game/gamemodes/technomancer/spells/control.dm index 7ff42299b89..8b30eb0f14a 100644 --- a/code/game/gamemodes/technomancer/spells/control.dm +++ b/code/game/gamemodes/technomancer/spells/control.dm @@ -133,7 +133,7 @@ if(L.client) user << "\The [L] seems to resist you!" return 0 - if(pay_energy(1000)) + if(pay_energy(500)) select(L) user << "\The [L] is now under your (limited) control." else //Deselect them @@ -144,7 +144,7 @@ if(!controlled_mobs.len) user << "You have no entities under your control to command." return 0 - if(pay_energy(50 * controlled_mobs.len)) + if(pay_energy(25 * controlled_mobs.len)) attack_all(L) log_and_message_admins("has commanded their army of [controlled_mobs.len] to attack [L].") user << "You command your [controlled_mobs.len > 1 ? "entities" : "[controlled_mobs[1]]"] to \ @@ -158,7 +158,7 @@ if(!controlled_mobs.len) user << "You have no entities under your control to command." return 0 - if(pay_energy(50 * controlled_mobs.len)) + if(pay_energy(10 * controlled_mobs.len)) move_all(T) adjust_instability(controlled_mobs.len) user << "You command your [controlled_mobs.len > 1 ? "entities" : "[controlled_mobs[1]]"] to move \ diff --git a/code/game/gamemodes/technomancer/spells/illusion.dm b/code/game/gamemodes/technomancer/spells/illusion.dm index 9667df1db46..12f04db48c2 100644 --- a/code/game/gamemodes/technomancer/spells/illusion.dm +++ b/code/game/gamemodes/technomancer/spells/illusion.dm @@ -19,7 +19,7 @@ /obj/item/weapon/spell/illusion/on_ranged_cast(atom/hit_atom, mob/user) if(istype(hit_atom, /atom/movable)) var/atom/movable/AM = hit_atom - if(pay_energy(500)) + if(pay_energy(100)) copied = AM update_icon() user << "You've copied \the [AM]'s appearance." @@ -30,7 +30,7 @@ if(!illusion) if(!copied) copied = user - if(pay_energy(1000)) // 4 + if(pay_energy(500)) illusion = new(T) illusion.copy_appearance(copied) if(ishuman(copied)) @@ -41,7 +41,7 @@ user << 'sound/effects/pop.ogg' return 1 else - if(pay_energy(300)) + if(pay_energy(100)) spawn(1) illusion.walk_loop(T) diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm b/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm index 98ef33168d0..4ac29658edb 100644 --- a/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm +++ b/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm @@ -50,5 +50,7 @@ H.restore_blood() // Fix bloodloss + H.adjustBruteLoss(-heal_power) + sleep(1 SECOND) on_expire() \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/phase_shift.dm b/code/game/gamemodes/technomancer/spells/phase_shift.dm index e0a2bf39572..a79dfb7c37a 100644 --- a/code/game/gamemodes/technomancer/spells/phase_shift.dm +++ b/code/game/gamemodes/technomancer/spells/phase_shift.dm @@ -1,14 +1,15 @@ /datum/technomancer/spell/phase_shift name = "Phase Shift" - desc = "Hides you in the safest possible place, where no harm can come to you. Unfortunately you can only stay inside for a few moments before \ - draining your powercell." + desc = "Hides you in the safest possible place, where no harm can come to you. Unfortunately, a prolonged stay inside the \ + rift you create will afflict you with instability." cost = 50 obj_path = /obj/item/weapon/spell/phase_shift category = DEFENSIVE_SPELLS /obj/item/weapon/spell/phase_shift name = "phase shift" - desc = "Allows you to dodge your untimely fate by shifting your location somewhere else, so long as you can sustain the energy to do so." + desc = "Allows you to dodge your untimely fate by shifting your location somewhere else, so long as you can survive inside the \ + rift." cast_methods = CAST_USE aspect = ASPECT_TELE diff --git a/code/game/gamemodes/technomancer/spells/projectile/ionic_bolt.dm b/code/game/gamemodes/technomancer/spells/projectile/ionic_bolt.dm new file mode 100644 index 00000000000..68070d15c1e --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/projectile/ionic_bolt.dm @@ -0,0 +1,20 @@ +/datum/technomancer/spell/ionic_bolt + name = "Ionic Bolt" + desc = "Shoots a bolt of ion energy at the target. If it hits something, it will generally drain energy, corrupt electronics, \ + or otherwise ruin complex machinery." + cost = 100 + obj_path = /obj/item/weapon/spell/projectile/ionic_bolt + category = OFFENSIVE_SPELLS + +/obj/item/weapon/spell/projectile/ionic_bolt + name = "ionic bolt" + icon_state = "ionic bolt" + desc = "For those pesky security units." + cast_methods = CAST_RANGED + aspect = ASPECT_EMP + spell_projectile = /obj/item/projectile/ion + energy_cost_per_shot = 500 + instability_per_shot = 6 + cooldown = 10 + pre_shot_delay = 0 + fire_sound = 'sound/effects/supermatter.ogg' \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/projectile/overload.dm b/code/game/gamemodes/technomancer/spells/projectile/overload.dm index 94ff7cf4b47..010bfd2bffb 100644 --- a/code/game/gamemodes/technomancer/spells/projectile/overload.dm +++ b/code/game/gamemodes/technomancer/spells/projectile/overload.dm @@ -3,6 +3,7 @@ desc = "Fires a bolt of highly unstable energy, that does damaged equal to 0.3% of the technomancer's current reserve of energy. \ This energy pierces all known armor. Energy cost is equal to 10% of maximum core charge." enhancement_desc = "Will do damage equal to 0.4% of current energy." + spell_power_desc = "Increases damage dealt, up to a cap of 80 damage per shot." cost = 100 obj_path = /obj/item/weapon/spell/projectile/overload category = OFFENSIVE_SPELLS @@ -26,9 +27,19 @@ damage_type = BURN armor_penetration = 100 +/obj/item/weapon/spell/projectile/overload/make_projectile(obj/item/projectile/projectile_type, mob/living/user) + var/obj/item/projectile/overload/P = new projectile_type(get_turf(user)) + var/energy_before_firing = core.energy + if(check_for_scepter()) + P.damage = round(energy_before_firing * 0.004) // .4% of their current energy pool. + else + P.damage = round(energy_before_firing * 0.003) // .3% of their current energy pool. + P.damage = min(calculate_spell_power(P.damage), 80) + return P + /obj/item/weapon/spell/projectile/overload/on_ranged_cast(atom/hit_atom, mob/living/user) energy_cost_per_shot = round(core.max_energy * 0.10) - var/energy_before_firing = core.energy +/* var/energy_before_firing = core.energy if(set_up(hit_atom, user)) var/obj/item/projectile/overload/P = new spell_projectile(get_turf(user)) P.launch(hit_atom) @@ -37,4 +48,5 @@ else P.damage = round(energy_before_firing * 0.003) // .3% of their current energy pool. adjust_instability(instability_per_shot) - return 1 \ No newline at end of file + return 1 +*/ \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/projectile/projectile.dm b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm index 5ba88cee20c..544213f957c 100644 --- a/code/game/gamemodes/technomancer/spells/projectile/projectile.dm +++ b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm @@ -11,8 +11,7 @@ /obj/item/weapon/spell/projectile/on_ranged_cast(atom/hit_atom, mob/living/user) if(set_up(hit_atom, user)) - var/obj/item/projectile/new_projectile = new spell_projectile(get_turf(user)) - new_projectile.damage = calculate_spell_power(new_projectile.damage) + var/obj/item/projectile/new_projectile = make_projectile(spell_projectile, user) new_projectile.launch(hit_atom) log_and_message_admins("has casted [src] at \the [hit_atom].") if(fire_sound) @@ -21,6 +20,11 @@ return 1 return 0 +/obj/item/weapon/spell/projectile/proc/make_projectile(obj/item/projectile/projectile_type, mob/living/user) + var/obj/item/projectile/P = new projectile_type(get_turf(user)) + P.damage = calculate_spell_power(P.damage) + return P + /obj/item/weapon/spell/projectile/proc/set_up(atom/hit_atom, mob/living/user) if(spell_projectile) if(pay_energy(energy_cost_per_shot)) diff --git a/code/game/gamemodes/technomancer/spells/resurrect.dm b/code/game/gamemodes/technomancer/spells/resurrect.dm index a652239721b..c56df4f26e2 100644 --- a/code/game/gamemodes/technomancer/spells/resurrect.dm +++ b/code/game/gamemodes/technomancer/spells/resurrect.dm @@ -37,7 +37,7 @@ dead_mob_list -= SM living_mob_list += SM SM.icon_state = SM.icon_living - adjust_instability(30) + adjust_instability(15) else if(ishuman(L)) var/mob/living/carbon/human/H = L @@ -49,6 +49,9 @@ (Verbs -> Ghost -> Re-enter corpse)" break + H.adjustBruteLoss(-40) + H.adjustFireLoss(-40) + sleep(10 SECONDS) if(H.client) L.stat = CONSCIOUS //Note that if whatever killed them in the first place wasn't fixed, they're likely to die again. diff --git a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm index ea7d426c4b8..e60d8e8d3ab 100644 --- a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm +++ b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm @@ -50,6 +50,16 @@ summoned.health = calculate_spell_power(summoned.health) summoned.melee_damage_lower = calculate_spell_power(summoned.melee_damage_lower) summoned.melee_damage_upper = calculate_spell_power(summoned.melee_damage_upper) + // This makes the summon slower, so the crew has a chance to flee from massive monsters. + summoned.move_to_delay = calculate_spell_power(round(summoned.move_to_delay)) + + var/new_size = calculate_spell_power(1) + if(new_size != 1) + var/matrix/M = matrix() + M.Scale(new_size) + M.Translate(0, 16*(new_size-1)) + summoned.transform = M + // Now we hurt their new pal, because being forcefully abducted by teleportation can't be healthy. summoned.health = round(summoned.maxHealth * 0.7) \ No newline at end of file