From 52355cba9da895277bbdd3119498edc7d5363161 Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 24 Oct 2016 02:16:45 +0200 Subject: [PATCH] Added Legion megafauna, updated weather and some minor other refactors/changes. --- code/_onclick/item_attack.dm | 4 +- code/controllers/Processes/weather.dm | 2 +- code/datums/action.dm | 5 + code/datums/spell.dm | 3 - code/datums/weather/weather.dm | 23 +- code/datums/weather/weather_types.dm | 6 +- code/game/machinery/portable_turret.dm | 23 +- .../objects/items/stacks/sheets/leather.dm | 8 + code/game/objects/items/weapons/handcuffs.dm | 9 + code/modules/awaymissions/corpse.dm | 74 ++-- code/modules/mining/lavaland/ash_flora.dm | 8 +- .../mining/lavaland/necropolis_chests.dm | 62 ++++ .../living/simple_animal/hostile/hostile.dm | 125 ++++--- .../simple_animal/hostile/megafauna/legion.dm | 196 +++++++++++ .../mob/living/simple_animal/hostile/mimic.dm | 4 - .../simple_animal/hostile/mining/hivelord.dm | 319 ++++++++++++++++++ .../simple_animal/hostile/mining_mobs.dm | 125 ------- .../mob/living/simple_animal/simple_animal.dm | 3 + icons/obj/mining.dmi | Bin 55944 -> 56692 bytes icons/obj/surgery.dmi | Bin 31763 -> 32996 bytes paradise.dme | 2 + 21 files changed, 759 insertions(+), 242 deletions(-) create mode 100644 code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm create mode 100644 code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 1077e2fde8a..6c0da65ee44 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -75,7 +75,9 @@ ///////////////////////// - if(istype(M, /mob/living/simple_animal)) + if(isanimal(M)) + var/mob/living/simple_animal/S = M + S.attacked_by(src, user) return 0 // No sanic-speed double-attacks for you - simple mobs will handle being attacked on their own var/power = force diff --git a/code/controllers/Processes/weather.dm b/code/controllers/Processes/weather.dm index 6cdcce750b6..d2149371649 100644 --- a/code/controllers/Processes/weather.dm +++ b/code/controllers/Processes/weather.dm @@ -33,7 +33,7 @@ var/global/datum/controller/process/weather/weather_master var/list/possible_weather_for_this_z = list() for(var/V in existing_weather) var/datum/weather/WE = V - if(WE.target_level == Z && WE.probability) //Another check so that it doesn't run extra weather + if(WE.target_z == Z && WE.probability) //Another check so that it doesn't run extra weather possible_weather_for_this_z[WE] = WE.probability var/datum/weather/W = pickweight(possible_weather_for_this_z) run_weather(W.name) diff --git a/code/datums/action.dm b/code/datums/action.dm index 446b50243ae..f1c197cdfe8 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -323,6 +323,11 @@ ..() name = "Toggle [target.name]" button.name = name + +/datum/action/item_action/organ_action/use/New(Target) + ..() + name = "Use [target.name]" + button.name = name // for clothing accessories like holsters /datum/action/item_action/accessory diff --git a/code/datums/spell.dm b/code/datums/spell.dm index a8d8b88e8d2..7772cb6b6e0 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -278,9 +278,6 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin switch(max_targets) if(0) //unlimited for(var/mob/living/target in view_or_range(range, user, selection_type)) - for(var/F in user.faction) - if(F in target.faction) - continue targets += target if(1) //single target can be picked if(range < 0) diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index 7002f92061b..c87b2b455e7 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -20,6 +20,7 @@ var/weather_duration_upper = 1500 //See above - this is the highest possible duration var/weather_sound var/weather_overlay + var/weather_color = null var/end_message = "The wind relents its assault." //Displayed once the wather is over var/end_duration = 300 //In deciseconds, how long the "wind-down" graphic will appear before vanishing entirely @@ -28,8 +29,9 @@ var/area_type = /area/space //Types of area to affect var/list/impacted_areas = list() //Areas to be affected by the weather, calculated when the weather begins - var/target_level = MAIN_STATION //The z-level to affect - + var/target_z = MAIN_STATION //The z-level to affect + var/list/protected_areas = list()//Areas that are protected and excluded from the affected areas. + var/overlay_layer = 10 //Since it's above everything else, this is the layer used by default. 2 is below mobs and walls if you need to use that. var/aesthetic = FALSE //If the weather has no purpose other than looks var/immunity_type = "storm" //Used by mobs to prevent them from being affected by the weather @@ -50,15 +52,20 @@ if(stage == STARTUP_STAGE) return stage = STARTUP_STAGE + var/list/affectareas = list() for(var/V in get_areas(area_type)) + affectareas += V + for(var/V in protected_areas) + affectareas -= get_areas(V) + for(var/V in affectareas) var/area/A = V - if(is_on_level_name(A,target_level)) + if(is_on_level_name(A,target_z)) impacted_areas |= A weather_duration = rand(weather_duration_lower, weather_duration_upper) update_areas() for(var/V in player_list) var/mob/M = V - if(is_on_level_name(M,target_level)) + if(is_on_level_name(M,target_z)) if(telegraph_message) to_chat(M, telegraph_message) if(telegraph_sound) @@ -72,7 +79,7 @@ update_areas() for(var/V in player_list) var/mob/M = V - if(is_on_level_name(M,target_level)) + if(is_on_level_name(M,target_z)) if(weather_message) to_chat(M, weather_message) if(weather_sound) @@ -87,7 +94,7 @@ update_areas() for(var/V in player_list) var/mob/M = V - if(is_on_level_name(M,target_level)) + if(is_on_level_name(M,target_z)) if(end_message) to_chat(M, end_message) if(end_sound) @@ -102,7 +109,7 @@ update_areas() /datum/weather/proc/can_impact(mob/living/L) //Can this weather impact a mob? - if(!is_on_level_name(L,target_level)) + if(!is_on_level_name(L,target_z)) return if(immunity_type in L.weather_immunities) return @@ -119,6 +126,7 @@ N.layer = overlay_layer N.icon = 'icons/effects/weather_effects.dmi' N.invisibility = 0 + N.color = weather_color switch(stage) if(STARTUP_STAGE) N.icon_state = telegraph_overlay @@ -127,6 +135,7 @@ if(WIND_DOWN_STAGE) N.icon_state = end_overlay if(END_STAGE) + N.color = null N.icon_state = initial(N.icon_state) N.icon = 'icons/turf/areas.dmi' N.layer = 10 //Just default back to normal area stuff since I assume setting a var is faster than initial diff --git a/code/datums/weather/weather_types.dm b/code/datums/weather/weather_types.dm index 90615896e6d..1581938bd96 100644 --- a/code/datums/weather/weather_types.dm +++ b/code/datums/weather/weather_types.dm @@ -16,7 +16,7 @@ end_duration = 0 area_type = /area - target_level = MAIN_STATION + target_z = MAIN_STATION overlay_layer = 2 //Covers floors only immunity_type = "lava" @@ -50,7 +50,7 @@ end_duration = 0 area_type = /area - target_level = MAIN_STATION + target_z = MAIN_STATION /datum/weather/advanced_darkness/update_areas() for(var/V in impacted_areas) @@ -87,7 +87,7 @@ end_overlay = "light_ash" area_type = /area/mine/dangerous - target_level = MINING + target_z = MINING immunity_type = "ash" diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index b32c574e999..cbaacfb1175 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -964,22 +964,33 @@ var/list/turret_icons // Syndicate turrets /obj/machinery/porta_turret/syndicate - installation = null - always_up = 1 - use_power = 0 - has_cover = 0 - scan_range = 9 projectile = /obj/item/projectile/bullet eprojectile = /obj/item/projectile/bullet shot_sound = 'sound/weapons/Gunshot.ogg' eshot_sound = 'sound/weapons/Gunshot.ogg' + icon_state = "syndieturret0" var/icon_state_initial = "syndieturret0" var/icon_state_active = "syndieturret1" var/icon_state_destroyed = "syndieturret2" + + installation = null + always_up = 1 + use_power = 0 + has_cover = 0 + raised = 1 + scan_range = 9 + faction = "syndicate" emp_vulnerable = 0 - raised = 1 + + check_arrest = 0 + check_records = 0 + check_weapons = 0 + check_access = 0 + check_anomalies = 1 + check_synth = 1 + ailock = 1 /obj/machinery/porta_turret/syndicate/New() ..() diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 2fca35d58da..260da98d221 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -110,6 +110,14 @@ var/global/list/datum/stack_recipe/human_recipes = list( \ icon_state = "sinew" origin_tech = "biotech=4" +var/global/list/datum/stack_recipe/sinew_recipes = list ( \ + new/datum/stack_recipe("sinew restraints", /obj/item/weapon/restraints/handcuffs/sinew, 1, on_floor = 1), \ + ) + +/obj/item/stack/sheet/sinew/New(var/loc, var/amount=null) + recipes = sinew_recipes + return ..() + /obj/item/stack/sheet/animalhide/goliath_hide name = "goliath hide plates" desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index d7e4b3b7b23..7b1187bcc50 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -62,6 +62,15 @@ target.update_handcuffed() return +/obj/item/weapon/restraints/handcuffs/sinew + name = "sinew restraints" + desc = "A pair of restraints fashioned from long strands of flesh." + icon = 'icons/obj/mining.dmi' + icon_state = "sinewcuff" + item_state = "sinewcuff" + breakouttime = 300 //Deciseconds = 30s + cuffsound = 'sound/weapons/cablecuff.ogg' + /obj/item/weapon/restraints/handcuffs/cable name = "cable restraints" desc = "Looks like some cables tied together. Could be used to tie something up." diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index b2864d1c7cc..6bf82a0f889 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -26,6 +26,8 @@ var/corpseidicon = null //For setting it to be a gold, silver, centcomm etc ID var/timeofdeath = null var/coffin = 0 + var/brute_damage = 0 + var/oxy_damage = 0 /obj/effect/landmark/corpse/initialize() if(istype(src,/obj/effect/landmark/corpse/clown)) @@ -37,34 +39,38 @@ var/mob/living/carbon/human/human/M = new /mob/living/carbon/human/human (src.loc) M.real_name = src.name M.death(1) //Kills the new mob + M.adjustOxyLoss(oxy_damage) + M.adjustBruteLoss(brute_damage) + M.adjustOxyLoss(oxy_damage) + M.adjustBruteLoss(brute_damage) M.timeofdeath = timeofdeath - if(src.mob_species) - M.set_species(src.mob_species) - if(src.corpseuniform) - M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform) - if(src.corpsesuit) - M.equip_to_slot_or_del(new src.corpsesuit(M), slot_wear_suit) - if(src.corpseshoes) - M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes) - if(src.corpsegloves) - M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves) - if(src.corpseradio) - M.equip_to_slot_or_del(new src.corpseradio(M), slot_l_ear) - if(src.corpseglasses) - M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses) - if(src.corpsemask) - M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask) - if(src.corpsehelmet) - M.equip_to_slot_or_del(new src.corpsehelmet(M), slot_head) - if(src.corpsebelt) - M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt) - if(src.corpsepocket1) - M.equip_to_slot_or_del(new src.corpsepocket1(M), slot_r_store) - if(src.corpsepocket2) - M.equip_to_slot_or_del(new src.corpsepocket2(M), slot_l_store) - if(src.corpseback) - M.equip_to_slot_or_del(new src.corpseback(M), slot_back) - if(src.corpseid == 1) + if(mob_species) + M.set_species(mob_species) + if(corpseuniform) + M.equip_to_slot_or_del(new corpseuniform(M), slot_w_uniform) + if(corpsesuit) + M.equip_to_slot_or_del(new corpsesuit(M), slot_wear_suit) + if(corpseshoes) + M.equip_to_slot_or_del(new corpseshoes(M), slot_shoes) + if(corpsegloves) + M.equip_to_slot_or_del(new corpsegloves(M), slot_gloves) + if(corpseradio) + M.equip_to_slot_or_del(new corpseradio(M), slot_l_ear) + if(corpseglasses) + M.equip_to_slot_or_del(new corpseglasses(M), slot_glasses) + if(corpsemask) + M.equip_to_slot_or_del(new corpsemask(M), slot_wear_mask) + if(corpsehelmet) + M.equip_to_slot_or_del(new corpsehelmet(M), slot_head) + if(corpsebelt) + M.equip_to_slot_or_del(new corpsebelt(M), slot_belt) + if(corpsepocket1) + M.equip_to_slot_or_del(new corpsepocket1(M), slot_r_store) + if(corpsepocket2) + M.equip_to_slot_or_del(new corpsepocket2(M), slot_l_store) + if(corpseback) + M.equip_to_slot_or_del(new corpseback(M), slot_back) + if(corpseid == 1) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card" var/datum/job/jobdatum @@ -73,9 +79,9 @@ if(J.title == corpseidaccess) jobdatum = J break - if(src.corpseidicon) + if(corpseidicon) W.icon_state = corpseidicon - if(src.corpseidaccess) + if(corpseidaccess) if(jobdatum) W.access = jobdatum.get_access() else @@ -84,18 +90,14 @@ W.assignment = corpseidjob W.registered_name = M.real_name M.equip_to_slot_or_del(W, slot_wear_id) - if(src.coffin == 1) + if(coffin == 1) var/obj/structure/closet/coffin/sarcophagus/sarc = locate(/obj/structure/closet/coffin/sarcophagus) in loc if(sarc) M.loc = sarc qdel(src) - - // I'll work on making a list of corpses people request for maps, or that I think will be commonly used. Syndicate operatives for example. - - - - +/obj/effect/landmark/corpse/damaged + brute_damage = 1000 /obj/effect/landmark/corpse/syndicatesoldier name = "Syndicate Operative" diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index adc9bf1b818..22d1e4cca8d 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -149,7 +149,7 @@ H.visible_message("[H] steps on a cactus!", \ "You step on a cactus!") -/obj/item/weapon/reagent_containers/food/snacks/ash_flora/ +/obj/item/weapon/reagent_containers/food/snacks/ash_flora name = "mushroom shavings" desc = "Some shavings from a tall mushroom. With enough, might serve as a bowl." icon = 'icons/obj/lavaland/ash_flora.dmi' @@ -162,25 +162,20 @@ pixel_x = rand(-4, 4) pixel_y = rand(-4, 4) - /obj/item/weapon/reagent_containers/food/snacks/ash_flora/shavings //for actual crafting - /obj/item/weapon/reagent_containers/food/snacks/ash_flora/mushroom_leaf name = "mushroom leaf" desc = "A leaf, from a mushroom." list_reagents = list("nutriment" = 3, "vitfro" = 2, "nicotine" = 2) icon_state = "mushroom_leaf" - - /obj/item/weapon/reagent_containers/food/snacks/ash_flora/mushroom_cap name = "mushroom cap" desc = "The cap of a large mushroom." list_reagents = list("mindbreaker" = 2, "entpoly" = 4, "mushroomhallucinogen" = 2) icon_state = "mushroom_cap" - /obj/item/weapon/reagent_containers/food/snacks/ash_flora/mushroom_stem name = "mushroom stem" desc = "A long mushroom stem. It's slightly glowing." @@ -194,7 +189,6 @@ desc = "A cactus fruit covered in a thick, reddish skin. And some ash." icon_state = "cactus_fruit" - /obj/item/mushroom_bowl name = "mushroom bowl" desc = "A bowl made out of mushrooms. Not food, though it might have contained some at some point." diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 1565ab40b75..c671763502d 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -6,6 +6,68 @@ icon_state = "necrocrate" icon_opened = "necrocrateopen" icon_closed = "necrocrate" + +/obj/structure/closet/crate/necropolis/tendril + desc = "It's watching you suspiciously." + +/obj/structure/closet/crate/necropolis/tendril/New() + ..() + // uncomment me once these items are being implemented + /*var/loot = rand(1,25) + switch(loot) + if(1) + new /obj/item/device/shared_storage/red(src) + if(2) + new /obj/item/clothing/suit/space/hardsuit/cult(src) + if(3) + new /obj/item/device/soulstone/anybody(src) + if(4) + new /obj/item/weapon/katana/cursed(src) + if(5) + new /obj/item/clothing/glasses/godeye(src) + if(6) + new /obj/item/weapon/reagent_containers/glass/bottle/potion/flight(src) + if(7) + new /obj/item/weapon/pickaxe/diamond(src) + if(8) + new /obj/item/clothing/head/culthood(src) + new /obj/item/clothing/suit/cultrobes(src) + new /obj/item/weapon/bedsheet/cult(src) + if(9) + new /obj/item/organ/brain/alien(src) + if(10) + new /obj/item/organ/heart/cursed(src) + if(11) + new /obj/item/ship_in_a_bottle(src) + if(12) + new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker(src) + if(13) + new /obj/item/weapon/sord(src) + if(14) + new /obj/item/weapon/nullrod/scythe/talking(src) + if(15) + new /obj/item/weapon/nullrod/armblade(src) + if(16) + new /obj/item/weapon/guardiancreator(src) + if(17) + new /obj/item/borg/upgrade/modkit/aoe/turfs/andmobs(src) + if(18) + new /obj/item/device/warp_cube/red(src) + if(19) + new /obj/item/device/wisp_lantern(src) + if(20) + new /obj/item/device/immortality_talisman(src) + if(21) + new /obj/item/weapon/gun/magic/hook(src) + if(22) + new /obj/item/voodoo(src) + if(23) + new /obj/item/weapon/grenade/clusterbuster/inferno(src) + if(24) + new /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater/hell(src) + new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor(src) + if(25) + new /obj/item/weapon/spellbook/oneuse/summonitem(src)*/ ///Bosses //Dragon diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index b90d57cc63d..6c0b0430e57 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -42,6 +42,8 @@ /obj/structure/rack, /obj/structure/barricade) //turned into a typecache in New() var/atom/targets_from = null //all range/attack/etc. calculations should be done from this atom, defaults to the mob itself, useful for Vehicles and such + var/list/emote_taunt = list() + var/taunt_chance = 0 /mob/living/simple_animal/hostile/New() ..() @@ -78,6 +80,19 @@ if(AIShouldSleep(possible_targets)) // we try to acquire a new one AIStatus = AI_IDLE // otherwise we go idle return 1 + +/mob/living/simple_animal/hostile/attacked_by(obj/item/I, mob/living/user) + if(stat == CONSCIOUS && !target && AIStatus != AI_OFF && !client && user) + FindTarget(list(user), 1) + return ..() + +/mob/living/simple_animal/hostile/bullet_act(obj/item/projectile/P) + if(stat == CONSCIOUS && !target && AIStatus != AI_OFF && !client) + if(P.firer && get_dist(src, P.firer) <= aggro_vision_range) + FindTarget(list(P.firer), 1) + Goto(P.starting, move_to_delay, 3) + return ..() + //////////////HOSTILE MOB TARGETTING AND AGGRESSION//////////// @@ -97,46 +112,57 @@ . += Objects /mob/living/simple_animal/hostile/proc/FindTarget(var/list/possible_targets, var/HasTargetsList = 0)//Step 2, filter down possible targets to things we actually care about - var/list/Targets = list() + . = list() if(!HasTargetsList) possible_targets = ListTargets() - for(var/atom/A in possible_targets) + for(var/pos_targ in possible_targets) + var/atom/A = pos_targ if(Found(A))//Just in case people want to override targetting - Targets = list(A) + . = list(A) break if(CanAttack(A))//Can we attack it? - Targets += A + . += A continue - var/Target = PickTarget(Targets) + var/Target = PickTarget(.) GiveTarget(Target) return Target //We now have a target + +/mob/living/simple_animal/hostile/proc/PossibleThreats() + . = list() + for(var/pos_targ in ListTargets()) + var/atom/A = pos_targ + if(Found(A)) + . = list(A) + break + if(CanAttack(A)) + . += A + continue /mob/living/simple_animal/hostile/proc/Found(var/atom/A)//This is here as a potential override to pick a specific target if available return -/mob/living/simple_animal/hostile/proc/PickTarget(var/list/Targets)//Step 3, pick amongst the possible, attackable targets - if(!Targets.len)//We didnt find nothin! - return +/mob/living/simple_animal/hostile/proc/PickTarget(list/Targets)//Step 3, pick amongst the possible, attackable targets if(target != null)//If we already have a target, but are told to pick again, calculate the lowest distance between all possible, and pick from the lowest distance targets - for(var/atom/A in Targets) + for(var/pos_targ in Targets) + var/atom/A = pos_targ var/target_dist = get_dist(targets_from, target) var/possible_target_distance = get_dist(targets_from, A) if(target_dist < possible_target_distance) Targets -= A - var/chosen_target = safepick(Targets)//Pick the remaining targets (if any) at random + if(!Targets.len)//We didnt find nothin! + return + var/chosen_target = pick(Targets)//Pick the remaining targets (if any) at random return chosen_target /mob/living/simple_animal/hostile/CanAttack(var/atom/the_target)//Can we actually attack a possible target? + if(!the_target) + return 0 if(see_invisible < the_target.invisibility)//Target's invisible to us, forget it return 0 if(search_objects < 2) if(isliving(the_target)) var/mob/living/L = the_target - var/faction_check = 0 - for(var/F in faction) - if(F in L.faction) - faction_check = 1 - break + var/faction_check = faction_check(L) if(robust_searching) if(L.stat > stat_attack || L.stat != stat_attack && stat_exclusive == 1) return 0 @@ -177,9 +203,10 @@ return 1 return 0 -/mob/living/simple_animal/hostile/proc/GiveTarget(var/new_target)//Step 4, give us our selected target +/mob/living/simple_animal/hostile/proc/GiveTarget(new_target)//Step 4, give us our selected target target = new_target if(target != null) + Aggro() return 1 /mob/living/simple_animal/hostile/proc/MoveToTarget(var/list/possible_targets)//Step 5, handle movement between us and our target @@ -192,41 +219,41 @@ LoseTarget() return 0 var/target_distance = get_dist(targets_from,target) - if(ranged)//We ranged? Shoot at em + if(ranged) //We ranged? Shoot at em if(!target.Adjacent(targets_from) && ranged_cooldown <= world.time) //But make sure they're not in range for a melee attack and our range attack is off cooldown OpenFire(target) - if(retreat_distance != null)//If we have a retreat distance, check if we need to run from our target - if(target_distance <= retreat_distance)//If target's closer than our retreat distance, run + if(retreat_distance != null) //If we have a retreat distance, check if we need to run from our target + if(target_distance <= retreat_distance) //If target's closer than our retreat distance, run walk_away(src,target,retreat_distance,move_to_delay) else - Goto(target,move_to_delay,minimum_distance)//Otherwise, get to our minimum distance so we chase them + Goto(target,move_to_delay,minimum_distance) //Otherwise, get to our minimum distance so we chase them else Goto(target,move_to_delay,minimum_distance) if(target) if(targets_from && isturf(targets_from.loc) && target.Adjacent(targets_from)) //If they're next to us, attack AttackingTarget() return 1 - return 1 + return 0 if(environment_smash) - if(target.loc != null && get_dist(targets_from, target.loc) <= vision_range)//We can't see our target, but he's in our vision range still + if(target.loc != null && get_dist(targets_from, target.loc) <= vision_range) //We can't see our target, but he's in our vision range still if(ranged_ignores_vision && ranged_cooldown <= world.time) //we can't see our target... but we can fire at them! OpenFire(target) - if(environment_smash >= 2)//If we're capable of smashing through walls, forget about vision completely after finding our target + if(environment_smash >= 2) //If we're capable of smashing through walls, forget about vision completely after finding our target Goto(target,move_to_delay,minimum_distance) FindHidden() return 1 else if(FindHidden()) return 1 - LostTarget() + LoseTarget() return 0 -/mob/living/simple_animal/hostile/proc/Goto(var/target, var/delay, var/minimum_distance) +/mob/living/simple_animal/hostile/proc/Goto(target, delay, minimum_distance) walk_to(src, target, minimum_distance, delay) /mob/living/simple_animal/hostile/adjustHealth(damage) - ..(damage) - if(!stat && search_objects < 3)//Not unconscious, and we don't ignore mobs + . = ..() + if(!ckey && !stat && search_objects < 3 && damage > 0)//Not unconscious, and we don't ignore mobs if(search_objects)//Turn off item searching and ignore whatever item we were looking at, we're more concerned with fight or flight search_objects = 0 target = null @@ -241,26 +268,25 @@ /mob/living/simple_animal/hostile/proc/Aggro() vision_range = aggro_vision_range + if(target && emote_taunt.len && prob(taunt_chance)) + emote("me", 1, "[pick(emote_taunt)] at [target].") + taunt_chance = max(taunt_chance-7,2) /mob/living/simple_animal/hostile/proc/LoseAggro() stop_automated_movement = 0 vision_range = idle_vision_range + taunt_chance = initial(taunt_chance) /mob/living/simple_animal/hostile/proc/LoseTarget() target = null walk(src, 0) LoseAggro() -/mob/living/simple_animal/hostile/proc/LostTarget() - walk(src, 0) - LoseAggro() - //////////////END HOSTILE MOB TARGETTING AND AGGRESSION//////////// /mob/living/simple_animal/hostile/death(gibbed) - LoseAggro() - ..() - walk(src, 0) + LoseTarget() + ..(gibbed) /mob/living/simple_animal/hostile/proc/summon_backup(distance) do_alert_animation(src) @@ -275,7 +301,7 @@ /mob/living/simple_animal/hostile/proc/OpenFire(atom/A) if(check_friendly_fire) - for(var/turf/T in getline(src, target)) // Not 100% reliable but this is faster than simulating actual trajectory + for(var/turf/T in getline(src,A)) // Not 100% reliable but this is faster than simulating actual trajectory for(var/mob/living/L in T) if(L == src || L == A) continue @@ -293,7 +319,6 @@ else Shoot(A) ranged_cooldown = world.time + ranged_cooldown_time - return /mob/living/simple_animal/hostile/proc/Shoot(atom/targeted_atom) if(targeted_atom == targets_from.loc || targeted_atom == targets_from) @@ -304,18 +329,19 @@ var/obj/item/ammo_casing/casing = new casingtype(startloc) playsound(src, projectilesound, 100, 1) casing.fire(targeted_atom, src, zone_override = ran_zone()) - else - var/obj/item/projectile/A = new projectiletype(loc) + else if(projectiletype) + var/obj/item/projectile/P = new projectiletype(startloc) playsound(src, projectilesound, 100, 1) - A.current = target - A.firer = src - A.yo = targeted_atom.y - startloc.y - A.xo = targeted_atom.x - startloc.x - if(AIStatus == AI_OFF)//Don't want mindless mobs to have their movement screwed up firing in space - newtonian_move(get_dir(target, targets_from)) - A.original = target - A.fire() - return A + P.current = startloc + P.starting = startloc + P.firer = src + P.yo = targeted_atom.y - startloc.y + P.xo = targeted_atom.x - startloc.x + if(AIStatus != AI_ON)//Don't want mindless mobs to have their movement screwed up firing in space + newtonian_move(get_dir(targeted_atom, targets_from)) + P.original = targeted_atom + P.fire() + return P /mob/living/simple_animal/hostile/proc/DestroySurroundings() if(environment_smash) @@ -325,7 +351,8 @@ if(istype(T, /turf/simulated/wall) || istype(T, /turf/simulated/mineral)) if(T.Adjacent(targets_from)) T.attack_animal(src) - for(var/atom/A in T) + for(var/a in T) + var/atom/A = a if(!A.Adjacent(targets_from)) continue if(is_type_in_typecache(A, environment_target_typecache)) @@ -348,7 +375,7 @@ A.attack_animal(src) return 1 -/mob/living/simple_animal/hostile/RangedAttack(var/atom/A, var/params) //Player firing +/mob/living/simple_animal/hostile/RangedAttack(atom/A, params) //Player firing if(ranged && ranged_cooldown <= world.time) target = A OpenFire(A) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm new file mode 100644 index 00000000000..b9f6f97f864 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -0,0 +1,196 @@ +#define MEDAL_PREFIX "Legion" +/* + +LEGION + +Legion spawns from the necropolis gate in the far north of lavaland. It is the guardian of the Necropolis and emerges from within whenever an intruder tries to enter through its gate. +Whenever Legion emerges, everything in lavaland will receive a notice via color, audio, and text. This is because Legion is powerful enough to slaughter the entirety of lavaland with little effort. + +It has two attack modes that it constantly rotates between. + +In ranged mode, it will behave like a normal legion - retreating when possible and firing legion skulls at the target. +In charge mode, it will spin and rush its target, attacking with melee whenever possible. + +When Legion dies, it drops a staff of storms, which allows its wielder to call and disperse ash storms at will and functions as a powerful melee weapon. + +Difficulty: Medium + +*/ + +/mob/living/simple_animal/hostile/megafauna/legion + name = "Legion" + health = 800 + maxHealth = 800 + icon_state = "legion" + icon_living = "legion" + desc = "One of many." + icon = 'icons/mob/lavaland/legion.dmi' + attacktext = "chomps" + attack_sound = 'sound/misc/demon_attack1.ogg' + speak_emote = list("echoes") + armour_penetration = 50 + melee_damage_lower = 25 + melee_damage_upper = 25 + speed = 2 + ranged = 1 + del_on_death = 1 + retreat_distance = 5 + minimum_distance = 5 + ranged_cooldown_time = 20 + var/size = 5 + var/charging = 0 + medal_type = MEDAL_PREFIX + score_type = LEGION_SCORE + pixel_y = -90 + pixel_x = -75 + loot = list(/obj/item/stack/sheet/bone = 3) + vision_range = 13 + elimination = 1 + idle_vision_range = 13 + appearance_flags = 0 + mouse_opacity = 1 + stat_attack = 1 // Overriden from /tg/ - otherwise Legion starts chasing its minions + +/mob/living/simple_animal/hostile/megafauna/legion/New() + ..() + internal_gps = new/obj/item/device/gps/internal/legion(src) + +/mob/living/simple_animal/hostile/megafauna/legion/AttackingTarget() + ..() + if(ishuman(target)) + var/mob/living/L = target + if(L.stat == UNCONSCIOUS) + var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/A = new(loc) + A.infest(L) + +/mob/living/simple_animal/hostile/megafauna/legion/OpenFire(the_target) + if(world.time >= ranged_cooldown && !charging) + if(prob(75)) + var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/A = new(loc) + A.GiveTarget(target) + A.friends = friends + A.faction = faction + ranged_cooldown = world.time + ranged_cooldown_time + else + visible_message("[src] charges!") + SpinAnimation(speed = 20, loops = 5) + ranged = 0 + retreat_distance = 0 + minimum_distance = 0 + speed = 0 + charging = 1 + addtimer(src, "reset_charge", 50) + +/mob/living/simple_animal/hostile/megafauna/legion/proc/reset_charge() + ranged = 1 + retreat_distance = 5 + minimum_distance = 5 + speed = 2 + charging = 0 + +/mob/living/simple_animal/hostile/megafauna/legion/death() + if(health > 0) + return + if(size > 1) + adjustHealth(-maxHealth) //heal ourself to full in prep for splitting + var/mob/living/simple_animal/hostile/megafauna/legion/L = new(loc) + + L.maxHealth = maxHealth * 0.6 + maxHealth = L.maxHealth + + L.health = L.maxHealth + health = maxHealth + + size-- + L.size = size + + L.resize = L.size * 0.2 + transform = initial(transform) + resize = size * 0.2 + + L.update_transform() + update_transform() + + L.faction = faction.Copy() + + L.GiveTarget(target) + + visible_message("[src] splits in twain!") + else + var/last_legion = TRUE + for(var/mob/living/simple_animal/hostile/megafauna/legion/other in mob_list) + if(other != src) + last_legion = FALSE + break + if(last_legion) + loot = list(/obj/item/weapon/staff/storm) + elimination = 0 + else if(prob(5)) + loot = list(/obj/structure/closet/crate/necropolis/tendril) + ..() + +/mob/living/simple_animal/hostile/megafauna/legion/Process_Spacemove(movement_dir = 0) + return 1 + +/obj/item/device/gps/internal/legion + icon_state = null + gpstag = "Echoing Signal" + desc = "The message repeats." + invisibility = 100 + + +//Loot + +/obj/item/weapon/staff/storm + name = "staff of storms" + desc = "An ancient staff retrieved from the remains of Legion. The wind stirs as you move it." + icon_state = "staffofstorms" + item_state = "staffofstorms" + icon = 'icons/obj/guns/magic.dmi' + slot_flags = SLOT_BACK + item_state = "staffofstorms" + w_class = 4 + force = 25 + damtype = BURN + hitsound = 'sound/weapons/sear.ogg' + var/storm_type = /datum/weather/ash_storm + var/storm_cooldown = 0 + +/obj/item/weapon/staff/storm/attack_self(mob/user) + if(storm_cooldown > world.time) + user << "The staff is still recharging!" + return + + var/area/user_area = get_area(user) + var/datum/weather/A + for(var/V in weather_master.existing_weather) + var/datum/weather/W = V + if(W.target_z == user.z && W.area_type == user_area.type) + A = W + break + if(A) + + if(A.stage != END_STAGE) + if(A.stage == WIND_DOWN_STAGE) + user << "The storm is already ending! It would be a waste to use the staff now." + return + user.visible_message("[user] holds [src] skywards as an orange beam travels into the sky!", \ + "You hold [src] skyward, dispelling the storm!") + playsound(user, 'sound/magic/Staff_Change.ogg', 200, 0) + A.wind_down() + return + else + A = new storm_type + A.name = "staff storm" + A.area_type = user_area.type + A.target_z = user.z + A.telegraph_duration = 100 + A.end_duration = 100 + + user.visible_message("[user] holds [src] skywards as red lightning crackles into the sky!", \ + "You hold [src] skyward, calling down a terrible storm!") + playsound(user, 'sound/magic/Staff_Change.ogg', 200, 0) + A.telegraph() + storm_cooldown = world.time + 200 + +#undef MEDAL_PREFIX \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index ac9b8562681..87754e1428a 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -91,10 +91,6 @@ ..() icon_state = initial(icon_state) -/mob/living/simple_animal/hostile/mimic/crate/LostTarget() - ..() - icon_state = initial(icon_state) - /mob/living/simple_animal/hostile/mimic/crate/death(gibbed) var/obj/structure/closet/crate/C = new(get_turf(src)) // Put loot in crate diff --git a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm new file mode 100644 index 00000000000..4f12bb92270 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm @@ -0,0 +1,319 @@ +/mob/living/simple_animal/hostile/asteroid/hivelord + name = "hivelord" + desc = "A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "Hivelord" + icon_living = "Hivelord" + icon_aggro = "Hivelord_alert" + icon_dead = "Hivelord_dead" + icon_gib = "syndicate_gib" + mouse_opacity = 2 + move_to_delay = 14 + ranged = 1 + vision_range = 5 + aggro_vision_range = 9 + idle_vision_range = 5 + speed = 3 + maxHealth = 75 + health = 75 + harm_intent_damage = 5 + melee_damage_lower = 0 + melee_damage_upper = 0 + attacktext = "lashes out at" + speak_emote = list("telepathically cries") + attack_sound = 'sound/weapons/pierce.ogg' + throw_message = "falls right through the strange body of the" + ranged_cooldown = 0 + ranged_cooldown_time = 20 + environment_smash = 0 + retreat_distance = 3 + minimum_distance = 3 + pass_flags = PASSTABLE + loot = list(/obj/item/organ/internal/hivelord_core) + var/brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood + +/mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(the_target) + if(world.time >= ranged_cooldown) + var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = new brood_type(src.loc) + A.admin_spawned = admin_spawned + A.GiveTarget(target) + A.friends = friends + A.faction = faction.Copy() + ranged_cooldown = world.time + ranged_cooldown_time + +/mob/living/simple_animal/hostile/asteroid/hivelord/AttackingTarget() + OpenFire() + +/mob/living/simple_animal/hostile/asteroid/hivelord/death(gibbed) + mouse_opacity = 1 + ..(gibbed) + +/obj/item/organ/internal/hivelord_core + name = "hivelord remains" + desc = "All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly." + icon_state = "roro core 2" + flags = NOBLUDGEON + slot = "hivecore" + force = 0 + actions_types = list(/datum/action/item_action/organ_action/use) + var/inert = 0 + var/preserved = 0 + +/obj/item/organ/internal/hivelord_core/New() + ..() + addtimer(src, "inert_check", 2400) + +/obj/item/organ/internal/hivelord_core/proc/inert_check() + if(!owner && !preserved) + go_inert() + else + preserved(implanted = 1) + +/obj/item/organ/internal/hivelord_core/proc/preserved(implanted = 0) + inert = FALSE + preserved = TRUE + update_icon() + + if(implanted) + feedback_add_details("hivelord_core", "[type]|implanted") + else + feedback_add_details("hivelord_core", "[type]|stabilizer") + + +/obj/item/organ/internal/hivelord_core/proc/go_inert() + inert = TRUE + desc = "The remains of a hivelord that have become useless, having been left alone too long after being harvested." + feedback_add_details("hivelord_core", "[src.type]|inert") + update_icon() + +/obj/item/organ/internal/hivelord_core/ui_action_click() + owner.revive() + qdel(src) + +/obj/item/organ/internal/hivelord_core/on_life() + ..() + if(owner.health < config.health_threshold_crit) + ui_action_click() + +/obj/item/organ/internal/hivelord_core/afterattack(atom/target, mob/user, proximity_flag) + if(proximity_flag && ishuman(target)) + var/mob/living/carbon/human/H = target + if(inert) + user << "[src] has become inert, its healing properties are no more." + return + else + if(H.stat == DEAD) + user << "[src] are useless on the dead." + return + if(H != user) + H.visible_message("[user] forces [H] to apply [src]... They quickly regenerate all injuries!") + feedback_add_details("hivelord_core","[src.type]|used|other") + else + user << "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments." + feedback_add_details("hivelord_core","[src.type]|used|self") + playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) + H.revive() + qdel(src) + ..() + +/obj/item/organ/internal/hivelord_core/prepare_eat() + return null + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood + name = "hivelord brood" + desc = "A fragment of the original Hivelord, rallying behind its original. One isn't much of a threat, but..." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "Hivelordbrood" + icon_living = "Hivelordbrood" + icon_aggro = "Hivelordbrood" + icon_dead = "Hivelordbrood" + icon_gib = "syndicate_gib" + mouse_opacity = 2 + move_to_delay = 1 + friendly = "buzzes near" + vision_range = 10 + speed = 3 + maxHealth = 1 + health = 1 + flying = 1 + harm_intent_damage = 5 + melee_damage_lower = 2 + melee_damage_upper = 2 + attacktext = "slashes" + speak_emote = list("telepathically cries") + attack_sound = 'sound/weapons/pierce.ogg' + throw_message = "falls right through the strange body of the" + environment_smash = 0 + pass_flags = PASSTABLE + del_on_death = 1 + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/New() + ..() + addtimer(src, "death", 100) + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood + name = "blood brood" + desc = "A living string of blood and alien materials." + icon_state = "bloodbrood" + icon_living = "bloodbrood" + icon_aggro = "bloodbrood" + attacktext = "pierces" + color = "#C80000" + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/death() + if(loc) // Splash the turf we are on with blood + reagents.reaction(get_turf(src)) + ..() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/New() + create_reagents(30) + ..() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/AttackingTarget() + ..() + if(iscarbon(target)) + transfer_reagents(target, 1) + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/attack_hand(mob/living/carbon/human/M) + if("\ref[M]" in faction) + reabsorb_host(M) + else + return ..() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/attack_alien(mob/living/carbon/alien/humanoid/M) + if("\ref[M]" in faction) + reabsorb_host(M) + else + return ..() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/proc/reabsorb_host(mob/living/carbon/C) + C.visible_message("[src] is reabsorbed by [C]'s body.", \ + "[src] is reabsorbed by your body.") + transfer_reagents(C) + death() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/proc/transfer_reagents(mob/living/carbon/C, volume = 30) + if(!reagents.total_volume) + return + + volume = min(volume, reagents.total_volume) + + var/fraction = min(volume/reagents.total_volume, 1) + reagents.reaction(C, INGEST, fraction) + reagents.trans_to(C, volume) + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/proc/link_host(mob/living/carbon/human/H) + faction = list("\ref[src]", "\ref[H]") // Hostile to everyone except the host. + H.vessel.trans_to(src, 30) + color = mix_color_from_reagents(reagents.reagent_list) + +// Legion +/mob/living/simple_animal/hostile/asteroid/hivelord/legion + name = "legion" + desc = "You can still see what was once a human under the shifting mass of corruption." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "legion" + icon_living = "legion" + icon_aggro = "legion" + icon_dead = "legion" + icon_gib = "syndicate_gib" + melee_damage_lower = 15 + melee_damage_upper = 15 + attacktext = "lashes out at" + speak_emote = list("echoes") + attack_sound = 'sound/weapons/pierce.ogg' + throw_message = "bounces harmlessly off of" + loot = list(/obj/item/organ/internal/hivelord_core/legion) + brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion + del_on_death = 1 + stat_attack = 1 + robust_searching = 1 + var/mob/living/carbon/human/stored_mob + +/mob/living/simple_animal/hostile/asteroid/hivelord/legion/death(gibbed) + visible_message("The skulls on [src] wail in anger as they flee from their dying host!") + var/turf/T = get_turf(src) + if(T) + if(stored_mob) + stored_mob.forceMove(get_turf(src)) + stored_mob = null + else + new /obj/effect/landmark/corpse/damaged(T) + ..(gibbed) + + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion + name = "legion" + desc = "One of many." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "legion_head" + icon_living = "legion_head" + icon_aggro = "legion_head" + icon_dead = "legion_head" + icon_gib = "syndicate_gib" + friendly = "buzzes near" + vision_range = 10 + maxHealth = 1 + health = 5 + harm_intent_damage = 5 + melee_damage_lower = 12 + melee_damage_upper = 12 + attacktext = "bites" + speak_emote = list("echoes") + attack_sound = 'sound/weapons/pierce.ogg' + throw_message = "is shrugged off by" + pass_flags = PASSTABLE + del_on_death = 1 + stat_attack = 1 + robust_searching = 1 + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/Life() + if(isturf(loc)) + for(var/mob/living/carbon/human/H in view(src,1)) //Only for corpse right next to/on same tile + if(H.stat == UNCONSCIOUS) + infest(H) + ..() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/proc/infest(mob/living/carbon/human/H) + visible_message("[name] burrows into the flesh of [H]!") + var/mob/living/simple_animal/hostile/asteroid/hivelord/legion/L = new(H.loc) + visible_message("[L] staggers to their feet!") + H.death() + H.adjustBruteLoss(1000) + L.stored_mob = H + H.forceMove(L) + qdel(src) + +/obj/item/organ/internal/hivelord_core/legion + name = "legion's soul" + desc = "A strange rock that still crackles with power... its \ + healing properties will soon become inert if not used quickly." + icon_state = "legion_soul" + +/obj/item/organ/internal/hivelord_core/legion/New() + ..() + update_icon() + +/obj/item/organ/internal/hivelord_core/legion/update_icon() + icon_state = inert ? "legion_soul_inert" : "legion_soul" + overlays.Cut() + if(!inert && !preserved) + overlays += image(icon, "legion_soul_crackle") + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() + +/obj/item/organ/internal/hivelord_core/legion/go_inert() + . = ..() + desc = "[src] has become inert, it crackles no more and is useless for \ + healing injuries." + +/obj/item/organ/internal/hivelord_core/legion/preserved(implanted = 0) + ..() + desc = "[src] has been stabilized. It no longer crackles with power, but it's healing properties are preserved indefinitely." + +/obj/item/weapon/legion_skull + name = "legion's head" + desc = "The once living, now empty eyes of the former human's skull cut deep into your soul." + icon = 'icons/obj/mining.dmi' + icon_state = "skull" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index cbf8490c827..ceac9068e79 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -204,131 +204,6 @@ idle_vision_range = 9 ..() -/mob/living/simple_animal/hostile/asteroid/hivelord - name = "hivelord" - desc = "A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original." - icon = 'icons/mob/animal.dmi' - icon_state = "Hivelord" - icon_living = "Hivelord" - icon_aggro = "Hivelord_alert" - icon_dead = "Hivelord_dead" - icon_gib = "syndicate_gib" - mouse_opacity = 2 - move_to_delay = 14 - ranged = 1 - vision_range = 5 - aggro_vision_range = 9 - idle_vision_range = 5 - speed = 3 - maxHealth = 75 - health = 75 - harm_intent_damage = 5 - melee_damage_lower = 0 - melee_damage_upper = 0 - attacktext = "lashes out at" - speak_emote = list("telepathically cries") - attack_sound = 'sound/weapons/pierce.ogg' - throw_message = "falls right through the strange body of the" - ranged_cooldown = 0 - ranged_cooldown_time = 20 - environment_smash = 0 - retreat_distance = 3 - minimum_distance = 3 - pass_flags = PASSTABLE - loot = list(/obj/item/organ/internal/hivelord_core) - -/mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(var/the_target) - var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = new /mob/living/simple_animal/hostile/asteroid/hivelordbrood(src.loc) - A.GiveTarget(target) - A.friends = friends - A.faction = faction - return - -/mob/living/simple_animal/hostile/asteroid/hivelord/AttackingTarget() - OpenFire() - -/obj/item/organ/internal/hivelord_core - name = "hivelord remains" - desc = "All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly. Try not to think about what you're eating." - icon = 'icons/obj/food/food.dmi' - icon_state = "boiledrorocore" - slot = "hivecore" - var/inert = 0 - var/preserved = 0 - -/obj/item/organ/internal/hivelord_core/New() - spawn(2400) - if(!preserved) - inert = 1 - desc = "The remains of a hivelord that have become useless, having been left alone too long after being harvested." - -/obj/item/organ/internal/hivelord_core/on_life() - ..() - if(owner) - owner.adjustBruteLoss(-1) - owner.adjustFireLoss(-1) - owner.adjustOxyLoss(-2) - if(ishuman(owner)) - var/mob/living/carbon/human/H = owner - var/datum/reagent/blood/B = locate() in H.vessel.reagent_list //Grab some blood - var/blood_volume = round(H.vessel.get_reagent_amount("blood")) - if(B && blood_volume < H.max_blood && blood_volume) - B.volume += 2 // Fast blood regen - -/obj/item/organ/internal/hivelord_core/attack(mob/living/M as mob, mob/living/user as mob) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(inert) - to_chat(user, "[src] have become inert, its healing properties are no more.") - return - else - if(H.stat == DEAD) - to_chat(user, "[src] are useless on the dead.") - return - if(H != user) - H.visible_message("[user] forces [H] to eat [src]... they quickly regenerate all injuries!") - else - to_chat(user, "You chomp into [src], barely managing to hold it down, but feel amazingly refreshed in mere moments.") - playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) - H.revive() - qdel(src) - ..() - -/obj/item/organ/internal/hivelord_core/prepare_eat() - return null - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood - name = "hivelord brood" - desc = "A fragment of the original Hivelord, rallying behind its original. One isn't much of a threat, but..." - icon = 'icons/mob/animal.dmi' - icon_state = "Hivelordbrood" - icon_living = "Hivelordbrood" - icon_aggro = "Hivelordbrood" - icon_dead = "Hivelordbrood" - icon_gib = "syndicate_gib" - mouse_opacity = 2 - move_to_delay = 1 - friendly = "buzzes near" - vision_range = 10 - speed = 3 - maxHealth = 1 - health = 1 - harm_intent_damage = 5 - melee_damage_lower = 2 - melee_damage_upper = 2 - attacktext = "slashes" - speak_emote = list("telepathically cries") - attack_sound = 'sound/weapons/pierce.ogg' - throw_message = "falls right through the strange body of the" - environment_smash = 0 - pass_flags = PASSTABLE - del_on_death = 1 - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/New() - ..() - spawn(100) - death() - /mob/living/simple_animal/hostile/asteroid/goliath name = "goliath" desc = "A massive beast that uses long tentacles to ensare its prey, threatening them is not advised under any conditions." diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 06160dca1fd..90cb13de26b 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -301,6 +301,9 @@ var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) attack_threshold_check(damage,M.melee_damage_type) +/mob/living/simple_animal/proc/attacked_by(obj/item/I, mob/living/user) // Handled in _onclick/click.dm + return + /mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj) if(!Proj) return diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 34f1d493040378e479600525c6d56701d871401b..d6cb7a676c43697d96ccfad8f7a82bc1e6b8b6aa 100644 GIT binary patch delta 13657 zcmY+LbyQT}7wBi`lI~6sB^BxJMnX}fq+2?MxFaClC`flI0@B^xA>AR}9Ru(3{k`?p zdVkECxx?IZ_t|Ifv-ke&LvSVXSsijT8Eys!8UzB_<17CFfgq8`uyB%uev1f0G^$h@w(;U6Aut025?9q?i%v{rnK>hv{9;WOj&LcmzK6gm3Z0oHzKKzA zl}3%N!yDF2GE>7ddX<#GkH)KYmKk=h7q7SsTx_YLDSuWZOSN#igi0=WS$ydwg$ks; z#y2S`HB=+R?U=NSu|E@bBJN=OwjbYf3S^x^5-6&UZvatn!Znc zxj2$Q0boH(C;R;XVd$#!d7GIz8U+RI%^Lz4Y7*C@RGVOKECM8oR^3;x0 zP&0xL_6?Ns<~2GsST{TL4lL|XSKC$_rcmW2I1_NfVq6(N(Ayj?xGstpsprp*r8pynp`=t+0*zjUk@jTR@fTWt7nUfVZQ=lb)XkEUI7eYVSkXIerZ%rdjCPWMy{ zO}c<1RW08Nr=X!BMVl@u3LKG*il0e@$5Wy;qEzIH-XmGz)T+*yf7+nJveF|%&U@9a z8Mx^=EfAxgV;(Vrawmo-{dBoWQS%U?ea}0zlULrg;n8SNW}rllA_?y$ewOt20YNQx zZU6P@9HjL2_HDua+<4N3VkP1ratskwNmYJxB&AK~X)rFvnZVENAeXiv%@IGZSLUJ= zzNqCc6$g=}G}U2}Ix*7?VHR`o$&z`d2gsr2o(9+Zq~pl}i#!}XT4ye_N^^Lakf-xU zjPv&VdYoiM%`l{mjSZQ>JxBl6405!g(-@k9Xyuo1v~T zREvQD6kgvY&or$R;ruQ!guXU#jslJXjs*^x_4IZjCb-aJy(8A1)r0Q(CBU)ZxY8l7 z=;BA@=k|KWfcZG2f}QpvE(S|pH7Qmm4=GgceB~>g-ZB#9*Ztw<2oo2c`esj(ZHbjFzCw=*^X}ZlOvI_4_F=N;rXwLQzue!>qQLR!$+5ifdUAwlb^?f<1YJ9NS1%VG}$$Bqa<S2bkn_jc7N&}dilPtM5uEBN0tCFB1gh{C!`c!6)%Wk;kA$d; zvZfB|55?GwT8+z$ZZGzMX$0c=sQ-D?3b~WBEZ2`UNGdK-AXjHc2vJN-%oo*Uz7RaN zEGN38p^U`-#YZ7hMx6LGbI9(lvyWwfdG|h?&(w~{qn8Zh>3;>L zma5f&bs8EP%g>*Kfbs2sx&8P*lwtfsPqG-lzA4&wcgJAp>Fxc}Y82hH1Tz>2ZrOI3 zcJ)rwCQUYX%*WFcOUK*a-^WLhg#C!knsyO7t|mgw9(@*ZT2UE-8ltzqzx)L4SlGTS zxS6h;;@^OZ!~G#lB9u0p;E1fH{x)fo+jom`AnEmsylaz%2%uo5bd6##Z-Rx)&TBTK z|GSVbzd?-=v~rV%bF}D=eC0qor|enrWihy^>!-86+`q8ZOqUW9awwHyjkMMO z9@OGecam5}fbH{|&Dl+@dm0OUhn4-HC++VD(>*BShY2)489K*XJ*RB_x?Z6t5Bg=m zn2g?68_g%(j_@U|(b$OU?Kaew-LE{tR3_-d-KoFzGg!*L|Ir9qYq~v<_VN-IyV+tI zoGE?v^5qd|a%iS&|2%0eDD^{UO05)4lZxxX8IeZ-sWD!i!f0md1PpJNqaDmLb5xktxF^`nsl)U>qyah>;OvM708%jGjUvD3E+B!$9} z+qCdCAfsBB<+yhLS~R7mS?DpFYMHhZWy?ApY)fD9?Etbia_ z%v773D^cJSAQb9zW_{gRukKAg5VRUCXA^O?ZPJ}ioFOhfkS??yu9=ok-EZnAD`xZ4 zl67wvNMxa*yiKt^aT;@#c^4wzl&s_lGndzZpNif^XvK^bzz2ffYAiSzbX3R3xuc9; z$ZgH-mL3D%*`~abZC_30z>oo-U4HQ^$rr`x7Bt?mfJw0#_&8gODIs3_X~V?B!Rht# zvB$F8EksfTPq#{7>3M-YN&%u(=l$^v%kmIZ9g0jplfSuo4qI{X$Q*~tWdk^&V!*M` z-R*U)-X3zHD(iRaZwC(xQ!eq^BTf%iD3thfo9fLEF5V;%*asBy2pBmIS|MSnT7Fy} zRgE5sc{#2_$Z3$!oe5l5?BPHz7}D9_KdO`!8zP6Ljgg@J`l?}dP43YaA~8^g;Lc*?-GSvpM$Z&ZEt$zfx)sKB~@*H z(YjJeoZG(@64i|=Nx$sbNbI@}&eTER6JPT3c_qzyW-$vaEX;&sUdM zR>l^)J8I`l4QgMBraf>Gx@mN4Gv-nL!s|!hvU@IBLIyB7gcvK(wQPM>96!IE!=U8J zd#%eciHKE&Lvl5}Cx+NUr>+Y{)kF@1bP0C$knmCAVqf%Kw(csusqs-e(IwEQw*rJ8 zfH?A0IjuRHLO7-E60qTh=5Afatu%JqFERuI__W4ld(6zHxnBAZU|(7r z?&}ZvYyG_~r~c%6*F~tJs>-@b9YfO1&28YK9^0`$aBw7W){y~J|4!eDhlnE^rX4qV zPDqI^J_-Zy&pOr#gMmS|Zz5xA*W`J2wEacBaG7ru4Q|lCh9D&eYO--hFn8z={Owmz z=%KlQo@jj=J~6f+{&3)n2&dy8KsM$k$B|PqLh3N$CJ+DCf)d;ceqfVymeoe{A4Par ztaQNPi4^_rPP&us-$O$~;cLUm{88h7(q`1vZ-G!Ejg7-xC#;cpHMxD?ZDIos_0E{k zHFx*h!n}GzKw$BMK+L>*DmkWy7M-KofZtalOp-)*QZ?omUBnOwu7PF3MMwh1TW#&= z7$$in$j#*;7e{u4o~$e?8z(0kBt;w$GZigQZ@TzEmXeO>4^=p1XUrW`=r}$tmYQD6 z2mBEVyK836?xc!6$Ms4@hYuSqsy=^8jXq0HpJQL}DIk5vz~%IT3ip`@={INF@_`o& zdoXix#9mOqC)O7%{47c6-?q3XT%HMzq=tO^B(S(7n|r8RB>rGY5wArN*l0dT>9p73 zUUq;BA%_j(i=6Z@@uarTeQs85y8UefTm<1z_!%O0bOwBrW)ClrT<)$M88MJVXz>~h zxWo`=T43%26;OLFG3mI1q|ykxcFy#4n0h;GyfS>^lQ8-elvXeEd)>t@7z ztN0zh6n#Z?`;TPow9QYS?a|I)D&%E2ajfcry{2t>s>!97F10_1hPFGvpoT*KPSeiH zs`X-j&Jm0Pk|k5w+1beNev)t|V9(6VfEIDJ;dA*FVY{lIsI^@`IWZvv&Irtzj9w;! zPmNAY#7rL!dbk?~9%K|1F`b;8a{A&Qv+FbSSK)F@T{tkb%OyZuk2AsJAxZ@A%Dbm$ z@GF=n*4I+h{bF~ZMo%9M#1z*LIbQ2lPUHadqG$%`oB?vj#`h#L&nX^;+Cp;f4i=B< zgw=P8Mf17KxB5yCzsDcT;SPIimw2iaWM%n%`}R%269a%|*k0KF`dH7m>RbL$iDQ$l zJ7tx=S>|)=HfX{);On%Pua7VFvMXc#NlZg)jCn)-0$eTVpK<~`5*Hrq>QVrK7{}|? zdO+ZXI$Sj=Y88C1L%JR6TQ9euCEflwY&@B`5fKr~p0uD=wzjqu3VkH;a{~Fh4X=s7 zNpv#-@n5);SE^>{-?MX@o3-w%E3diL=c=Gb{xdfvBW^L_4c$K7cZ0lm%)ubheE?O2 z99WVRhP$#;kgg7X#U{%s`T_2{a@hoG`C89eMt|yXHC+EoF1UAto>5Sgnug`p%u!Op zC0Bi-e@o+cc&)pInN19uV~C}{AMOQ8oB&YsB4+xElSw%1t6KNH;zt8D5@m@WT+D)( z2iWVzn(dmSO)RTQ%8rrYmFmUVmM9zDMi=A5zO$Hb{#>7pt4qiCYSjj<`QwRUd~gHp zQf}c8ak&&#H@IQcTvu1;e4GAT<~;Mdbp4+nKGKkFS5UVBWKjZ?R7~UoNx<2HBD^XPtxzRUWbQm5rayajuEx=%<<=t2Q*M{7JHoON z8J(*_*+ghKd^ZTyi>fpyhyOQs2wUL&QG)XO*SppZYCK2F=sIZewk6$I%~vBP9evlQ zo4JyQt~OIy;DR?)ev+23W=@I$Xz<4mMJkNVTZjZ`h%GM0$9=2G=sjgS($5G*!?Eq6 zpEHt@kty5f#D@mw=H?!Gh)mZy=W7#Ge2&EBOdunp$(->VZ}sI0gT#f%>xX4DGMZj1 zAwm8cib73IB@Vfac_`}d0F*Y89&+EJLss*nP4itn{XE}e~-oe494c1 z8(JE300=qdlc1&kk(kJ4COzrb zYpS_t%#-K=D1JRF{|vnR>Pur;t<9T*R{LMsjF+kwyE?d_T8d159Zke>En+ZZ8fWJSokD{4 z>!R(vnJFO+;{Oo?HJa4-al9*^{IM5BD@y5gvG-+o)Bi7EElZJ+)ilPtH(yHx|AAjs zP=HbIerSF%J|RX#Phs53h8z7vRUlQ(YUDk((i47$jtAz<`O9?c+oy4gFsE%1R{fqo zmY}PEb;pym3pb;TyDMrG1|NUi?+49@F_sovIXB5Kc_y_B_S=Oqg!}jTRG?ciDo-J;fr~-&SN1h4Xpokfa*Hz37O%rbbO`yYON=3* zAY_P&_(aA(|6M4gWKGmt@P+}0oLfQ&?J>e6LVA}yeH3*?YcJp02AN6ToKC_g+9T)E@LRx9m9o z0t)wTXTaSk;hjMr@uZ9OK>T0=$mkw+$@gDDV^`ejrPJWW?`%}QcA`i|XXObcK<(X) zkkbt=L^0eTDo=^L#rB{412-4EsBZt_kJV@?T0#K^LDJjz3Gwl5U=$qBQ%#E8IK4J{ ziRvaUTmP`#cZux!-e(7i`wgpX1BIv^{XcexAveWf*oH7tl`8W*l<_s->%@@Jv9>K9 zYp1j<=)yM;QbBj1x6VA~8+_&7dcSe5tiTNe8PM>{8U_vj?lsK9V9T;2ZpwBYMU_gQ z>`_P<%UNQFc{!Uc4MqI|?bwgxLG!`}C!s8t2UN-6ZK%X{+M^^rtFy0acEYa&4P50~ zvJGAHRx{J^H%3b+0i-H@J+G$+o6b0pe-IRBq{e8$dskoB*%pEOoYSpS4Kj1#MeRo< zDj%m;2`;y>o8z*#DsWQ)>Y?a-L}X;-52al+l{aVYr`{bWO@&ol7)TysZ{W6kA61YO z9|200-5gTjD_B{@#d&=Bqi+HKHjf8tdd_tyA& z*bEmAncA~Z!a0}aQBcF*u$~8dg22eFdABX; z)sq)|ztE2yT6lgS&MJpd6avS$PoloK@YTQ?0kJ%uXb>f>|NDo=?p(h>Ky|7;#~Kje zp(>WnRpm$}31?$s>S@9=D8bv_@p!QS#Pyd^Z_r>`Y95Q$wKb$Jzi(BD%uW(5yA03Me~uMh;p5vKHx~Rxrz@)D;s$!3c`1Pv zu$Vf%MlxSBLFP`gN6E;|WyzZr_+R4ja?Er(VNS)BZ=LQ1uhr(lln9w)y~}VQVl;#d zIrdi<6%0|RAVbRxhqz=c$LsjucbPyPrS9~I(7++Ko( zi`Y{`e$-?!NSyF~ zy7;Qw&sG3dU`U4=6!ve#9?;RdHNJiKPU&)Qw@W-5q$}_>?v)!dZr2^{ZE_|3oZj`J zHYq|jy7}-8;o1bS1X0)9KpKL=SuC-Wwi#SJTAn`q=bN z2?o2fu3N8iaq%N_c+wV2 zncMAg34licj!zh!`>0b9E_3n8?PaHs>ryaF{&lZ14gyKjmki(%1w?tw{5GaI4dH@Q|j z_@3c3r+cwq1o+Hi94zW1WhgDEvAk_LxcZiBenDg-e$F8gI#X$*)AI+D{~_#3D$U2t zXqm5-zyPA{I&QnzAh^RcGY(J z#8WA>r|ywxWZu;LeXZQGjgg|p8a^{aF6_~?$}YFlzfRn-Ep@j-#SQrMn^}#+_T0juq0Wgi>JpxOZJ2&sLLPWT(}%q=zukx+mZMD_Uu=M%XEU&WKynB zfmX+{x=Q`$;w^iuOTM$H3@C8}u^k{&Bal$(Yz9Hr^?(cBLF1(X2(KUIsTn8P;b4=z zbgtFAT8~qA$hS#wQGwm{cizjh0tNxYyPcrwcxRSC5?wPp$Mb33>F-b?$D7 zSOb3EFZOxYzvW54o9oOm&qSi?OFY&7p68q3O9@Fb{dv~9AUrzx>UP_zdCp71$+Eo^ zlwdpIC;DDA+BP)9@HZ`3pMYj+T&55r9lH#U&@BoUQ zgP2$ZwHJo_uUiKqr0u?RZ@^J-- z8CT8;M|uikV+kuND?c4BHs0HeiY2gpSKm6jkD_>m23C2~O+NK`w}yIp;h@;IGk;j} zZikIr(0`!kz$f&L34h*csAn~$BDY*)hh8)N0CEJA{-8}V|C8z;9!7`UjVSS+U+2g9 zcnSv7=~^)<+4T-fx~V-aqedYqdlm7!-+DmW7xBpIa3`D|BJO$UB^D6PDRu4S;U29h z&v2?mn}cpajO60tqOdY*O*IO#Ac;M@Y_ zsn>HAdH{%wo$fLZ6V}dOk@wOgSQ&H3r4$rsTwae{izd|j1ho@rz0{2BCDvk@asju6 zu5S_ZwtO$*Wh}VKQv+mLc|bbpAA|FrjGBq_+xPD=O+L3ska$l0q%+QZ?KunXHVq9S zxloD3YFDmX`#vMuHRmCyaGkh(6US3}2w8%*@vfJdE zMmyBomJXOI0jAt|&r}neokS@-_KO`w4H#t<4m^82y}L|Lc7*2`XSK>z>%ixHi}n)5 zv!5S?w$zUw8kb#37LaCW4|nXVy*Z|E*)JCGxwHAE#@02__T|U@?Q39cm*ZBbpQe9F zonudhk{@wtlQV@}()julqqdGt5IBjfOiA{sd0j8^ui}GI(=Fm+CQkFd;e}PhkTec< z=IUdSJntK;>iY$)l^8Ekl3WvvQ`k2R5>)wJsc>pR!p_dlXPlh4_|!?^ziVp9UFwY_ zjV-fv4ka1-mGX&^C4k`Ro=(gDrdMN2UE*Sl``IoHG9%!_#NA)7r7@PVmupI^Cq$&3 zwL}g1x|{uN@|pL22-vp3##Y>zE`tJWVxoV4ad5DlsqZ#b)EBqpwEI)JJD-)b|ZaJ>8(J9PD=lZJ;K?;k}n01&IwuQa4P7`(~)P;F16 z^X{G8&d!dJEAQ&&Z}V_+6z$@x7x#7u7h4!Y0?tZ!*d_k=f+A}f(qbnP)mLWHTjXK%@J|6vD3x5PvUgHGbhB*@N zV^Lc92dfc=*Vfu>ulAn1ZSB?5xVH3vYiU_x1-i#NzwQ&P9q{nl$=;qG4>vziT@{3l zA(QjlQ#(03uQ`deUX*-Zci33Y?73NsP%K-biS`0sDj749Wi6lgZe@LJvgG`5)wc5^ zN*z@}%zS*AFy~xp5nG>5)qAV#y^bFJC((@1P%KSNO+OId>Fd7Z^WvK(;RHvK0e)*%%yZLMCoxlsp z$*E;7U^@6M_C03(gK2*kCuq+o9iX&ry&qu zo>=U@=fGn3qapkeP1^|j7n?v9zue0iJhE5(v9>ZdcYR^oJqDfs;2)))6nyI$Ce9P~ zXzcHVt-FQ%=O*|$8=ak@qHnQ(0!3K{A3Hb&O7^hx<-8$A`&zq5G77#p93lwWbv*4S zToFwTw;$E%9w@0Eu7Y{sfXXHgAhPQ`v-91}@xkI)j*SC!hSE(#^vHi z-D)?EKJ($Ok5qgpIe|Qs5f1gTc9a?td73roJ{WmoePQnt|p2y zj}*7#UBp+FN_ss1-#`5UW~7I^IsNyQ%jrmzfRaeJA-MDW*%+L{fT*ONPn$i+{0xMA z1~+CCaW+x5V8)5J6Oo$*f7+VML2K$GO{% zm{Q1+wQTi6MS;Bg^*-iIZf~Zo4U&mDwg2?e&rdYVBb{j9SNP3%@FQJY42pVjjGvy+ zuM?YxmcVKCRwAaFZeEI#PF3nz~c%J;Sdfsjz=*YQfB zvjUbLhrp%oPiVSm&g8r@EoH?|O(Enw>>uOwf!A+VY6S;QWUyjLhgnB^M5D6hqp~tG zAg->i@4@}(@+!R7bcvy?74HI6$-~ailGWpGx@OybEwQUpY9z?g+<3W&3<*#4La|6~heGn`tlylr zoA1M^D6lK_PM0eBTa6x#2&E7M>8@SNa{!gx*0{!>k7G_Bq zwEg!!N!)^h$cOg|eqV!}%59Sq)}Belps;$RjtOYIL?Xn(!aCZoUNT;&bESqf+zjy@ z98<(83Jm-6-79a3h3hQMxXsKyEDt;PJaAGlHO(}U8BQX#EOP2AGZ$O|kZ2`QX03o6 zdX%q_0EG^%@OZ8yWr)!V_D{juD@Y4R_59f1c4gigltOG(MeVJtVWZ#qtM{!7pO1}N z>Czb5f7AHw3yZZZ{|r(vlY%U3?_buOUVJ2aF6A=ts47TCJ9Tmp}Cjb zymOp(<4e|fFQhbX3$_4qe8>RQ0jFj8CDhBpAZk{S+IrJLpzaj5Z0=`rZ};uuZ{M^= z?XoMi02dU4+f(IpIL-GkM(~Bk zdpGoLm`0g(Sp{`4yY8{Xfe#A*y~L&-6-fl3BK}Q#4jpa>MA0zm=wCH&S^kohH{m#- z5rv5F&IJ^f)20@^0fmZdYQ&x?mHh`x2E_d~gzV@nv31==T@k?a< zySs~!{90i4uvy+&89V8t?vcJ7hwp92xSoj*^2=X|Wwc_96Q`N_cHOftnUA+WS7z_z zNb626S<45NXk~1HLAthnEtEijAVHswW5K*$4aOWyz;A8_v z6K#euf6?w1dKAvMuBOO+x zcK~YV9ct%Cr1hAK!(R1=h4qfu3gb@cca-ss)@K65&(#pcZi+4itP{fgcl%po&qUqf zaA64vd)&r@-yY(jRaqEV`su;yP25sb$%Opby9RGc7X7)wERMUoiUOx!q%q$NelaM1}1Ofd%0Di3$*0>xyWvaa>#F6e}#n3tq6FI;&BHsmpFH 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 delta 12903 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%0AhLQs`Bxq=w_8zb8>WJ9i& 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 literal 31763 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