diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index 59dfcdf015..e6b52d47e3 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -908,21 +908,17 @@ mob/living/carbon/proc/charmed() //TODO /datum/reagent/succubi_numbing/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/effective_dose = dose - var/threshold = 1 - if(effective_dose < 1.5 * threshold) - M.eye_blurry = max(M.eye_blurry, 10) - else if(effective_dose < 5 * threshold) - M.Weaken(2) - M.drowsyness = max(M.drowsyness, 20) + M.eye_blurry = max(M.eye_blurry, 10) + M.Weaken(2) + M.drowsyness = max(M.drowsyness, 20) if(prob(7)) M.show_message("You start to feel weakened, your body seems heavy.") return /datum/reagent/succubi_paralize name = "Paralyzing Fluid" - id = "succubi_numbing" + id = "succubi_paralize" description = "A unknown liquid, it doesn't smell" metabolism= REM * 0.5 color = "#41029B" @@ -930,8 +926,8 @@ mob/living/carbon/proc/charmed() //TODO /datum/reagent/succubi_paralize/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) //will first keep it like that. lets see what it changes. if nothing, than I will rework the effect again - if(prob(7)) - M.Weaken(20) - M.eye_blurry = max(M.eye_blurry, 10) + M.Weaken(20) + M.eye_blurry = max(M.eye_blurry, 10) + if(prob(10)) M.show_message("You lose sensation of your body.") return diff --git a/code/modules/mob/living/simple_animal/animals/synx.dm b/code/modules/mob/living/simple_animal/animals/synx.dm new file mode 100644 index 0000000000..bfe0017771 --- /dev/null +++ b/code/modules/mob/living/simple_animal/animals/synx.dm @@ -0,0 +1,103 @@ +/mob/living/simple_animal/neutral/synx + name = "Synx" + desc = "to be added" + tt_desc = "synxus pergulus" + + //to be added + icon_state = "synx" + icon_living = "synx" + + faction = "Synx" + intelligence_level = SA_ANIMAL + + maxHealth = 150 + health = 120 + turns_per_move = 3 + speed = -2 + see_in_dark = 6 + stop_when_pulled = 0 + armor = list( // will be determined + "melee" = 20, + "bullet" = 0, + "laser" = 0, + "energy" = 0, + "bomb" = 10, + "bio" = 100, + "rad" = 100) + //has_hands = TRUE + + response_help = "pets" + response_disarm = "gently pushes aside" + + + pass_flags = PASSTABLE + + melee_damage_lower = 20 + melee_damage_upper = 30 + attack_armor_pen = 50 // How much armor pen this attack has. + attack_sharp = 1 + attack_edge = 1 + + //will be affected by atmos soon + 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 + //to be added + /*speak_chance = 1 + speak = list() + speak_emote = list() + emote_hear = list() + emote_see = list()*/ + +/mob/living/simple_animal/neutral/synx/New() + ..() + verbs |= /mob/living/proc/ventcrawl + verbs |= /mob/living/simple_animal/proc/contort + verbs |= /mob/living/proc/disguise + +mob/living/simple_animal/synx/PunchTarget() + if(!Adjacent(target_mob)) + return + custom_emote(1, pick( list("slashes at [target_mob]", "bites [target_mob]") ) ) + + var/damage = rand(melee_damage_lower, melee_damage_upper) + + if(ishuman(target_mob)) + var/mob/living/carbon/human/H = target_mob + var/dam_zone = pick(BP_TORSO, BP_L_HAND, BP_R_HAND, BP_L_LEG, BP_R_LEG) + var/obj/item/organ/external/affecting = H.get_organ(ran_zone(dam_zone)) + H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"), H.get_armor_soak(affecting, "melee"), sharp=1, edge=1) + return H + else if(isliving(target_mob)) + var/mob/living/L = target_mob + L.adjustBruteLoss(damage) + return L + else + ..() + + +/mob/living/simple_animal/proc/contort() + set name = "contort" + set desc = "Allows to hide beneath tables or certain items. Toggled on or off." + set category = "Abilities" + + if(stat == DEAD || paralysis || weakened || stunned || restrained()) + return + + if(status_flags & HIDING) + status_flags &= ~HIDING + reset_plane_and_layer() + to_chat(src,"You have stopped hiding.") + speed = -3 + else + status_flags |= HIDING + layer = HIDING_LAYER //Just above cables with their 2.44 + plane = OBJ_PLANE + to_chat(src,"You are now hiding.") + speed = 2 \ No newline at end of file diff --git a/code/modules/mob/living/synx_powers.dm b/code/modules/mob/living/synx_powers.dm new file mode 100644 index 0000000000..dc3966e3e7 --- /dev/null +++ b/code/modules/mob/living/synx_powers.dm @@ -0,0 +1,21 @@ +mob/living/proc/disguise() + set name = "Toggle Form" + set desc = "Switch between amorphous and humanoid forms." + set category = "Abilities" + + //Transformed form + if(icon_state !="bear") + icon_state="bear" + to_chat(src,"you changed back into your disguise.") + if(icon_state== "bear") + to_chat(temporary_form,"You can only do this while not stunned.") + else + to_chat(src,"you failed.") + + //Normal form form + else if(stat) + to_chat(src,"You can only do this while not stunned.") + return + else + to_chat(src,"now they see your true form.") + icon_state="synx" \ No newline at end of file diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index e503b0d1b9..00fbaf6912 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