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
This commit is contained in:
noisomehollow@lycos.com
2010-12-11 01:23:42 +00:00
parent 3b19e416db
commit 0ee4ebf88c
11 changed files with 215 additions and 40 deletions

View File

@@ -15,6 +15,8 @@
/obj/decal/cleanable /obj/decal/cleanable
var/list/random_icon_states = list() var/list/random_icon_states = list()
//HUMANS
/obj/decal/cleanable/blood /obj/decal/cleanable/blood
name = "Blood" name = "Blood"
desc = "It's red." desc = "It's red."
@@ -33,22 +35,6 @@
virus.cure(0) 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 /obj/decal/cleanable/blood/splatter
random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
@@ -75,6 +61,49 @@
/obj/decal/cleanable/blood/gibs/core /obj/decal/cleanable/blood/gibs/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3") 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 /obj/decal/cleanable/robot_debris
name = "robot debris" name = "robot debris"
desc = "Useless heap of junk." desc = "Useless heap of junk."
@@ -94,7 +123,7 @@
density = 0 density = 0
anchored = 1 anchored = 1
layer = 2 layer = 2
icon = 'oil.dmi' icon = 'robots.dmi'
icon_state = "floor1" icon_state = "floor1"
var/datum/disease/virus = null var/datum/disease/virus = null
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
@@ -107,6 +136,8 @@
/obj/decal/cleanable/oil/streak /obj/decal/cleanable/oil/streak
random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5")
//OTHER
/obj/decal/cleanable/generic /obj/decal/cleanable/generic
name = "clutter" name = "clutter"
desc = "Someone should clean that up." desc = "Someone should clean that up."

View File

@@ -1,6 +1,6 @@
/mob/proc/kill(mob/M as mob in oview(1)) /mob/proc/kill(mob/M as mob in oview(1))
set category = "Spells" set category = "Spells"
set name = "Shocking Grasp" set name = "Disintegrate"
if(usr.stat) if(usr.stat)
usr << "Not when you're incapicated." usr << "Not when you're incapicated."
return return
@@ -26,4 +26,4 @@
s.set_up(4, 1, M) s.set_up(4, 1, M)
s.start() s.start()
M.gib(1) M.dust()

View File

@@ -343,7 +343,7 @@
dat += "<I>Each item costs 1 telecrystal. The number afterwards is the cooldown time.</I><BR>" 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_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_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_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_smoke=1'>Smoke</A> (10)<BR>"
dat += "<A href='byond://?src=\ref[src];spell_blind=1'>Blind</A> (30)<BR>" dat += "<A href='byond://?src=\ref[src];spell_blind=1'>Blind</A> (30)<BR>"
@@ -381,7 +381,7 @@
src.uses -= 1 src.uses -= 1
usr.verbs += /client/proc/fireball 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." 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) if (src.uses >= 1)
src.uses -= 1 src.uses -= 1
usr.verbs += /mob/proc/kill 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 += "<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=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=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=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=smoke'>Smoke</A> (10)<BR>"
src.menu_message += "<A href='byond://?src=\ref[src];buy_spell=blind'>Blind</A> (30)<BR>" src.menu_message += "<A href='byond://?src=\ref[src];buy_spell=blind'>Blind</A> (30)<BR>"
@@ -522,11 +522,11 @@
src.uses -= 1 src.uses -= 1
usr.verbs += /client/proc/fireball 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." 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) if (src.uses >= 1)
src.uses -= 1 src.uses -= 1
usr.verbs += /mob/proc/kill 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("emp")
if (src.uses >= 1) if (src.uses >= 1)
src.uses -= 1 src.uses -= 1

View File

@@ -189,9 +189,13 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
/obj/machinery/bot/cleanbot/proc/get_targets() /obj/machinery/bot/cleanbot/proc/get_targets()
src.target_types = new/list() src.target_types = new/list()
if(src.blood) if(src.blood)
target_types += /obj/decal/cleanable/xenoblood/ 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/
target_types += /obj/decal/cleanable/blood/gibs/ 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) /obj/machinery/bot/cleanbot/proc/clean(var/obj/decal/cleanable/target)
src.anchored = 1 src.anchored = 1

View File

@@ -11,6 +11,8 @@
return return
*/ */
//Gibs.spread proc in gibs.dm
/obj/decal/cleanable/blood/gibs/proc/streak(var/list/directions) /obj/decal/cleanable/blood/gibs/proc/streak(var/list/directions)
spawn (0) spawn (0)
var/direction = pick(directions) var/direction = pick(directions)
@@ -23,6 +25,18 @@
if (step_to(src, get_step(src, direction), 0)) if (step_to(src, get_step(src, direction), 0))
break 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) /obj/decal/cleanable/robot_debris/proc/streak(var/list/directions)
spawn (0) spawn (0)
var/direction = pick(directions) var/direction = pick(directions)

