From b18be1cfc977f52a61128adb1bd4f623676c198d Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Sun, 4 Aug 2024 22:57:58 +0200 Subject: [PATCH 01/10] adds giant lizards --- code/_onclick/item_attack.dm | 2 + .../objects/items/reagent_containers/food.dm | 7 + .../living/carbon/xenomorph/attack_alien.dm | 4 +- .../hostile/retaliate/giant_lizard.dm | 258 ++++++++++++++++++ .../hostile/retaliate/retaliate.dm | 7 +- .../mob/living/simple_animal/simple_animal.dm | 101 +++++-- colonialmarines.dme | 1 + icons/mob/mob_64.dmi | Bin 0 -> 3120 bytes sound/effects/ATTRIBUTION.txt | 2 + sound/effects/giant_lizard_death.ogg | Bin 0 -> 25705 bytes sound/effects/giant_lizard_growl1.ogg | Bin 0 -> 28707 bytes sound/effects/giant_lizard_growl2.ogg | Bin 0 -> 30035 bytes 12 files changed, 361 insertions(+), 21 deletions(-) create mode 100644 code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm create mode 100644 icons/mob/mob_64.dmi create mode 100644 sound/effects/ATTRIBUTION.txt create mode 100644 sound/effects/giant_lizard_death.ogg create mode 100644 sound/effects/giant_lizard_growl1.ogg create mode 100644 sound/effects/giant_lizard_growl2.ogg diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 1a3c279db8b3..d94f3931c01b 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -107,6 +107,8 @@ switch(damtype) if("brute") M.apply_damage(power,BRUTE) + if(isanimal(M) && power > 10) + M.handle_blood_splatter(get_dir(user.loc, M.loc)) if("fire") M.apply_damage(power,BURN) to_chat(M, SPAN_WARNING("It burns!")) diff --git a/code/game/objects/items/reagent_containers/food.dm b/code/game/objects/items/reagent_containers/food.dm index f4b2213904d2..b4e895956aee 100644 --- a/code/game/objects/items/reagent_containers/food.dm +++ b/code/game/objects/items/reagent_containers/food.dm @@ -10,9 +10,16 @@ volume = 50 //Sets the default container amount for all food items. flags_atom = CAN_BE_SYRINGED var/filling_color = COLOR_WHITE //Used by sandwiches. + var/last_dropped_by /obj/item/reagent_container/food/Initialize() . = ..() if (!pixel_x && !pixel_y) src.pixel_x = rand(-6.0, 6) //Randomizes postion src.pixel_y = rand(-6.0, 6) + RegisterSignal(src, COMSIG_ITEM_DROPPED, PROC_REF(update_last_dropped_by)) + +/obj/item/reagent_container/food/proc/update_last_dropped_by(datum/source, mob/user) + SIGNAL_HANDLER + + last_dropped_by = user diff --git a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm index de0cefeea76d..70eeab16d66e 100644 --- a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm +++ b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm @@ -258,14 +258,16 @@ if(M.frenzy_aura > 0) damage += (M.frenzy_aura * FRENZY_DAMAGE_MULTIPLIER) + M.animation_attack_on(src) //Somehow we will deal no damage on this attack if(!damage) playsound(M.loc, 'sound/weapons/alien_claw_swipe.ogg', 25, 1) - M.animation_attack_on(src) + M.visible_message(SPAN_DANGER("[M] lunges at [src]!"), \ SPAN_DANGER("We lunge at [src]!"), null, 5, CHAT_TYPE_XENO_COMBAT) return XENO_ATTACK_ACTION + handle_blood_splatter(get_dir(M.loc, loc)) last_damage_data = create_cause_data(initial(M.name), M) M.visible_message(SPAN_DANGER("[M] [M.slashes_verb] [src]!"), \ SPAN_DANGER("We [M.slash_verb] [src]!"), null, 5, CHAT_TYPE_XENO_COMBAT) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm new file mode 100644 index 000000000000..84e42dcab782 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -0,0 +1,258 @@ +#define ATTACK_SLASH 0 +#define ATTACK_BITE 1 + +/mob/living/simple_animal/hostile/retaliate/giant_lizard + name = "giant lizard" + desc = "A large, wolf-like reptile. Its eyes are keenly focused on yours." + icon = 'icons/mob/mob_64.dmi' + icon_state = "Giant Lizard Running" + icon_living = "Giant Lizard Running" + icon_dead = "Giant Lizard Dead" + mob_size = MOB_SIZE_XENO_SMALL + maxHealth = 250 + health = 250 + icon_size = 64 + pixel_x = -16 + old_x = -16 + base_pixel_x = 0 + base_pixel_y = -20 + mobility_flags = MOBILITY_FLAGS_REST_CAPABLE_DEFAULT + affected_by_fire = TRUE + + response_help = "pets" + response_disarm = "tries to push" + response_harm = "punches" + + speak_chance = 2 + speak_emote = "hisses" + emote_hear = list("hisses.", "growls.", "roars.", "bellows.") + emote_see = list("shakes its head.", "wags its tail.", "flicks its tongue.", "yawns.") + + melee_damage_lower = 20 + melee_damage_upper = 25 + attack_same = FALSE + + ///What sounds to play when the mob growls. + var/list/growl_sounds = list('sound/effects/giant_lizard_growl1.ogg', 'sound/effects/giant_lizard_growl2.ogg') + + ///Emotes to play when being pet by a friend. + var/list/pet_emotes = list("closes its eyes.", "growls happily.", "wags its tail.", "stares.", "rolls on the ground.") + ///Cooldown to stop pet_emotes spam. + COOLDOWN_DECLARE(pet_emotes_cooldown) + + ///How many times the mob is going bleed in the Life() proc. + var/bleed_ticks = 0 + ///Chance of the mob laying down/getting up. + var/chance_to_rest = 0 + + ///The food object that the mob is trying to eat. + var/food_target + ///A list of foods the mob is interested in eating. + var/list/acceptable_foods = list(/obj/item/reagent_container/food/snacks/meat, /obj/item/reagent_container/food/snacks/resin_fruit) + ///Is the mob currently eating the food_target? + var/is_eating = FALSE + ///Cooldown dictating how long the mob will wait between eating food. + COOLDOWN_DECLARE(food_cooldown) + +///Proc for growling. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/growl(target_mob) + if(target_mob) + manual_emote("growls at [target_mob].") + else + manual_emote("growls.") + playsound(loc, growl_sounds, 60) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/update_transform(instant_update = FALSE) + if(stat == DEAD) + icon_state = icon_dead + else if(body_position == LYING_DOWN) + if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) + icon_state = "Giant Lizard Sleeping" + else + icon_state = "Giant Lizard Knocked Down" + else + icon_state = icon_living + return ..() + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/get_examine_text(mob/user) + if(user.faction in faction_group) + desc = "[initial(desc)] There's a hint of warmth in them." + else + desc = initial(desc) + return ..() + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/set_resting(new_resting, silent, instant) + . = ..() + update_transform() + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/death() + playsound(loc, 'sound/effects/giant_lizard_death.ogg', 70) + manual_emote("lets out a waning growl.") + return ..() + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/attack_hand(mob/living/carbon/human/attacking_mob) + . = ..() + if(attacking_mob.a_intent == INTENT_HELP && (attacking_mob.faction in faction_group)) + if(!resting) + chance_to_rest += 15 + if(COOLDOWN_FINISHED(src, pet_emotes_cooldown) && resting) + chance_to_rest = 0 + manual_emote(pick(pet_emotes)) + COOLDOWN_START(src, pet_emotes_cooldown, rand(5, 8) SECONDS) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/apply_damage(damage, damagetype, def_zone, used_weapon, sharp, edge, force) + Retaliate() + . = ..() + if(damage >= 10 && damagetype == BRUTE) + add_splatter_floor(loc, TRUE) + bleed_ticks = clamp(bleed_ticks + ceil(damage / 10), 0, 30) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/Life(delta_time) + if(resting) + health += maxHealth * 0.05 + + if(stance > HOSTILE_STANCE_ALERT) + is_eating = FALSE + + if(stance != HOSTILE_STANCE_IDLE && resting) + set_resting(FALSE) + + if(bleed_ticks) + var/is_small_pool = FALSE + if(bleed_ticks < 10) is_small_pool = TRUE + bleed_ticks -= is_small_pool ? 1 : 2 + add_splatter_floor(loc, is_small_pool) + + if(stance == HOSTILE_STANCE_IDLE) + stop_automated_movement = FALSE + if(!food_target && COOLDOWN_FINISHED(src, food_cooldown)) + for(var/obj/item/reagent_container/food/snacks/food in view(6, src)) + if(!is_type_in_list(food, acceptable_foods)) + continue + food_target = food + stance = HOSTILE_STANCE_ALERT + stop_automated_movement = TRUE + MoveTo(food_target) + break + + //if there's a friend on the same tile as us, don't bother getting up (cute!) + var/mob/living/carbon/friend = locate(/mob/living/carbon) in get_turf(src) + if((friend?.faction in faction_group) && resting) + chance_to_rest = 0 + + if(prob(chance_to_rest)) + set_resting(!resting) + chance_to_rest = 0 + + chance_to_rest += rand(1, 2) + + if(food_target && !is_eating) + if(!(food_target in view(5, src))) + stop_moving() + lose_food() + else if(!check_food_loc(food_target) && Adjacent(food_target)) + INVOKE_ASYNC(src, PROC_REF(handle_food), food_target) + + . = ..() + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/bullet_act(obj/projectile/projectile) + . = ..() + if(projectile.damage) + handle_blood_splatter(get_dir(projectile.starting, src)) + add_splatter_floor(loc, FALSE) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/handle_blood_splatter(splatter_dir) + var/obj/effect/temp_visual/dir_setting/bloodsplatter/human/bloodsplatter = new(loc, splatter_dir) + bloodsplatter.pixel_y = -2 + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/AttackingTarget() + if(!Adjacent(target_mob)) + return + if(isliving(target_mob)) + var/mob/living/target = target_mob + face_atom(target) + var/attack_type = pick(ATTACK_SLASH, ATTACK_BITE) + target.attack_animal(src) + animation_attack_on(target) + attacktext = attack_type ? "claws" : "bites" + flick_attack_overlay(target, attack_type ? "slash" : "animalbite") + playsound(loc, attack_type ? "alien_claw_flesh" : "alien_bite", 25, 1) + return target + +///Proc for when the mob finds food and starts DEVOURING it. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/handle_food(obj/item/reagent_container/food/snacks/food) + manual_emote("starts gnawing [food].") + is_eating = TRUE + for(var/times_to_eat = rand(4, 6), times_to_eat--) + sleep(rand(1.7, 2.5) SECONDS) + if(check_food_loc(food)) + return + face_atom(food) + playsound(loc,'sound/items/eatfood.ogg', 25, 1) + + for(var/mob/living/carbon/nearest_mob in view(7, src)) + if(nearest_mob != food.last_dropped_by) + continue + face_atom(nearest_mob) + manual_emote("stares curiously at [nearest_mob].") + faction_group += nearest_mob.faction_group + break + + qdel(food) + food_target = null + is_eating = FALSE + stance = HOSTILE_STANCE_IDLE + COOLDOWN_START(src, food_cooldown, 30 SECONDS) + +///Proc for checking if someone picked our food target. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/check_food_loc(obj/food) + if(ismob(food.loc)) + var/mob/living/food_holder = food.loc + stop_moving() + COOLDOWN_START(src, food_cooldown, 15 SECONDS) + food_target = null + is_eating = FALSE + //snagging the food while you're right next to the mob makes it very angry + if(get_dist(src, food_holder) <= 2 && !(food_holder.faction in faction_group)) + Retaliate() + return TRUE + + growl(food.loc) + stance = HOSTILE_STANCE_IDLE + return TRUE + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/lose_food() + stance = HOSTILE_STANCE_IDLE + food_target = null + is_eating = FALSE + COOLDOWN_START(src, food_cooldown, 15 SECONDS) + +//Immediately retaliate after being attacked. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/Retaliate() + if(stat == DEAD || target_mob) + return + . = ..() + target_mob = FindTarget() + if(target_mob) + growl(target_mob) + MoveToTarget() + +///Proc for moving to targets. walk_to() doesn't check for resting and status effects so we will do it ourselves. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/MoveTo(target, distance = 1) + if(stat == DEAD || HAS_TRAIT(src, TRAIT_INCAPACITATED) || HAS_TRAIT(src, TRAIT_FLOORED)) + return + if(resting) + set_resting(FALSE) + walk_to(src, target, distance, move_to_delay) + +//Replaced walk_to() with MoveTo(). +/mob/living/simple_animal/hostile/retaliate/giant_lizard/MoveToTarget() + stop_automated_movement = 1 + if(!target_mob || SA_attackable(target_mob)) + stance = HOSTILE_STANCE_IDLE + if(target_mob in ListTargets(10)) + stance = HOSTILE_STANCE_ATTACKING + MoveTo(target_mob) + +#undef ATTACK_SLASH +#undef ATTACK_BITE diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm index 4c16c60d4835..9e4d4445723c 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm @@ -27,7 +27,7 @@ continue if(isliving(A)) var/mob/living/M = A - if(!attack_same && M.faction != faction) + if(!attack_same && (M.faction != faction || !(M.faction in faction_group))) enemies |= M for(var/mob/living/simple_animal/hostile/retaliate/H in around) @@ -35,6 +35,7 @@ H.enemies |= enemies return 0 -/mob/living/simple_animal/hostile/retaliate/adjustBruteLoss(damage) - ..(damage) +/mob/living/simple_animal/hostile/retaliate/apply_damage(damage, damagetype, def_zone, used_weapon, sharp, edge, force) Retaliate() + return ..() + diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index f3b8da1a2d76..621c5974a20a 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -34,6 +34,9 @@ var/heat_damage_per_tick = 3 //amount of damage applied if animal's body temperature is higher than maxbodytemp var/cold_damage_per_tick = 2 //same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp + ///Will this mob be affected by fire/napalm? Set to FALSE for all mobs as the implications could be weird due to not being tested for all simple mobs. + var/affected_by_fire = FALSE + //Atmos effect - Yes, you can make creatures that require phoron or co2 to survive. N2O is a trace gas and handled separately, hence why it isn't here. It'd be hard to add it. Hard and me don't mix (Yes, yes make all the dick jokes you want with that.) - Errorage var/min_oxy = 5 var/max_oxy = 0 //Leaving something at 0 means it's off - has no maximum @@ -74,8 +77,58 @@ /mob/living/simple_animal/updatehealth() return -/mob/living/simple_animal/Life(delta_time) +/mob/living/simple_animal/get_examine_text(mob/user) + . = ..() + if(stat == DEAD) + . += SPAN_BOLDWARNING("It is DEAD. Kicked the bucket.") + else + var/percent = (health / maxHealth * 100) + switch(percent) + if(95 to INFINITY) + . += SPAN_NOTICE("It looks quite healthy.") + if(75 to 94) + . += SPAN_NOTICE("It looks slightly injured.") + if(50 to 74) + . += SPAN_DANGER("It looks injured.") + if(25 to 49) + . += SPAN_DANGER("It bleeds with sizzling wounds.") + if(-INFINITY to 24) + . += SPAN_BOLDWARNING("It is heavily injured and limping badly.") + +/mob/living/simple_animal/handle_fire() + if(..()) + return + health -= fire_reagent.intensityfire * 0.5 + +/mob/living/simple_animal/IgniteMob() + if(!affected_by_fire) + return + return ..() + +/mob/living/simple_animal/update_fire() + if(on_fire && fire_reagent) + var/image/I + if(mob_size >= MOB_SIZE_BIG) + if((body_position != LYING_DOWN)) + I = image("icon"='icons/mob/xenos/overlay_effects64x64.dmi', "icon_state"="alien_fire", "layer"=-1) + else + I = image("icon"='icons/mob/xenos/overlay_effects64x64.dmi', "icon_state"="alien_fire_lying", "layer"=-1) + else + I = image("icon" = 'icons/mob/xenos/effects.dmi', "icon_state"="alien_fire", "layer"=-1) + + I.pixel_y -= pixel_y + I.pixel_x -= pixel_x + I.appearance_flags |= RESET_COLOR|RESET_ALPHA + I.color = fire_reagent.burncolor + overlays += I + if(!on_fire) + for(var/image/fire_overlay in overlays) + if(fire_overlay.icon_state == "alien_fire" || fire_overlay.icon_state == "alien_fire_lying") + overlays -= fire_overlay +/mob/living/simple_animal/Life(delta_time) + if(affected_by_fire) + handle_fire() //Health if(stat == DEAD) if(health > 0) @@ -240,32 +293,46 @@ var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) apply_damage(damage, BRUTE) - -/mob/living/simple_animal/attack_hand(mob/living/carbon/human/M as mob) +/mob/living/simple_animal/attack_hand(mob/living/carbon/human/attacking_mob) ..() - switch(M.a_intent) - + switch(attacking_mob.a_intent) if(INTENT_HELP) if (health > 0) - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(SPAN_NOTICE("[M] [response_help] [src]"), SHOW_MESSAGE_VISIBLE) + playsound(loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7) + visible_message(SPAN_NOTICE("[attacking_mob] [response_help] [src].")) + return 1 if(INTENT_GRAB) - if(M == src || anchored) - return 0 - M.start_pulling(src) + attacking_mob.start_pulling(src) + return 1 + if(INTENT_DISARM) + visible_message(SPAN_NOTICE("[attacking_mob] [response_disarm] [src].")) + attacking_mob.animation_attack_on(src) + attacking_mob.flick_attack_overlay(src, "disarm") return 1 - if(INTENT_HARM, INTENT_DISARM) - apply_damage(harm_intent_damage, BRUTE) - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(SPAN_DANGER("[M] [response_harm] [src]"), SHOW_MESSAGE_VISIBLE) + if(INTENT_HARM) + var/datum/unarmed_attack/attack = attacking_mob.species.unarmed + if(!attack.is_usable(attacking_mob)) + attack = attacking_mob.species.secondary_unarmed + return 0 - return + attacking_mob.animation_attack_on(src) + attacking_mob.flick_attack_overlay(src, "punch") + + var/extra_cqc_dmg = 0 + if(attacking_mob.skills) + extra_cqc_dmg = attacking_mob.skills?.get_skill_level(SKILL_CQC) + var/final_damage = 0 + + playsound(loc, attack.attack_sound, 25, 1) + visible_message(SPAN_DANGER("[attacking_mob] [response_harm] [src]!"), null, null, 5) + + final_damage = attack.damage + extra_cqc_dmg + harm_intent_damage + apply_damage(final_damage, BRUTE, src, sharp = attack.sharp, edge = attack.edge) + return 1 /mob/living/simple_animal/can_be_pulled_by(mob/pulling_mob) if(locate(/obj/item/explosive/plastic) in contents) diff --git a/colonialmarines.dme b/colonialmarines.dme index d1dc35b9fe77..193b27599801 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -2123,6 +2123,7 @@ #include "code\modules\mob\living\simple_animal\hostile\tree.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\giant_lizard.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" #include "code\modules\mob\new_player\body.dm" #include "code\modules\mob\new_player\login.dm" diff --git a/icons/mob/mob_64.dmi b/icons/mob/mob_64.dmi new file mode 100644 index 0000000000000000000000000000000000000000..dbdc459829832b7799a07517af304018681dc26c GIT binary patch literal 3120 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 b8$3v)|EgI5Jml8lyA3cmu`#a2dnW!DEWEC~ literal 0 HcmV?d00001 diff --git a/sound/effects/ATTRIBUTION.txt b/sound/effects/ATTRIBUTION.txt new file mode 100644 index 000000000000..0abec58ef9d9 --- /dev/null +++ b/sound/effects/ATTRIBUTION.txt @@ -0,0 +1,2 @@ +giant_lizard_growl1.ogg, giant_lizard_growl2.ogg by D.jones -- https://freesound.org/s/527844/ -- License: Creative Commons 0 +giant_lizard_death.wav by craigsmith -- https://freesound.org/s/437933/ -- License: Creative Commons 0 \ No newline at end of file diff --git a/sound/effects/giant_lizard_death.ogg b/sound/effects/giant_lizard_death.ogg new file mode 100644 index 0000000000000000000000000000000000000000..fe8cf05dc1eeed135b767e380fc4f9760507fec4 GIT binary patch literal 25705 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 Te%%1TO~aJIGXN!~cA_~3hc?JR literal 0 HcmV?d00001 diff --git a/sound/effects/giant_lizard_growl1.ogg b/sound/effects/giant_lizard_growl1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7dfd52b211ed729d04bcbed49e4cfbbe43fda1c4 GIT binary patch literal 28707 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 literal 0 HcmV?d00001 diff --git a/sound/effects/giant_lizard_growl2.ogg b/sound/effects/giant_lizard_growl2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..00d85d78ecb648ae29c4e19400e390df68720ea3 GIT binary patch literal 30035 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
    k6hoQ$6et2PqWv z;w&6*OuVs1%YjQ|GPzM2eeAbfky`P;;NL9Rxdr>pf}Kq*SPQ#T3pTLWLttTdV!`?r ztY@)b&&FqX)L>Ofsj(Z7u^VW#BZD|lD~3lrqFZ=my4Y`jH)^vDW0t5TL6z>J!^*PL zRRz4(ah`Cd7tYkBd?J6RI(?h~t3iOFns*ucE8O4r=uF6jeZik1A8O zGBszZLex%w2_g!z1Q8uUf`~RFK}7GmUQ#!?376Z)jb*HyfpL7(ZD_>K8yMk_21a{3R$IJ(J13sOZKhmm$!EkfxXqNeEqOpZ zgWF6sq9yl zkUpB6pveGDcE1x}$(f#UfF#h)XB4`TT^`XsoSBW;?T`StWsbU0} zE14=&=))!ox3*)OGcaCdITR_j2}>H;ge8n@!V*R{VF@Ffu!NCKSi;CAEMa65mN2q^ z314r;0`6uHkITm=+x|h5JdLZGCjV51HayeDs@8%b{VXgP64JtgAw|0^yb20&O$`-V zS3-w_g7eqg>xz#8;D_NmleW_P?X8@F@wh7Zsk`oeJjEFpkDn>atIRYaR>!)|{~UJ3 zsEL}&TMfKo%m`4$t%hDPW@M@2R)eoX*m~ZoYWokrV(Xc5`#Ss1SYpJad>0*7#tv Date: Wed, 21 Aug 2024 20:41:49 +0200 Subject: [PATCH 06/10] update sprites, now pettable while eating --- .../hostile/retaliate/giant_lizard.dm | 2 +- icons/mob/mob_64.dmi | Bin 3120 -> 3116 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index 72eb3d69f9ce..82341fb04150 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -206,7 +206,7 @@ if(stat == DEAD) return - if(!(attacking_mob.faction in faction_group)) + if(!(attacking_mob.faction in faction_group) && !is_eating) Retaliate() if(attacking_mob.a_intent == INTENT_HELP && (attacking_mob.faction in faction_group)) diff --git a/icons/mob/mob_64.dmi b/icons/mob/mob_64.dmi index dbdc459829832b7799a07517af304018681dc26c..8ac2194b3eb2d30b700781475b7805f7a7c0df45 100644 GIT binary patch delta 2927 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 delta 2931 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 F@GmlGY{38k From 7287d8af02f45b222802d6667b081770b4013286 Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Fri, 23 Aug 2024 13:36:40 +0200 Subject: [PATCH 07/10] apply code reviews --- code/_onclick/item_attack.dm | 2 - .../modules/mob/living/living_health_procs.dm | 2 - .../hostile/retaliate/giant_lizard.dm | 220 ++++++++++-------- .../mob/living/simple_animal/simple_animal.dm | 42 ++-- 4 files changed, 148 insertions(+), 118 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index d94f3931c01b..1a3c279db8b3 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -107,8 +107,6 @@ switch(damtype) if("brute") M.apply_damage(power,BRUTE) - if(isanimal(M) && power > 10) - M.handle_blood_splatter(get_dir(user.loc, M.loc)) if("fire") M.apply_damage(power,BURN) to_chat(M, SPAN_WARNING("It burns!")) diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index 0e90f1d4ad96..4486c20360e3 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -550,8 +550,6 @@ GLOB.alive_mob_list += src tod = null timeofdeath = 0 - if(isanimal(src)) - health = maxHealth // restore us to consciousness set_stat(CONSCIOUS) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index 82341fb04150..ad80c693f3a8 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -39,6 +39,7 @@ melee_damage_lower = 20 melee_damage_upper = 25 attack_same = FALSE + langchat_color = LIGHT_COLOR_GREEN ///Reference to the ZZzzz sleep overlay when resting. var/sleep_overlay @@ -136,12 +137,10 @@ //procs for handling sleeping icons when resting /mob/living/simple_animal/hostile/retaliate/giant_lizard/AddSleepingIcon() - var/image/SL - SL = new /image('icons/mob/hud/hud.dmi', "slept_icon_centered") - SL.pixel_x = 20 + var/image/sleeping_icon = new /image('icons/mob/hud/hud.dmi', "slept_icon_centered") if(sleep_overlay) return - sleep_overlay = SL + sleep_overlay = sleeping_icon overlays += sleep_overlay addtimer(CALLBACK(src, PROC_REF(RemoveSleepingIcon)), 6 SECONDS) @@ -231,6 +230,12 @@ if(attacking_mob.a_intent == INTENT_DISARM && prob(75)) step_to(src, get_step(loc, attacking_mob.dir), 0, LIZARD_SPEED_NORMAL) +//apply blood splatter when attacked by a sufficently damaging sharp weapon +/mob/living/simple_animal/hostile/retaliate/giant_lizard/attackby(obj/item/weapon, mob/living/carbon/human/attacker) + if(weapon.force > 10 && weapon.sharp && attacker.a_intent != INTENT_HELP) + handle_blood_splatter(get_dir(attacker.loc, loc)) + return ..() + /mob/living/simple_animal/hostile/retaliate/giant_lizard/apply_damage(damage, damagetype, def_zone, used_weapon, sharp, edge, force) Retaliate() aggression_value = clamp(aggression_value + 5, 0, 30) @@ -249,17 +254,20 @@ add_splatter_floor(loc, TRUE) bleed_ticks = clamp(bleed_ticks + ceil(damage / 10), 0, 30) +///Proc that forces the mob to disengage and try to extinguish itself. Will not be called if the mob is already retreating. /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/try_to_extinguish() - if(!is_retreating && on_fire && !client) - //forget EVERYTHING. we need to stop the flames!!! - stance = HOSTILE_STANCE_ALERT - target_mob = null - food_target = null - is_eating = FALSE - manual_emote("hisses in agony!") - playsound(src, "giant_lizard_hiss", 40) - MoveTo(null, 9, TRUE, 4 SECONDS, FALSE) - COOLDOWN_START(src, calm_cooldown, 8 SECONDS) + if(is_retreating || !on_fire || client) + return + + //forget EVERYTHING. we need to stop the flames!!! + stance = HOSTILE_STANCE_ALERT + target_mob = null + food_target = null + is_eating = FALSE + manual_emote("hisses in agony!") + playsound(src, "giant_lizard_hiss", 40) + MoveTo(null, 9, TRUE, 4 SECONDS, FALSE) + COOLDOWN_START(src, calm_cooldown, 8 SECONDS) /mob/living/simple_animal/hostile/retaliate/giant_lizard/IgniteMob() . = ..() @@ -275,11 +283,12 @@ //simplemobs don't have innate knockdown reduction so we'll manually lower it here. AdjustKnockDown(-0.5) AdjustStun(-0.5) - if(aggression_value > 0) aggression_value-- + if(aggression_value > 0) + aggression_value-- if(resting && stat != DEAD) health += maxHealth * 0.05 - if(prob(33)) + if(prob(33) && !HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) AddSleepingIcon() if(bleed_ticks) @@ -288,82 +297,89 @@ bleed_ticks-- add_splatter_floor(loc, is_small_pool) + . = ..() + + if(client) + return . + //if we haven't gotten hurt in a while, calm down and go back to idling - if(!client) - if(aggression_value == 0 && stance == HOSTILE_STANCE_ATTACKING) - enemies = new() - LoseTarget() - if(COOLDOWN_FINISHED(src, emote_cooldown)) - manual_emote("calms down.") - COOLDOWN_START(src, calm_cooldown, 4 SECONDS) - COOLDOWN_START(src, emote_cooldown, 3 SECONDS) - - if(stance > HOSTILE_STANCE_ALERT) - is_eating = FALSE - - if(stance == HOSTILE_STANCE_IDLE) - stop_automated_movement = FALSE - //if there's a friend on the same tile as us, don't bother getting up (cute!) - var/mob/living/carbon/friend = locate(/mob/living/carbon) in get_turf(src) - if((friend?.faction in faction_group) && resting) - chance_to_rest = 0 - - if(prob(chance_to_rest)) - set_resting(!resting) - chance_to_rest = 0 - - chance_to_rest += rand(1, 2) - - if(stance != HOSTILE_STANCE_IDLE && resting) - set_resting(FALSE) - - if(!target_mob && !on_fire) - if(is_retreating) - stop_moving() - stance = HOSTILE_STANCE_IDLE - - if(!food_target && COOLDOWN_FINISHED(src, food_cooldown)) - for(var/obj/item/reagent_container/food/snacks/food in view(6, src)) - if(!is_type_in_list(food, acceptable_foods)) - continue - food_target = food - stance = HOSTILE_STANCE_ALERT - stop_automated_movement = TRUE - MoveTo(food_target) - break - - if(stance <= HOSTILE_STANCE_ALERT && !food_target && COOLDOWN_FINISHED(src, calm_cooldown)) - var/intruder_in_sight = FALSE - for(var/mob/living/carbon/intruder in view(5, src)) - if((intruder.faction in faction_group) || intruder.stat != CONSCIOUS || ismonkey(intruder) || intruder.alpha <= 200) - continue - - intruder_in_sight = TRUE - face_atom(intruder) - stance = HOSTILE_STANCE_ALERT - stop_automated_movement = TRUE - if(get_dist(src, intruder) == 3) - growl(intruder) - else if(get_dist(src, intruder) <= 2) - Retaliate() - COOLDOWN_START(src, pounce_cooldown, 1 SECONDS) - break - - if(!intruder_in_sight && stance == HOSTILE_STANCE_ALERT) - stance = HOSTILE_STANCE_IDLE - - if(food_target && !is_eating) - if(!(food_target in view(5, src))) - stop_moving() - lose_food() - else if(!check_food_loc(food_target) && Adjacent(food_target)) - INVOKE_ASYNC(src, PROC_REF(handle_food), food_target) + if(aggression_value == 0 && stance == HOSTILE_STANCE_ATTACKING) + enemies = new() + LoseTarget() + if(COOLDOWN_FINISHED(src, emote_cooldown)) + manual_emote("calms down.") + COOLDOWN_START(src, calm_cooldown, 4 SECONDS) + COOLDOWN_START(src, emote_cooldown, 3 SECONDS) - . = ..() + //no longer interested in food when we're in combat + if(stance > HOSTILE_STANCE_ALERT) + is_eating = FALSE + + if(stance == HOSTILE_STANCE_IDLE) + stop_automated_movement = FALSE + //if there's a friend on the same tile as us, don't bother getting up (cute!) + var/mob/living/carbon/friend = locate(/mob/living/carbon) in get_turf(src) + if((friend?.faction in faction_group) && resting) + chance_to_rest = 0 + + if(prob(chance_to_rest)) + set_resting(!resting) + chance_to_rest = 0 + + chance_to_rest += rand(1, 2) + + //if we're resting and something catches our interest, get up + if(stance != HOSTILE_STANCE_IDLE && resting) + set_resting(FALSE) - if(!client && target_mob && !is_retreating && target_mob.stat == CONSCIOUS && stance == HOSTILE_STANCE_ATTACKING && COOLDOWN_FINISHED(src, pounce_cooldown) && (prob(75) || get_dist(src, target_mob) <= 5) && (target_mob in view(5, src))) + if(target_mob && !is_retreating && target_mob.stat == CONSCIOUS && stance == HOSTILE_STANCE_ATTACKING && COOLDOWN_FINISHED(src, pounce_cooldown) && (prob(75) || get_dist(src, target_mob) <= 5) && (target_mob in view(5, src))) pounce(target_mob) + if(target_mob || on_fire) + return . + + if(is_retreating) + stop_moving() + stance = HOSTILE_STANCE_IDLE + + if(!food_target && COOLDOWN_FINISHED(src, food_cooldown)) + for(var/obj/item/reagent_container/food/snacks/food in view(6, src)) + if(!is_type_in_list(food, acceptable_foods)) + continue + food_target = food + stance = HOSTILE_STANCE_ALERT + stop_automated_movement = TRUE + MoveTo(food_target) + break + + if(stance <= HOSTILE_STANCE_ALERT && !food_target && COOLDOWN_FINISHED(src, calm_cooldown)) + var/intruder_in_sight = FALSE + for(var/mob/living/carbon/intruder in view(5, src)) + if((intruder.faction in faction_group) || intruder.stat != CONSCIOUS || ismonkey(intruder) || intruder.alpha <= 200) + continue + + intruder_in_sight = TRUE + face_atom(intruder) + stance = HOSTILE_STANCE_ALERT + stop_automated_movement = TRUE + if(get_dist(src, intruder) == 3) + growl(intruder) + else if(get_dist(src, intruder) <= 2) + Retaliate() + COOLDOWN_START(src, pounce_cooldown, 1 SECONDS) + break + + if(!intruder_in_sight && stance == HOSTILE_STANCE_ALERT) + stance = HOSTILE_STANCE_IDLE + + if(food_target && !is_eating) + if(!(food_target in view(5, src))) + stop_moving() + lose_food() + else if(!check_food_loc(food_target) && Adjacent(food_target)) + INVOKE_ASYNC(src, PROC_REF(handle_food), food_target) + + /mob/living/simple_animal/hostile/retaliate/giant_lizard/bullet_act(obj/projectile/projectile) . = ..() if(projectile.damage) @@ -453,21 +469,23 @@ ///Proc for checking if someone picked our food target. /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/check_food_loc(obj/food) - if(ismob(food.loc)) - var/mob/living/food_holder = food.loc - stop_moving() - COOLDOWN_START(src, food_cooldown, 15 SECONDS) - food_target = null - is_eating = FALSE - //snagging the food while you're right next to the mob makes it very angry - if(get_dist(src, food_holder) <= 2 && !(food_holder.faction in faction_group)) - Retaliate() - return TRUE + if(!ismob(food.loc)) + return - growl(food.loc) - stance = HOSTILE_STANCE_IDLE + var/mob/living/food_holder = food.loc + stop_moving() + COOLDOWN_START(src, food_cooldown, 15 SECONDS) + food_target = null + is_eating = FALSE + //snagging the food while you're right next to the mob makes it very angry + if(get_dist(src, food_holder) <= 2 && !(food_holder.faction in faction_group)) + Retaliate() return TRUE + growl(food.loc) + stance = HOSTILE_STANCE_IDLE + return TRUE + //Proc for when we lose our food target. /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/lose_food() stance = HOSTILE_STANCE_IDLE @@ -487,9 +505,9 @@ //we need to check for monkeys else these guys will tear up all the small hosts for xenos if((target.faction == faction || (target.faction in faction_group)) && !attack_same || ismonkey(target)) return FALSE - else if(target in friends) + if(target in friends) return FALSE - else if(target.stat != DEAD) + if(target.stat != DEAD) return target //Mobs in critical state are now fair game. Rip and tear. diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 683e0f3480ce..878212e52d32 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -6,14 +6,16 @@ health = 20 maxHealth = 20 - speed = 0 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster + ///Higher speed is slower, negative speed is faster. + speed = 0 + - //LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly melee_damage_lower = 0 melee_damage_upper = 0 attacktext = "attacks" attack_sound = null - friendly = "nuzzles" //If the mob does no damage with it's attack + //Attacktext is the mob deal 0 damaage. + friendly = "nuzzles" can_crawl = FALSE black_market_value = 25 dead_black_market_value = 0 @@ -22,21 +24,26 @@ var/icon_living = "" var/icon_dead = "" - var/icon_gib = null //We only try to show a gibbing animation if this exists. + var/icon_gib = null var/list/speak = list() var/speak_chance = 0 - var/list/emote_hear = list() //Hearable emotes - var/list/emote_see = list() //Unlike speak_emote, the list of things in this variable only show by themselves with no spoken text. IE: Ian barks, Ian yaps + ///Emotes that can be heard by other mobs. + var/list/emote_hear = list() + ///Unlike speak_emote, the list of things in this variable only show by themselves with no spoken text. IE: Ian barks, Ian yaps. + var/list/emote_see = list() var/turns_per_move = 1 var/turns_since_move = 0 universal_speak = 0 //No, just no. var/meat_amount = 0 var/meat_type - var/stop_automated_movement = 0 //Use this to temporarely stop random movement or to if you write special movement code for animals. - var/wander = 1 // Does the mob wander around when idle? - var/stop_automated_movement_when_pulled = 1 //When set to 1 this stops the animal from moving when someone is pulling it. + ///Use this to temporarely stop random movement or to if you write special movement code for animals. + var/stop_automated_movement = 0 + ///Does the mob wander around when idle? + var/wander = 1 + ///When set to 1 this stops the animal from moving when someone is pulling it. + var/stop_automated_movement_when_pulled = 1 //Interaction var/response_help = "tries to help" @@ -47,22 +54,26 @@ //Temperature effect var/minbodytemp = 250 var/maxbodytemp = 350 - var/heat_damage_per_tick = 3 //amount of damage applied if animal's body temperature is higher than maxbodytemp - var/cold_damage_per_tick = 2 //same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp + ///amount of damage applied if animal's body temperature is higher than maxbodytemp + var/heat_damage_per_tick = 3 + ///same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp + var/cold_damage_per_tick = 2 ///Will this mob be affected by fire/napalm? Set to FALSE for all mobs as the implications could be weird due to not being tested for all simple mobs. var/affected_by_fire = FALSE //Atmos effect - Yes, you can make creatures that require phoron or co2 to survive. N2O is a trace gas and handled separately, hence why it isn't here. It'd be hard to add it. Hard and me don't mix (Yes, yes make all the dick jokes you want with that.) - Errorage + //Leaving something at 0 means it's off - has no maximum var/min_oxy = 5 - var/max_oxy = 0 //Leaving something at 0 means it's off - has no maximum + var/max_oxy = 0 var/min_tox = 0 var/max_tox = 1 var/min_co2 = 0 var/max_co2 = 5 var/min_n2 = 0 var/max_n2 = 0 - var/unsuitable_atoms_damage = 2 //This damage is taken when atmos doesn't fit all the requirements above + ///This damage is taken when atmos doesn't fit all the requirements above + var/unsuitable_atoms_damage = 2 var/fire_overlay /mob/living/simple_animal/Initialize() @@ -81,6 +92,11 @@ /mob/living/simple_animal/updatehealth() return +/mob/living/simple_animal/rejuvenate() + health = maxHealth + SSmob.living_misc_mobs += src + return ..() + /mob/living/simple_animal/get_examine_text(mob/user) . = ..() if(stat == DEAD) From c2a23e60b2adeaeb56b9828fadde27b74d8b6727 Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Fri, 23 Aug 2024 15:06:42 +0200 Subject: [PATCH 08/10] Apply suggestions from code review Co-authored-by: harryob <55142896+harryob@users.noreply.github.com> --- .../mob/living/simple_animal/hostile/retaliate/giant_lizard.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index ad80c693f3a8..08d982cfd3da 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -495,7 +495,7 @@ //Do not stop hunting targets even if they're not visible anymore. /mob/living/simple_animal/hostile/retaliate/giant_lizard/ListTargets(dist = 9) - if(!enemies.len) + if(!length(enemies)) return list() var/list/see = orange(src, dist) see &= enemies From 96992af5f89d5b4dec2e720ddd26a5bbcecb9b0f Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Fri, 23 Aug 2024 16:13:27 +0200 Subject: [PATCH 09/10] Apply suggestions from code review Co-authored-by: harryob <55142896+harryob@users.noreply.github.com> --- .../simple_animal/hostile/retaliate/giant_lizard.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index 08d982cfd3da..aaf2e117b94a 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -137,7 +137,7 @@ //procs for handling sleeping icons when resting /mob/living/simple_animal/hostile/retaliate/giant_lizard/AddSleepingIcon() - var/image/sleeping_icon = new /image('icons/mob/hud/hud.dmi', "slept_icon_centered") + var/image/sleeping_icon = new('icons/mob/hud/hud.dmi', "slept_icon_centered") if(sleep_overlay) return sleep_overlay = sleeping_icon @@ -300,11 +300,11 @@ . = ..() if(client) - return . + return //if we haven't gotten hurt in a while, calm down and go back to idling if(aggression_value == 0 && stance == HOSTILE_STANCE_ATTACKING) - enemies = new() + enemies = list() LoseTarget() if(COOLDOWN_FINISHED(src, emote_cooldown)) manual_emote("calms down.") @@ -585,7 +585,7 @@ //Replaced walk_to() with MoveTo(). /mob/living/simple_animal/hostile/retaliate/giant_lizard/MoveToTarget() - stop_automated_movement = 1 + stop_automated_movement = TRUE if(!target_mob || SA_attackable(target_mob)) stance = HOSTILE_STANCE_IDLE if(target_mob in ListTargets(10)) From ea38fccc4b91016053ab2efe440e92a2bcec6a7b Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Sat, 24 Aug 2024 00:25:58 +0200 Subject: [PATCH 10/10] some more nits & comments --- .../hostile/retaliate/giant_lizard.dm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index aaf2e117b94a..6bb0202c2deb 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -293,7 +293,8 @@ if(bleed_ticks) var/is_small_pool = FALSE - if(bleed_ticks < 10) is_small_pool = TRUE + if(bleed_ticks < 10) + is_small_pool = TRUE bleed_ticks-- add_splatter_floor(loc, is_small_pool) @@ -336,12 +337,14 @@ pounce(target_mob) if(target_mob || on_fire) - return . + return + //if we are retreating, but we don't have any targets or we're not on fire, stop retreating if(is_retreating) stop_moving() stance = HOSTILE_STANCE_IDLE + //if we're hungry and we don't have already have our eyes on a snack, try eating food if possible if(!food_target && COOLDOWN_FINISHED(src, food_cooldown)) for(var/obj/item/reagent_container/food/snacks/food in view(6, src)) if(!is_type_in_list(food, acceptable_foods)) @@ -352,6 +355,7 @@ MoveTo(food_target) break + //handling mobs that are invading our personal space if(stance <= HOSTILE_STANCE_ALERT && !food_target && COOLDOWN_FINISHED(src, calm_cooldown)) var/intruder_in_sight = FALSE for(var/mob/living/carbon/intruder in view(5, src)) @@ -372,10 +376,12 @@ if(!intruder_in_sight && stance == HOSTILE_STANCE_ALERT) stance = HOSTILE_STANCE_IDLE + //if we have a snack that we want to eat, but we're not munching on it currently, check if it's close to us. if(food_target && !is_eating) if(!(food_target in view(5, src))) stop_moving() lose_food() + //if the food is next to us AND not in the hands of a mob, start eating else if(!check_food_loc(food_target) && Adjacent(food_target)) INVOKE_ASYNC(src, PROC_REF(handle_food), food_target) @@ -503,9 +509,7 @@ /mob/living/simple_animal/hostile/retaliate/giant_lizard/evaluate_target(mob/living/target) //we need to check for monkeys else these guys will tear up all the small hosts for xenos - if((target.faction == faction || (target.faction in faction_group)) && !attack_same || ismonkey(target)) - return FALSE - if(target in friends) + if((target.faction == faction || (target.faction in faction_group)) && !attack_same || ismonkey(target) || (target in friends)) return FALSE if(target.stat != DEAD) return target

mG6DhTa_4xyzy^XjR*sX?ej*jlT}T74?`!SqI>)1Qm^FXgu>cdqFn!S% z0IgALzAm2LL>gGnED9O`zGz%^D<3&&zf7!EPEXbeU>xNxo0Uuoroe?4r;SgSk}^I0 zeoWb2Of!4(@M)9ZKVDgxHho%Q^NM?t&nt{7M3wYUe}-I6a}ry|saN(QR24mBO0(8e z2q*s0gZ%uA)>%DTLeo@^9(P(Drr3$VXDoRU9jxGvTJK4$!V zZ@~?)f#n!w(yKA?gsd3=@chuTz0Ef1ul)Xb&+e6Myl_z+&%A2}3dZo~n0qlb>l&?P zh?&c_v+=O4AD Date: Mon, 5 Aug 2024 19:51:12 +0200 Subject: [PATCH 02/10] adds a lot of stuff can't even count it honestly --- code/datums/pain/_pain.dm | 2 +- .../objects/effects/landmarks/landmarks.dm | 9 + .../hostile/retaliate/giant_lizard.dm | 362 ++++++++++++++++-- .../hostile/retaliate/retaliate.dm | 2 +- icons/landmarks.dmi | Bin 37518 -> 41997 bytes maps/map_files/LV624/LV624.dmm | 37 +- sound/ATTRIBUTION.txt | 3 + sound/effects/ATTRIBUTION.txt | 2 - sound/effects/giant_lizard_hiss1.ogg | Bin 0 -> 30633 bytes sound/effects/giant_lizard_hiss2.ogg | Bin 0 -> 37575 bytes 10 files changed, 370 insertions(+), 47 deletions(-) create mode 100644 sound/ATTRIBUTION.txt delete mode 100644 sound/effects/ATTRIBUTION.txt create mode 100644 sound/effects/giant_lizard_hiss1.ogg create mode 100644 sound/effects/giant_lizard_hiss2.ogg diff --git a/code/datums/pain/_pain.dm b/code/datums/pain/_pain.dm index fd4dfbf0bbb3..826773504151 100644 --- a/code/datums/pain/_pain.dm +++ b/code/datums/pain/_pain.dm @@ -193,7 +193,7 @@ if(!isnull(threshold_horrible)) activate_horrible() - if(new_level >= PAIN_LEVEL_SEVERE) + if(new_level >= PAIN_LEVEL_SEVERE && feels_pain) RegisterSignal(source_mob, COMSIG_MOB_DRAGGED, PROC_REF(oxyloss_drag), override = TRUE) RegisterSignal(source_mob, COMSIG_MOB_DEVOURED, PROC_REF(handle_devour), override = TRUE) RegisterSignal(source_mob, COMSIG_MOVABLE_PRE_THROW, PROC_REF(oxy_kill), override = TRUE) diff --git a/code/game/objects/effects/landmarks/landmarks.dm b/code/game/objects/effects/landmarks/landmarks.dm index bf3b952edcf5..ef75c64e0408 100644 --- a/code/game/objects/effects/landmarks/landmarks.dm +++ b/code/game/objects/effects/landmarks/landmarks.dm @@ -121,6 +121,15 @@ GLOB.monkey_spawns -= src return ..() +/obj/effect/landmark/lizard_spawn + name = "lizard spawn" + icon_state = "lizard_spawn" + +/obj/effect/landmark/lizard_spawn/Initialize(mapload, ...) + . = ..() + if(prob(66)) + new /mob/living/simple_animal/hostile/retaliate/giant_lizard(loc) + /obj/effect/landmark/latewhiskey name = "Whiskey Outpost Late join" diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index 84e42dcab782..3222a5c8829e 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -1,5 +1,7 @@ #define ATTACK_SLASH 0 #define ATTACK_BITE 1 +#define LIZARD_SPEED_NORMAL 3 +#define LIZARD_SPEED_RETREAT 2.5 /mob/living/simple_animal/hostile/retaliate/giant_lizard name = "giant lizard" @@ -9,8 +11,8 @@ icon_living = "Giant Lizard Running" icon_dead = "Giant Lizard Dead" mob_size = MOB_SIZE_XENO_SMALL - maxHealth = 250 - health = 250 + maxHealth = 350 + health = 350 icon_size = 64 pixel_x = -16 old_x = -16 @@ -18,10 +20,13 @@ base_pixel_y = -20 mobility_flags = MOBILITY_FLAGS_REST_CAPABLE_DEFAULT affected_by_fire = TRUE + move_to_delay = LIZARD_SPEED_NORMAL + speed = LIZARD_SPEED_NORMAL //speed and move_to_delay are not the same in simplemob code (wow!) response_help = "pets" - response_disarm = "tries to push" + response_disarm = "tries to push away" response_harm = "punches" + see_in_dark = 50 speak_chance = 2 speak_emote = "hisses" @@ -32,35 +37,104 @@ melee_damage_upper = 25 attack_same = FALSE + ///If 0, moves the mob out of attacking into idle state. Used to prevent the mob from chasing down targets that did not mean to hurt it. + var/aggression_value = 0 + ///What sounds to play when the mob growls. var/list/growl_sounds = list('sound/effects/giant_lizard_growl1.ogg', 'sound/effects/giant_lizard_growl2.ogg') + ///What sounds to play when hissing. Mostly used for when being pet. + var/list/hiss_sounds = list('sound/effects/giant_lizard_hiss1.ogg', 'sound/effects/giant_lizard_hiss2.ogg') ///Emotes to play when being pet by a friend. var/list/pet_emotes = list("closes its eyes.", "growls happily.", "wags its tail.", "stares.", "rolls on the ground.") - ///Cooldown to stop pet_emotes spam. - COOLDOWN_DECLARE(pet_emotes_cooldown) + ///Cooldown to stop generic emote spam. + COOLDOWN_DECLARE(emote_cooldown) + + ///Collision callbacks for the pounce proc. + var/list/pounce_callbacks = list() + ///Are we currently mauling a mob after pouncing them? Used to stop normal attacks on pounced targets. + var/is_ravaging = FALSE + ///Cooldown for the pounce ability. + COOLDOWN_DECLARE(pounce_cooldown) ///How many times the mob is going bleed in the Life() proc. var/bleed_ticks = 0 ///Chance of the mob laying down/getting up. var/chance_to_rest = 0 + ///Is the mob currently running away from a target? + var/is_retreating = FALSE ///The food object that the mob is trying to eat. var/food_target ///A list of foods the mob is interested in eating. - var/list/acceptable_foods = list(/obj/item/reagent_container/food/snacks/meat, /obj/item/reagent_container/food/snacks/resin_fruit) + var/list/acceptable_foods = list(/obj/item/reagent_container/food/snacks/meat, /obj/item/reagent_container/food/snacks/packaged_meal, /obj/item/reagent_container/food/snacks/resin_fruit) ///Is the mob currently eating the food_target? var/is_eating = FALSE ///Cooldown dictating how long the mob will wait between eating food. COOLDOWN_DECLARE(food_cooldown) + ///Cooldown for the growl emote. + COOLDOWN_DECLARE(growl_message) + ///Cooldown for when the mob calms down, so the mob doesn't start attacking immediately after calming down. + COOLDOWN_DECLARE(calm_cooldown) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/Initialize() + . = ..() + pounce_callbacks[/mob] = DYNAMIC(/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_mob_wrapper) + pounce_callbacks[/turf] = DYNAMIC(/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_turf_wrapper) + pounce_callbacks[/obj] = DYNAMIC(/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_obj_wrapper) + + +//regular pain datum will make the mob die when trying to pounce after taking enough damage. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/initialize_pain() + pain = new /datum/pain/xeno(src) + ///Proc for growling. -/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/growl(target_mob) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/growl(target_mob, ignore_cooldown = FALSE) + if(!COOLDOWN_FINISHED(src, growl_message) && !ignore_cooldown) + return if(target_mob) manual_emote("growls at [target_mob].") else manual_emote("growls.") playsound(loc, growl_sounds, 60) + COOLDOWN_START(src, growl_message, rand(10, 14) SECONDS) + +//the AI gets funky when it gets stunned midcombat. this will help them get back into the fight more organically. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/on_immobilized_trait_loss(datum/source) + . = ..() + find_target_on_trait_loss() + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/on_knockedout_trait_loss(datum/source) + . = ..() + find_target_on_trait_loss() + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/on_incapacitated_trait_loss(datum/source) + . = ..() + find_target_on_trait_loss() + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/find_target_on_trait_loss() + if(stance > HOSTILE_STANCE_ALERT) + FindTarget() + MoveToTarget() + +//procs for handling sleeping icons when resting +/mob/living/simple_animal/hostile/retaliate/giant_lizard/AddSleepingIcon() + var/image/SL + SL = new /image('icons/mob/hud/hud.dmi', "slept_icon") + if(SL in overlays) + return + overlays += SL + addtimer(CALLBACK(src, PROC_REF(RemoveSleepingIcon)), 3 SECONDS) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/RemoveSleepingIcon() + var/image/SL + SL = new /image('icons/mob/hud/hud.dmi', "slept_icon") + overlays -= SL + +//The parent proc sets the stance to IDLE which will break the AI if it's in combat +/mob/living/simple_animal/hostile/retaliate/giant_lizard/stop_moving() + walk_to(src, 0) /mob/living/simple_animal/hostile/retaliate/giant_lizard/update_transform(instant_update = FALSE) if(stat == DEAD) @@ -75,7 +149,9 @@ return ..() /mob/living/simple_animal/hostile/retaliate/giant_lizard/get_examine_text(mob/user) - if(user.faction in faction_group) + if(stat == DEAD) + desc = "A large, wolf-like reptile." + else if(user.faction in faction_group) desc = "[initial(desc)] There's a hint of warmth in them." else desc = initial(desc) @@ -83,6 +159,8 @@ /mob/living/simple_animal/hostile/retaliate/giant_lizard/set_resting(new_resting, silent, instant) . = ..() + if(!resting) + RemoveSleepingIcon() update_transform() /mob/living/simple_animal/hostile/retaliate/giant_lizard/death() @@ -95,25 +173,60 @@ if(attacking_mob.a_intent == INTENT_HELP && (attacking_mob.faction in faction_group)) if(!resting) chance_to_rest += 15 - if(COOLDOWN_FINISHED(src, pet_emotes_cooldown) && resting) + if(resting) chance_to_rest = 0 - manual_emote(pick(pet_emotes)) - COOLDOWN_START(src, pet_emotes_cooldown, rand(5, 8) SECONDS) + if(COOLDOWN_FINISHED(src, emote_cooldown)) + COOLDOWN_START(src, emote_cooldown, rand(5, 8) SECONDS) + manual_emote(pick(pet_emotes)) + if(prob(50)) + playsound(loc, hiss_sounds, 25) /mob/living/simple_animal/hostile/retaliate/giant_lizard/apply_damage(damage, damagetype, def_zone, used_weapon, sharp, edge, force) Retaliate() + aggression_value = clamp(aggression_value + 5, 0, 30) . = ..() + var/retreat_chance = abs((health / maxHealth * 100) - 100) + if(prob(retreat_chance)) + MoveTo(target_mob, 12, TRUE, 8 SECONDS) if(damage >= 10 && damagetype == BRUTE) add_splatter_floor(loc, TRUE) bleed_ticks = clamp(bleed_ticks + ceil(damage / 10), 0, 30) /mob/living/simple_animal/hostile/retaliate/giant_lizard/Life(delta_time) + //simplemobs don't have knockdown reduction so we'll manually remove it if applicable. works well due to Life() delay. + SetKnockDown(0) + if(aggression_value > 0) aggression_value-- + + //if we haven't gotten hurt in a while, calm down and go back to idling + if(aggression_value == 0 && stance == HOSTILE_STANCE_ATTACKING) + enemies = new() + LoseTarget() + if(COOLDOWN_FINISHED(src, emote_cooldown)) + manual_emote("calms down.") + COOLDOWN_START(src, calm_cooldown, 4 SECONDS) + COOLDOWN_START(src, emote_cooldown, 3 SECONDS) + if(resting) health += maxHealth * 0.05 + if(prob(33)) + AddSleepingIcon() if(stance > HOSTILE_STANCE_ALERT) is_eating = FALSE + if(stance == HOSTILE_STANCE_IDLE) + stop_automated_movement = FALSE + //if there's a friend on the same tile as us, don't bother getting up (cute!) + var/mob/living/carbon/friend = locate(/mob/living/carbon) in get_turf(src) + if((friend?.faction in faction_group) && resting) + chance_to_rest = 0 + + if(prob(chance_to_rest)) + set_resting(!resting) + chance_to_rest = 0 + + chance_to_rest += rand(1, 2) + if(stance != HOSTILE_STANCE_IDLE && resting) set_resting(FALSE) @@ -123,8 +236,11 @@ bleed_ticks -= is_small_pool ? 1 : 2 add_splatter_floor(loc, is_small_pool) - if(stance == HOSTILE_STANCE_IDLE) - stop_automated_movement = FALSE + if(!target_mob) + if(is_retreating) + stop_moving() + stance = HOSTILE_STANCE_IDLE + if(!food_target && COOLDOWN_FINISHED(src, food_cooldown)) for(var/obj/item/reagent_container/food/snacks/food in view(6, src)) if(!is_type_in_list(food, acceptable_foods)) @@ -135,26 +251,38 @@ MoveTo(food_target) break - //if there's a friend on the same tile as us, don't bother getting up (cute!) - var/mob/living/carbon/friend = locate(/mob/living/carbon) in get_turf(src) - if((friend?.faction in faction_group) && resting) - chance_to_rest = 0 - - if(prob(chance_to_rest)) - set_resting(!resting) - chance_to_rest = 0 - - chance_to_rest += rand(1, 2) - - if(food_target && !is_eating) - if(!(food_target in view(5, src))) - stop_moving() - lose_food() - else if(!check_food_loc(food_target) && Adjacent(food_target)) - INVOKE_ASYNC(src, PROC_REF(handle_food), food_target) + if(stance <= HOSTILE_STANCE_ALERT && !food_target && COOLDOWN_FINISHED(src, calm_cooldown)) + var/intruder_in_sight = FALSE + for(var/mob/living/carbon/intruder in view(5, src)) + if((intruder.faction in faction_group) || intruder.stat != CONSCIOUS || ismonkey(intruder)) + continue + intruder_in_sight = TRUE + face_atom(intruder) + stance = HOSTILE_STANCE_ALERT + stop_automated_movement = TRUE + if(get_dist(src, intruder) == 3) + growl(intruder) + else if(get_dist(src, intruder) <= 2) + Retaliate() + COOLDOWN_START(src, pounce_cooldown, 1 SECONDS) + break + + if(!intruder_in_sight && stance == HOSTILE_STANCE_ALERT) + stance = HOSTILE_STANCE_IDLE + + if(food_target && !is_eating) + if(!(food_target in view(5, src))) + stop_moving() + lose_food() + else if(!check_food_loc(food_target) && Adjacent(food_target)) + INVOKE_ASYNC(src, PROC_REF(handle_food), food_target) . = ..() + if(target_mob && !is_retreating && target_mob.stat == CONSCIOUS && stance == HOSTILE_STANCE_ATTACKING && COOLDOWN_FINISHED(src, pounce_cooldown) && (prob(75) || get_dist(src, target_mob) <= 5) && (target_mob in view(5, src))) + pounce() + COOLDOWN_START(src, pounce_cooldown, rand(8, 12) SECONDS) + /mob/living/simple_animal/hostile/retaliate/giant_lizard/bullet_act(obj/projectile/projectile) . = ..() if(projectile.damage) @@ -166,17 +294,26 @@ bloodsplatter.pixel_y = -2 /mob/living/simple_animal/hostile/retaliate/giant_lizard/AttackingTarget() - if(!Adjacent(target_mob)) + if(!Adjacent(target_mob) || is_ravaging) return + if(isliving(target_mob)) var/mob/living/target = target_mob + //decimate mobs that are in crit + if(target.stat == UNCONSCIOUS) + ravagingattack() + return target + face_atom(target) var/attack_type = pick(ATTACK_SLASH, ATTACK_BITE) - target.attack_animal(src) - animation_attack_on(target) attacktext = attack_type ? "claws" : "bites" flick_attack_overlay(target, attack_type ? "slash" : "animalbite") playsound(loc, attack_type ? "alien_claw_flesh" : "alien_bite", 25, 1) + target.attack_animal(src) + animation_attack_on(target) + + if(prob(33)) + MoveTo(target_mob, 8, TRUE, 2 SECONDS, TRUE) //skirmish around our target return target ///Proc for when the mob finds food and starts DEVOURING it. @@ -185,13 +322,13 @@ is_eating = TRUE for(var/times_to_eat = rand(4, 6), times_to_eat--) sleep(rand(1.7, 2.5) SECONDS) - if(check_food_loc(food)) + if(check_food_loc(food) || stance > HOSTILE_STANCE_ALERT) return face_atom(food) playsound(loc,'sound/items/eatfood.ogg', 25, 1) for(var/mob/living/carbon/nearest_mob in view(7, src)) - if(nearest_mob != food.last_dropped_by) + if(nearest_mob != food.last_dropped_by || (nearest_mob in faction_group)) continue face_atom(nearest_mob) manual_emote("stares curiously at [nearest_mob].") @@ -227,10 +364,36 @@ is_eating = FALSE COOLDOWN_START(src, food_cooldown, 15 SECONDS) +//Do not stop hunting targets even if they're not visible anymore. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/ListTargets(dist = 9) + if(!enemies.len) + return list() + var/list/see = orange(src, dist) + see &= enemies + return see + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/evaluate_target(mob/living/target) + //we need to check for monkeys else these guys will tear up all the small hosts for xenos + if((target.faction == faction || (target.faction in faction_group)) && !attack_same || ismonkey(target)) + return FALSE + else if(target in friends) + return FALSE + else if(target.stat != DEAD) + return target + +//Mobs in critical state are now fair game. Rip and tear. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/SA_attackable(target_mob) + if(isliving(target_mob)) + var/mob/living/target = target_mob + if(target.stat == DEAD) + return TRUE + return FALSE + //Immediately retaliate after being attacked. /mob/living/simple_animal/hostile/retaliate/giant_lizard/Retaliate() if(stat == DEAD || target_mob) return + aggression_value = clamp(aggression_value + 5, 0, 30) . = ..() target_mob = FindTarget() if(target_mob) @@ -238,12 +401,37 @@ MoveToTarget() ///Proc for moving to targets. walk_to() doesn't check for resting and status effects so we will do it ourselves. -/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/MoveTo(target, distance = 1) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/MoveTo(target, distance = 1, retreat = FALSE, time = 6 SECONDS, return_to_combat = FALSE) if(stat == DEAD || HAS_TRAIT(src, TRAIT_INCAPACITATED) || HAS_TRAIT(src, TRAIT_FLOORED)) return if(resting) set_resting(FALSE) - walk_to(src, target, distance, move_to_delay) + if(!retreat) + walk_to(src, target, distance, move_to_delay) + return + + is_retreating = TRUE + stop_automated_movement = TRUE + stance = HOSTILE_STANCE_ALERT + walk_away(src, target ? target : get_turf(src), distance, LIZARD_SPEED_RETREAT) + addtimer(CALLBACK(src, PROC_REF(stop_retreat), return_to_combat), time) + +//Proc that's called after the retreat has run its course. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/stop_retreat(return_to_combat = FALSE) + is_retreating = FALSE + if(!return_to_combat) + //don't stop retreating if there are non-friendly carbons in view + for(var/mob/living/carbon/hostile_mob in view(7, src)) + if(hostile_mob.faction in faction_group) + continue + MoveTo(hostile_mob, 10, TRUE, 4 SECONDS, FALSE) + return + + LoseTarget() + else + stance = HOSTILE_STANCE_ATTACKING + FindTarget() + MoveToTarget() //Replaced walk_to() with MoveTo(). /mob/living/simple_animal/hostile/retaliate/giant_lizard/MoveToTarget() @@ -254,5 +442,105 @@ stance = HOSTILE_STANCE_ATTACKING MoveTo(target_mob) +///Ravaging attack, used for when a mob gets pounced. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/ravagingattack() + if(is_ravaging) + return + is_ravaging = TRUE + visible_message(SPAN_DANGER("[src] tears into [target_mob] repeatedly!")) + + for(var/attack_num = 3, attack_num >= 0, attack_num--) + if(Adjacent(target_mob) && stat == CONSCIOUS) + var/damage = rand(melee_damage_lower, melee_damage_upper) * 0.33 + var/attack_type = pick(ATTACK_SLASH, ATTACK_BITE) + attacktext = attack_type ? "claws" : "bites" + flick_attack_overlay(target_mob, attack_type ? "slash" : "animalbite") + playsound(loc, attack_type ? "alien_claw_flesh" : "alien_bite", 25, 1) + target_mob.handle_blood_splatter(get_dir(src.loc, target_mob.loc)) + target_mob.apply_damage(damage, BRUTE) + animation_attack_on(target_mob) + face_atom(target_mob) + sleep(0.5 SECONDS) + is_ravaging = FALSE + +//POUNCE PROCS AND WRAPPERS +/////////////////////////// +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounce() + if(stat == DEAD || HAS_TRAIT(src, TRAIT_INCAPACITATED) || HAS_TRAIT(src, TRAIT_FLOORED)) + return + var/pounce_distance = clamp((get_dist(src, target_mob)), 1, 5) + manual_emote("pounces at [target_mob]!") + INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, throw_atom), target_mob, pounce_distance, SPEED_FAST, src, null, LOW_LAUNCH, PASS_OVER_THROW_MOB, null, pounce_callbacks) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_mob_wrapper(mob/living/pounced_mob) + pounced_mob(pounced_mob) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_mob(mob/living/pounced_mob) + if(stat == DEAD || pounced_mob.stat == DEAD || pounced_mob.mob_size >= MOB_SIZE_BIG || pounced_mob == src) + throwing = FALSE + return + + if(ishuman(pounced_mob) && (pounced_mob.dir in reverse_nearby_direction(dir))) + var/mob/living/carbon/human/human = pounced_mob + if(human.check_shields(15, "the pounce")) //Human shield block. + visible_message(SPAN_DANGER("[src] slams into [human]!")) + KnockDown(1) + Stun(1) + throwing = FALSE //Reset throwing manually. + playsound(human, "bonk", 75, FALSE) //bonk + return + + if(isyautja(human)) + if(human.check_shields(0, "the pounce", 1)) + visible_message(SPAN_DANGER("[human] blocks the pounce of [src] with the combistick!")) + apply_effect(3, WEAKEN) + throwing = FALSE + playsound(human, "bonk", 75, FALSE) + return + else if(prob(75)) //Body slam. + visible_message(SPAN_DANGER("[human] body slams [src]!")) + KnockDown(3) + Stun(3) + throwing = FALSE + playsound(loc, 'sound/weapons/alien_knockdown.ogg', 25, 1) + return + if(iscolonysynthetic(human) && prob(60)) + visible_message(SPAN_DANGER("[human] withstands being pounced and slams down [src]!")) + KnockDown(1.5) + Stun(1.5) + throwing = FALSE + playsound(loc, 'sound/weapons/alien_knockdown.ogg', 25, 1) + return + + playsound(loc, hiss_sounds, 15) + pounced_mob.KnockDown(0.5) + step_to(src, pounced_mob) + ravagingattack() + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_turf(turf/turf_target) + if(!turf_target.density) + for(var/mob/living/mob in turf_target) + pounced_mob(mob) + break + else + turf_launch_collision(turf_target) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_turf_wrapper(turf/turf_target) + pounced_turf(turf_target) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_obj_wrapper(obj/O) + pounced_obj(O) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_obj(obj/O) + // Unconscious or dead, or not throwing but used pounce + if(stat != CONSCIOUS) + obj_launch_collision(O) + return + + if(!istype(O, /obj/structure/surface/table) && !istype(O, /obj/structure/surface/rack)) + O.hitby(src) //This resets throwing. + #undef ATTACK_SLASH #undef ATTACK_BITE +#undef LIZARD_SPEED_NORMAL +#undef LIZARD_SPEED_RETREAT diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm index 9e4d4445723c..64ab6541b2d2 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm @@ -27,7 +27,7 @@ continue if(isliving(A)) var/mob/living/M = A - if(!attack_same && (M.faction != faction || !(M.faction in faction_group))) + if(evaluate_target(M)) enemies |= M for(var/mob/living/simple_animal/hostile/retaliate/H in around) diff --git a/icons/landmarks.dmi b/icons/landmarks.dmi index 08b23758beaa03c94cec15ae137a2fe1d1c482c2..32fe9e0790a65e30aa84ac9f9fe9bba2c011fabc 100644 GIT binary patch literal 41997 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 SBozS;L7ph6JSvql4E!I&x>{WT literal 37518 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 literal 0 HcmV?d00001 diff --git a/sound/effects/giant_lizard_hiss2.ogg b/sound/effects/giant_lizard_hiss2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5a0d143ef15f21646f0113b00ebc8e19b61c5dd3 GIT binary patch literal 37575 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 Date: Tue, 6 Aug 2024 18:42:44 +0200 Subject: [PATCH 03/10] fixes fire for all simplemobs, adds basic pack tactics, stops retreat loop and adds some other stuff --- .../modules/mob/living/living_health_procs.dm | 2 + .../hostile/retaliate/giant_lizard.dm | 138 +++++++++++++----- .../mob/living/simple_animal/simple_animal.dm | 63 ++++---- icons/mob/hud/hud.dmi | Bin 19605 -> 20337 bytes 4 files changed, 143 insertions(+), 60 deletions(-) diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index ffe1a56b59f8..003fafb1cb82 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -550,6 +550,8 @@ GLOB.alive_mob_list += src tod = null timeofdeath = 0 + if(isanimal(src)) + health = maxHealth // restore us to consciousness set_stat(CONSCIOUS) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index 3222a5c8829e..aa4c44d4e63a 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -37,16 +37,17 @@ melee_damage_upper = 25 attack_same = FALSE + var/sleep_overlay + ///If 0, moves the mob out of attacking into idle state. Used to prevent the mob from chasing down targets that did not mean to hurt it. var/aggression_value = 0 - ///What sounds to play when the mob growls. var/list/growl_sounds = list('sound/effects/giant_lizard_growl1.ogg', 'sound/effects/giant_lizard_growl2.ogg') - ///What sounds to play when hissing. Mostly used for when being pet. + ///What sounds to play when hissing. var/list/hiss_sounds = list('sound/effects/giant_lizard_hiss1.ogg', 'sound/effects/giant_lizard_hiss2.ogg') ///Emotes to play when being pet by a friend. - var/list/pet_emotes = list("closes its eyes.", "growls happily.", "wags its tail.", "stares.", "rolls on the ground.") + var/list/pet_emotes = list("closes its eyes.", "growls happily.", "wags its tail.", "rolls on the ground.") ///Cooldown to stop generic emote spam. COOLDOWN_DECLARE(emote_cooldown) @@ -63,6 +64,10 @@ var/chance_to_rest = 0 ///Is the mob currently running away from a target? var/is_retreating = FALSE + ///How many times have we attempted to retreat? + var/retreat_attempts = 0 + ///Tied directly to retreat_attempts. If our retreat fail, then we will completely stop trying to retreat for the length of this cooldown. + COOLDOWN_DECLARE(retreat_cooldown) ///The food object that the mob is trying to eat. var/food_target @@ -80,11 +85,11 @@ /mob/living/simple_animal/hostile/retaliate/giant_lizard/Initialize() . = ..() + change_real_name(src, "[name] ([rand(1, 999)])") pounce_callbacks[/mob] = DYNAMIC(/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_mob_wrapper) pounce_callbacks[/turf] = DYNAMIC(/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_turf_wrapper) pounce_callbacks[/obj] = DYNAMIC(/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_obj_wrapper) - //regular pain datum will make the mob die when trying to pounce after taking enough damage. /mob/living/simple_animal/hostile/retaliate/giant_lizard/initialize_pain() pain = new /datum/pain/xeno(src) @@ -113,7 +118,9 @@ . = ..() find_target_on_trait_loss() +///Proc for handling the AI post-status effect. /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/find_target_on_trait_loss() + is_retreating = FALSE if(stance > HOSTILE_STANCE_ALERT) FindTarget() MoveToTarget() @@ -121,16 +128,17 @@ //procs for handling sleeping icons when resting /mob/living/simple_animal/hostile/retaliate/giant_lizard/AddSleepingIcon() var/image/SL - SL = new /image('icons/mob/hud/hud.dmi', "slept_icon") - if(SL in overlays) + SL = new /image('icons/mob/hud/hud.dmi', "slept_icon_centered") + if(sleep_overlay) return - overlays += SL - addtimer(CALLBACK(src, PROC_REF(RemoveSleepingIcon)), 3 SECONDS) + sleep_overlay = SL + overlays += sleep_overlay + addtimer(CALLBACK(src, PROC_REF(RemoveSleepingIcon)), 6 SECONDS) /mob/living/simple_animal/hostile/retaliate/giant_lizard/RemoveSleepingIcon() - var/image/SL - SL = new /image('icons/mob/hud/hud.dmi', "slept_icon") - overlays -= SL + if(sleep_overlay) + overlays -= sleep_overlay + sleep_overlay = null //The parent proc sets the stance to IDLE which will break the AI if it's in combat /mob/living/simple_animal/hostile/retaliate/giant_lizard/stop_moving() @@ -170,31 +178,68 @@ /mob/living/simple_animal/hostile/retaliate/giant_lizard/attack_hand(mob/living/carbon/human/attacking_mob) . = ..() + if(stat == DEAD) + return + if(attacking_mob.a_intent == INTENT_HELP && (attacking_mob.faction in faction_group)) + if(on_fire) + adjust_fire_stacks(-5, min_stacks = 0) + playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7) + visible_message(SPAN_DANGER("[attacking_mob] tries to put out the fire on [src]!"), \ + SPAN_WARNING("You try to put out the fire on [src]!"), null, 5) + if(fire_stacks <= 0) + visible_message(SPAN_DANGER("[attacking_mob] has successfully extinguished the fire on [src]!"), \ + SPAN_NOTICE("You extinguished the fire on [src]."), null, 5) + return if(!resting) chance_to_rest += 15 if(resting) chance_to_rest = 0 if(COOLDOWN_FINISHED(src, emote_cooldown)) COOLDOWN_START(src, emote_cooldown, rand(5, 8) SECONDS) - manual_emote(pick(pet_emotes)) + manual_emote(pick(pick(pet_emotes), "stares at [attacking_mob].", "licks [attacking_mob]'s hand."), "nibbles [attacking_mob]'s arm.", "flicks its tongue at [attacking_mob].") if(prob(50)) playsound(loc, hiss_sounds, 25) + if(attacking_mob.a_intent == INTENT_DISARM && prob(75)) + walk_to(src, get_step(loc, attacking_mob.dir), 0, LIZARD_SPEED_NORMAL) /mob/living/simple_animal/hostile/retaliate/giant_lizard/apply_damage(damage, damagetype, def_zone, used_weapon, sharp, edge, force) Retaliate() aggression_value = clamp(aggression_value + 5, 0, 30) . = ..() var/retreat_chance = abs((health / maxHealth * 100) - 100) - if(prob(retreat_chance)) + if(prob(retreat_chance) && health <= maxHealth * 0.66 && COOLDOWN_FINISHED(src, retreat_cooldown)) MoveTo(target_mob, 12, TRUE, 8 SECONDS) if(damage >= 10 && damagetype == BRUTE) add_splatter_floor(loc, TRUE) bleed_ticks = clamp(bleed_ticks + ceil(damage / 10), 0, 30) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/try_to_extinguish() + if(!is_retreating && on_fire) + //forget EVERYTHING. we need to stop the flames!!! + stance = HOSTILE_STANCE_ALERT + target_mob = null + food_target = null + is_eating = FALSE + manual_emote("hisses in agony!") + playsound(src, hiss_sounds, 40) + MoveTo(null, 9, TRUE, 4 SECONDS, FALSE) + COOLDOWN_START(src, calm_cooldown, 8 SECONDS) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/IgniteMob() + . = ..() + if(on_fire) + try_to_extinguish() + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/handle_fire() + . = ..() + if(on_fire) + try_to_extinguish() + + /mob/living/simple_animal/hostile/retaliate/giant_lizard/Life(delta_time) - //simplemobs don't have knockdown reduction so we'll manually remove it if applicable. works well due to Life() delay. - SetKnockDown(0) + //simplemobs don't have innate knockdown reduction so we'll manually lower it here. + AdjustKnockDown(-0.5) if(aggression_value > 0) aggression_value-- //if we haven't gotten hurt in a while, calm down and go back to idling @@ -233,10 +278,10 @@ if(bleed_ticks) var/is_small_pool = FALSE if(bleed_ticks < 10) is_small_pool = TRUE - bleed_ticks -= is_small_pool ? 1 : 2 + bleed_ticks-- add_splatter_floor(loc, is_small_pool) - if(!target_mob) + if(!target_mob && !on_fire) if(is_retreating) stop_moving() stance = HOSTILE_STANCE_IDLE @@ -256,6 +301,7 @@ for(var/mob/living/carbon/intruder in view(5, src)) if((intruder.faction in faction_group) || intruder.stat != CONSCIOUS || ismonkey(intruder)) continue + intruder_in_sight = TRUE face_atom(intruder) stance = HOSTILE_STANCE_ALERT @@ -299,8 +345,8 @@ if(isliving(target_mob)) var/mob/living/target = target_mob - //decimate mobs that are in crit - if(target.stat == UNCONSCIOUS) + //decimate mobs that are on the ground + if(target.body_position == LYING_DOWN) ravagingattack() return target @@ -322,7 +368,7 @@ is_eating = TRUE for(var/times_to_eat = rand(4, 6), times_to_eat--) sleep(rand(1.7, 2.5) SECONDS) - if(check_food_loc(food) || stance > HOSTILE_STANCE_ALERT) + if(check_food_loc(food) || stance > HOSTILE_STANCE_ALERT || stat == DEAD) return face_atom(food) playsound(loc,'sound/items/eatfood.ogg', 25, 1) @@ -391,15 +437,23 @@ //Immediately retaliate after being attacked. /mob/living/simple_animal/hostile/retaliate/giant_lizard/Retaliate() - if(stat == DEAD || target_mob) + if(stat == DEAD || target_mob || on_fire) return - aggression_value = clamp(aggression_value + 5, 0, 30) + aggression_value = clamp(aggression_value + 5, 0, 15) + . = ..() + target_mob = FindTarget() if(target_mob) growl(target_mob) MoveToTarget() + //basic pack behaviour + for(var/mob/living/simple_animal/hostile/retaliate/giant_lizard/pack_member in view(7, src)) + if(pack_member == src || pack_member.target_mob) + continue + pack_member.Retaliate() + ///Proc for moving to targets. walk_to() doesn't check for resting and status effects so we will do it ourselves. /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/MoveTo(target, distance = 1, retreat = FALSE, time = 6 SECONDS, return_to_combat = FALSE) if(stat == DEAD || HAS_TRAIT(src, TRAIT_INCAPACITATED) || HAS_TRAIT(src, TRAIT_FLOORED)) @@ -407,29 +461,45 @@ if(resting) set_resting(FALSE) if(!retreat) - walk_to(src, target, distance, move_to_delay) + walk_to(src, target ? target : get_turf(src), distance, move_to_delay) return - - is_retreating = TRUE - stop_automated_movement = TRUE - stance = HOSTILE_STANCE_ALERT - walk_away(src, target ? target : get_turf(src), distance, LIZARD_SPEED_RETREAT) - addtimer(CALLBACK(src, PROC_REF(stop_retreat), return_to_combat), time) + if(!is_retreating) + is_retreating = TRUE + stop_automated_movement = TRUE + stance = HOSTILE_STANCE_ALERT + walk_away(src, target ? target : get_turf(src), distance, LIZARD_SPEED_RETREAT) + addtimer(CALLBACK(src, PROC_REF(stop_retreat), return_to_combat), time) //Proc that's called after the retreat has run its course. /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/stop_retreat(return_to_combat = FALSE) is_retreating = FALSE + //extinguishing is top priority + if(on_fire) + visible_message(SPAN_NOTICE("[src] rolls frantically on the ground to extinguish itself!")) + adjust_fire_stacks(-10) + KnockDown(2) + Stun(2) + ExtinguishMob() + return if(!return_to_combat) + //can't retreat? go back to fighting + if(retreat_attempts >= 2) + FindTarget() + MoveToTarget() + retreat_attempts = 0 + //seems like it's a life or death situation. we will stop trying to run away. + COOLDOWN_START(src, retreat_cooldown, 20 SECONDS) + return //don't stop retreating if there are non-friendly carbons in view for(var/mob/living/carbon/hostile_mob in view(7, src)) if(hostile_mob.faction in faction_group) continue - MoveTo(hostile_mob, 10, TRUE, 4 SECONDS, FALSE) + MoveTo(hostile_mob, 10, TRUE, 3 SECONDS, FALSE) + retreat_attempts++ return - + retreat_attempts = 0 LoseTarget() else - stance = HOSTILE_STANCE_ATTACKING FindTarget() MoveToTarget() @@ -442,7 +512,7 @@ stance = HOSTILE_STANCE_ATTACKING MoveTo(target_mob) -///Ravaging attack, used for when a mob gets pounced. +///Ravaging attack, used for when a mob gets pounced or is on the ground. /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/ravagingattack() if(is_ravaging) return @@ -458,6 +528,8 @@ playsound(loc, attack_type ? "alien_claw_flesh" : "alien_bite", 25, 1) target_mob.handle_blood_splatter(get_dir(src.loc, target_mob.loc)) target_mob.apply_damage(damage, BRUTE) + target_mob.apply_effect(1, DAZE) + shake_camera(target_mob, 1, 2) animation_attack_on(target_mob) face_atom(target_mob) sleep(0.5 SECONDS) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 621c5974a20a..a0680848d8d6 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -1,9 +1,25 @@ +#define OVERLAY_FIRE_LAYER -1 + /mob/living/simple_animal name = "animal" icon = 'icons/mob/animal.dmi' health = 20 maxHealth = 20 + speed = 0 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster + + //LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly + melee_damage_lower = 0 + melee_damage_upper = 0 + attacktext = "attacks" + attack_sound = null + friendly = "nuzzles" //If the mob does no damage with it's attack + can_crawl = FALSE + black_market_value = 25 + dead_black_market_value = 0 + + mobility_flags = MOBILITY_FLAGS_LYING_CAPABLE_DEFAULT + var/icon_living = "" var/icon_dead = "" var/icon_gib = null //We only try to show a gibbing animation if this exists. @@ -47,19 +63,7 @@ var/min_n2 = 0 var/max_n2 = 0 var/unsuitable_atoms_damage = 2 //This damage is taken when atmos doesn't fit all the requirements above - speed = 0 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster - - //LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly - melee_damage_lower = 0 - melee_damage_upper = 0 - attacktext = "attacks" - attack_sound = null - friendly = "nuzzles" //If the mob does no damage with it's attack - can_crawl = FALSE - black_market_value = 25 - dead_black_market_value = 0 - - mobility_flags = MOBILITY_FLAGS_LYING_CAPABLE_DEFAULT + var/fire_overlay /mob/living/simple_animal/Initialize() . = ..() @@ -98,7 +102,7 @@ /mob/living/simple_animal/handle_fire() if(..()) return - health -= fire_reagent.intensityfire * 0.5 + apply_damage(fire_reagent.intensityfire * 0.5, BURN) /mob/living/simple_animal/IgniteMob() if(!affected_by_fire) @@ -106,25 +110,25 @@ return ..() /mob/living/simple_animal/update_fire() + if(!on_fire) + overlays -= fire_overlay if(on_fire && fire_reagent) - var/image/I + var/image/fire_overlay_image if(mob_size >= MOB_SIZE_BIG) if((body_position != LYING_DOWN)) - I = image("icon"='icons/mob/xenos/overlay_effects64x64.dmi', "icon_state"="alien_fire", "layer"=-1) + fire_overlay_image = image("icon"='icons/mob/xenos/overlay_effects64x64.dmi', "icon_state"="alien_fire", "layer" = OVERLAY_FIRE_LAYER) else - I = image("icon"='icons/mob/xenos/overlay_effects64x64.dmi', "icon_state"="alien_fire_lying", "layer"=-1) + fire_overlay_image = image("icon"='icons/mob/xenos/overlay_effects64x64.dmi', "icon_state"="alien_fire_lying", "layer" = OVERLAY_FIRE_LAYER) else - I = image("icon" = 'icons/mob/xenos/effects.dmi', "icon_state"="alien_fire", "layer"=-1) + fire_overlay_image = image("icon" = 'icons/mob/xenos/effects.dmi', "icon_state"="alien_fire", "layer" = OVERLAY_FIRE_LAYER) - I.pixel_y -= pixel_y - I.pixel_x -= pixel_x - I.appearance_flags |= RESET_COLOR|RESET_ALPHA - I.color = fire_reagent.burncolor - overlays += I - if(!on_fire) - for(var/image/fire_overlay in overlays) - if(fire_overlay.icon_state == "alien_fire" || fire_overlay.icon_state == "alien_fire_lying") - overlays -= fire_overlay + fire_overlay_image.pixel_y -= pixel_y + fire_overlay_image.pixel_x -= pixel_x + fire_overlay_image.appearance_flags |= RESET_COLOR|RESET_ALPHA + fire_overlay_image.color = fire_reagent.burncolor + fire_overlay_image.color = fire_reagent.burncolor + overlays += fire_overlay_image + fire_overlay = fire_overlay_image /mob/living/simple_animal/Life(delta_time) if(affected_by_fire) @@ -395,6 +399,9 @@ /mob/living/simple_animal/adjustBruteLoss(damage) health = clamp(health - damage, 0, maxHealth) +/mob/living/simple_animal/adjustFireLoss(damage) + health = clamp(health - damage, 0, maxHealth) + /mob/living/simple_animal/proc/SA_attackable(target_mob) if (isliving(target_mob)) var/mob/living/L = target_mob @@ -445,3 +452,5 @@ if(user && error_msg) to_chat(user, SPAN_WARNING("You aren't sure how to inject this animal!")) return FALSE + +#undef OVERLAY_FIRE_LAYER diff --git a/icons/mob/hud/hud.dmi b/icons/mob/hud/hud.dmi index 8d89fb7812641ce67d21d1cef9030c877f33e7e9..deb285bfd56188c3754be6de7aeb81cacaace788 100644 GIT binary patch literal 20337 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 Date: Wed, 7 Aug 2024 14:05:51 +0200 Subject: [PATCH 04/10] implement client control --- .../hostile/retaliate/giant_lizard.dm | 311 +++++++++++------- .../mob/living/simple_animal/simple_animal.dm | 14 +- 2 files changed, 207 insertions(+), 118 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index aa4c44d4e63a..a936c6856dbc 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -1,7 +1,9 @@ #define ATTACK_SLASH 0 #define ATTACK_BITE 1 -#define LIZARD_SPEED_NORMAL 3 +#define LIZARD_SPEED_NORMAL 2.8 #define LIZARD_SPEED_RETREAT 2.5 +#define LIZARD_SPEED_NORMAL_CLIENT -1 +#define LIZARD_SPEED_RETREAT_CLIENT -1.5 /mob/living/simple_animal/hostile/retaliate/giant_lizard name = "giant lizard" @@ -21,11 +23,12 @@ mobility_flags = MOBILITY_FLAGS_REST_CAPABLE_DEFAULT affected_by_fire = TRUE move_to_delay = LIZARD_SPEED_NORMAL - speed = LIZARD_SPEED_NORMAL //speed and move_to_delay are not the same in simplemob code (wow!) + speed = LIZARD_SPEED_NORMAL_CLIENT //speed and move_to_delay are not the same in simplemob code (wow!) response_help = "pets" response_disarm = "tries to push away" response_harm = "punches" + friendly = "nuzzles" see_in_dark = 50 speak_chance = 2 @@ -55,6 +58,8 @@ var/list/pounce_callbacks = list() ///Are we currently mauling a mob after pouncing them? Used to stop normal attacks on pounced targets. var/is_ravaging = FALSE + ///Length of the cooldown for pouncing. + var/pounce_cooldown_length = 9 SECONDS ///Cooldown for the pounce ability. COOLDOWN_DECLARE(pounce_cooldown) @@ -105,6 +110,13 @@ playsound(loc, growl_sounds, 60) COOLDOWN_START(src, growl_message, rand(10, 14) SECONDS) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/get_status_tab_items() + . = ..() + . += "" + . += "Health: [floor(health)]/[floor(maxHealth)]" + if(!COOLDOWN_FINISHED(src, pounce_cooldown)) + . += "Pounce Cooldown: [COOLDOWN_SECONDSLEFT(src, pounce_cooldown)] seconds" + //the AI gets funky when it gets stunned midcombat. this will help them get back into the fight more organically. /mob/living/simple_animal/hostile/retaliate/giant_lizard/on_immobilized_trait_loss(datum/source) . = ..() @@ -129,6 +141,7 @@ /mob/living/simple_animal/hostile/retaliate/giant_lizard/AddSleepingIcon() var/image/SL SL = new /image('icons/mob/hud/hud.dmi', "slept_icon_centered") + SL.pixel_x = 20 if(sleep_overlay) return sleep_overlay = SL @@ -157,13 +170,20 @@ return ..() /mob/living/simple_animal/hostile/retaliate/giant_lizard/get_examine_text(mob/user) - if(stat == DEAD) + . = ..() + if(stat == DEAD || user == src) desc = "A large, wolf-like reptile." - else if(user.faction in faction_group) + if(user == src) + . += SPAN_NOTICE("\nRest on the ground to restore 5% of your health every second.") + . += SPAN_NOTICE("You're able to pounce targets by using [client && client.prefs && client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK ? "middle-click" : "shift-click"].") + . += SPAN_NOTICE("You will aggressively maul targets that are prone. Any click on yourself will be passed down to mobs below you, so feel free to click on your sprite in order to attack pounced targets.") + else if((user.faction in faction_group) && user != src) desc = "[initial(desc)] There's a hint of warmth in them." else desc = initial(desc) - return ..() + if(isxeno(user)) //simplemobs aren't coded to handle larva infection so we'll just let them know + . += SPAN_DANGER("This is an unsuitable host for the hive.") + return . /mob/living/simple_animal/hostile/retaliate/giant_lizard/set_resting(new_resting, silent, instant) . = ..() @@ -181,6 +201,9 @@ if(stat == DEAD) return + if(!(attacking_mob.faction in faction_group)) + Retaliate() + if(attacking_mob.a_intent == INTENT_HELP && (attacking_mob.faction in faction_group)) if(on_fire) adjust_fire_stacks(-5, min_stacks = 0) @@ -197,7 +220,7 @@ chance_to_rest = 0 if(COOLDOWN_FINISHED(src, emote_cooldown)) COOLDOWN_START(src, emote_cooldown, rand(5, 8) SECONDS) - manual_emote(pick(pick(pet_emotes), "stares at [attacking_mob].", "licks [attacking_mob]'s hand."), "nibbles [attacking_mob]'s arm.", "flicks its tongue at [attacking_mob].") + manual_emote(pick(pick(pet_emotes), "stares at [attacking_mob].", "nuzzles [attacking_mob].", "licks [attacking_mob]'s hand."), "nibbles [attacking_mob]'s arm.", "flicks its tongue at [attacking_mob].") if(prob(50)) playsound(loc, hiss_sounds, 25) if(attacking_mob.a_intent == INTENT_DISARM && prob(75)) @@ -209,13 +232,20 @@ . = ..() var/retreat_chance = abs((health / maxHealth * 100) - 100) if(prob(retreat_chance) && health <= maxHealth * 0.66 && COOLDOWN_FINISHED(src, retreat_cooldown)) - MoveTo(target_mob, 12, TRUE, 8 SECONDS) + if(client && !is_retreating) + is_retreating = TRUE + to_chat(src, SPAN_USERDANGER("Your fight or flight response kicks in, run!")) + speed = LIZARD_SPEED_NORMAL_CLIENT + addtimer(VARSET_CALLBACK(src, speed, LIZARD_SPEED_RETREAT_CLIENT), 8 SECONDS) + addtimer(VARSET_CALLBACK(src, is_retreating, FALSE), 8 SECONDS) + else + MoveTo(target_mob, 12, TRUE, 8 SECONDS) if(damage >= 10 && damagetype == BRUTE) add_splatter_floor(loc, TRUE) bleed_ticks = clamp(bleed_ticks + ceil(damage / 10), 0, 30) /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/try_to_extinguish() - if(!is_retreating && on_fire) + if(!is_retreating && on_fire && !client) //forget EVERYTHING. we need to stop the flames!!! stance = HOSTILE_STANCE_ALERT target_mob = null @@ -236,98 +266,98 @@ if(on_fire) try_to_extinguish() - /mob/living/simple_animal/hostile/retaliate/giant_lizard/Life(delta_time) //simplemobs don't have innate knockdown reduction so we'll manually lower it here. AdjustKnockDown(-0.5) + AdjustStun(-0.5) if(aggression_value > 0) aggression_value-- - //if we haven't gotten hurt in a while, calm down and go back to idling - if(aggression_value == 0 && stance == HOSTILE_STANCE_ATTACKING) - enemies = new() - LoseTarget() - if(COOLDOWN_FINISHED(src, emote_cooldown)) - manual_emote("calms down.") - COOLDOWN_START(src, calm_cooldown, 4 SECONDS) - COOLDOWN_START(src, emote_cooldown, 3 SECONDS) - - if(resting) + if(resting && stat != DEAD) health += maxHealth * 0.05 if(prob(33)) AddSleepingIcon() - if(stance > HOSTILE_STANCE_ALERT) - is_eating = FALSE - - if(stance == HOSTILE_STANCE_IDLE) - stop_automated_movement = FALSE - //if there's a friend on the same tile as us, don't bother getting up (cute!) - var/mob/living/carbon/friend = locate(/mob/living/carbon) in get_turf(src) - if((friend?.faction in faction_group) && resting) - chance_to_rest = 0 - - if(prob(chance_to_rest)) - set_resting(!resting) - chance_to_rest = 0 - - chance_to_rest += rand(1, 2) - - if(stance != HOSTILE_STANCE_IDLE && resting) - set_resting(FALSE) - if(bleed_ticks) var/is_small_pool = FALSE if(bleed_ticks < 10) is_small_pool = TRUE bleed_ticks-- add_splatter_floor(loc, is_small_pool) - if(!target_mob && !on_fire) - if(is_retreating) - stop_moving() - stance = HOSTILE_STANCE_IDLE - - if(!food_target && COOLDOWN_FINISHED(src, food_cooldown)) - for(var/obj/item/reagent_container/food/snacks/food in view(6, src)) - if(!is_type_in_list(food, acceptable_foods)) - continue - food_target = food - stance = HOSTILE_STANCE_ALERT - stop_automated_movement = TRUE - MoveTo(food_target) - break - - if(stance <= HOSTILE_STANCE_ALERT && !food_target && COOLDOWN_FINISHED(src, calm_cooldown)) - var/intruder_in_sight = FALSE - for(var/mob/living/carbon/intruder in view(5, src)) - if((intruder.faction in faction_group) || intruder.stat != CONSCIOUS || ismonkey(intruder)) - continue - - intruder_in_sight = TRUE - face_atom(intruder) - stance = HOSTILE_STANCE_ALERT - stop_automated_movement = TRUE - if(get_dist(src, intruder) == 3) - growl(intruder) - else if(get_dist(src, intruder) <= 2) - Retaliate() - COOLDOWN_START(src, pounce_cooldown, 1 SECONDS) - break + //if we haven't gotten hurt in a while, calm down and go back to idling + if(!client) + if(aggression_value == 0 && stance == HOSTILE_STANCE_ATTACKING) + enemies = new() + LoseTarget() + if(COOLDOWN_FINISHED(src, emote_cooldown)) + manual_emote("calms down.") + COOLDOWN_START(src, calm_cooldown, 4 SECONDS) + COOLDOWN_START(src, emote_cooldown, 3 SECONDS) - if(!intruder_in_sight && stance == HOSTILE_STANCE_ALERT) - stance = HOSTILE_STANCE_IDLE + if(stance > HOSTILE_STANCE_ALERT) + is_eating = FALSE + + if(stance == HOSTILE_STANCE_IDLE) + stop_automated_movement = FALSE + //if there's a friend on the same tile as us, don't bother getting up (cute!) + var/mob/living/carbon/friend = locate(/mob/living/carbon) in get_turf(src) + if((friend?.faction in faction_group) && resting) + chance_to_rest = 0 + + if(prob(chance_to_rest)) + set_resting(!resting) + chance_to_rest = 0 - if(food_target && !is_eating) - if(!(food_target in view(5, src))) + chance_to_rest += rand(1, 2) + + if(stance != HOSTILE_STANCE_IDLE && resting) + set_resting(FALSE) + + if(!target_mob && !on_fire) + if(is_retreating) stop_moving() - lose_food() - else if(!check_food_loc(food_target) && Adjacent(food_target)) - INVOKE_ASYNC(src, PROC_REF(handle_food), food_target) + stance = HOSTILE_STANCE_IDLE + + if(!food_target && COOLDOWN_FINISHED(src, food_cooldown)) + for(var/obj/item/reagent_container/food/snacks/food in view(6, src)) + if(!is_type_in_list(food, acceptable_foods)) + continue + food_target = food + stance = HOSTILE_STANCE_ALERT + stop_automated_movement = TRUE + MoveTo(food_target) + break + + if(stance <= HOSTILE_STANCE_ALERT && !food_target && COOLDOWN_FINISHED(src, calm_cooldown)) + var/intruder_in_sight = FALSE + for(var/mob/living/carbon/intruder in view(5, src)) + if((intruder.faction in faction_group) || intruder.stat != CONSCIOUS || ismonkey(intruder) || intruder.alpha <= 200) + continue + + intruder_in_sight = TRUE + face_atom(intruder) + stance = HOSTILE_STANCE_ALERT + stop_automated_movement = TRUE + if(get_dist(src, intruder) == 3) + growl(intruder) + else if(get_dist(src, intruder) <= 2) + Retaliate() + COOLDOWN_START(src, pounce_cooldown, 1 SECONDS) + break + + if(!intruder_in_sight && stance == HOSTILE_STANCE_ALERT) + stance = HOSTILE_STANCE_IDLE + + if(food_target && !is_eating) + if(!(food_target in view(5, src))) + stop_moving() + lose_food() + else if(!check_food_loc(food_target) && Adjacent(food_target)) + INVOKE_ASYNC(src, PROC_REF(handle_food), food_target) . = ..() - if(target_mob && !is_retreating && target_mob.stat == CONSCIOUS && stance == HOSTILE_STANCE_ATTACKING && COOLDOWN_FINISHED(src, pounce_cooldown) && (prob(75) || get_dist(src, target_mob) <= 5) && (target_mob in view(5, src))) - pounce() - COOLDOWN_START(src, pounce_cooldown, rand(8, 12) SECONDS) + if(!client && target_mob && !is_retreating && target_mob.stat == CONSCIOUS && stance == HOSTILE_STANCE_ATTACKING && COOLDOWN_FINISHED(src, pounce_cooldown) && (prob(75) || get_dist(src, target_mob) <= 5) && (target_mob in view(5, src))) + pounce(target_mob) /mob/living/simple_animal/hostile/retaliate/giant_lizard/bullet_act(obj/projectile/projectile) . = ..() @@ -339,15 +369,18 @@ var/obj/effect/temp_visual/dir_setting/bloodsplatter/human/bloodsplatter = new(loc, splatter_dir) bloodsplatter.pixel_y = -2 -/mob/living/simple_animal/hostile/retaliate/giant_lizard/AttackingTarget() - if(!Adjacent(target_mob) || is_ravaging) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/AttackingTarget(inherited_target = target_mob) + if(!Adjacent(inherited_target) || is_ravaging || body_position == LYING_DOWN) return - if(isliving(target_mob)) - var/mob/living/target = target_mob + if(isliving(inherited_target)) + var/mob/living/target = inherited_target + if(target.stat == DEAD) + to_chat(src, SPAN_WARNING("[target] is dead. There's nothing interesting about a corpse.")) + return //decimate mobs that are on the ground if(target.body_position == LYING_DOWN) - ravagingattack() + ravagingattack(target) return target face_atom(target) @@ -359,9 +392,35 @@ animation_attack_on(target) if(prob(33)) - MoveTo(target_mob, 8, TRUE, 2 SECONDS, TRUE) //skirmish around our target + if(client && !is_retreating) + is_retreating = TRUE + to_chat(src, SPAN_USERDANGER("You gain a rush of speed!")) + speed = LIZARD_SPEED_RETREAT_CLIENT + addtimer(VARSET_CALLBACK(src, speed, LIZARD_SPEED_NORMAL_CLIENT), 2 SECONDS) + addtimer(VARSET_CALLBACK(src, is_retreating, FALSE), 2 SECONDS) + else + MoveTo(target_mob, 8, TRUE, 2 SECONDS, TRUE) //skirmish around our target return target +//Used to handle attacks when a client is in the mob. Otherwise we'd default to a generic animal attack. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/UnarmedAttack(atom/target) + var/tile_attack = FALSE + if(target == src) //Clicking self. + target = get_turf(src) + tile_attack = TRUE + + if(isturf(target) && tile_attack) + var/turf/our_turf = target + for(var/mob/living/targets in our_turf) + if(targets == src) + continue + target = targets + break + + if(isliving(target)) + AttackingTarget(target) + next_move = world.time + 8 + ///Proc for when the mob finds food and starts DEVOURING it. /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/handle_food(obj/item/reagent_container/food/snacks/food) manual_emote("starts gnawing [food].") @@ -431,8 +490,9 @@ /mob/living/simple_animal/hostile/retaliate/giant_lizard/SA_attackable(target_mob) if(isliving(target_mob)) var/mob/living/target = target_mob - if(target.stat == DEAD) - return TRUE + //invisible mobs will still randomly be attacked regardless of this check if the lizard is in combat (intended) + if(target.stat == DEAD || target.alpha <= 200) + return TRUE //TRUE means it's unattackable (amazing code!) return FALSE //Immediately retaliate after being attacked. @@ -475,11 +535,7 @@ is_retreating = FALSE //extinguishing is top priority if(on_fire) - visible_message(SPAN_NOTICE("[src] rolls frantically on the ground to extinguish itself!")) - adjust_fire_stacks(-10) - KnockDown(2) - Stun(2) - ExtinguishMob() + resist_fire() return if(!return_to_combat) //can't retreat? go back to fighting @@ -512,37 +568,56 @@ stance = HOSTILE_STANCE_ATTACKING MoveTo(target_mob) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/resist_fire() + visible_message(SPAN_NOTICE("[src] rolls frantically on the ground to extinguish itself!")) + adjust_fire_stacks(-10) + KnockDown(2) + Stun(2) + ///Ravaging attack, used for when a mob gets pounced or is on the ground. -/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/ravagingattack() - if(is_ravaging) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/ravagingattack(mob/living/target) + if(is_ravaging || !isliving(target)) return is_ravaging = TRUE - visible_message(SPAN_DANGER("[src] tears into [target_mob] repeatedly!")) + visible_message(SPAN_DANGER("[src] tears into [target] repeatedly!")) - for(var/attack_num = 3, attack_num >= 0, attack_num--) - if(Adjacent(target_mob) && stat == CONSCIOUS) - var/damage = rand(melee_damage_lower, melee_damage_upper) * 0.33 + var/successful_attacks = 0 + for(var/times_to_attack = 3, times_to_attack > 0, times_to_attack--) + if(Adjacent(target)) + var/damage = rand(melee_damage_lower, melee_damage_upper) * 0.4 var/attack_type = pick(ATTACK_SLASH, ATTACK_BITE) attacktext = attack_type ? "claws" : "bites" - flick_attack_overlay(target_mob, attack_type ? "slash" : "animalbite") + flick_attack_overlay(target, attack_type ? "slash" : "animalbite") playsound(loc, attack_type ? "alien_claw_flesh" : "alien_bite", 25, 1) - target_mob.handle_blood_splatter(get_dir(src.loc, target_mob.loc)) - target_mob.apply_damage(damage, BRUTE) - target_mob.apply_effect(1, DAZE) - shake_camera(target_mob, 1, 2) - animation_attack_on(target_mob) - face_atom(target_mob) + target.handle_blood_splatter(get_dir(src.loc, target.loc)) + + if(target.body_position == LYING_DOWN) + target.apply_damage(damage, BRUTE) + target.apply_effect(1, DAZE) + shake_camera(target, 1, 2) + + animation_attack_on(target) + face_atom(target) sleep(0.5 SECONDS) + successful_attacks++ + if(successful_attacks == 3 && !COOLDOWN_FINISHED(src, pounce_cooldown)) + to_chat(src, SPAN_BOLDWARNING("The bloodlust invigorates you! You will be ready to pounce much sooner.")) + COOLDOWN_START(src, pounce_cooldown, COOLDOWN_TIMELEFT(src, pounce_cooldown) * 0.5) is_ravaging = FALSE //POUNCE PROCS AND WRAPPERS /////////////////////////// -/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounce() +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounce(target) if(stat == DEAD || HAS_TRAIT(src, TRAIT_INCAPACITATED) || HAS_TRAIT(src, TRAIT_FLOORED)) return - var/pounce_distance = clamp((get_dist(src, target_mob)), 1, 5) - manual_emote("pounces at [target_mob]!") - INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, throw_atom), target_mob, pounce_distance, SPEED_FAST, src, null, LOW_LAUNCH, PASS_OVER_THROW_MOB, null, pounce_callbacks) + if(!COOLDOWN_FINISHED(src, pounce_cooldown)) + to_chat(src, SPAN_WARNING("You can't pounce again that fast! You need to wait [COOLDOWN_SECONDSLEFT(src, pounce_cooldown)] seconds.")) + return + + COOLDOWN_START(src, pounce_cooldown, pounce_cooldown_length) + var/pounce_distance = clamp((get_dist(src, target)), 1, 5) + manual_emote("pounces at [target]!") + INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, throw_atom), target, pounce_distance, SPEED_FAST, src, null, LOW_LAUNCH, PASS_OVER_THROW_MOB, null, pounce_callbacks) /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_mob_wrapper(mob/living/pounced_mob) pounced_mob(pounced_mob) @@ -584,10 +659,11 @@ playsound(loc, 'sound/weapons/alien_knockdown.ogg', 25, 1) return - playsound(loc, hiss_sounds, 15) + playsound(loc, hiss_sounds, 25) pounced_mob.KnockDown(0.5) step_to(src, pounced_mob) - ravagingattack() + if(!client) + ravagingattack(pounced_mob) /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/pounced_turf(turf/turf_target) if(!turf_target.density) @@ -612,6 +688,19 @@ if(!istype(O, /obj/structure/surface/table) && !istype(O, /obj/structure/surface/rack)) O.hitby(src) //This resets throwing. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/click(atom/clicked_atom, list/mods) + if(mods["shift"] && !mods["middle"]) + if(client && client.prefs && !(client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK)) + pounce(clicked_atom) + return TRUE + + if(mods["middle"] && !mods["shift"]) + if(client && client.prefs && client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK) + pounce(clicked_atom) + return TRUE + return ..() + + #undef ATTACK_SLASH #undef ATTACK_BITE #undef LIZARD_SPEED_NORMAL diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index a0680848d8d6..683e0f3480ce 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -84,20 +84,20 @@ /mob/living/simple_animal/get_examine_text(mob/user) . = ..() if(stat == DEAD) - . += SPAN_BOLDWARNING("It is DEAD. Kicked the bucket.") + . += SPAN_BOLDWARNING("[user == src ? "You are" : "It is"] DEAD. Kicked the bucket.") else - var/percent = (health / maxHealth * 100) + var/percent = floor((health / maxHealth * 100)) switch(percent) if(95 to INFINITY) - . += SPAN_NOTICE("It looks quite healthy.") + . += SPAN_NOTICE("[user == src ? "You look" : "It looks"] quite healthy.") if(75 to 94) - . += SPAN_NOTICE("It looks slightly injured.") + . += SPAN_NOTICE("[user == src ? "You look" : "It looks"] slightly injured.") if(50 to 74) - . += SPAN_DANGER("It looks injured.") + . += SPAN_DANGER("[user == src ? "You look" : "It looks"] injured.") if(25 to 49) - . += SPAN_DANGER("It bleeds with sizzling wounds.") + . += SPAN_DANGER("[user == src ? "You are bleeding" : "It bleeds"] with gory wounds.") if(-INFINITY to 24) - . += SPAN_BOLDWARNING("It is heavily injured and limping badly.") + . += SPAN_BOLDWARNING("[user == src ? "You are" : "It is"] heavily injured and limping badly.") /mob/living/simple_animal/handle_fire() if(..()) From 335faaef15e62aafee70829bd86b539ed0aca6a4 Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Thu, 8 Aug 2024 15:44:49 +0200 Subject: [PATCH 05/10] client emotes, shuffle some code around, add them to nightmare inserts --- code/game/sound.dm | 4 ++ .../hostile/retaliate/giant_lizard.dm | 51 +++++++++++++----- icons/mob/hud/hud.dmi | Bin 20337 -> 20350 bytes maps/map_files/LV624/LV624.dmm | 8 +-- .../LV624/standalone/sandtemple-jungle.dmm | 12 ++++- .../LV624/standalone/sandtemple-se.dmm | 12 ++++- 6 files changed, 67 insertions(+), 20 deletions(-) diff --git a/code/game/sound.dm b/code/game/sound.dm index e95279a37731..ee7f9b68fcde 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -380,6 +380,10 @@ S = pick('sound/voice/pred_pain1.ogg','sound/voice/pred_pain2.ogg','sound/voice/pred_pain3.ogg','sound/voice/pred_pain4.ogg','sound/voice/pred_pain5.ogg',5;'sound/voice/pred_pain_rare1.ogg') if("clownstep") S = pick('sound/effects/clownstep1.ogg', 'sound/effects/clownstep2.ogg') + if("giant_lizard_growl") + S = pick('sound/effects/giant_lizard_growl1.ogg', 'sound/effects/giant_lizard_growl2.ogg') + if("giant_lizard_hiss") + S = pick('sound/effects/giant_lizard_hiss1.ogg', 'sound/effects/giant_lizard_hiss2.ogg') return S /client/proc/generate_sound_queues() diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index a936c6856dbc..72eb3d69f9ce 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -40,14 +40,11 @@ melee_damage_upper = 25 attack_same = FALSE + ///Reference to the ZZzzz sleep overlay when resting. var/sleep_overlay ///If 0, moves the mob out of attacking into idle state. Used to prevent the mob from chasing down targets that did not mean to hurt it. var/aggression_value = 0 - ///What sounds to play when the mob growls. - var/list/growl_sounds = list('sound/effects/giant_lizard_growl1.ogg', 'sound/effects/giant_lizard_growl2.ogg') - ///What sounds to play when hissing. - var/list/hiss_sounds = list('sound/effects/giant_lizard_hiss1.ogg', 'sound/effects/giant_lizard_hiss2.ogg') ///Emotes to play when being pet by a friend. var/list/pet_emotes = list("closes its eyes.", "growls happily.", "wags its tail.", "rolls on the ground.") @@ -107,7 +104,7 @@ manual_emote("growls at [target_mob].") else manual_emote("growls.") - playsound(loc, growl_sounds, 60) + playsound(loc, "giant_lizard_growl", 60) COOLDOWN_START(src, growl_message, rand(10, 14) SECONDS) /mob/living/simple_animal/hostile/retaliate/giant_lizard/get_status_tab_items() @@ -177,7 +174,7 @@ . += SPAN_NOTICE("\nRest on the ground to restore 5% of your health every second.") . += SPAN_NOTICE("You're able to pounce targets by using [client && client.prefs && client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK ? "middle-click" : "shift-click"].") . += SPAN_NOTICE("You will aggressively maul targets that are prone. Any click on yourself will be passed down to mobs below you, so feel free to click on your sprite in order to attack pounced targets.") - else if((user.faction in faction_group) && user != src) + else if((user.faction in faction_group)) desc = "[initial(desc)] There's a hint of warmth in them." else desc = initial(desc) @@ -198,6 +195,14 @@ /mob/living/simple_animal/hostile/retaliate/giant_lizard/attack_hand(mob/living/carbon/human/attacking_mob) . = ..() + process_attack_hand(attacking_mob) + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/attack_alien(mob/living/carbon/xenomorph/attacking_mob) + . = ..() + process_attack_hand(attacking_mob) + +///Proc for handling attacking the lizard with a hand for BOTH XENOS AND HUMANS. +/mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/process_attack_hand(mob/living/carbon/attacking_mob) if(stat == DEAD) return @@ -222,9 +227,9 @@ COOLDOWN_START(src, emote_cooldown, rand(5, 8) SECONDS) manual_emote(pick(pick(pet_emotes), "stares at [attacking_mob].", "nuzzles [attacking_mob].", "licks [attacking_mob]'s hand."), "nibbles [attacking_mob]'s arm.", "flicks its tongue at [attacking_mob].") if(prob(50)) - playsound(loc, hiss_sounds, 25) + playsound(loc, "giant_lizard_hiss", 25) if(attacking_mob.a_intent == INTENT_DISARM && prob(75)) - walk_to(src, get_step(loc, attacking_mob.dir), 0, LIZARD_SPEED_NORMAL) + step_to(src, get_step(loc, attacking_mob.dir), 0, LIZARD_SPEED_NORMAL) /mob/living/simple_animal/hostile/retaliate/giant_lizard/apply_damage(damage, damagetype, def_zone, used_weapon, sharp, edge, force) Retaliate() @@ -235,8 +240,8 @@ if(client && !is_retreating) is_retreating = TRUE to_chat(src, SPAN_USERDANGER("Your fight or flight response kicks in, run!")) - speed = LIZARD_SPEED_NORMAL_CLIENT - addtimer(VARSET_CALLBACK(src, speed, LIZARD_SPEED_RETREAT_CLIENT), 8 SECONDS) + speed = LIZARD_SPEED_RETREAT_CLIENT + addtimer(VARSET_CALLBACK(src, speed, LIZARD_SPEED_NORMAL_CLIENT), 8 SECONDS) addtimer(VARSET_CALLBACK(src, is_retreating, FALSE), 8 SECONDS) else MoveTo(target_mob, 12, TRUE, 8 SECONDS) @@ -252,7 +257,7 @@ food_target = null is_eating = FALSE manual_emote("hisses in agony!") - playsound(src, hiss_sounds, 40) + playsound(src, "giant_lizard_hiss", 40) MoveTo(null, 9, TRUE, 4 SECONDS, FALSE) COOLDOWN_START(src, calm_cooldown, 8 SECONDS) @@ -463,6 +468,7 @@ stance = HOSTILE_STANCE_IDLE return TRUE +//Proc for when we lose our food target. /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/lose_food() stance = HOSTILE_STANCE_IDLE food_target = null @@ -659,7 +665,7 @@ playsound(loc, 'sound/weapons/alien_knockdown.ogg', 25, 1) return - playsound(loc, hiss_sounds, 25) + playsound(loc, "giant_lizard_hiss", 25) pounced_mob.KnockDown(0.5) step_to(src, pounced_mob) if(!client) @@ -688,6 +694,7 @@ if(!istype(O, /obj/structure/surface/table) && !istype(O, /obj/structure/surface/rack)) O.hitby(src) //This resets throwing. +//Middle mouse button/shift click to pounce. /mob/living/simple_animal/hostile/retaliate/giant_lizard/click(atom/clicked_atom, list/mods) if(mods["shift"] && !mods["middle"]) if(client && client.prefs && !(client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK)) @@ -701,7 +708,27 @@ return ..() +///CLIENT EMOTES +//////////////// + +/datum/emote/living/giant_lizard + mob_type_allowed_typecache = list(/mob/living/simple_animal/hostile/retaliate/giant_lizard) + +/datum/emote/living/giant_lizard/growl + key = "growl" + message = "growls." + sound = "giant_lizard_growl" + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/giant_lizard/hiss + key = "hiss" + message = "hisses." + sound = "giant_lizard_hiss" + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + #undef ATTACK_SLASH #undef ATTACK_BITE #undef LIZARD_SPEED_NORMAL #undef LIZARD_SPEED_RETREAT +#undef LIZARD_SPEED_NORMAL_CLIENT +#undef LIZARD_SPEED_RETREAT_CLIENT diff --git a/icons/mob/hud/hud.dmi b/icons/mob/hud/hud.dmi index deb285bfd56188c3754be6de7aeb81cacaace788..999afedb037b191cd21e4d4930d11c21855c39df 100644 GIT binary patch delta 1245 zcmV<31S0$Ko&o-z0gxnry?RtwbVOxyV{&P5bZKvH004NLrJ2uf>NpU`&+u17?_Eul zn80HX9N0EnkbpjwcC~woTrzEMGwf!A%_Cca)>E!K{z>@}@Uyv{nebp}&lsTrojK?(&s zd2=reNEjHjT$-ihMoI}Kv?b-DI`KN&7dh~{Q$HaSG8qme9CDss93cZ%)Y%Dh+Po+* znB5coG*zd5io2lj^pJDoVN4t6IFY~-+q$ieQ|fu#;? z=&;|=#bi4aM+WW4B98Qm5t5LY79QCy_Q!>P+HS*|C3;EFrJL36%CXZ` z1-#Trz8Bmqoa#$aqW&i)eX<8$g9J-8Hye6CJ|&b;!)MjDJ{J2c-rn|j23V}u@y#mU zUd8T@0j$Wu;u-^(6u?rjv>FqSs^34?i`{17xc8TWRVC|AE5+IJPm8qH1Bg=Ds)4OD zDwVC?XsU>RM4wf*ie_uzN`d%aFglDKfCDfl9<%lbxenhBmyp|Cn7N}1N_04C0x5Zue<&13ctv?3%GZI?dX3M3P zd`d!#+iZE;l1C)8xXo50T5?K4-EE7z&Fx)}8pdQPB({VxSqh1)U`&=mA`2LkrI5(_ z#bhZYvV1XF3W=;C^V~!1Q-v?`!AGIt_klyyI{ar1i$` zzpns15pN(5tlnFO_}UnUMga-@F;TN1tv{{fKjR)h9UOrR{2<^6T)e(KOO`@+eQ5LD zRie#z*NQf8s~8dHN+#N*dbeD~YuB;O5xA(b9Eud%gcXf!!U{$iUY!*2wvD69{D-@SNy?OktH!~Xy&xrZ&u1N^SD H-2{|M&+=ua delta 1232 zcmV;>1TXvko&oWm0gxnruzFNjbVOxyV{&P5bZKvH004NLrJ3Jvqc{-9pOe1=?Y=rF z5R%P3n)Y<}gj|>ubYS-kZIb=#@4=hJG*;`s&Se