Shocking Grasp renamed Disintegrate. Effects are slightly changed and the target is turned into a pile of dust instead of gibbed.
Moved contents of oil.dmi into robots.dmi for consistency. Deleted oil.dmi. New alien gibs as well as gibing animations for monkeys, aliens, and robots. Disintegrate animations for monkeys, aliens, robots, and humans. Updated clean bot to remove robot and alien gibs/blood/oil. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@588 316c924e-a436-60f5-8080-3fe189b3f50e
@@ -15,6 +15,8 @@
|
||||
/obj/decal/cleanable
|
||||
var/list/random_icon_states = list()
|
||||
|
||||
//HUMANS
|
||||
|
||||
/obj/decal/cleanable/blood
|
||||
name = "Blood"
|
||||
desc = "It's red."
|
||||
@@ -33,22 +35,6 @@
|
||||
virus.cure(0)
|
||||
..()
|
||||
|
||||
/obj/decal/cleanable/xenoblood
|
||||
name = "Xeno blood"
|
||||
desc = "It's green."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'blood.dmi'
|
||||
icon_state = "xfloor1"
|
||||
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
|
||||
var/datum/disease/virus = null
|
||||
|
||||
Del()
|
||||
if(virus)
|
||||
virus.cure(0)
|
||||
..()
|
||||
|
||||
/obj/decal/cleanable/blood/splatter
|
||||
random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
|
||||
|
||||
@@ -75,6 +61,49 @@
|
||||
/obj/decal/cleanable/blood/gibs/core
|
||||
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
|
||||
|
||||
//ALIENS
|
||||
|
||||
/obj/decal/cleanable/xenoblood
|
||||
name = "xeno blood"
|
||||
desc = "It's green."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'blood.dmi'
|
||||
icon_state = "xfloor1"
|
||||
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
|
||||
var/datum/disease/virus = null
|
||||
|
||||
Del()
|
||||
if(virus)
|
||||
virus.cure(0)
|
||||
..()
|
||||
|
||||
/obj/decal/cleanable/xenoblood/xsplatter
|
||||
random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5")
|
||||
|
||||
/obj/decal/cleanable/xenoblood/xgibs
|
||||
name = "xeno gibs"
|
||||
desc = "Gnarly..."
|
||||
icon = 'blood.dmi'
|
||||
icon_state = "xgib1"
|
||||
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
|
||||
|
||||
/obj/decal/cleanable/xenoblood/xgibs/body
|
||||
random_icon_states = list("xgibhead", "xgibtorso")
|
||||
|
||||
/obj/decal/cleanable/xenoblood/xgibs/limb
|
||||
random_icon_states = list("xgibleg", "xgibarm")
|
||||
|
||||
/obj/decal/cleanable/xenoblood/xgibs/core
|
||||
random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3")
|
||||
|
||||
/obj/decal/cleanable/blood/xtracks
|
||||
icon_state = "xtracks"
|
||||
random_icon_states = null
|
||||
|
||||
//ROBOTS
|
||||
|
||||
/obj/decal/cleanable/robot_debris
|
||||
name = "robot debris"
|
||||
desc = "Useless heap of junk."
|
||||
@@ -94,7 +123,7 @@
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'oil.dmi'
|
||||
icon = 'robots.dmi'
|
||||
icon_state = "floor1"
|
||||
var/datum/disease/virus = null
|
||||
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
|
||||
@@ -107,6 +136,8 @@
|
||||
/obj/decal/cleanable/oil/streak
|
||||
random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5")
|
||||
|
||||
//OTHER
|
||||
|
||||
/obj/decal/cleanable/generic
|
||||
name = "clutter"
|
||||
desc = "Someone should clean that up."
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/mob/proc/kill(mob/M as mob in oview(1))
|
||||
set category = "Spells"
|
||||
set name = "Shocking Grasp"
|
||||
set name = "Disintegrate"
|
||||
if(usr.stat)
|
||||
usr << "Not when you're incapicated."
|
||||
return
|
||||
@@ -26,4 +26,4 @@
|
||||
s.set_up(4, 1, M)
|
||||
s.start()
|
||||
|
||||
M.gib(1)
|
||||
M.dust()
|
||||
|
||||
@@ -343,7 +343,7 @@
|
||||
dat += "<I>Each item costs 1 telecrystal. The number afterwards is the cooldown time.</I><BR>"
|
||||
dat += "<A href='byond://?src=\ref[src];spell_magicmissile=1'>Magic Missile</A> (10)<BR>"
|
||||
dat += "<A href='byond://?src=\ref[src];spell_fireball=1'>Fireball</A> (10)<BR>"
|
||||
dat += "<A href='byond://?src=\ref[src];spell_shock=1'>Shocking Grasp</A> (60)<BR>"
|
||||
dat += "<A href='byond://?src=\ref[src];spell_disintegrate=1'>Disintegrate</A> (60)<BR>"
|
||||
dat += "<A href='byond://?src=\ref[src];spell_emp=1'>Disable Technology</A> (60)<BR>"
|
||||
dat += "<A href='byond://?src=\ref[src];spell_smoke=1'>Smoke</A> (10)<BR>"
|
||||
dat += "<A href='byond://?src=\ref[src];spell_blind=1'>Blind</A> (30)<BR>"
|
||||
@@ -381,7 +381,7 @@
|
||||
src.uses -= 1
|
||||
usr.verbs += /client/proc/fireball
|
||||
src.temp = "This spell fires a fireball at a target. Be careful not to fire it at people that are standing next to you."
|
||||
else if (href_list["spell_shock"])
|
||||
else if (href_list["spell_disintegrate"])
|
||||
if (src.uses >= 1)
|
||||
src.uses -= 1
|
||||
usr.verbs += /mob/proc/kill
|
||||
@@ -490,7 +490,7 @@
|
||||
src.menu_message += "<I>Each item costs 1 telecrystal. The number afterwards is the cooldown time.</I><BR>"
|
||||
src.menu_message += "<A href='byond://?src=\ref[src];buy_spell=magicmissile'>Magic Missile</A> (10)<BR>"
|
||||
src.menu_message += "<A href='byond://?src=\ref[src];buy_spell=fireball'>Fireball</A> (10)<BR>"
|
||||
src.menu_message += "<A href='byond://?src=\ref[src];buy_spell=shock'>Shocking Grasp</A> (60)<BR>"
|
||||
src.menu_message += "<A href='byond://?src=\ref[src];buy_spell=disintegrate'>Disintegrate</A> (60)<BR>"
|
||||
src.menu_message += "<A href='byond://?src=\ref[src];buy_spell=emp'>Disable Technology</A> (60)<BR>"
|
||||
src.menu_message += "<A href='byond://?src=\ref[src];buy_spell=smoke'>Smoke</A> (10)<BR>"
|
||||
src.menu_message += "<A href='byond://?src=\ref[src];buy_spell=blind'>Blind</A> (30)<BR>"
|
||||
@@ -522,11 +522,11 @@
|
||||
src.uses -= 1
|
||||
usr.verbs += /client/proc/fireball
|
||||
src.temp = "This spell fires a fireball at a target. Be careful not to fire it at people that are standing next to you."
|
||||
if("shock")
|
||||
if("disintegrate")
|
||||
if (src.uses >= 1)
|
||||
src.uses -= 1
|
||||
usr.verbs += /mob/proc/kill
|
||||
src.temp = "This spell instantly kills somebody standing next to you. It has a long cooldown."
|
||||
src.temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown."
|
||||
if("emp")
|
||||
if (src.uses >= 1)
|
||||
src.uses -= 1
|
||||
|
||||
@@ -189,9 +189,13 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
|
||||
/obj/machinery/bot/cleanbot/proc/get_targets()
|
||||
src.target_types = new/list()
|
||||
if(src.blood)
|
||||
|
||||
target_types += /obj/decal/cleanable/xenoblood/
|
||||
target_types += /obj/decal/cleanable/xenoblood/xgibs
|
||||
target_types += /obj/decal/cleanable/blood/
|
||||
target_types += /obj/decal/cleanable/blood/gibs/
|
||||
target_types += /obj/decal/cleanable/oil
|
||||
target_types += /obj/decal/cleanable/robot_debris
|
||||
|
||||
/obj/machinery/bot/cleanbot/proc/clean(var/obj/decal/cleanable/target)
|
||||
src.anchored = 1
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
return
|
||||
*/
|
||||
|
||||
//Gibs.spread proc in gibs.dm
|
||||
|
||||
/obj/decal/cleanable/blood/gibs/proc/streak(var/list/directions)
|
||||
spawn (0)
|
||||
var/direction = pick(directions)
|
||||
@@ -23,6 +25,18 @@
|
||||
if (step_to(src, get_step(src, direction), 0))
|
||||
break
|
||||
|
||||
/obj/decal/cleanable/xenoblood/xgibs/proc/streak(var/list/directions)
|
||||
spawn (0)
|
||||
var/direction = pick(directions)
|
||||
for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
|
||||
sleep(3)
|
||||
if (i > 0)
|
||||
var/obj/decal/cleanable/xenoblood/b = new /obj/decal/cleanable/xenoblood/xsplatter(src.loc)
|
||||
if (src.virus)
|
||||
b.virus = src.virus
|
||||
if (step_to(src, get_step(src, direction), 0))
|
||||
break
|
||||
|
||||
/obj/decal/cleanable/robot_debris/proc/streak(var/list/directions)
|
||||
spawn (0)
|
||||
var/direction = pick(directions)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//HUMANS
|
||||
|
||||
/proc/gibs(atom/location, var/datum/disease/virus)
|
||||
var/obj/decal/cleanable/blood/gibs/gib = null
|
||||
if(virus && virus.spread_type == SPECIAL)
|
||||
@@ -63,6 +65,75 @@
|
||||
gib.virus.holder = gib
|
||||
gib.virus.spread_type = CONTACT_FEET
|
||||
|
||||
//ALIENS
|
||||
//mostly carbon copy of the human code. N
|
||||
|
||||
/proc/xgibs(atom/location, var/datum/disease/virus)
|
||||
var/obj/decal/cleanable/xenoblood/xgibs/gib = null
|
||||
if(virus && virus.spread_type == SPECIAL)
|
||||
virus = null
|
||||
|
||||
// NORTH
|
||||
gib = new /obj/decal/cleanable/xenoblood/xgibs(location)
|
||||
if (prob(30))
|
||||
gib.icon_state = "xgibup1"
|
||||
if(virus && prob(20))
|
||||
gib.virus = new virus.type
|
||||
gib.virus.holder = gib
|
||||
gib.virus.spread_type = CONTACT_FEET
|
||||
gib.streak(list(NORTH, NORTHEAST, NORTHWEST))
|
||||
|
||||
// SOUTH
|
||||
gib = new /obj/decal/cleanable/xenoblood/xgibs(location)
|
||||
if (prob(30))
|
||||
gib.icon_state = "xgibdown1"
|
||||
if(virus && prob(20))
|
||||
gib.virus = new virus.type
|
||||
gib.virus.holder = gib
|
||||
gib.virus.spread_type = CONTACT_FEET
|
||||
gib.streak(list(SOUTH, SOUTHEAST, SOUTHWEST))
|
||||
|
||||
// WEST
|
||||
gib = new /obj/decal/cleanable/xenoblood/xgibs(location)
|
||||
if(virus && prob(20))
|
||||
gib.virus = new virus.type
|
||||
gib.virus.holder = gib
|
||||
gib.virus.spread_type = CONTACT_FEET
|
||||
gib.streak(list(WEST, NORTHWEST, SOUTHWEST))
|
||||
|
||||
// EAST
|
||||
gib = new /obj/decal/cleanable/xenoblood/xgibs(location)
|
||||
if(virus)
|
||||
gib.virus = new virus.type
|
||||
gib.virus.holder = gib
|
||||
gib.virus.spread_type = CONTACT_FEET
|
||||
gib.streak(list(EAST, NORTHEAST, SOUTHEAST))
|
||||
|
||||
// RANDOM BODY
|
||||
gib = new /obj/decal/cleanable/xenoblood/xgibs/body(location)
|
||||
if(virus && prob(20))
|
||||
gib.virus = new virus.type
|
||||
gib.virus.holder = gib
|
||||
gib.virus.spread_type = CONTACT_FEET
|
||||
gib.streak(alldirs)
|
||||
|
||||
// RANDOM LIMBS
|
||||
for (var/i = 0, i < pick(0, 1, 2), i++)
|
||||
gib = new /obj/decal/cleanable/xenoblood/xgibs/limb(location)
|
||||
if(virus && prob(20))
|
||||
gib.virus = new virus.type
|
||||
gib.virus.holder = gib
|
||||
gib.virus.spread_type = CONTACT_FEET
|
||||
gib.streak(alldirs)
|
||||
|
||||
// CORE
|
||||
gib = new /obj/decal/cleanable/xenoblood/xgibs/core(location)
|
||||
if(virus && prob(20))
|
||||
gib.virus = new virus.type
|
||||
gib.virus.holder = gib
|
||||
gib.virus.spread_type = CONTACT_FEET
|
||||
|
||||
//ROBOTS
|
||||
/proc/robogibs(atom/location, var/datum/disease/virus)
|
||||
var/obj/decal/cleanable/robot_debris/gib = null
|
||||
if(virus && virus.spread_type == SPECIAL)
|
||||
|
||||
@@ -1872,7 +1872,9 @@
|
||||
// world << "[src] ~ [src.bodytemperature] ~ [temperature]"
|
||||
return temperature
|
||||
|
||||
/mob/proc/gib(give_medal)
|
||||
//This is the proc for gibbing a mob. Cannot gib ghosts. Removed the medal reference,
|
||||
//added different sort of gibs and animations. N
|
||||
/mob/proc/gib()
|
||||
|
||||
if (istype(src, /mob/dead/observer))
|
||||
var/virus = src.virus
|
||||
@@ -1884,12 +1886,19 @@
|
||||
src.canmove = 0
|
||||
src.icon = null
|
||||
src.invisibility = 101
|
||||
if(ishuman(src))
|
||||
|
||||
animation = new(src.loc)
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'mob.dmi'
|
||||
animation.master = src
|
||||
flick("gibbed", animation)
|
||||
if(ishuman(src))
|
||||
flick("gibbed-h", animation)
|
||||
else if(ismonkey(src))
|
||||
flick("gibbed-m", animation)
|
||||
else if(isalien(src))
|
||||
flick("gibbed-a", animation)
|
||||
else
|
||||
flick("gibbed-r", animation)
|
||||
|
||||
if (src.client)
|
||||
var/mob/dead/observer/newmob
|
||||
@@ -1902,6 +1911,8 @@
|
||||
var/virus = src.virus
|
||||
if (istype(src, /mob/living/silicon))
|
||||
robogibs(src.loc, virus)
|
||||
else if (istype(src, /mob/living/carbon/alien))
|
||||
xgibs(src.loc, virus)
|
||||
else
|
||||
gibs(src.loc, virus)
|
||||
|
||||
@@ -1909,12 +1920,53 @@
|
||||
var/virus = src.virus
|
||||
if (istype(src, /mob/living/silicon))
|
||||
robogibs(src.loc, virus)
|
||||
else if (istype(src, /mob/living/carbon/alien))
|
||||
xgibs(src.loc, virus)
|
||||
else
|
||||
gibs(src.loc, virus)
|
||||
//CRASH("Generating error messages to attempt to fix random gibbins.") //no longer necessary
|
||||
sleep(15)
|
||||
del(src)
|
||||
|
||||
/*
|
||||
This is the proc for turning a mob into ash. Mostly a copy of gib code (above).
|
||||
Originally created for wizard disintegrate. I've removed the virus code since it's irrelevant here. N
|
||||
*/
|
||||
/mob/proc/dust()
|
||||
|
||||
if (istype(src, /mob/dead/observer))
|
||||
return
|
||||
src.death(1)
|
||||
var/atom/movable/overlay/animation = null
|
||||
src.monkeyizing = 1
|
||||
src.canmove = 0
|
||||
src.icon = null
|
||||
src.invisibility = 101
|
||||
|
||||
animation = new(src.loc)
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'mob.dmi'
|
||||
animation.master = src
|
||||
if(ishuman(src))
|
||||
flick("dust-h", animation)
|
||||
else if(ismonkey(src))
|
||||
flick("dust-m", animation)
|
||||
else if(isalien(src))
|
||||
flick("dust-a", animation)
|
||||
else
|
||||
flick("dust-r", animation)
|
||||
new /obj/decal/ash(src.loc)
|
||||
|
||||
if (src.client)
|
||||
var/mob/dead/observer/newmob
|
||||
|
||||
newmob = new/mob/dead/observer(src)
|
||||
src:client:mob = newmob
|
||||
if (src.mind)
|
||||
src.mind.transfer_to(newmob)
|
||||
|
||||
sleep(15)
|
||||
del(src)
|
||||
|
||||
/mob/proc/get_contents()
|
||||
var/list/L = list()
|
||||
@@ -1943,14 +1995,15 @@
|
||||
return 0
|
||||
|
||||
|
||||
// adds a dizziness amount to a mob
|
||||
// use this rather than directly changing var/dizziness
|
||||
// since this ensures that the dizzy_process proc is started
|
||||
// currently only humans get dizzy
|
||||
|
||||
// value of dizziness ranges from 0 to 1000
|
||||
// below 100 is not dizzy
|
||||
/*
|
||||
adds a dizziness amount to a mob
|
||||
use this rather than directly changing var/dizziness
|
||||
since this ensures that the dizzy_process proc is started
|
||||
currently only humans get dizzy
|
||||
|
||||
value of dizziness ranges from 0 to 1000
|
||||
below 100 is not dizzy
|
||||
*/
|
||||
/mob/proc/make_dizzy(var/amount)
|
||||
if(!istype(src, /mob/living/carbon/human)) // for the moment, only humans get dizzy
|
||||
return
|
||||
@@ -1962,9 +2015,11 @@
|
||||
dizzy_process()
|
||||
|
||||
|
||||
// dizzy process - wiggles the client's pixel offset over time
|
||||
// spawned from make_dizzy(), will terminate automatically when dizziness gets <100
|
||||
// note dizziness decrements automatically in the mob's Life() proc.
|
||||
/*
|
||||
dizzy process - wiggles the client's pixel offset over time
|
||||
spawned from make_dizzy(), will terminate automatically when dizziness gets <100
|
||||
note dizziness decrements automatically in the mob's Life() proc.
|
||||
*/
|
||||
/mob/proc/dizzy_process()
|
||||
is_dizzy = 1
|
||||
while(dizziness > 100)
|
||||
|
||||
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 31 KiB |