Removed zombies, added Skellingtons for halloween. Some bug fixes

This commit is contained in:
ZomgPonies
2013-10-31 03:21:34 -04:00
parent 11b2fb2784
commit a227fa6cbe
12 changed files with 9 additions and 733 deletions
-1
View File
@@ -92,7 +92,6 @@ var/list/admin_verbs_fun = list(
/datum/admins/proc/toggle_aliens,
/datum/admins/proc/toggle_space_ninja,
/client/proc/send_space_ninja,
/client/proc/zombie_event, // ZOMBB-B-BIES
/client/proc/cmd_admin_add_freeform_ai_law,
/client/proc/cmd_admin_add_random_ai_law,
/client/proc/make_sound,
+1 -1
View File
@@ -841,7 +841,7 @@ datum/preferences
age = max(min( round(text2num(new_age)), AGE_MAX),AGE_MIN)
if("species")
var/list/new_species = list("Human","Tajaran","Skrell","Unathi","Diona")
var/list/new_species = list("Human","Tajaran","Skrell","Unathi","Diona","Skellington")
var/prev_species = species
// var/whitelisted = 0
+1 -1
View File
@@ -95,7 +95,7 @@
storage.amount += inp.amount //Stack the sheets
inp.loc = null //Let the old sheet garbage collect
while(storage.amount > stack_amt) //Get rid of excessive stackage
var/obj/item/stack/sheet/out = new input.type()
var/obj/item/stack/sheet/out = new inp.type()
out.amount = stack_amt
out.loc = output.loc
storage.amount -= stack_amt
+1 -1
View File
@@ -149,7 +149,7 @@
language = "Clatter"
attack_verb = "punch"
flags = WHITELISTED | HAS_LIPS | HAS_TAIL | NO_EAT | NO_BREATHE | NON_GENDERED
flags = HAS_LIPS | HAS_TAIL | NO_EAT | NO_BREATHE | NON_GENDERED
@@ -1,582 +0,0 @@
#define cycle_pause 4 //min 1
#define viewrange 7 //min 2
/mob/living/carbon/human/zombie/New()
..()
// Uh, what? - N3X
src.mind = new/datum/mind(src)
/mob/living/carbon/human/zombie //Define
name = "zombie"
desc = "A Zombie."
a_intent = "harm"
var/state = 0
var/list/path = new/list()
var/frustration = 0
var/mob/living/carbon/target
var/list/path_target = new/list()
var/turf/trg_idle
var/list/path_idle = new/list()
var/alive = 1 //1 alive, 0 dead
var/zsay = new/list()
New()
..()
zsay += "braaaaains"
zsay += "Mrrrhrrrrrrmmmm"
zsay += "BRAIIIIIIIIINSSSSS"
zsay += "uuuuuuuuuuuhhhh"
zsay += "grrrr-grrrii-gggrii-fffee-rrr"
zsay += "UHhuHUhuhhhh"
zsay += "thriii-thirriiill--errrr"
zsay += "GRRRRRRRRR"
zsay += "ahhhaaaarraaghh"
zsay += "eeemmmmmmaaarrrrrrraggh"
zsay += "AAARRAAAGGGGHHHHHH"
zsay += "FFFFEEEEERRAAAAG"
zsay += "bbbb-bbb-ainnnnnns"
src.contract_disease(new/datum/disease/z_virus)
src.process()
emote(var/act)
act = "<B>[src]</B> moans."
for (var/mob/O in hearers(src, null))
O.show_message(act, 2)
Bumped(AM as mob|obj)
// ..()
if(istype(AM, /mob/living/carbon/human/zombie))
return
if(ismob(AM) && (ishuman(AM) || ismonkey(AM)) )
src.target = AM
set_attack()
else if(ismob(AM))
spawn(0)
var/turf/T = get_turf(src)
AM:loc = T
Bump(atom/A)
if(istype(A, /mob/living/carbon/human/zombie))
return
if(ismob(A) && (ishuman(A) || ismonkey(A)))
src.target = A
set_attack()
else if(ismob(A))
src.loc = A:loc
proc/set_attack()
state = 1
if(path_idle.len) path_idle = new/list()
trg_idle = null
proc/set_idle()
state = 2
if (path_target.len) path_target = new/list()
target = null
frustration = 0
proc/set_null()
state = 0
if (path_target.len) path_target = new/list()
if (path_idle.len) path_idle = new/list()
target = null
trg_idle = null
frustration = 0
proc/process()
set background = 1
var/quick_move = 1
var/slow_move = 0
if (src.stat == 2)
return
if (src.stat > 0 || lying)
spawn(cycle_pause)
src.process()
return
if(istype(src.shoes, /obj/item/clothing/shoes/orange))
var/obj/item/clothing/shoes/orange/Os = src.shoes
if(Os.chained)
slow_move = 1
else if(istype(src.wear_suit, /obj/item/clothing/suit/straight_jacket))
slow_move = 1
else if (!target)
if (path_target.len) path_target = new/list()
var/last_health = INFINITY
for (var/mob/living/carbon/C in range(viewrange-2,src.loc))
if (C.stat == 2 || !can_see(src,C,viewrange) || istype(C, /mob/living/carbon/human/zombie) || istype(C, /mob/living/carbon/monkey))
continue
if(C:stunned || C:paralysis || C:weakened)
target = C
break
if(C:health < last_health)
last_health = C:health
target = C
if(target)
set_attack()
else if(state != 2)
set_idle()
idle()
else if(target)
var/turf/distance = get_dist(src, target)
set_attack()
if(can_see(src,target,viewrange))
if(distance <= 1 && !istype(src.wear_mask, /obj/item/clothing/mask))
if(prob(25))
for(var/mob/O in viewers(world.view,src))
O.show_message("\red <B>[src] has attempted to bite [src.target]!</B>", 1, "\red You hear struggling.", 2)
else
for(var/mob/O in viewers(world.view,src))
O.show_message("\red <B>[src.target] has been bitten by [src]!</B>", 1, "\red You hear struggling.", 2)
var/mob/living/carbon/human/T = target
T.bruteloss += rand(1,7)
var/datum/organ/external/affecting
if(T.organs["head"]) affecting = T.organs["head"]
affecting.take_damage(rand(1,7), 0)
playsound(src.loc, 'sound/items/eatfood.ogg', 50, 1)
if(prob(25))
target.contract_disease(new/datum/disease/z_virus)
src.add_blood(src.target)
if (prob(33))
var/turf/location = src.target.loc
if (istype(location, /turf/simulated))
location.add_blood(src.target)
if (src.wear_mask)
src.wear_mask.add_blood(src.target)
if (src.head)
src.head.add_blood(src.target)
if (src.glasses && prob(33))
src.glasses.add_blood(src.target)
if (src.gloves)
src.gloves.add_blood(src.target)
if (prob(15))
if (src.wear_suit)
src.wear_suit.add_blood(src.target)
else if (src.w_uniform)
src.w_uniform.add_blood(src.target)
sleep(5)
//target:paralysis = max(target:paralysis, 10)
else if(distance <= 1 && !src.handcuffed && !istype(src.wear_suit, /obj/item/clothing/suit/straight_jacket))
if(prob(25) && src.equipped())
var/obj/item/weapon/A = src.equipped()
A.attack(src.target, src)
else if(prob(25))
for(var/mob/O in viewers(world.view,src))
O.show_message("\red <B>[src] has attempted to claw [src.target]!</B>", 1, "\red You hear struggling.", 2)
else
for(var/mob/O in viewers(world.view,src))
O.show_message("\red <B>[src.target] has been clawed by [src]!</B>", 1, "\red You hear struggling.", 2)
var/mob/living/carbon/human/T = target
T.bruteloss += rand(1,7)
var/datum/organ/external/affecting
if(T.organs["head"]) affecting = T.organs["head"]
affecting.take_damage(rand(1,7), 0)
if(prob(12.5))
target.contract_disease(new/datum/disease/z_virus)
src.add_blood(src.target)
if (prob(33))
var/turf/location = src.target.loc
if (istype(location, /turf/simulated))
location.add_blood(src.target)
if (src.wear_mask)
src.wear_mask.add_blood(src.target)
if (src.head)
src.head.add_blood(src.target)
if (src.glasses && prob(33))
src.glasses.add_blood(src.target)
if (src.gloves)
src.gloves.add_blood(src.target)
if (prob(15))
if (src.wear_suit)
src.wear_suit.add_blood(src.target)
else if (src.w_uniform)
src.w_uniform.add_blood(src.target)
else
step_towards(src,get_step_towards2(src , target))
set_null()
if(!slow_move)
spawn(cycle_pause) src.process()
else
spawn(cycle_pause*2) src.process()
return
else
if( !path_target.len )
path_attack(target)
if(!path_target.len)
set_null()
if(!slow_move)
spawn(cycle_pause) src.process()
else
spawn(cycle_pause*2) src.process()
return
else
var/turf/next = path_target[1]
if(next in range(1,src))
path_attack(target)
if(!path_target.len)
src.frustration += 5
else
next = path_target[1]
path_target -= next
step_towards(src,next)
quick_move = 1
if (get_dist(src, src.target) >= distance) src.frustration++
else src.frustration--
if(frustration >= 35) set_null()
if(prob(3) && !src.stat == 2)
if(prob(50))
src.say(pick(zsay))
else
src.emote("moan")
if(slow_move)
spawn(cycle_pause*2)
src.process()
else if(quick_move)
spawn(cycle_pause/2)
src.process()
else
spawn(cycle_pause)
src.process()
for(var/obj/machinery/door/D in oview(1))
D.Bumped(src)
proc/idle()
set background = 1
var/quick_move = 0
if(state != 2 || src.stat == 2 || target) return
step_rand(src)
if(prob(3))
if(prob(10))
src.say(pick(zsay))
else
src.emote("moan")
if(quick_move)
spawn(cycle_pause/2)
idle()
else
spawn(cycle_pause)
idle()
proc/path_idle(var/atom/trg)
path_idle = AStar(src.loc, get_turf(trg), /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, null, null)
path_idle = reverselist(path_idle)
proc/path_attack(var/atom/trg)
target = trg
path_target = AStar(src.loc, target.loc, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, null, null)
path_target = reverselist(path_target)
proc/healthcheck()
return
//Zombies!
/datum/disease/z_virus
name = "T-Virus"
max_stages = 5
spread = "Contact"
cure = "???"
spread_type = SPECIAL
cure_id = "zed"
affected_species = list("Human", "Human/Zombie")
/datum/disease/z_virus/stage_act()
..()
if(istype(affected_mob, /mob/living/carbon/human/zombie) && !src.carrier)
src.carrier = 1
return
switch(stage)
if(1)
if (prob(8))
affected_mob << pick("\red Something about you doesnt feel right.","\red Your head starts to itch.")
if(2)
if (prob(8))
affected_mob << "\red Your limbs feel numb."
affected_mob.bruteloss += 1
affected_mob.updatehealth()
if (prob(9))
affected_mob << "\red You feel ill..."
if (prob(9))
affected_mob << "\red You feel a pain in your stomache..."
if(3)
if (prob(8))
affected_mob << text("\red []", pick("owww...","I want...","Please..."))
affected_mob.bruteloss += 1
affected_mob.updatehealth()
if (prob(10))
affected_mob << "\red You feel very ill."
affected_mob.bruteloss += 5
affected_mob.updatehealth()
if (prob(4))
affected_mob << "\red You feel a stabbing pain in your head."
affected_mob.paralysis += 2
if (prob(4))
affected_mob << "\red Whats going to happen to me?"
if(4)
if (prob(10))
affected_mob << pick("\red You feel violently sick.")
affected_mob.bruteloss += 8
affected_mob.updatehealth()
if (prob(20))
affected_mob.say(pick("Mmmmm.", "Hey... You look...", "Hsssshhhhh!"))
if (prob(8))
affected_mob << "\red You cant... feel..."
if(5)
affected_mob.toxloss += 10
affected_mob.updatehealth()
affected_mob << "You feel the life slowly slip away from you as you join the army of the undead.."
affected_mob:Zombify()
/mob/living/carbon/human/proc/Zombify()
if (src.monkeyizing)
return
update_icons() // update_clothing()
var/mob/living/carbon/human/zombie/O = new/mob/living/carbon/human/zombie( src.loc )
//Yay, Zombie!
O.name = name
O.r_hair = name
O.g_hair = g_hair
O.b_hair = b_hair
O.h_style = h_style
O.r_facial = r_facial
O.g_facial = g_facial
O.b_facial = b_facial
O.f_style = f_style
O.r_eyes = r_eyes
O.g_eyes = g_eyes
O.b_eyes = b_eyes
O.s_tone = s_tone
O.age = age
O.real_name = real_name
O.wear_mask = wear_mask
O.l_hand = l_hand
O.r_hand = r_hand
O.wear_suit = wear_suit
O.w_uniform = w_uniform
// O.w_radio = null
O.shoes = shoes
O.belt = belt
O.gloves = gloves
O.glasses = glasses
O.head = head
O.r_ear = r_ear
O.l_ear = l_ear
O.wear_id = wear_id
O.r_store = r_store
O.l_store = l_store
O.back = back
O.stand_icon = stand_icon
O.lying_icon = lying_icon
//O.last_b_state = last_b_state
//O.face_standing = face_standing
//O.face_lying = face_lying
//O.hair_icon_state = hair_icon_state
//O.face_icon_state = face_icon_state
//O.body_standing = body_standing
//O.body_lying = body_lying
for(var/obj/Q in src)
Q.loc = O
O.update_icons()//update_clothing()
src.ghostize()
O.loc = src.loc
del(src)
return
/obj/item/weapon/reagent_containers/glass/bottle/t_virus
name = "Z-Virus culture bottle"
desc = "A small bottle. Contains Z-Virus virion in synthblood medium."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle3"
amount_per_transfer_from_this = 5
New()
var/datum/reagents/R = new/datum/reagents(20)
reagents = R
R.my_atom = src
var/datum/disease/F = new /datum/disease/z_virus(0)
var/list/data = list("virus"= F)
R.add_reagent("blood", 20, data)
///////////////////////////CURE//////////////////////////////////////////
datum/reagent/zed
name = "Zombie Elixer"
id = "zed"
description = "For treating the Z-Virus."
//reagent_state = LIQUID
on_mob_life(var/mob/M)//no more mr. panacea
holder.remove_reagent(src.id, 0.2)
return
/obj/item/weapon/zedpen
desc = "Small non-refillable auto-injector for curing the Z-Virus in early stages."
name = "Z.E.D. Pen."
icon = 'icons/obj/items.dmi'
icon_state = "zed_1"
flags = FPRINT | TABLEPASS/* | ONBELT*/
throwforce = 0
w_class = 1.0
throw_speed = 7
throw_range = 15
m_amt = 60
/obj/item/weapon/zedpen/attack_paw(mob/user as mob)
return src.attack_hand(user)
return
/obj/item/weapon/zedpen/New()
var/datum/reagents/R = new/datum/reagents(10)
reagents = R
R.my_atom = src
R.add_reagent("zed", 10)
..()
return
/obj/item/weapon/zedpen/attack(mob/M as mob, mob/user as mob)
if (!( istype(M, /mob) ))
return
if (reagents.total_volume)
for(var/mob/O in viewers(M, null))
O.show_message(text("\blue [] has been stabbed with [] by [].", M, src, user), 1)
// user << "\red You stab [M] with the pen."
// M << "\red You feel a tiny prick!"
if(M.reagents) reagents.trans_to(M, 10)
icon_state = "zed_0"
return
/obj/item/weapon/storage/firstaid/zed
name = "Zed-Kit"
icon_state = "zedkit"
item_state = "firstaid-zed"
/obj/item/weapon/storage/firstaid/zed/New()
..()
new /obj/item/weapon/zedpen( src )
new /obj/item/weapon/zedpen( src )
new /obj/item/weapon/zedpen( src )
new /obj/item/weapon/zedpen( src )
new /obj/item/weapon/zedpen( src )
new /obj/item/weapon/zedpen( src )
new /obj/item/device/healthanalyzer( src )
return
////////////////////////////////////////////event code/////////////////////////////////////////
/obj/landmark/zspawn
name = "zombie spawn"
/*
/client/update_admins(var/rank)
..()
if(rank == "Game Master"/* || rank == "Coder" || rank == "Primary Administrator" || rank == "Administrator"*/)
src.verbs += /client/proc/zombie_event
*/
/client/proc/zombie_event()
set category = "Special Verbs"
set name = "Spawn Zombies"
// if(!istype(ticker.mode, /datum/game_mode/biohazard))
// if(src)
// src << "\red Wrong game mode!"
// return
if(usr) message_admins("[key_name_admin(usr)] has spawned a zombie", 1)
// command_alert("Confirmed outbreak of level 13 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
var/list/t = list()
for(var/obj/landmark/zspawn/O in world)
t += O
if(!t.len)
usr<<"No spawn points exist."
return
var/obj/landmark/s = pick(t)
var/mob/living/carbon/human/zombie/Z = new/mob/living/carbon/human/zombie(s.loc)
Z.gender = pick(MALE, FEMALE)
var/flooks = new/list()
var/mlooks = new/list()
flooks += "0990CC0FF000000000DC0000033000902136F93"
flooks += "0CC000033000000000DC0000033000C4308DEB4"
flooks += "066000033000000000B90000033000E1E03FD3F"
flooks += "066000033000000000690000033000A0F06C6D5"
flooks += "0CC000000000000000EB0000000066D1F11EDA3"
//flooks += "0FF0000FF000000000F50000000066B360B819"
mlooks += "066000033000000000CD000000000071E0F7382"
mlooks += "066000033000000000B9006603300037909B45A"
mlooks += "000000000000000000690000000066487060580"
mlooks += "000000000000000000CD0000000000638074390"
mlooks += "066000033066000033CD00000000000D8D20B9B"
if(Z.gender == MALE)
Z.dna.unique_enzymes = pick(mlooks)
else
Z.dna.unique_enzymes = pick(flooks)
updateappearance(Z, Z.dna.unique_enzymes)
if(Z.gender == MALE)
Z.real_name = text("[] []", pick(first_names_male), pick(last_names))
else
Z.real_name = text("[] []", pick(first_names_female), pick(last_names))
//var/a = pick("Janitor", "Medical Doctor", "Assistant", "Atmospheric Technician", "Security Officer", "Botanist", "Cargo Technician")
//Z.Equip_Rank(a, 0)
//Commented out by pygmy. Reason: Triggers my anti-spawn-at-menu code. Compromising this risks server.
Z.loc = s.loc
-45
View File
@@ -380,48 +380,3 @@
return 1 // ZOMG PONIES WHEEE
//Not in here? Must be untested!
return 0
/*
//////////////////////Grutor:
/////////////////////Zombie tranformation into NPC type zombie//////////////
////////////////////I'm very certain we can just remove player key//////////
////////////////move it to AI control instead and change body icon//////////
////////////////////////to zombie. But o'well lol//////////////////////////
/mob/living/carbon/human/proc/Turnundead()
if (monkeyizing)
return
for(var/obj/item/W in src)
drop_from_inventory(W) //should be replace with look for something that can transfer items
regenerate_icons()
monkeyizing = 1
canmove = 0
icon = null
invisibility = 101
for(var/t in organs) //this really should not be necessary
del(t)
var/mob/living/simple_animal/hostile/new_zombie = new /mob/living/simple_animal/hostile/zombie (src.loc)
new_zombie.name = "Zombie \red[name]"
new_zombie.desc = "A person that has fallen victim to cannibles."
new_zombie.loc = loc
//If you wish everything from here to there can be edited out...
new_zombie.dna = dna //Don't know why I did this, you can't prick em with a needle
if(src.viruses) //Checks and see if the source has any viruses
for(var/datum/disease/tempvirus in new_zombie.viruses) //retrieves anything of disease type
tempvirus.cure(0) //For each virus found cure it
//One day we will need this...
for(var/datum/disease/cv in src.viruses)
new_zombie.viruses += cv //Add/assign the list to the zombie
cv.affected_mob = new_zombie //Change the copy's var to zombie
cv.strain_data = cv.strain_data.Copy() //what? line 520 does this already....
cv.holder = new_zombie //new_zombie is holder of the virus
cv.carrier = 1
//Edit from there to hear if you wish.
spawn(0)//To prevent the proc from returning null.
del(src)
return
*/
@@ -43,6 +43,10 @@
caliber = ".45"
projectile_type = "/obj/item/projectile/bullet/midbullet"
/obj/item/ammo_casing/c10mm
desc = "A 10mm bullet casing."
caliber = "10mm"
projectile_type = "obj/item/projectile/bullet/midbullet2"
/obj/item/ammo_casing/a12mm
desc = "A 12mm bullet casing."
@@ -11,14 +11,14 @@
if(istype(A, /obj/item/ammo_box))
var/obj/item/ammo_box/AM = A
for(var/obj/item/ammo_casing/AC in AM.stored_ammo)
if(magazine.give_round(AC))
if(magazine && magazine.give_round(AC))
AM.stored_ammo -= AC
num_loaded++
else
break
if(istype(A, /obj/item/ammo_casing))
var/obj/item/ammo_casing/AC = A
if(magazine.give_round(AC))
if(magazine && magazine.give_round(AC))
user.drop_item()
AC.loc = src
num_loaded++
@@ -3619,64 +3619,3 @@ datum
return
*/
/*
//Grutor
/////////////////Zombie Stuff//////////////////
//This isn't implemented yet, future updates might change this
necroblood
name = "Zombie blood"
id = "necroblood"
description = "It's blood, but it looks like jello."
reagent_state = LIQUID
//So you don't need to be a virologist
necrocure
name = "Zombie Cure"
id = "necrocure"
description = "The thing only stopping you from turning."
reagent_state = LIQUID
nutriment_factor = 0
color = "#54C754" // rgb: 84, 199, 84
z_meat
name = "Zombie Juice"
id = "zmeat"
description = "Definitely smells funny."
reagent_state = LIQUID
color = "#E23351"
var/said_it_before = 0
var/fate_is_sealed = 0
on_mob_life(var/mob/living/M as mob)
..()
if(said_it_before == 0)
M << "You are starting to have regrets..."
said_it_before = 1
if(prob(8) && istype(M, /mob/living/carbon) && fate_is_sealed == 0) //Per reagent tick there is a chance this person will explode
fate_is_sealed = 1
sleep(rand(80, 250))
for(var/obj/item/W in M) //Some items will not be recovered..
if(prob(70))
M.drop_from_inventory(W)
M.gib()
return
necrovirus
name = "Zombie Virus"
id = "necrodisease"
description = "It's said it can bring the dead back to life."
reagent_state = SOLID
on_mob_life(var/mob/living/carbon/M as mob)
if(!M) M = holder.my_atom
var/datum/disease/D = new /datum/disease/zombie_transformation
D.holder = M
D.affected_mob = M
M.viruses += D
..()
return
*/
@@ -1976,24 +1976,3 @@ datum
*/
//Grutor
///////////////////////Zombie recipes////////////////////////////
/* necrocure
name = "Zombie Cure"
id = "necrocure"
result = "necrocure"
required_reagents = list("sterilizine" = 2, "zmeat" = 2)
result_amount = 5
necrodisease
name = "Zombie Virus"
id = "necrodisease"
result = "necrodisease"
required_reagents = list("zombiepowder" = 2, "cryptobiolin" = 2, "mutagen" = 2)
result_amount = 5
*/
@@ -25,20 +25,3 @@
/obj/item/weapon/reagent_containers/food/snacks/meat/corgi
name = "Corgi meat"
desc = "Tastes like... well you know..."
//Grutor
//zombies yum...
/obj/item/weapon/reagent_containers/food/snacks/meat/undead
name = "Rotten flesh"
desc = "You really shouldn't..."
icon = 'icons/obj/food.dmi'
icon_state = "rottenmeat"
attack(mob/M as mob, mob/user as mob, def_zone)
if(..())
M << "You are starting to have regrets..." //If you seeing this message twice, remove this one.
New()
..()
reagents.add_reagent("carpotoxin", 6)
reagents.add_reagent("zmeat", 20)