Vampire Gamemode!

This commit is contained in:
ZomgPonies
2013-12-13 19:38:49 -05:00
parent 25becb2c49
commit 912601a30d
22 changed files with 1013 additions and 25 deletions
@@ -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)