From fd7128177ce68051f9f9afc19f1d4cadb0f4759e Mon Sep 17 00:00:00 2001 From: CacheAtWork <133615617+CacheAtWork@users.noreply.github.com> Date: Sun, 25 Jun 2023 22:13:15 +0100 Subject: [PATCH 1/6] deathclaw --- .../simple_animal/hostile/retaliate/deathclaw | 211 ++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 code/modules/mob/living/simple_animal/hostile/retaliate/deathclaw diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/deathclaw b/code/modules/mob/living/simple_animal/hostile/retaliate/deathclaw new file mode 100644 index 00000000000..e01f509f019 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/deathclaw @@ -0,0 +1,211 @@ +/mob/living/simple_animal/hostile/retaliate/deathclaw + name = "deathclaw" + desc = "A massive, reptilian creature with powerful muscles, razor-sharp claws." + icon = 'icons/fallout/mobs/monsters/deathclaw.dmi' + icon_state = "deathclaw" + icon_living = "deathclaw" + icon_dead = "deathclaw_dead" + icon_gib = "deathclaw_gib" + mob_armor = ARMOR_VALUE_DEATHCLAW_COMMON + maxHealth = 250 + health = 250 + reach = 2 + speed = 1 + obj_damage = 200 + melee_damage_lower = 30 + melee_damage_upper = 40 + footstep_type = FOOTSTEP_MOB_HEAVY + move_to_delay = 2.4 //hahahahahahahaaaaa + gender = MALE + a_intent = INTENT_HARM //So we can not move past them. + mob_biotypes = MOB_ORGANIC|MOB_BEAST + robust_searching = TRUE + speak = list("ROAR!","Rawr!","GRRAAGH!","Growl!") + speak_emote = list("growls", "roars") + emote_hear = list("grumbles.","grawls.") + emote_taunt = list("stares ferociously", "stomps") + speak_chance = 10 + taunt_chance = 25 + tastes = list("a bad time" = 5, "dirt" = 1) + environment_smash = ENVIRONMENT_SMASH_STRUCTURES | ENVIRONMENT_SMASH_WALLS | ENVIRONMENT_SMASH_RWALLS //can smash walls + var/color_mad = "#ffc5c5" + see_in_dark = 8 + decompose = FALSE + wound_bonus = 0 //This might be a TERRIBLE idea + bare_wound_bonus = 0 + sharpness = SHARP_EDGED + guaranteed_butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/deathclaw = 4, + /obj/item/stack/sheet/animalhide/deathclaw = 2, + /obj/item/stack/sheet/bone = 4) + response_help_simple = "pets" + response_disarm_simple = "gently pushes aside" + response_harm_simple = "hits" + attack_verb_simple = "claws" + attack_sound = 'sound/weapons/bladeslice.ogg' + faction = list("deathclaw") + gold_core_spawnable = HOSTILE_SPAWN + //var/charging = FALSE + move_resist = MOVE_FORCE_OVERPOWERING + emote_taunt_sound = list('sound/f13npc/deathclaw/taunt.ogg') + emote_taunt_sound = list('sound/f13npc/deathclaw/aggro1.ogg', 'sound/f13npc/deathclaw/aggro2.ogg', ) + idlesound = list('sound/f13npc/deathclaw/idle.ogg',) + death_sound = 'sound/f13npc/deathclaw/death.ogg' + low_health_threshold = 0.5 + variation_list = list( + MOB_RETREAT_DISTANCE_LIST(0, 0, 0, 3, 3), + MOB_RETREAT_DISTANCE_CHANGE_PER_TURN_CHANCE(65), + MOB_MINIMUM_DISTANCE_LIST(0, 0, 0, 1), + MOB_MINIMUM_DISTANCE_CHANGE_PER_TURN_CHANCE(30), + ) + despawns_when_lonely = FALSE + +/mob/living/simple_animal/hostile/retaliate/deathclaw/Initialize() + . = ..() + recenter_wide_sprite() + +/mob/living/simple_animal/hostile/retaliate/deathclaw/playable + emote_taunt_sound = null + emote_taunt = null + emote_taunt_sound = null + idlesound = null + see_in_dark = 8 + wander = FALSE + +/// Override this with what should happen when going from high health to low health +/mob/living/simple_animal/hostile/retaliate/deathclaw/make_low_health() + visible_message(span_danger("[src] lets out a vicious roar!!!")) + playsound(src, 'sound/f13npc/deathclaw/aggro2.ogg', 100, 1, SOUND_DISTANCE(20)) + color = color_mad + reach += 1 + speed *= 0.8 + obj_damage += 200 + melee_damage_lower *= 1.5 + melee_damage_upper *= 1.4 + see_in_dark += 8 + environment_smash = ENVIRONMENT_SMASH_STRUCTURES | ENVIRONMENT_SMASH_WALLS | ENVIRONMENT_SMASH_RWALLS //can smash walls + wound_bonus += 25 + bare_wound_bonus += 50 + sound_pitch = -50 + alternate_attack_prob = 75 + is_low_health = TRUE + +/// Override this with what should happen when going from low health to high health +/mob/living/simple_animal/hostile/deathclaw/retaliate/make_high_health() + visible_message(span_danger("[src] calms down.")) + color = initial(color) + reach = initial(reach) + speed = initial(speed) + obj_damage = initial(obj_damage) + melee_damage_lower = initial(melee_damage_lower) + melee_damage_upper = initial(melee_damage_upper) + see_in_dark = initial(see_in_dark) + environment_smash = initial(environment_smash) + wound_bonus = initial(wound_bonus) + bare_wound_bonus = initial(bare_wound_bonus) + alternate_attack_prob = initial(alternate_attack_prob) + is_low_health = FALSE + +/mob/living/simple_animal/hostile/deathclaw/retaliate/AlternateAttackingTarget(atom/the_target) + if(!ismovable(the_target)) + return + var/atom/movable/throwee = the_target + if(throwee.anchored) + return + var/atom/throw_target = get_ranged_target_turf(throwee, get_dir(src, the_target), rand(2,10), 4) + throwee.safe_throw_at(throw_target, 10, 1, src, TRUE) + playsound(get_turf(throwee), 'sound/effects/Flesh_Break_1.ogg') + +/mob/living/simple_animal/hostile/retaliate/deathclaw/Move() + if(is_low_health && health > 0) + new /obj/effect/temp_visual/decoy/fading(loc,src) + DestroySurroundings() + . = ..() + +/mob/living/simple_animal/hostile/retaliate/deathclaw/Bump(atom/A) + if(is_low_health) + if((isturf(A) || isobj(A)) && A.density) + A.ex_act(EXPLODE_HEAVY) + playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) + if(stat || health <= 0) + playsound(get_turf(src), 'sound/effects/Flesh_Break_2.ogg', 100, 1, ignore_walls = TRUE) + visible_message(span_danger("[src] smashes into \the [A] and explodes in a violent spray of gore![prob(25) ? " Holy shit!" : ""]")) + gib() + return + DestroySurroundings() + ..() + +// Mother death claw - egglaying +/mob/living/simple_animal/hostile/retaliate/deathclaw/mother + name = "mother deathclaw" + desc = "A massive, reptilian creature with powerful muscles, razor-sharp claws. This one is an BIG mother." + gender = FEMALE + mob_armor = ARMOR_VALUE_DEATHCLAW_MOTHER + maxHealth = 300 + health = 300 + stat_attack = CONSCIOUS + melee_damage_lower = 25 + melee_damage_upper = 55 + footstep_type = FOOTSTEP_MOB_HEAVY + color = rgb(95,104,94) + color_mad = rgb(113, 105, 100) + var/egg_type = /obj/item/reagent_containers/food/snacks/f13/deathclawegg + var/food_type = /obj/item/reagent_containers/food/snacks/meat + var/eggsleft = 0 + var/eggsFertile = TRUE + var/list/feedMessages = list("It rips the meat from your grasp.","It glares at you as it swallows the meat whole.") + var/list/layMessage = EGG_LAYING_MESSAGES + guaranteed_butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/deathclaw = 6, + /obj/item/stack/sheet/animalhide/deathclaw = 3) + +/mob/living/simple_animal/hostile/retaliate/deathclaw/mother/Initialize() + . = ..() + if(!body_color) + body_color = pick(validColors) + icon_state = "[icon_prefix]_[body_color]" + icon_living = "[icon_prefix]_[body_color]" + icon_dead = "[icon_prefix]_[body_color]_dead" + pixel_x = rand(-6, 6) + pixel_y = rand(0, 10) + ++deathclaw_mother_count + +/mob/living/simple_animal/hostile/retaliate/deathclaw/mother/Destroy() + --deathclaw_mother_count + return ..() + +/mob/living/simple_animal/hostile/retaliate/deathclaw/mother/attackby(obj/item/O, mob/user, params) + if(istype(O, food_type)) //feedin' dem claws + if(!stat && eggsleft < 8) + var/feedmsg = "[user] feeds [O] to [name]! [pick(feedMessages)]" + user.visible_message(feedmsg) + qdel(O) + eggsleft += rand(1, 4) + else + to_chat(user, span_warning("[name] doesn't seem hungry!")) + else + ..() + +/mob/living/simple_animal/hostile/retaliate/deathclaw/mother/BiologicalLife(seconds, times_fired) + if(!(. = ..())) + return + if((!stat && prob(3) && eggsleft > 0) && egg_type) + visible_message(span_alertalien("[src] [pick(layMessage)]")) + eggsleft-- + var/obj/item/E = new egg_type(get_turf(src)) + E.pixel_x = rand(-6,6) + E.pixel_y = rand(-6,6) + if(eggsFertile) + if(deathclaw_mother_count < MAX_CHICKENS && prob(25)) + START_PROCESSING(SSobj, E) + +/obj/item/reagent_containers/food/snacks/f13/deathclawegg/var/amount_grown = 0 +/obj/item/reagent_containers/food/snacks/f13/deathclawegg/process() + if(isturf(loc)) + amount_grown += rand(1,2) + if(amount_grown >= 100) + visible_message("[src] hatches with a quiet cracking sound, swelling to full size.") + /mob/living/simple_animal/hostile/retaliate/deathclaw/mother(get_turf(src)) + STOP_PROCESSING(SSobj, src) + qdel(src) + else + STOP_PROCESSING(SSobj, src) + From 92a595e0d35a8dc4827fa955f2796a80d83f7e1d Mon Sep 17 00:00:00 2001 From: CacheAtWork <133615617+CacheAtWork@users.noreply.github.com> Date: Sun, 25 Jun 2023 22:21:29 +0100 Subject: [PATCH 2/6] Update mobs.dm --- code/__DEFINES/mobs.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 9de4d936b33..8ee74ffa6ef 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -380,6 +380,7 @@ #define MAX_CHICKENS 50 +#define MAX_MAX_MOTHERCLAWS 25 ///Flags used by the flags parameter of electrocute act. From 76673bac1936d33acc1ebcf875cce57d096c9acc Mon Sep 17 00:00:00 2001 From: CacheAtWork <133615617+CacheAtWork@users.noreply.github.com> Date: Sun, 25 Jun 2023 22:21:46 +0100 Subject: [PATCH 3/6] Update deathclaw --- .../mob/living/simple_animal/hostile/retaliate/deathclaw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/deathclaw b/code/modules/mob/living/simple_animal/hostile/retaliate/deathclaw index e01f509f019..bbcf173a87a 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/deathclaw +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/deathclaw @@ -194,7 +194,7 @@ E.pixel_x = rand(-6,6) E.pixel_y = rand(-6,6) if(eggsFertile) - if(deathclaw_mother_count < MAX_CHICKENS && prob(25)) + if(deathclaw_mother_count < MAX_MOTHERCLAWS && prob(25)) START_PROCESSING(SSobj, E) /obj/item/reagent_containers/food/snacks/f13/deathclawegg/var/amount_grown = 0 From 6f08606ad6a31886f4184e8aae7fa3ae5e9b9486 Mon Sep 17 00:00:00 2001 From: CacheAtWork <133615617+CacheAtWork@users.noreply.github.com> Date: Sun, 25 Jun 2023 22:32:39 +0100 Subject: [PATCH 4/6] Update food.dm --- code/modules/fallout/obj/food_and_drinks/food.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/modules/fallout/obj/food_and_drinks/food.dm b/code/modules/fallout/obj/food_and_drinks/food.dm index 9774a9a7221..b90eb8b3a55 100644 --- a/code/modules/fallout/obj/food_and_drinks/food.dm +++ b/code/modules/fallout/obj/food_and_drinks/food.dm @@ -604,6 +604,13 @@ filling_color = "#F0E68C" foodtype = MEAT +/obj/item/reagent_containers/food/snacks/f13/deathclawegg/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + if(!..()) //was it caught by a mob? + var/turf/T = get_turf(hit_atom) + new/obj/effect/decal/cleanable/egg_smudge(T) + reagents.reaction(hit_atom, TOUCH) + qdel(src) + /obj/item/reagent_containers/food/snacks/f13/giantantegg name = "giant ant egg" desc = "A giant ant egg.
You'd thought it be bigger but its white and squishy to the touch." From 8dfd65a9c6ed69ac99598b18ac4312bea343c66e Mon Sep 17 00:00:00 2001 From: CacheAtWork <133615617+CacheAtWork@users.noreply.github.com> Date: Mon, 26 Jun 2023 00:09:50 +0100 Subject: [PATCH 5/6] Update misc_export.dm --- code/modules/cargo/exports/misc_export.dm | 25 +++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/code/modules/cargo/exports/misc_export.dm b/code/modules/cargo/exports/misc_export.dm index bea1318c39c..0a786669a7b 100644 --- a/code/modules/cargo/exports/misc_export.dm +++ b/code/modules/cargo/exports/misc_export.dm @@ -524,6 +524,31 @@ export_types = list(/obj/item/fishy/eel, ) +/datum/export/item/forged + cost = 200 + unit_name = "forged weapons" + export_types = list(/obj/item/melee/smith/sword, + /obj/item/melee/smith/sword/spatha, + /obj/item/melee/smith/sword/sabre, + /obj/item/melee/smith/dagger, + /obj/item/melee/smith/dagger/bowie, + /obj/item/melee/smith/machete, + /obj/item/melee/smith/machete/gladius, + /obj/item/melee/smith/machete/reforged, + /obj/item/melee/smith/wakizashi, + /obj/item/melee/smith/mace, + /obj/item/melee/smith/twohand/katana, + /obj/item/melee/smith/twohand/longsword, + /obj/item/melee/smith/twohand/axe, + /obj/item/melee/smith/twohand/axe/warhoned, + /obj/item/melee/smith/twohand/axe/crusher, + /obj/item/melee/smith/twohand/axe/scrapblade, + /obj/item/melee/smith/twohand/spear, + /obj/item/melee/smith/twohand/spear/lance, + /obj/item/melee/smith/twohand/spear/trident, + /obj/item/melee/smith/javelin, + /obj/item/melee/smith/throwingknife, + ) /* k_elasticity 0 - the price degredation thing, in case we need it. Might need to be applied to toys in the future. */ From d81f6d133140653e67b80837271262d02418ddc5 Mon Sep 17 00:00:00 2001 From: CacheAtWork <133615617+CacheAtWork@users.noreply.github.com> Date: Mon, 26 Jun 2023 00:21:07 +0100 Subject: [PATCH 6/6] Update __donator.dm --- modular_citadel/code/modules/client/loadout/__donator.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index 0b81ce43440..f0d53674f98 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -1326,6 +1326,7 @@ new /obj/item/queen_bee/bought(src) new /obj/item/vending_refill/hydroseeds(src) new /obj/machinery/vending/hydroseeds(src) + new /obj/item/storage/box/disks_plantgene(src) // Y