Merge pull request #12661 from KorPhaeron/mudamudamuda

Parasite HUD and rebalancing
This commit is contained in:
Remie Richards
2015-10-30 05:19:07 +00:00
4 changed files with 132 additions and 28 deletions
+2
View File
@@ -58,6 +58,8 @@
#define isswarmer(A) (istype(A, /mob/living/simple_animal/hostile/swarmer))
#define isguardian(A) (istype(A, /mob/living/simple_animal/hostile/guardian))
#define islimb(A) (istype(A, /obj/item/organ/limb))
// ASSEMBLY HELPERS
+2
View File
@@ -199,6 +199,8 @@ var/datum/global_hud/global_hud = new()
drone_hud(ui_style)
else if(isswarmer(mymob))
swarmer_hud()
else if(isguardian(mymob))
guardian_hud()
//Version denotes which style should be displayed. blank or 0 means "next version"
@@ -16,6 +16,7 @@
attack_sound = 'sound/weapons/punch1.ogg'
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
maxbodytemp = 10000000
attacktext = "punches"
maxHealth = 100000 //The spirit itself is invincible
health = 100000
@@ -39,12 +40,17 @@
if(summoner)
if(summoner.stat == DEAD)
src << "<span class='danger'>Your summoner has died!</span>"
visible_message("<span class='danger'>The [src] dies along with its user!</span>")
visible_message("<span class='danger'><B>The [src] dies along with its user!</B></span>")
summoner.visible_message("<span class='danger'><B>[summoner]'s body is completely consumed by the strain of sustaining [src]!</B></span>")
for(var/obj/item/W in summoner)
if(!summoner.unEquip(W))
qdel(W)
summoner.dust()
ghostize()
qdel(src)
else
src << "<span class='danger'>Your summoner has died!</span>"
visible_message("<span class='danger'>The [src] dies along with its user!</span>")
visible_message("<span class='danger'><B>The [src] dies along with its user!</B></span>")
ghostize()
qdel(src)
if(summoner)
@@ -74,7 +80,7 @@
summoner.adjustBruteLoss(damage)
if(damage)
summoner << "<span class='danger'><B>Your [name] is under attack! You take damage!</span></B>"
summoner.visible_message("<span class='danger'>Blood sprays from [summoner] as [src] takes damage!</span>")
summoner.visible_message("<span class='danger'><B>Blood sprays from [summoner] as [src] takes damage!</B></span>")
if(summoner.stat == UNCONSCIOUS)
summoner << "<span class='danger'><B>Your body can't take the strain of sustaining [src] in this condition, it begins to fall apart!</span></B>"
summoner.adjustCloneLoss(damage/2)
@@ -99,10 +105,7 @@
//Manifest, Recall, Communicate
/mob/living/simple_animal/hostile/guardian/verb/Manifest()
set name = "Manifest"
set category = "Guardian"
set desc = "Spring forth into battle!"
/mob/living/simple_animal/hostile/guardian/proc/Manifest()
if(cooldown > world.time)
return
if(loc == summoner)
@@ -114,20 +117,14 @@
spawn(6)
icon_state = end_icon
/mob/living/simple_animal/hostile/guardian/verb/Recall()
set name = "Recall"
set category = "Guardian"
set desc = "Return to your summoner."
/mob/living/simple_animal/hostile/guardian/proc/Recall()
if(cooldown > world.time)
return
loc = summoner
buckled = null
cooldown = world.time + 30
/mob/living/simple_animal/hostile/guardian/verb/Communicate()
set name = "Communicate"
set category = "Guardian"
set desc = "Communicate telepathically with your summoner."
/mob/living/simple_animal/hostile/guardian/proc/Communicate()
var/input = stripped_input(src, "Please enter a message to tell your summoner.", "Guardian", "")
if(!input) return
@@ -137,6 +134,10 @@
src << "<span class='boldannounce'><i>[src]:</i> [input]</span>"
log_say("[src.real_name]/[src.key] : [input]")
/mob/living/simple_animal/hostile/guardian/proc/ToggleMode()
src << "<span class='danger'><B>You dont have another mode!</span></B>"
/mob/living/proc/guardian_comm()
set name = "Communicate"
set category = "Guardian"
@@ -155,6 +156,13 @@
log_say("[src.real_name]/[src.key] : [text]")
/mob/living/simple_animal/hostile/guardian/proc/ToggleLight()
if(!luminosity)
SetLuminosity(3)
else
SetLuminosity(0)
//////////////////////////TYPES OF GUARDIANS
@@ -182,7 +190,7 @@
/mob/living/simple_animal/hostile/guardian/fire/AttackingTarget()
..()
if(prob(30))
if(prob(45))
if(istype(target, /atom/movable))
var/atom/movable/M = target
if(!M.anchored && M != summoner)
@@ -203,8 +211,8 @@
/mob/living/simple_animal/hostile/guardian/fire/proc/collision_ignite(AM as mob|obj)
if(istype(AM, /mob/living/))
var/mob/living/M = AM
if(AM != summoner)
M.adjust_fire_stacks(7)
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)
@@ -277,10 +285,7 @@
C.adjustOxyLoss(-5)
C.adjustToxLoss(-5)
/mob/living/simple_animal/hostile/guardian/healer/verb/ToggleMode()
set name = "Toggle Mode"
set category = "Guardian"
set desc = "Toggle between combat and healing modes."
/mob/living/simple_animal/hostile/guardian/healer/ToggleMode()
if(src.loc == summoner)
if(toggle)
a_intent = "harm"
@@ -366,6 +371,7 @@
icon_state = "guardian"
damage = 5
damage_type = BRUTE
armour_penetration = 100
/mob/living/simple_animal/hostile/guardian/ranged
a_intent = "help"
@@ -385,10 +391,7 @@
var/list/snares = list()
var/toggle = FALSE
/mob/living/simple_animal/hostile/guardian/ranged/verb/ToggleMode()
set name = "Toggle Mode"
set category = "Guardian"
set desc = "Toggle between combat and scout modes."
/mob/living/simple_animal/hostile/guardian/ranged/ToggleMode()
if(src.loc == summoner)
if(toggle)
ranged = 1
@@ -475,11 +478,11 @@
if(bomb_cooldown <= world.time && !stat)
var/obj/item/weapon/guardian_bomb/B = new /obj/item/weapon/guardian_bomb(get_turf(A))
src << "<span class='danger'><B>Success! Bomb armed!</span></B>"
bomb_cooldown = world.time + 400
bomb_cooldown = world.time + 200
B.spawner = src
B.disguise (A)
else
src << "<span class='danger'><B>Your powers are on cooldown! You must wait 40 seconds between bombs.</span></B>"
src << "<span class='danger'><B>Your powers are on cooldown! You must wait 20 seconds between bombs.</span></B>"
/obj/item/weapon/guardian_bomb
name = "bomb"
@@ -677,3 +680,100 @@
new /obj/item/weapon/guardiancreator/tech/choose(src)
new /obj/item/weapon/paper/guardian(src)
return
///HUD
/datum/hud/proc/guardian_hud(ui_style = 'icons/mob/screen_midnight.dmi')
adding = list()
var/obj/screen/using
using = new /obj/screen/guardian/Manifest()
using.screen_loc = ui_rhand
adding += using
using = new /obj/screen/guardian/Recall()
using.screen_loc = ui_lhand
adding += using
using = new /obj/screen/guardian/ToggleMode()
using.screen_loc = ui_storage1
adding += using
using = new /obj/screen/guardian/ToggleLight()
using.screen_loc = ui_back
adding += using
using = new /obj/screen/guardian/Communicate()
using.screen_loc = ui_inventory
adding += using
mymob.client.screen = list()
mymob.client.screen += mymob.client.void
mymob.client.screen += adding
//HUD BUTTONS
/obj/screen/guardian
icon = 'icons/mob/guardian.dmi'
/obj/screen/guardian/Manifest
icon_state = "manifest"
name = "Manifest"
desc = "Spring forth into battle!"
/obj/screen/guardian/Manifest/Click()
if(isguardian(usr))
var/mob/living/simple_animal/hostile/guardian/G = usr
G.Manifest()
/obj/screen/guardian/Recall
icon_state = "recall"
name = "Recall"
desc = "Return to your user."
/obj/screen/guardian/Recall/Click()
if(isguardian(usr))
var/mob/living/simple_animal/hostile/guardian/G = usr
G.Recall()
/obj/screen/guardian/ToggleMode
icon_state = "toggle"
name = "Toggle Mode"
desc = "Switch between ability modes."
/obj/screen/guardian/ToggleMode/Click()
if(isguardian(usr))
var/mob/living/simple_animal/hostile/guardian/G = usr
G.ToggleMode()
/obj/screen/guardian/Communicate
icon_state = "communicate"
name = "Communicate"
desc = "Communicate telepathically with your user."
/obj/screen/guardian/Communicate/Click()
if(isguardian(usr))
var/mob/living/simple_animal/hostile/guardian/G = usr
G.Communicate()
/obj/screen/guardian/ToggleLight
icon_state = "light"
name = "Toggle Light"
desc = "Glow like star dust."
/obj/screen/guardian/ToggleLight/Click()
if(isguardian(usr))
var/mob/living/simple_animal/hostile/guardian/G = usr
G.ToggleLight()
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB