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
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."

View File

@@ -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()

View File

@@ -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

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()
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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

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