View File

@@ -1,3 +1,5 @@
//HUMANS
/proc/gibs(atom/location, var/datum/disease/virus) /proc/gibs(atom/location, var/datum/disease/virus)
var/obj/decal/cleanable/blood/gibs/gib = null var/obj/decal/cleanable/blood/gibs/gib = null
if(virus && virus.spread_type == SPECIAL) if(virus && virus.spread_type == SPECIAL)
@@ -63,6 +65,75 @@
gib.virus.holder = gib gib.virus.holder = gib
gib.virus.spread_type = CONTACT_FEET 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) /proc/robogibs(atom/location, var/datum/disease/virus)
var/obj/decal/cleanable/robot_debris/gib = null var/obj/decal/cleanable/robot_debris/gib = null
if(virus && virus.spread_type == SPECIAL) if(virus && virus.spread_type == SPECIAL)

View File

@@ -1872,7 +1872,9 @@
// world << "[src] ~ [src.bodytemperature] ~ [temperature]" // world << "[src] ~ [src.bodytemperature] ~ [temperature]"
return 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)) if (istype(src, /mob/dead/observer))
var/virus = src.virus var/virus = src.virus
@@ -1884,12 +1886,19 @@
src.canmove = 0 src.canmove = 0
src.icon = null src.icon = null
src.invisibility = 101 src.invisibility = 101
animation = new(src.loc)
animation.icon_state = "blank"
animation.icon = 'mob.dmi'
animation.master = src
if(ishuman(src)) if(ishuman(src))
animation = new(src.loc) flick("gibbed-h", animation)
animation.icon_state = "blank" else if(ismonkey(src))
animation.icon = 'mob.dmi' flick("gibbed-m", animation)
animation.master = src else if(isalien(src))
flick("gibbed", animation) flick("gibbed-a", animation)
else
flick("gibbed-r", animation)
if (src.client) if (src.client)
var/mob/dead/observer/newmob var/mob/dead/observer/newmob
@@ -1902,6 +1911,8 @@
var/virus = src.virus var/virus = src.virus
if (istype(src, /mob/living/silicon)) if (istype(src, /mob/living/silicon))
robogibs(src.loc, virus) robogibs(src.loc, virus)
else if (istype(src, /mob/living/carbon/alien))
xgibs(src.loc, virus)
else else
gibs(src.loc, virus) gibs(src.loc, virus)
@@ -1909,12 +1920,53 @@
var/virus = src.virus var/virus = src.virus
if (istype(src, /mob/living/silicon)) if (istype(src, /mob/living/silicon))
robogibs(src.loc, virus) robogibs(src.loc, virus)
else if (istype(src, /mob/living/carbon/alien))
xgibs(src.loc, virus)
else else
gibs(src.loc, virus) gibs(src.loc, virus)
//CRASH("Generating error messages to attempt to fix random gibbins.") //no longer necessary //CRASH("Generating error messages to attempt to fix random gibbins.") //no longer necessary
sleep(15) sleep(15)
del(src) 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() /mob/proc/get_contents()
var/list/L = list() var/list/L = list()
@@ -1943,14 +1995,15 @@
return 0 return 0
// adds a dizziness amount to a mob /*
// use this rather than directly changing var/dizziness adds a dizziness amount to a mob
// since this ensures that the dizzy_process proc is started use this rather than directly changing var/dizziness
// currently only humans get dizzy 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
value of dizziness ranges from 0 to 1000
below 100 is not dizzy
*/
/mob/proc/make_dizzy(var/amount) /mob/proc/make_dizzy(var/amount)
if(!istype(src, /mob/living/carbon/human)) // for the moment, only humans get dizzy if(!istype(src, /mob/living/carbon/human)) // for the moment, only humans get dizzy
return return
@@ -1962,9 +2015,11 @@
dizzy_process() dizzy_process()
// dizzy process - wiggles the client's pixel offset over time /*
// spawned from make_dizzy(), will terminate automatically when dizziness gets <100 dizzy process - wiggles the client's pixel offset over time
// note dizziness decrements automatically in the mob's Life() proc. 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() /mob/proc/dizzy_process()
is_dizzy = 1 is_dizzy = 1
while(dizziness > 100) while(dizziness > 100)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 31 KiB