Adds an Esword subtype that wrecks synthetics.

Ports /tg/'s esword and double esword sprites, both item and inhands.
Hivebot isSynthetic() now returns true.
This commit is contained in:
Neerti
2017-10-13 02:17:27 -04:00
parent 250b62e312
commit 0e57b66f6a
5 changed files with 58 additions and 3 deletions

View File

@@ -122,6 +122,8 @@
sharp = 1 sharp = 1
edge = 1 edge = 1
var/blade_color var/blade_color
var/random_color = TRUE
var/active_state = "sword"
/obj/item/weapon/melee/energy/sword/dropped(var/mob/user) /obj/item/weapon/melee/energy/sword/dropped(var/mob/user)
..() ..()
@@ -129,8 +131,9 @@
deactivate(user) deactivate(user)
/obj/item/weapon/melee/energy/sword/New() /obj/item/weapon/melee/energy/sword/New()
blade_color = pick("red","blue","green","purple") if(random_color)
lcolor = blade_color blade_color = pick("red","blue","green","purple")
lcolor = blade_color
/obj/item/weapon/melee/energy/sword/green/New() /obj/item/weapon/melee/energy/sword/green/New()
blade_color = "green" blade_color = "green"
@@ -154,7 +157,7 @@
..() ..()
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
icon_state = "sword[blade_color]" icon_state = "[active_state][blade_color]"
/obj/item/weapon/melee/energy/sword/deactivate(mob/living/user) /obj/item/weapon/melee/energy/sword/deactivate(mob/living/user)
@@ -184,6 +187,55 @@
..() ..()
icon_state = "cutlass1" icon_state = "cutlass1"
/*
*Ionic Rapier
*/
/obj/item/weapon/melee/energy/sword/ionic_rapier
name = "ionic rapier"
desc = "Designed specifically for disrupting electronics at close range, it is extremely deadly against synthetics, but almost harmless to pure organic targets."
description_info = "This is a dangerous melee weapon that will deliver a moderately powerful electromagnetic pulse to whatever it strikes. \
Striking a lesser robotic entity will compel it to attack you, as well. It also does extra burn damage to robotic entities, but it does \
very little damage to purely organic targets."
icon_state = "ionic_rapier0"
random_color = FALSE
active_force = 5
active_throwforce = 3
active_embed_chance = 0
sharp = 1
edge = 1
armor_penetration = 0
flags = NOBLOODY
lrange = 2
lpower = 2
lcolor = "#0000FF"
active_state = "ionic_rapier"
/obj/item/weapon/melee/energy/sword/ionic_rapier/afterattack(var/atom/movable/AM, var/mob/living/user, var/proximity)
if(istype(AM, /obj) && proximity && active)
// EMP stuff.
var/obj/O = AM
O.emp_act(3) // A weaker severity is used because this has infinite uses.
playsound(get_turf(O), 'sound/effects/EMPulse.ogg', 100, 1)
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) // A lot of objects don't set click delay.
return ..()
/obj/item/weapon/melee/energy/sword/ionic_rapier/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
. = ..()
if(target.isSynthetic() && active)
// Do some extra damage. Not a whole lot more since emp_act() is pretty nasty on FBPs already.
target.emp_act(3) // A weaker severity is used because this has infinite uses.
playsound(get_turf(target), 'sound/effects/EMPulse.ogg', 100, 1)
target.adjustFireLoss(force * 3) // 15 Burn, for 20 total.
playsound(get_turf(target), 'sound/weapons/blade1.ogg', 100, 1)
// Make lesser robots really mad at us.
if(istype(target, /mob/living/simple_animal))
var/mob/living/simple_animal/SA = target
if(SA.intelligence_level == SA_ROBOTIC)
SA.taunt(user)
SA.adjustFireLoss(force * 6) // 30 Burn, for 50 total.
/* /*
*Energy Blade *Energy Blade
*/ */

View File

@@ -51,6 +51,9 @@
say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.") say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.")
say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.") say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.")
/mob/living/simple_animal/hostile/hivebot/isSynthetic()
return TRUE
// Subtypes. // Subtypes.
// Melee like the base type, but more fragile. // Melee like the base type, but more fragile.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 39 KiB