diff --git a/aurorastation.dme b/aurorastation.dme index afdac353c2b..042fdaff08c 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -2121,7 +2121,6 @@ #include "code\modules\mob\living\simple_animal\hostile\pra.dm" #include "code\modules\mob\living\simple_animal\hostile\russian.dm" #include "code\modules\mob\living\simple_animal\hostile\sarlacc.dm" -#include "code\modules\mob\living\simple_animal\hostile\shark.dm" #include "code\modules\mob\living\simple_animal\hostile\spider_queen.dm" #include "code\modules\mob\living\simple_animal\hostile\syndicate.dm" #include "code\modules\mob\living\simple_animal\hostile\tree.dm" diff --git a/code/modules/mob/living/simple_animal/hostile/shark.dm b/code/modules/mob/living/simple_animal/hostile/shark.dm deleted file mode 100644 index fb235519dad..00000000000 --- a/code/modules/mob/living/simple_animal/hostile/shark.dm +++ /dev/null @@ -1,216 +0,0 @@ - - -/mob/living/simple_animal/eventshark - name = "shark" - desc = "A ferocious, fang-bearing creature." - icon = 'icons/mob/npc/shark.dmi' - icon_state = "shark" - icon_living = "shark" - icon_dead = "shark_dead" - icon_rest = "shark_rest" - speak_chance = 0 - turns_per_move = 5 - meat_type = /obj/item/reagent_containers/food/snacks/fish/carpmeat - organ_names = list("head", "chest", "tail", "left flipper", "right flipper") - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "hits the" - speed = 1 - meat_amount = 5 - maxHealth = 700 - health = 700 - mob_size = 15 - see_in_dark = 10 - see_invisible = SEE_INVISIBLE_NOLIGHTING - universal_understand = 1 - - harm_intent_damage = 5 - melee_damage_lower = 25 - melee_damage_upper = 30 - resist_mod = 15 // LOL good luck pal - attacktext = "bitten" - attack_sound = 'sound/weapons/bite.ogg' - - mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY - mob_push_flags = ALLMOBS - - //Space carp aren't affected by atmos. - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 - minbodytemp = 0 - - faction = "carp" - - flying = TRUE - - var/diving = FALSE - var/mouth_open = TRUE - -/mob/living/simple_animal/eventshark/Allow_Spacemove(var/check_drift = 0) - return 1 //No drifting in space for space carp! //original comments do not steal - -/mob/living/simple_animal/eventshark/verb/dive() - set category = "Shark" - - if(!diving) - visible_message(SPAN_NOTICE("\The [src] dives down and vanishes from view.")) - invisibility = INVISIBILITY_MAXIMUM - speed = -3 - density = FALSE - else - invisibility = 0 - visible_message(SPAN_NOTICE("\The [src] emerges from the depths.")) - speed = -5 - density = TRUE - - diving = !diving - -/mob/living/simple_animal/eventshark/MiddleClickOn(var/atom/A) - if(ishuman(A)) - var/mob/living/carbon/human/H = A - if(!Adjacent(H)) - return - - if(!health) - return - - var/limblist = list(BP_L_ARM, BP_R_ARM, BP_L_LEG, BP_R_LEG) - while(length(limblist)) - var/limbname = pick(limblist) - limblist -= limbname - var/obj/item/organ/external/O = H.get_organ(limbname) - if(!O) - continue - if(O.is_stump()) - continue - O.droplimb(FALSE,DROPLIMB_BLUNT) - visible_message(SPAN_WARNING("\The [src] bites off [H]'s [O].")) - return - var/obj/item/organ/external/O = H.get_organ(BP_HEAD) - if(!O) - return - if(O.is_stump()) - return - O.droplimb(FALSE,DROPLIMB_EDGE) - visible_message(SPAN_WARNING("\The [src] bites off [H]'s [O].")) - - else if(istype(A,/obj/item)) - if(!Adjacent(A)) - return - - if(!health) - return - - visible_message(SPAN_WARNING("\The [src] devours \the [A]")) - qdel(A) - - return - return - -/** - * Attempt to devour victim - * - * Returns TRUE on success, FALSE on failure - -/mob/living/simple_animal/eventshark/proc/devour(atom/movable/victim) - - var/eat_speed = 100 - if(ismob(victim)) - eat_speed *= 3 //We want our bites to take a lot so as to not spam the chat. - do_gradual_devour(victim, eat_speed) - return - src.visible_message("\The [src] is attempting to devour \the [victim] whole!") - var/mob/target = victim - if(isobj(victim)) - target = src - if(!do_mob(src,target,eat_speed)) - return FALSE - src.visible_message("\The [src] devours \the [victim] whole!") - if(ismob(victim)) - admin_attack_log(src, victim, "Devoured.", "Was devoured by.", "devoured") - else - src.drop_from_inventory(victim) - move_to_stomach(victim) - - return TRUE - -/mob/living/simple_animal/eventshark/proc/move_to_stomach(atom/movable/victim) - return - -// Snowflake procs for unathi. Because lore said so. - -/mob/living/simple_animal/eventshark/proc/do_gradual_devour(var/mob/living/victim, var/eat_speed) - set waitfor = FALSE - - //This function will start consuming the victim by taking bites out of them. - //Victim or attacker moving will interrupt it - //A bite will be taken every 4 seconds - var/bite_delay = 4 - var/bite_size = mouth_size * 0.5 - var/num_bites_needed = (victim.mob_size * 2)/bite_size //Total bites needed to eat it from full health - var/PEPB = 1/num_bites_needed //Percentage eaten per bite - var/turf/ourloc = src.loc - var/turf/victimloc = victim.loc - var/messes = 0 //Number of bloodstains we've placed - var/datum/reagents/vessel = victim.get_vessel(1) - if(!victim.composition_reagent_quantity) - victim.calculate_composition() - var/dam_multiplier = 1 - - var/victim_maxhealth = victim.maxHealth //We cache this here in case we need to edit it. - - var/damage_dealt = victim_maxhealth * PEPB * dam_multiplier - - //Now, incase we're resuming an earlier feeding session on the same creature - //We calculate the actual bites needed to fully eat it based on how eaten it already is - if(victim.getBruteLoss()) - var/percentageDamaged = victim.getBruteLoss() / victim_maxhealth - var/percentageRemaining = 1 - percentageDamaged - num_bites_needed = percentageRemaining / PEPB - - var/time_needed_seconds = num_bites_needed*bite_delay//in seconds for now - var/time_needed_minutes - var/time_needed_string - if (time_needed_seconds > 60) - time_needed_minutes = round((time_needed_seconds/60)) - time_needed_seconds = time_needed_seconds % 60 - time_needed_string = "[time_needed_minutes] minutes and [time_needed_seconds] seconds" - else - time_needed_string = "[time_needed_seconds] seconds" - - src.visible_message("[src] starts to devour [victim]!", \ - "You start devouring [victim], this will take approximately [time_needed_string]. You and the victim must remain still to continue, \ - but you can interrupt feeding anytime and leave with what you've already eaten.") - - for (var/i = 0 to num_bites_needed) - if(do_mob(src, victim, bite_delay * 10, extra_checks = CALLBACK(src, .proc/devour_in_range, victim))) - face_atom(victim) - victim.apply_damage(damage_dealt, BRUTE) - var/obj/item/organ/internal/stomach/S = internal_organs_by_name[BP_STOMACH] - if(S) - S.ingested.add_reagent(victim.composition_reagent, (victim.composition_reagent_quantity * 0.5) * PEPB) - visible_message("[src] bites a chunk out of [victim]!","[bitemessage(victim)]") - if(messes < victim.mob_size - 1 && prob(50)) - handle_devour_mess(src, victim, vessel) - if(victim.getBruteLoss() >= victim_maxhealth) - visible_message("[src] finishes devouring [victim].","You finish devouring [victim].") - handle_devour_mess(src, victim, vessel, 1) - qdel(victim) - else - if(nutrition >= (max_nutrition - 60)) - to_chat(src, "Your stomach is full!") - if (victim && !QDELETED(victim) && victimloc != victim.loc) //This procs when the victim gets moved to nullspace. - to_chat(src, "[victim] moved away, you need to keep it still. Try grabbing, stunning or killing it first.") - else if (ourloc != src.loc) - to_chat(src, "You moved! Devouring cancelled.") - break - -/mob/living/simple_animal/eventshark/proc/devour_in_range(var/mob/victim) - return victim in range(2, src) - */ diff --git a/icons/mob/npc/shark.dmi b/icons/mob/npc/shark.dmi deleted file mode 100644 index f9582583278..00000000000 Binary files a/icons/mob/npc/shark.dmi and /dev/null differ