mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 02:57:48 +01:00
Buffs every guardian bar ranged. Chaos guardian is gone, Gaseous guardian replaces it. (#21420)
* pushing to save * the rest of the owl bar protection * makes that work * more plasma, agent B * spacemove * Apply suggestions from code review Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Farie82 <farie82@users.noreply.github.com> * efficency * Update code/game/gamemodes/miniantags/guardian/types/gaseous.dm Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com> * better name * Apply suggestions from code review Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * string * defines it --------- Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Farie82 <farie82@users.noreply.github.com> Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
This commit is contained in:
co-authored by
Luc
Farie82
SteelSlayer
Henri215
parent
5b0c5c9e95
commit
69d0dc758f
@@ -178,6 +178,9 @@
|
||||
ghostize()
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/Process_Spacemove(movement_dir = 0)
|
||||
return TRUE //Works better in zero G, and not useless in space
|
||||
|
||||
//Manifest, Recall, Communicate
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/proc/Manifest()
|
||||
@@ -328,8 +331,8 @@
|
||||
var/pickedtype = /mob/living/simple_animal/hostile/guardian/punch
|
||||
switch(guardian_type)
|
||||
|
||||
if("Chaos")
|
||||
pickedtype = /mob/living/simple_animal/hostile/guardian/fire
|
||||
if("Gaseous")
|
||||
pickedtype = /mob/living/simple_animal/hostile/guardian/gaseous
|
||||
|
||||
if("Standard")
|
||||
pickedtype = /mob/living/simple_animal/hostile/guardian/punch
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/mob/living/simple_animal/hostile/guardian/assassin
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 25
|
||||
damage_transfer = 0.6
|
||||
playstyle_string = "As an <b>Assassin</b> type you do medium damage and have moderate damage resistance, but can enter stealth, massively increasing the damage of your next attack and causing it to ignore armor. Stealth is broken when you attack or take damage."
|
||||
magic_fluff_string = "..And draw the Space Ninja, a lethal, invisible assassin."
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
/mob/living/simple_animal/hostile/guardian/fire
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
attack_sound = 'sound/items/welder.ogg'
|
||||
attacktext = "sears"
|
||||
damage_transfer = 0.8
|
||||
range = 10
|
||||
playstyle_string = "As a <b>Chaos</b> type, you have only light damage resistance, but will ignite any enemy you bump into. In addition, you can toggle modes to make your attacks teleport enemies or make them hallucinate."
|
||||
environment_smash = 1
|
||||
magic_fluff_string = "..And draw the Wizard, bringer of endless chaos!"
|
||||
tech_fluff_string = "Boot sequence complete. Crowd control modules activated. Holoparasite swarm online."
|
||||
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, ready to sow havoc at random."
|
||||
var/toggle = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/fire/Life(seconds, times_fired) //Dies if the summoner dies
|
||||
..()
|
||||
if(summoner)
|
||||
summoner.ExtinguishMob()
|
||||
summoner.adjust_fire_stacks(-20)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/fire/ToggleMode()
|
||||
if(toggle)
|
||||
to_chat(src, "<span class='notice'>You switch to dispersion mode, and will teleport victims away from your master.</span>")
|
||||
toggle = FALSE
|
||||
else
|
||||
to_chat(src, "<span class='notice'>You switch to deception mode, and will turn your victims against their allies.</span>")
|
||||
toggle = TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/fire/AttackingTarget()
|
||||
. = ..()
|
||||
if(toggle)
|
||||
if(. && iscarbon(target))
|
||||
new /obj/effect/hallucination/delusion(get_turf(target), target, icon, icon_state)
|
||||
else
|
||||
if(prob(45))
|
||||
if(ismovable(target))
|
||||
var/atom/movable/M = target
|
||||
if(!M.anchored && M != summoner)
|
||||
new /obj/effect/temp_visual/guardian/phase/out(get_turf(M))
|
||||
do_teleport(M, M, 10)
|
||||
new /obj/effect/temp_visual/guardian/phase/out(get_turf(M))
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj, oldloc)
|
||||
..()
|
||||
collision_ignite(AM)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/fire/Bumped(AM as mob|obj)
|
||||
..()
|
||||
collision_ignite(AM)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj)
|
||||
..()
|
||||
collision_ignite(AM)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/fire/proc/collision_ignite(AM as mob|obj)
|
||||
if(isliving(AM))
|
||||
var/mob/living/M = AM
|
||||
if(AM != summoner && M.fire_stacks < 7)
|
||||
M.fire_stacks = 7
|
||||
M.IgniteMob()
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj)
|
||||
..()
|
||||
collision_ignite(AM)
|
||||
@@ -1,6 +1,6 @@
|
||||
/mob/living/simple_animal/hostile/guardian/charger
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
ranged = TRUE //technically
|
||||
ranged_message = "charges"
|
||||
ranged_cooldown_time = 40
|
||||
|
||||
@@ -87,6 +87,7 @@
|
||||
stored_obj.forceMove(get_turf(loc))
|
||||
playsound(get_turf(src),'sound/effects/explosion2.ogg', 200, 1)
|
||||
user.ex_act(2)
|
||||
user.Stun(3 SECONDS)//A bomb went off in your hands. Actually lets people follow up with it if they bait someone, right now it is unreliable.
|
||||
qdel(src)
|
||||
|
||||
/obj/item/guardian_bomb/attackby(obj/item/W, mob/living/user)
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
//Gaseous
|
||||
/mob/living/simple_animal/hostile/guardian/gaseous
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
damage_transfer = 0.7
|
||||
range = 7
|
||||
playstyle_string = "As a <b>gaseous</b> type, you have only light damage resistance, but you can expel gas in an area. In addition, your punches cause sparks, and you make your summoner heat resistant."
|
||||
magic_fluff_string = "..And draw the Atmospheric Technician, flooding the area with gas!"
|
||||
tech_fluff_string = "Boot sequence complete. Atmospheric modules activated. Holoparasite swarm online."
|
||||
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of spewing out many gases."
|
||||
/// Moles of gas being expelled.
|
||||
var/moles_of_gas = null
|
||||
///Linda flag for the expelled gas because we need to use special flags for it that are not readable in game well.
|
||||
var/linda_flags = null
|
||||
/// Possible gases to expel, with how much moles they create.
|
||||
var/static/list/possible_gases = list(
|
||||
"Oxygen" = 50,
|
||||
"Nitrogen" = 750, //overpressurizing is hard!.
|
||||
"N2O" = 15,
|
||||
"CO2" = 50,
|
||||
"Plasma" = 5,
|
||||
"Agent B" = 5
|
||||
)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/gaseous/Initialize(mapload, mob/living/host)
|
||||
. = ..()
|
||||
if(!summoner)
|
||||
return
|
||||
ADD_TRAIT(summoner, TRAIT_RESISTHEAT, "guardian")
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/gaseous/AttackingTarget(atom/attacked_target)
|
||||
. = ..()
|
||||
if(!isliving(target))
|
||||
return
|
||||
do_sparks(1, TRUE, target)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/gaseous/Life(seconds, times_fired)
|
||||
. = ..()
|
||||
if(!moles_of_gas || loc == summoner)
|
||||
return
|
||||
var/turf/simulated/target_turf = get_turf(src)
|
||||
if(istype(target_turf))
|
||||
target_turf.atmos_spawn_air(linda_flags, moles_of_gas)
|
||||
target_turf.air_update_turf()
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/gaseous/ToggleMode()
|
||||
var/picked_gas = input("Select a gas to expel.", "Gas Producer") as null|anything in possible_gases
|
||||
if(!picked_gas)
|
||||
moles_of_gas = null
|
||||
to_chat(src, "<span class='notice'>You stopped expelling gas.</span>")
|
||||
return
|
||||
if(!picked_gas)
|
||||
return
|
||||
to_chat(src, "<span class='bolddanger'>You are now expelling [picked_gas].</span>")
|
||||
investigate_log("set their gas type to [picked_gas].", "atmos")
|
||||
moles_of_gas = possible_gases[picked_gas]
|
||||
switch(picked_gas)
|
||||
if("Oxygen")
|
||||
linda_flags = LINDA_SPAWN_OXYGEN | LINDA_SPAWN_20C
|
||||
if("Nitrogen")
|
||||
linda_flags = LINDA_SPAWN_NITROGEN | LINDA_SPAWN_20C
|
||||
if("N2O")
|
||||
linda_flags = LINDA_SPAWN_N2O | LINDA_SPAWN_20C
|
||||
if("CO2")
|
||||
linda_flags = LINDA_SPAWN_CO2 | LINDA_SPAWN_20C
|
||||
if("Plasma")
|
||||
linda_flags = LINDA_SPAWN_TOXINS | LINDA_SPAWN_20C
|
||||
if("Agent B")
|
||||
linda_flags = LINDA_SPAWN_AGENT_B | LINDA_SPAWN_20C
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/gaseous/experience_pressure_difference(pressure_difference, direction, pressure_resistance_prob_delta)
|
||||
. = ..()
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/gaseous/death(gibbed)
|
||||
if(summoner)
|
||||
REMOVE_TRAIT(summoner, TRAIT_RESISTHEAT, "guardian")
|
||||
return ..()
|
||||
@@ -1,18 +1,23 @@
|
||||
#define COMBAT 0
|
||||
#define HEALING 1
|
||||
#define SURGICAL 2
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/healer
|
||||
friendly = "heals"
|
||||
speed = 0
|
||||
damage_transfer = 0.7
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
playstyle_string = "As a <b>Support</b> type, you may toggle your basic attacks to a healing mode. In addition, Alt-Clicking on an adjacent mob will warp them to your bluespace beacon after a short delay."
|
||||
playstyle_string = "As a <b>Support</b> type, you may toggle your basic attacks to a healing mode, or a surgical mode. In addition, Alt-Clicking on an adjacent mob will warp them to your bluespace beacon after a short delay."
|
||||
magic_fluff_string = "..And draw the CMO, a potent force of life...and death."
|
||||
tech_fluff_string = "Boot sequence complete. Medical modules active. Bluespace modules activated. Holoparasite swarm online."
|
||||
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of mending wounds and travelling via bluespace."
|
||||
var/obj/effect/bluespace_beacon/beacon
|
||||
var/beacon_cooldown = 0
|
||||
var/default_beacon_cooldown = 300 SECONDS
|
||||
var/toggle = FALSE
|
||||
var/toggle = COMBAT
|
||||
var/heal_cooldown = 0
|
||||
var/surgical_cooldown = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/healer/sealhealer
|
||||
name = "Seal Sprit"
|
||||
@@ -42,45 +47,65 @@
|
||||
..()
|
||||
if(statpanel("Status"))
|
||||
if(beacon_cooldown >= world.time)
|
||||
stat(null, "Bluespace Beacon Cooldown Remaining: [max(round((beacon_cooldown - world.time)*0.1, 0.1), 0)] seconds")
|
||||
stat(null, "Bluespace Beacon Cooldown Remaining: [max(round((beacon_cooldown - world.time) * 0.1, 0.1), 0)] seconds")
|
||||
if(surgical_cooldown >= world.time)
|
||||
stat(null, "Surgical Cooldown Remaining: [max(round((surgical_cooldown - world.time) * 0.1, 0.1), 0)] seconds")
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/healer/AttackingTarget()
|
||||
. = ..()
|
||||
if(toggle == TRUE)
|
||||
if(loc == summoner)
|
||||
to_chat(src, "<span class='danger'>You must be manifested to heal!</span>")
|
||||
return
|
||||
if(loc == summoner)
|
||||
to_chat(src, "<span class='danger'>You must be manifested to heal!</span>")
|
||||
return
|
||||
if(toggle == HEALING)
|
||||
if(iscarbon(target))
|
||||
changeNext_move(CLICK_CD_MELEE)
|
||||
changeNext_move(1.5 SECONDS)
|
||||
if(heal_cooldown <= world.time && !stat)
|
||||
var/mob/living/carbon/human/C = target
|
||||
C.adjustBruteLoss(-5, robotic=1)
|
||||
C.adjustFireLoss(-5, robotic=1)
|
||||
C.adjustOxyLoss(-5)
|
||||
C.adjustToxLoss(-5)
|
||||
heal_cooldown = world.time + 20
|
||||
heal_cooldown = world.time + 1.5 SECONDS
|
||||
if(C == summoner)
|
||||
med_hud_set_health()
|
||||
med_hud_set_status()
|
||||
if(toggle == SURGICAL)
|
||||
if(!iscarbon(target))
|
||||
return
|
||||
var/mob/living/carbon/human/C = target
|
||||
if(surgical_cooldown <= world.time && !stat)
|
||||
to_chat(src, "<span class='notice'>You begin to do a mass repair on [C], keep them still!</span>")
|
||||
surgical_cooldown = world.time + 10 SECONDS
|
||||
if(!do_after_once(src, 10 SECONDS, target = src))
|
||||
return
|
||||
for(var/obj/item/organ/external/E in C.bodyparts)
|
||||
if(E.status & (ORGAN_INT_BLEEDING | ORGAN_BROKEN | ORGAN_SPLINTED | ORGAN_BURNT))
|
||||
E.rejuvenate() //Repair it completely.
|
||||
surgical_cooldown = world.time + 3 MINUTES
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/healer/ToggleMode()
|
||||
if(loc == summoner)
|
||||
if(toggle)
|
||||
a_intent = INTENT_HARM
|
||||
hud_used.action_intent.icon_state = a_intent
|
||||
speed = 0
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
to_chat(src, "<span class='danger'>You switch to combat mode.</span>")
|
||||
toggle = FALSE
|
||||
else
|
||||
a_intent = INTENT_HELP
|
||||
hud_used.action_intent.icon_state = a_intent
|
||||
speed = 1
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
to_chat(src, "<span class='danger'>You switch to healing mode.</span>")
|
||||
toggle = TRUE
|
||||
switch(toggle)
|
||||
if(SURGICAL)
|
||||
a_intent = INTENT_HARM
|
||||
hud_used.action_intent.icon_state = a_intent
|
||||
speed = 0
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
to_chat(src, "<span class='danger'>You switch to combat mode.</span>")
|
||||
toggle = COMBAT
|
||||
if(COMBAT)
|
||||
a_intent = INTENT_HELP
|
||||
hud_used.action_intent.icon_state = a_intent
|
||||
speed = 1
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
to_chat(src, "<span class='danger'>You switch to healing mode.</span>")
|
||||
toggle = HEALING
|
||||
if(HEALING)
|
||||
to_chat(src, "<span class='danger'>You switch to surgical. You no longer heal on punch, but can do a big critical injury healing on a long cooldown.</span>")
|
||||
toggle = SURGICAL
|
||||
else
|
||||
to_chat(src, "<span class='danger'>You have to be recalled to toggle modes!</span>")
|
||||
|
||||
@@ -137,3 +162,8 @@
|
||||
return
|
||||
else
|
||||
to_chat(src, "<span class='danger'>You need to hold still!</span>")
|
||||
|
||||
|
||||
#undef COMBAT
|
||||
#undef HEALING
|
||||
#undef SURGICAL
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
attacktext = "shocks"
|
||||
melee_damage_type = BURN
|
||||
attack_sound = 'sound/machines/defib_zap.ogg'
|
||||
damage_transfer = 0.6
|
||||
damage_transfer = 0.5
|
||||
range = 7
|
||||
playstyle_string = "As a <b>Lightning</b> type, you will apply lightning chains to targets on attack and have a lightning chain to your summoner. Lightning chains will shock anyone near them."
|
||||
magic_fluff_string = "..And draw the Tesla, a shocking, lethal source of power."
|
||||
@@ -113,7 +113,7 @@
|
||||
"<span class='userdanger'>You are shocked by the lightning chain!</span>", \
|
||||
"<span class='italics'>You hear a heavy electrical crack.</span>" \
|
||||
)
|
||||
L.adjustFireLoss(1.2) //adds up very rapidly
|
||||
L.adjustFireLoss(2.4) //adds up very rapidly
|
||||
. = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/beam/death(gibbed)
|
||||
|
||||
@@ -1,22 +1,51 @@
|
||||
#define LEFT_SHIELD FALSE
|
||||
#define RIGHT_SHEILD TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/protector
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
range = 15 //worse for it due to how it leashes
|
||||
damage_transfer = 0.4
|
||||
playstyle_string = "As a <b>Protector</b> type you cause your summoner to leash to you instead of you leashing to them and have two modes; Combat Mode, where you do and take medium damage, and Protection Mode, where you do and take almost no damage, but move slightly slower."
|
||||
playstyle_string = "As a <b>Protector</b> type you cause your summoner to leash to you instead of you leashing to them and have two modes; Combat Mode, where you do and take medium damage, and Protection Mode, where you do and take almost no damage, but move slightly slower, as well as have a protective shield."
|
||||
magic_fluff_string = "..And draw the Guardian, a stalwart protector that never leaves the side of its charge."
|
||||
tech_fluff_string = "Boot sequence complete. Protector modules loaded. Holoparasite swarm online."
|
||||
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, ready to defend you."
|
||||
var/toggle = FALSE
|
||||
/// The shields the guardian has, and brings with it as it moves
|
||||
var/list/connected_shields = list()
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/protector/ex_act(severity)
|
||||
if(severity == 1)
|
||||
adjustBruteLoss(400) //if in protector mode, will do 20 damage and not actually necessarily kill the summoner
|
||||
adjustBruteLoss(200) //if in protector mode, will do 20 damage and not actually necessarily kill the summoner
|
||||
else
|
||||
..()
|
||||
if(toggle)
|
||||
visible_message("<span class='danger'>The explosion glances off [src]'s energy shielding!</span>")
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/protector/Manifest()
|
||||
. = ..()
|
||||
if(toggle && cooldown > world.time)
|
||||
var/dir_left = turn(dir, -90)
|
||||
var/dir_right = turn(dir, 90)
|
||||
connected_shields += new /obj/effect/guardianshield(get_step(src, dir_left), src, FALSE)
|
||||
connected_shields += new /obj/effect/guardianshield(get_step(src, dir_right), src, TRUE)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/protector/Recall(forced)
|
||||
. = ..()
|
||||
if(cooldown > world.time && !forced)
|
||||
QDEL_LIST_CONTENTS(connected_shields)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/protector/Move()
|
||||
. = ..()
|
||||
for(var/obj/effect/guardianshield/G in connected_shields)
|
||||
var/dir_chosen
|
||||
if(G.shield_orientation)
|
||||
dir_chosen = turn(dir, 90)
|
||||
else
|
||||
dir_chosen = turn(dir, -90)
|
||||
G.forceMove(get_step(src, dir_chosen))
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/protector/ToggleMode()
|
||||
if(cooldown > world.time)
|
||||
return 0
|
||||
@@ -31,6 +60,7 @@
|
||||
damage_transfer = 0.4
|
||||
to_chat(src, "<span class='danger'>You switch to combat mode.</span>")
|
||||
toggle = FALSE
|
||||
QDEL_LIST_CONTENTS(connected_shields)
|
||||
else
|
||||
var/icon/shield_overlay = icon('icons/effects/effects.dmi', "shield-grey")
|
||||
shield_overlay *= name_color
|
||||
@@ -40,9 +70,13 @@
|
||||
obj_damage = 6 //40/7.5 rounded up, we don't want a protector guardian 2 shotting blob tiles while taking 5% damage, thats just silly.
|
||||
move_resist = MOVE_FORCE_STRONG
|
||||
speed = 1
|
||||
damage_transfer = 0.05 //damage? what's damage?
|
||||
damage_transfer = 0.1 //damage? what's damage?
|
||||
to_chat(src, "<span class='danger'>You switch to protection mode.</span>")
|
||||
toggle = TRUE
|
||||
var/dir_left = turn(dir, -90)
|
||||
var/dir_right = turn(dir, 90)
|
||||
connected_shields += new /obj/effect/guardianshield(get_step(src, dir_left), src, LEFT_SHIELD)
|
||||
connected_shields += new /obj/effect/guardianshield(get_step(src, dir_right), src, RIGHT_SHEILD)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/protector/snapback() //snap to what? snap to the guardian!
|
||||
// If the summoner dies instantly, the summoner's ghost may be drawn into null space as the protector is deleted. This check should prevent that.
|
||||
@@ -66,3 +100,47 @@
|
||||
if(toggle && isliving(mover)) //No crawling under a protector
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/protector/Destroy()
|
||||
QDEL_LIST_CONTENTS(connected_shields)
|
||||
return ..()
|
||||
|
||||
/obj/effect/guardianshield
|
||||
name = "guardian's shield"
|
||||
desc = "A guardian's defensive wall."
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "shield-grey"
|
||||
can_be_hit = TRUE
|
||||
var/mob/living/simple_animal/hostile/guardian/protector/linked_guardian
|
||||
///Is the guardians shield the left or right shield?
|
||||
var/shield_orientation = LEFT_SHIELD
|
||||
|
||||
/obj/effect/guardianshield/Initialize(mapload, mob/living/simple_animal/hostile/guardian/protector/creator, left_or_right)
|
||||
. = ..()
|
||||
linked_guardian = creator
|
||||
color = linked_guardian.name_color
|
||||
shield_orientation = left_or_right
|
||||
|
||||
/obj/effect/guardianshield/CanPass(atom/movable/mover, turf/target)
|
||||
if(mover == linked_guardian || mover == linked_guardian.summoner)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/effect/guardianshield/bullet_act(obj/item/projectile/P)
|
||||
if(!P)
|
||||
return
|
||||
linked_guardian.apply_damage(P.damage, P.damage_type)
|
||||
P.on_hit(src, 0)
|
||||
return FALSE
|
||||
|
||||
/obj/effect/guardianshield/attacked_by(obj/item/I, mob/living/user)
|
||||
if(I.force)
|
||||
user.visible_message("<span class='danger'>[user] has hit [src] with [I]!</span>", "<span class='danger'>You hit [src] with [I]!</span>")
|
||||
linked_guardian.apply_damage(I.force, I.damtype)
|
||||
|
||||
/obj/effect/guardianshield/Destroy()
|
||||
linked_guardian = null
|
||||
return ..()
|
||||
|
||||
|
||||
#undef LEFT_SHIELD
|
||||
#undef RIGHT_SHEILD
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
/mob/living/simple_animal/hostile/guardian/punch
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
melee_damage_lower = 25 //This is almost esword level, but not sharp.
|
||||
melee_damage_upper = 25
|
||||
obj_damage = 80
|
||||
damage_transfer = 0.4
|
||||
playstyle_string = "As a <b>Standard</b> type you have no special abilities, but have a high damage resistance and a powerful attack capable of smashing through walls."
|
||||
environment_smash = 2
|
||||
environment_smash = ENVIRONMENT_SMASH_RWALLS
|
||||
magic_fluff_string = "..And draw the Assistant, faceless and generic, but never to be underestimated."
|
||||
tech_fluff_string = "Boot sequence complete. Standard combat modules loaded. Holoparasite swarm online."
|
||||
bio_fluff_string = "Your scarab swarm stirs to life, ready to tear apart your enemies."
|
||||
|
||||
+1
-1
@@ -646,9 +646,9 @@
|
||||
#include "code\game\gamemodes\miniantags\guardian\guardian.dm"
|
||||
#include "code\game\gamemodes\miniantags\guardian\host_actions.dm"
|
||||
#include "code\game\gamemodes\miniantags\guardian\types\assassin.dm"
|
||||
#include "code\game\gamemodes\miniantags\guardian\types\chaos.dm"
|
||||
#include "code\game\gamemodes\miniantags\guardian\types\charger.dm"
|
||||
#include "code\game\gamemodes\miniantags\guardian\types\explosive_guardian.dm"
|
||||
#include "code\game\gamemodes\miniantags\guardian\types\gaseous.dm"
|
||||
#include "code\game\gamemodes\miniantags\guardian\types\healer.dm"
|
||||
#include "code\game\gamemodes\miniantags\guardian\types\lightning_guardian.dm"
|
||||
#include "code\game\gamemodes\miniantags\guardian\types\protector.dm"
|
||||
|
||||
Reference in New Issue
Block a user