This commit is contained in:
Guti
2024-09-22 15:01:10 +02:00
101 changed files with 7739 additions and 852 deletions
@@ -8,7 +8,6 @@
transmutation and energy sharing abilities not unlike they lleill, but considerably more limited. Unlike \
other shapeshifter species, such as proteans or prometheans, Hanner have a typical humanoid set of organs and can not regenerate."
flags = NO_SCAN
color_mult = 1
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR | HAS_LIPS
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE
@@ -130,7 +130,7 @@
for(var/mob/living/carbon/human/M in mob_list)
if(M.z != user.z || get_dist(user,M) > 10)
continue
if(istype(M) && M.resleeve_lock && M.ckey != M.resleeve_lock)
if(!M.allow_mimicry)
continue
targets |= M
@@ -65,51 +65,51 @@
resize(H.size_multiplier, ignore_prefs = TRUE)
var/obj/item/A = H.get_active_hand()
var/obj/item/I = H.get_inactive_hand()
if(istype(A,/obj/item/weapon/material) || istype(A,/obj/item/weapon/melee) || istype(I,/obj/item/weapon/material) || istype(I,/obj/item/weapon/melee))
if(istype(A,/obj/item/material) || istype(A,/obj/item/melee) || istype(I,/obj/item/material) || istype(I,/obj/item/melee))
seen_melee = 1
melee_damage_lower = 20
melee_damage_upper = 30
if(istype(A,/obj/item/weapon/gun/projectile) || istype(I,/obj/item/weapon/gun/projectile))
if(istype(A,/obj/item/gun/projectile) || istype(I,/obj/item/gun/projectile))
seen_gun = 1
projectiletype = /obj/item/projectile/bullet/pistol/medium
projectilesound = 'sound/weapons/Gunshot_light.ogg'
if(istype(A,/obj/item/weapon/gun/projectile/shotgun) || istype(I,/obj/item/weapon/gun/projectile/shotgun))
if(istype(A,/obj/item/gun/projectile/shotgun) || istype(I,/obj/item/gun/projectile/shotgun))
projectiletype = /obj/item/projectile/bullet/pellet/shotgun
projectilesound = 'sound/weapons/Gunshot_shotgun.ogg'
reload_time = 1.5 SECONDS
ranged_attack_delay = 1.5 SECONDS
projectile_dispersion = 8
projectile_accuracy = -40
if(istype(A,/obj/item/weapon/gun/projectile/automatic) || istype(I,/obj/item/weapon/gun/projectile/automatic))
if(istype(A,/obj/item/gun/projectile/automatic) || istype(I,/obj/item/gun/projectile/automatic))
base_attack_cooldown = 5
projectile_dispersion = 7
projectile_accuracy = -20
if(istype(A,/obj/item/weapon/gun/projectile/heavysniper) || istype(I,/obj/item/weapon/gun/projectile/heavysniper))
if(istype(A,/obj/item/gun/projectile/heavysniper) || istype(I,/obj/item/gun/projectile/heavysniper))
projectiletype = /obj/item/projectile/bullet/rifle/a145/highvel // Do not get seen with a big ass sniper!
projectilesound = 'sound/weapons/Gunshot_cannon.ogg'
ranged_attack_delay = 2.5 SECONDS
reload_time = 5 SECONDS
projectile_accuracy = 75
if(istype(A,/obj/item/weapon/gun/energy) || istype(I,/obj/item/weapon/gun/energy))
if(istype(A,/obj/item/gun/energy) || istype(I,/obj/item/gun/energy))
seen_gun = 1
projectiletype = /obj/item/projectile/beam/midlaser
projectilesound = 'sound/weapons/Laser.ogg'
projectile_dispersion = 5
projectile_accuracy = -20
if(istype(A,/obj/item/weapon/gun/energy/ionrifle) || istype(I,/obj/item/weapon/gun/energy/ionrifle))
if(istype(A,/obj/item/gun/energy/ionrifle) || istype(I,/obj/item/gun/energy/ionrifle))
projectiletype = /obj/item/projectile/ion
if(istype(A,/obj/item/weapon/gun/energy/lasercannon) || istype(I,/obj/item/weapon/gun/energy/lasercannon))
if(istype(A,/obj/item/gun/energy/lasercannon) || istype(I,/obj/item/gun/energy/lasercannon))
projectiletype = /obj/item/projectile/beam/heavylaser
ranged_attack_delay = 2.5 SECONDS
reload_time = 5 SECONDS
projectilesound = 'sound/weapons/lasercannonfire.ogg'
if(istype(A,/obj/item/weapon/gun/energy/sniperrifle) || istype(I,/obj/item/weapon/gun/energy/sniperrifle))
if(istype(A,/obj/item/gun/energy/sniperrifle) || istype(I,/obj/item/gun/energy/sniperrifle))
projectiletype = /obj/item/projectile/beam/sniper // Do not get seen with a big ass sniper!
projectilesound = 'sound/weapons/gauss_shoot.ogg'
ranged_attack_delay = 2.5 SECONDS
reload_time = 5 SECONDS
projectile_accuracy = 75
if(istype(A,/obj/item/weapon/gun/magnetic) || istype(I,/obj/item/weapon/gun/magnetic))
if(istype(A,/obj/item/gun/magnetic) || istype(I,/obj/item/gun/magnetic))
seen_gun = 1
projectiletype = /obj/item/projectile/bullet/magnetic/bore
projectilesound = 'sound/weapons/railgun.ogg'
@@ -210,11 +210,6 @@
if(pred.prey_controlled)
to_chat(prey, "<span class='warning'>\The [pred] is already dominated, and cannot be controlled at this time.</span>")
return
if(ishuman(pred))
var/mob/living/carbon/human/h = pred
if(h.resleeve_lock && ckey != h.resleeve_lock)
to_chat(src, "<span class='warning'>\The [h] cannot be impersonated!</span>")
return
if(tgui_alert(prey, "You are attempting to take over [pred], are you sure? Ensure that their preferences align with this kind of play.", "Take Over Predator",list("No","Yes")) != "Yes")
return
to_chat(prey, "<span class='notice'>You attempt to exert your control over \the [pred]...</span>")
@@ -99,7 +99,7 @@
/mob/living/simple_mob/vore/morph/proc/assume(atom/movable/target)
var/mob/living/carbon/human/humantarget = target
if(istype(humantarget) && humantarget.resleeve_lock && ckey != humantarget.resleeve_lock)
if(istype(humantarget) && !humantarget.allow_mimicry)
to_chat(src, "<span class='warning'>[target] cannot be impersonated!</span>")
return
if(morphed)
@@ -272,12 +272,9 @@
var/mob/living/L = tgui_input_list(src, "Select a mob to take over:", "Take Over Prey", possible_mobs)
if(!L)
return
// Adding a ishuman check here, since silicon mobs don't have a resleeve_lock from what I can tell.
if(ishuman(L))
var/mob/living/carbon/human/M = L
if(M.resleeve_lock && ckey != M.resleeve_lock)
to_chat(src, "<span class='warning'>\The [M] cannot be impersonated!</span>")
return
if(!L.allow_mimicry)
to_chat(src, "<span class='warning'>\The [L] cannot be impersonated!</span>")
return
if(tgui_alert(src, "You selected [L] to attempt to take over. Are you sure?", "Take Over Prey",list("No","Yes")) == "Yes")
log_admin("[key_name_admin(src)] offered [L] to swap bodies as a morph.")
if(tgui_alert(L, "\The [src] has elected to attempt to take over your body and control you. Is this something you will allow to happen?", "Allow Morph To Take Over",list("No","Yes")) == "Yes")
@@ -36,6 +36,7 @@
noisy = client.prefs_vr.noisy
selective_preference = client.prefs_vr.selective_preference
eating_privacy_global = client.prefs_vr.eating_privacy_global
allow_mimicry = client.prefs_vr.allow_mimicry
drop_vore = client.prefs_vr.drop_vore
stumble_vore = client.prefs_vr.stumble_vore