Skip to content

Commit

Permalink
force shield nerf (RIP)
Browse files Browse the repository at this point in the history
  • Loading branch information
emily committed Feb 7, 2021
1 parent 66ad7af commit 2df9330
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 19 deletions.
53 changes: 35 additions & 18 deletions code/mob/living/silicon/robot.dm
Expand Up @@ -749,19 +749,18 @@

blob_act(var/power)
if (!isdead(src))
var/Pshield = 0
for (var/obj/item/roboupgrade/physshield/R in src.contents)
if (R.activated) Pshield = 1
if (Pshield)
boutput(src, "<span class='notice'>Your force shield absorbs the blob's attack!</span>")
src.cell.use(power * 30)
playsound(src.loc, "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
else
boutput(src, "<span class='alert'>The blob attacks you!</span>")
var/damage = 6 + power / 5
for (var/obj/item/parts/robot_parts/RP in src.contents)
if (RP.ropart_take_damage(damage,damage/2) == 1) src.compborg_lose_limb(RP)
// maybe the blob is a little acidic?? idk
if (R.activated)
boutput(src, "<span class='notice'>Your force shield absorbs the blob's attack!</span>")
src.cell.use(power * 50 * R.overheat())
playsound(src.loc, "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
src.update_bodypart()
return 1
boutput(src, "<span class='alert'>The blob attacks you!</span>")
var/damage = 6 + power / 5
for (var/obj/item/parts/robot_parts/RP in src.contents)
if (RP.ropart_take_damage(damage,damage/2) == 1) src.compborg_lose_limb(RP)
// maybe the blob is a little acidic?? idk
src.update_bodypart()
return 1
return 0
Expand Down Expand Up @@ -814,10 +813,13 @@
var/fire_protect = 0
for (var/obj/item/roboupgrade/R in src.contents)
if (istype(R, /obj/item/roboupgrade/physshield) && R.activated)
var/obj/item/roboupgrade/physshield/P = R
src.cell.use((4-severity) * 100 * P.overheat())
boutput(src, "<span class='notice'>Your force shield absorbs some of the blast!</span>")
playsound(src.loc, "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
severity++
if (istype(R, /obj/item/roboupgrade/fireshield) && R.activated)
src.cell.use((4-severity) * 50)
boutput(src, "<span class='notice'>Your fire shield absorbs some of the blast!</span>")
playsound(src.loc, "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
fire_protect = 1
Expand Down Expand Up @@ -877,14 +879,22 @@

for (var/obj/item/roboupgrade/R in src.contents)
if (istype(R, /obj/item/roboupgrade/physshield) && R.activated && dmgtype == 0)
shoot_reflected_to_sender(P, src)
src.cell.use(damage * 30)
boutput(src, "<span class='notice'>Your force shield deflects the shot!</span>")
playsound(src.loc, "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
return
var/obj/item/roboupgrade/physshield/phys = R
if(phys.overheat_level < phys.max_overheat)
shoot_reflected_to_sender(P, src)
src.cell.use(damage * 50 * phys.overheat())
boutput(src, "<span class='notice'>Your force shield deflects the shot!</span>")
playsound(src.loc, "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
return
else
boutput(src, "<span class='notice'>Your force shield absorbs some of the shot!</span>")
src.cell.use(damage * 50 * phys.overheat())
playsound(src.loc, "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
damage = damage/2
return
if (istype(R, /obj/item/roboupgrade/fireshield) && R.activated && dmgtype == 1)
shoot_reflected_to_sender(P, src)
src.cell.use(damage * 20)
src.cell.use(damage * 25)
boutput(src, "<span class='notice'>Your fire shield deflects the shot!</span>")
playsound(src.loc, "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
return
Expand Down Expand Up @@ -962,13 +972,15 @@
if (istype(R, /obj/item/roboupgrade/fireshield) && R.activated) Fshield = 1

if (Pshield)
src.cell.use(200)
boutput(src, "<span class='notice'>Your force shield absorbs the impact!</span>")
playsound(src.loc, "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
else
for (var/obj/item/parts/robot_parts/RP in src.contents)
if (RP.ropart_take_damage(35,0) == 1) src.compborg_lose_limb(RP)
if ((O.icon_state == "flaming"))
if (Fshield)
src.cell.use(100)
boutput(src, "<span class='notice'>Your fire shield absorbs the heat!</span>")
playsound(src.loc, "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
else
Expand Down Expand Up @@ -2773,9 +2785,12 @@
return 0
for (var/obj/item/roboupgrade/R in src.upgrades) //if 50% of the damage is less than 4, ignore it, elsewise take 50% damage
if (istype(R, /obj/item/roboupgrade/fireshield) && R.activated)
src.cell.use(burn * 25)
burn = ((burn * 0.5) < 4) ? 0 : (burn * 0.5)
playsound(get_turf(src), "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
if (istype(R, /obj/item/roboupgrade/physshield) && R.activated)
var/obj/item/roboupgrade/physshield/P = R
src.cell.use(brute * 50 * P.overheat())
brute = ((brute * 0.5) < 4) ? 0 : (brute * 0.5)
playsound(get_turf(src), "sound/impact_sounds/Energy_Hit_1.ogg", 40, 1)
if (burn == 0 && brute == 0)
Expand Down Expand Up @@ -2831,6 +2846,7 @@
if (target_part.ropart_take_damage(brute, burn) == 1)
src.compborg_lose_limb(target_part)
health_update_queue |= src
src.update_appearance()
return 1

HealDamage(zone, brute, burn)
Expand Down Expand Up @@ -2879,6 +2895,7 @@
return 0
target_part.ropart_mend_damage(brute, burn)
health_update_queue |= src
src.update_appearance()
return 1

get_brute_damage()
Expand Down
14 changes: 13 additions & 1 deletion code/modules/robotics/robot/upgrade/force_shield.dm
Expand Up @@ -2,5 +2,17 @@
name = "cyborg force shield upgrade"
desc = "A force field generator that protects a cyborg from physical harm."
icon_state = "up-Pshield"
drainrate = 100
drainrate = 250
borg_overlay = "up-pshield"
var/overheat_level = 0
var/max_overheat = 5

//TODO: Convert this to a status on the cyborg with a switch(overheat_level) on icon state so they can see when they're overheating
// It'd work a lot better but fuuuuuuuuuuuuuuck I wanna be done looking at cyborg code, jesus

proc/overheat()
SPAWN_DBG(COMBAT_CLICK_DELAY * 2)
overheat_level--
overheat_level = max(0,overheat_level)
overheat_level++
return min(max_overheat,overheat_level)

0 comments on commit 2df9330

Please sign in to comment.