From decf210cf01b03b2d09c8fdf9c09f0550c93fab7 Mon Sep 17 00:00:00 2001 From: Alberyk Date: Sat, 11 Feb 2017 11:36:45 -0200 Subject: [PATCH] New wizard fixes and tweak (#1741) -fix familiars being hungry and having wrong attack verbs -add some extra mechanical differences to familiars -fix some issues with buckling when it comes to jaunt and polymorph -fix siphon life not working Fixes #1737 --- code/modules/mob/living/say.dm | 2 +- .../simple_animal/familiars/familiars.dm | 34 ++++++++++++++----- .../living/simple_animal/hostile/faithless.dm | 1 + .../modules/spells/targeted/ethereal_jaunt.dm | 3 +- .../spells/targeted/necromancer_spells.dm | 29 ++++++++-------- .../targeted/projectile/magic_missile.dm | 1 + code/modules/spells/targeted/shapeshift.dm | 18 +++++++--- 7 files changed, 58 insertions(+), 30 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 6ac2c81500a..331f74b9d85 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -241,7 +241,7 @@ proc/get_radio_key_from_channel(var/channel) italics = 1 sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact - var/list/hear = get_mobs_or_objects_in_view(message_range,src) + var/list/hear = hear(message_range,T) var/list/hearturfs = list() for(var/I in hear) diff --git a/code/modules/mob/living/simple_animal/familiars/familiars.dm b/code/modules/mob/living/simple_animal/familiars/familiars.dm index dd71b81fb62..65381052111 100644 --- a/code/modules/mob/living/simple_animal/familiars/familiars.dm +++ b/code/modules/mob/living/simple_animal/familiars/familiars.dm @@ -13,6 +13,9 @@ min_oxy = 1 //still require a /bit/ of air. max_co2 = 0 unsuitable_atoms_damage = 1 + + hunger_enabled = 0 + supernatural = 1 var/list/wizardy_spells = list() @@ -24,7 +27,7 @@ /mob/living/simple_animal/familiar/carcinus name = "crab" - desc = "An odd looking crab." + desc = "A small crab said to be made of stone and starlight." icon = 'icons/mob/animal.dmi' icon_state = "evilcrab" icon_living = "evilcrab" @@ -37,7 +40,8 @@ maxHealth = 200 melee_damage_lower = 10 melee_damage_upper = 15 - attacktext = "pinches" + friendly = "pinches" + attacktext = "pinched" resistance = 9 @@ -52,11 +56,16 @@ pixel_x = -16 speak_emote = list("gnashes") + attacktext = "bitten" + attack_sound = 'sound/weapons/bite.ogg' + environment_smash = 2 health = 100 maxHealth = 100 - melee_damage_lower = 10 - melee_damage_upper = 10 + melee_damage_lower = 15 + melee_damage_upper = 15 + + meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat min_oxy = 0 @@ -76,11 +85,12 @@ response_help = "thinks better of touching" + environment_smash = 2 health = 150 maxHealth = 150 - melee_damage_lower = 5 - melee_damage_upper = 8 - attacktext = "touches" + melee_damage_lower = 10 + melee_damage_upper = 10 + attacktext = "clawed" wizardy_spells = list(/spell/targeted/torment) @@ -99,6 +109,7 @@ icon_living = "goat" icon_dead = "goat_dead" speak_emote = list("brays") + attacktext = "kicked" mob_size = MOB_SMALL @@ -144,13 +155,16 @@ pass_flags = PASSTABLE mob_size = MOB_MINISCULE + see_in_dark = 8 + see_invisible = SEE_INVISIBLE_NOLIGHTING + response_harm = "stamps on" health = 15 maxHealth = 15 melee_damage_lower = 1 melee_damage_upper = 1 - attacktext = "nibbles" + attacktext = "nibbled" wizardy_spells = list(/spell/aoe_turf/smoke) @@ -168,6 +182,8 @@ icon_dead = "cat3_dead" icon_rest = "cat3_rest" + see_in_dark = 8 + see_invisible = SEE_INVISIBLE_NOLIGHTING speak_emote = list("meows", "purrs") holder_type = /obj/item/weapon/holder/cat @@ -177,6 +193,6 @@ maxHealth = 25 melee_damage_lower = 3 melee_damage_upper = 4 - attacktext = "claws" + attacktext = "clawed" wizardy_spells = list(/spell/targeted/subjugation) diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 44d9c5d1ac4..02b0c0b18ae 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -12,6 +12,7 @@ speed = -1 maxHealth = 80 health = 80 + environment_smash = 2 harm_intent_damage = 10 melee_damage_lower = 15 diff --git a/code/modules/spells/targeted/ethereal_jaunt.dm b/code/modules/spells/targeted/ethereal_jaunt.dm index 002214b737c..11a45ac26b8 100644 --- a/code/modules/spells/targeted/ethereal_jaunt.dm +++ b/code/modules/spells/targeted/ethereal_jaunt.dm @@ -18,7 +18,8 @@ /spell/targeted/ethereal_jaunt/cast(list/targets) //magnets, so mostly hardcoded for(var/mob/living/target in targets) target.transforming = 1 //protects the mob from being transformed (replaced) midjaunt and getting stuck in bluespace - if(target.buckled) target.buckled = null + if(target.buckled) + target.buckled.unbuckle_mob() spawn(0) var/mobloc = get_turf(target.loc) var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt( mobloc ) diff --git a/code/modules/spells/targeted/necromancer_spells.dm b/code/modules/spells/targeted/necromancer_spells.dm index a8c168e7612..54940aabb18 100644 --- a/code/modules/spells/targeted/necromancer_spells.dm +++ b/code/modules/spells/targeted/necromancer_spells.dm @@ -47,25 +47,25 @@ hud_state = "wiz_vampire" cast_sound = 'sound/magic/enter_blood.ogg' - - amt_dam_brute = 15 - amt_dam_fire = 15 - message = "You feel a sickening feeling as your body weakens." -/spell/targeted/life_steal/cast(var/list/targets, var/mob/living/carbon/human/caster) - for(var/mob/M in targets) - if(!(M.stat == DEAD)) + amt_dam_brute = 15 + amt_dam_fire = 15 + +/spell/targeted/life_steal/cast(list/targets, mob/living/user) + for(var/mob/living/M in targets) + if(M.stat == DEAD) user << "There is no left life to steal." return - if(isipc(target)) + if(isipc(M)) user << "There is no life to steal." return - M.visible_message("Blood flows from \the [M] into \the [caster]!") - caster.adjustBruteLoss(-15) - caster.adjustFireLoss(-15) + M.visible_message("Blood flows from \the [M] into \the [user]!") + gibs(M.loc) + user.adjustBruteLoss(-15) + user.adjustFireLoss(-15) - ..() + ..() /spell/targeted/raise_dead name = "Raise Dead" @@ -139,16 +139,17 @@ invocation_type = SpI_EMOTE invocation = "entones an obscure chant..." max_targets = 1 + level_max = list(Sp_TOTAL = 0, Sp_SPEED = 0, Sp_POWER = 0) hud_state = "wiz_lich" /spell/targeted/lichdom/cast(mob/target,var/mob/living/carbon/human/user as mob) - if(isskeleton(target)) + if(isskeleton(user)) user << "You have no soul or life to offer." return user.visible_message("\The [user]'s skin sloughs off bone, their blood boils and guts turn to dust!") - new /obj/effect/gibspawner/human + gibs(user.loc) user.verbs += /mob/living/carbon/proc/immortality user.set_species("Skeleton") user.unEquip(user.wear_suit) diff --git a/code/modules/spells/targeted/projectile/magic_missile.dm b/code/modules/spells/targeted/projectile/magic_missile.dm index 7c8c3b00b91..5f6390a21d9 100644 --- a/code/modules/spells/targeted/projectile/magic_missile.dm +++ b/code/modules/spells/targeted/projectile/magic_missile.dm @@ -23,6 +23,7 @@ amt_stunned = 3 amt_dam_fire = 10 + cast_prox_range = 0 /spell/targeted/projectile/magic_missile/prox_cast(var/list/targets, atom/spell_holder) spell_holder.visible_message("\The [spell_holder] pops with a flash!") diff --git a/code/modules/spells/targeted/shapeshift.dm b/code/modules/spells/targeted/shapeshift.dm index c9b8800860d..d6dd2ad2b10 100644 --- a/code/modules/spells/targeted/shapeshift.dm +++ b/code/modules/spells/targeted/shapeshift.dm @@ -24,6 +24,10 @@ if(M.stat == DEAD) user << "[name] can only transform living targets." continue + + if(M.buckled) + M.buckled.unbuckle_mob() + var/new_mob = pick(possible_transformations) var/mob/living/trans = new new_mob(get_turf(M)) @@ -76,7 +80,7 @@ feedback = "BP" possible_transformations = list(/mob/living/simple_animal/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/corgi) - + share_damage = 0 invocation = "Yo'balada!" invocation_type = SpI_SHOUT spell_flags = NEEDSCLOTHES | SELECTABLE @@ -86,6 +90,8 @@ level_max = list(Sp_TOTAL = 2, Sp_SPEED = 2, Sp_POWER = 2) + newVars = list("health" = 50, "maxHealth" = 50) + hud_state = "wiz_poly" @@ -98,13 +104,15 @@ return "Your target will now stay in their polymorphed form for [duration/10] seconds." /spell/targeted/shapeshift/avian - name = "Avian Form" + name = "Polymorph" desc = "This spell transforms the wizard into the common parrot." feedback = "AV" possible_transformations = list(/mob/living/simple_animal/parrot) invocation = "Poli'crakata!" invocation_type = SpI_SHOUT + drop_items = 0 + share_damage = 0 spell_flags = INCLUDEUSER range = -1 duration = 150 @@ -143,9 +151,9 @@ return "You will now stay corrupted for [duration/10] seconds." if(2) newVars = list("name" = "\proper corruption incarnate", - "melee_damage_upper" = 25, + "melee_damage_upper" = 35, "resistance" = 6, - "health" = 125, - "maxHealth" = 125) + "health" = 250, + "maxHealth" = 250) duration = 0 return "You revel in the corruption. There is no turning back."