mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 05:57:24 +01:00
Vampire Gamemode!
This commit is contained in:
@@ -168,6 +168,10 @@ Works together with spawning an observer, noted above.
|
||||
U.client.images += image(tempHud,target,"huddeathsquad")
|
||||
if("Ninja")
|
||||
U.client.images += image(tempHud,target,"hudninja")
|
||||
if("Vampire")
|
||||
U.client.images += image(tempHud,target,"vampire")
|
||||
if("VampThrall")
|
||||
U.client.images += image(tempHud,target,"vampthrall")
|
||||
else//If we don't know what role they have but they have one.
|
||||
U.client.images += image(tempHud,target,"hudunknown1")
|
||||
else//If the silicon mob has no law datum, no inherent laws, or a law zero, add them to the hud.
|
||||
|
||||
@@ -90,6 +90,24 @@
|
||||
|
||||
if("hurt")
|
||||
|
||||
//Vampire code
|
||||
if(M.zone_sel && M.zone_sel.selecting == "head" && src != M)
|
||||
if(M.mind && M.mind.vampire && (M.mind in ticker.mode.vampires) && !M.mind.vampire.draining)
|
||||
if((head && (head.flags & HEADCOVERSMOUTH)) || (wear_mask && (wear_mask.flags & MASKCOVERSMOUTH)))
|
||||
M << "\red Remove their mask!"
|
||||
return 0
|
||||
if((M.head && (M.head.flags & HEADCOVERSMOUTH)) || (M.wear_mask && (M.wear_mask.flags & MASKCOVERSMOUTH)))
|
||||
M << "\red Remove your mask!"
|
||||
return 0
|
||||
if(mind && mind.vampire && (mind in ticker.mode.vampires))
|
||||
M << "\red Your fangs fail to pierce [src.name]'s cold flesh"
|
||||
return 0
|
||||
//we're good to suck the blood, blaah
|
||||
M.handle_bloodsucking(src)
|
||||
return
|
||||
//end vampire codes
|
||||
|
||||
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>[M.species.attack_verb]ed [src.name] ([src.ckey])</font>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been [M.species.attack_verb]ed by [M.name] ([M.ckey])</font>")
|
||||
|
||||
|
||||
@@ -125,6 +125,9 @@
|
||||
for(var/obj/item/weapon/grab/G in src)
|
||||
G.process()
|
||||
|
||||
if(mind && mind.vampire)
|
||||
handle_vampire_cloak()
|
||||
|
||||
|
||||
/mob/living/carbon/human/calculate_affecting_pressure(var/pressure)
|
||||
..()
|
||||
@@ -403,6 +406,11 @@
|
||||
internals.icon_state = "internal0"
|
||||
return null
|
||||
|
||||
// USED IN DEATHWHISPERS
|
||||
proc/isInCrit()
|
||||
// Health is in deep shit and we're not already dead
|
||||
return health <= 0 && stat != 2
|
||||
|
||||
|
||||
proc/handle_breath(datum/gas_mixture/breath)
|
||||
if(status_flags & GODMODE)
|
||||
@@ -1222,6 +1230,13 @@
|
||||
see_in_dark = 8
|
||||
see_invisible = SEE_INVISIBLE_LEVEL_ONE
|
||||
|
||||
if(mind && mind.vampire)
|
||||
if((VAMP_VISION in mind.vampire.powers) && !(VAMP_FULL in mind.vampire.powers))
|
||||
sight |= SEE_MOBS
|
||||
if((VAMP_FULL in mind.vampire.powers))
|
||||
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
|
||||
see_in_dark = 8
|
||||
if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||
if(XRAY in mutations)
|
||||
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
|
||||
see_in_dark = 8
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
var/list/heard_a = list() // understood us
|
||||
var/list/heard_b = list() // didn't understand us
|
||||
var/and_passes_on=""
|
||||
if(!said_last_words)
|
||||
if(!said_last_words && src.isInCrit())
|
||||
and_passes_on=" - and passes on"
|
||||
said_last_words=src.stat
|
||||
|
||||
@@ -153,6 +153,6 @@
|
||||
M.show_message(rendered, 2)
|
||||
if(said_last_words)
|
||||
src.stat = 2
|
||||
src.death()
|
||||
src.death(0)
|
||||
src.regenerate_icons()
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
/mob/living/simple_animal/hostile/scarybat
|
||||
name = "space bat"
|
||||
desc = "A cute little blood sucking bat that looks pretty pissed."
|
||||
icon_state = "scarybat"
|
||||
icon_living = "scarybat"
|
||||
icon_dead = "scarybat-dead"
|
||||
icon_gib = "scarybat-dead"
|
||||
speak_chance = 0
|
||||
turns_per_move = 3
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
response_help = "pets the"
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "hits the"
|
||||
speed = 4
|
||||
maxHealth = 20
|
||||
health = 20
|
||||
|
||||
harm_intent_damage = 8
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
//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
|
||||
|
||||
// break_stuff_probability = 2
|
||||
|
||||
faction = "scarybat"
|
||||
var/mob/living/owner
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/New(loc, mob/living/L as mob)
|
||||
..()
|
||||
if(istype(L))
|
||||
owner = L
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/Process_Spacemove(var/check_drift = 0)
|
||||
return ..() //No drifting in space for space carp! //original comments do not steal
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/FindTarget()
|
||||
. = ..()
|
||||
if(.)
|
||||
emote("flutters towards [.]")
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/AttackingTarget()
|
||||
. =..()
|
||||
var/mob/living/L = .
|
||||
if(istype(L))
|
||||
if(prob(15))
|
||||
L.Stun(1)
|
||||
L.visible_message("<span class='danger'>\the [src] scares \the [L]!</span>")
|
||||
@@ -26,6 +26,8 @@
|
||||
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
if(istype(src, /mob/living/simple_animal/hostile/scarybat))
|
||||
if(src:owner == L) continue
|
||||
if(L.faction == src.faction && !attack_same)
|
||||
continue
|
||||
else if(L in friends)
|
||||
|
||||
Reference in New Issue
Block a user