Easier gib spawning.

Monkey cubes.
WIP bears.
Cleaned up some sprites.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1740 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
uporotiy
2011-06-29 16:33:21 +00:00
parent 84e1cb497f
commit 0685e1e564
16 changed files with 217 additions and 164 deletions

View File

@@ -202,6 +202,10 @@ datum
lowertemp.react()
T.assume_air(lowertemp)
del(hotspot)
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube))
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O
if(!cube.wrapped)
cube.Expand()
return
lube

View File

@@ -73,6 +73,12 @@
icon_state = "gibbl5"
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
/obj/decal/cleanable/blood/gibs/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
/obj/decal/cleanable/blood/gibs/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
/obj/decal/cleanable/blood/gibs/body
random_icon_states = list("gibhead", "gibtorso")
@@ -110,6 +116,12 @@
icon_state = "xgib1"
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
/obj/decal/cleanable/xenoblood/xgibs/up
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1")
/obj/decal/cleanable/xenoblood/xgibs/down
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1")
/obj/decal/cleanable/xenoblood/xgibs/body
random_icon_states = list("xgibhead", "xgibtorso")
@@ -138,6 +150,12 @@
/obj/decal/cleanable/robot_debris/limb
random_icon_states = list("gibarm", "gibleg")
/obj/decal/cleanable/robot_debris/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibup1","gibup1") //2:7 is close enough to 1:4
/obj/decal/cleanable/robot_debris/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibdown1","gibdown1") //2:7 is close enough to 1:4
/obj/decal/cleanable/oil
name = "motor oil"
desc = "It's black."

View File

@@ -62,8 +62,8 @@
name = "Getmore Chocolate Corp"
desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars"
icon_state = "snack"
product_paths = "/obj/item/weapon/reagent_containers/food/snacks/candy;/obj/item/weapon/reagent_containers/food/drinks/dry_ramen;/obj/item/weapon/reagent_containers/food/snacks/chips;/obj/item/weapon/reagent_containers/food/snacks/sosjerky;/obj/item/weapon/reagent_containers/food/snacks/no_raisin;/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie;/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers"
product_amounts = "10;10;10;10;10;10;10"
product_paths = "/obj/item/weapon/reagent_containers/food/snacks/candy;/obj/item/weapon/reagent_containers/food/drinks/dry_ramen;/obj/item/weapon/reagent_containers/food/snacks/chips;/obj/item/weapon/reagent_containers/food/snacks/sosjerky;/obj/item/weapon/reagent_containers/food/snacks/no_raisin;/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie;/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers;/obj/item/weapon/monkeycube_box"
product_amounts = "10;10;10;10;10;10;10;10"
product_slogans = "Try our new nougat bar!;Twice the calories for half the price!"
product_hidden = "/obj/item/weapon/reagent_containers/food/snacks/syndicake"
product_hideamt = "10"

View File

@@ -1,174 +1,81 @@
//HUMANS
/proc/gibs(atom/location, var/datum/disease/virus)
var/obj/decal/cleanable/blood/gibs/gib = null
if(virus && virus.spread_type == SPECIAL)
virus = null
// NORTH
gib = new /obj/decal/cleanable/blood/gibs(location)
if (prob(30))
gib.icon_state = "gibup1"
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/blood/gibs(location)
if (prob(30))
gib.icon_state = "gibdown1"
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/blood/gibs(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/blood/gibs(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/blood/gibs/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/blood/gibs/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/blood/gibs/core(location)
if(virus && prob(20))
gib.virus = new virus.type
gib.virus.holder = gib
gib.virus.spread_type = CONTACT_FEET
//ALIENS
//mostly carbon copy of the human code. N
new /obj/gibspawner/human(get_turf(location),virus)
/proc/xgibs(atom/location, var/datum/disease/virus)
var/obj/decal/cleanable/xenoblood/xgibs/gib = null
if(virus && virus.spread_type == SPECIAL)
virus = null
new /obj/gibspawner/xeno(get_turf(location),virus)
// 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)
virus = null
new /obj/gibspawner/robot(get_turf(location),virus)
// RUH ROH
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
s.set_up(2, 1, location)
s.start()
/obj/gibspawner
var/sparks = 0 //whether sparks spread on Gib()
var/virusProb = 20 //the chance for viruses to spread on the gibs
var/list/gibtypes = list()
var/list/gibamounts = list()
var/list/gibdirections = list() //of lists
// NORTH
gib = new /obj/decal/cleanable/robot_debris(location)
if (prob(25))
gib.icon_state = "gibup1"
gib.streak(list(NORTH, NORTHEAST, NORTHWEST))
New(location, var/datum/disease/virus = null)
..()
// SOUTH
gib = new /obj/decal/cleanable/robot_debris(location)
if (prob(25))
gib.icon_state = "gibdown1"
gib.streak(list(SOUTH, SOUTHEAST, SOUTHWEST))
if(istype(loc,/turf)) //basically if a badmin spawns it
Gib(loc,virus)
// WEST
gib = new /obj/decal/cleanable/robot_debris(location)
gib.streak(list(WEST, NORTHWEST, SOUTHWEST))
proc/Gib(atom/location, var/datum/disease/virus = null)
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
world << "\red Gib list length mismatch!"
return
// EAST
gib = new /obj/decal/cleanable/robot_debris(location)
gib.streak(list(EAST, NORTHEAST, SOUTHEAST))
var/obj/decal/cleanable/blood/gibs/gib = null
if(virus && virus.spread_type == SPECIAL)
virus = null
// RANDOM
gib = new /obj/decal/cleanable/robot_debris(location)
gib.streak(alldirs)
if(sparks)
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
s.set_up(2, 1, location)
s.start()
// RANDOM LIMBS
for (var/i = 0, i < pick(0, 1, 2), i++)
gib = new /obj/decal/cleanable/robot_debris/limb(location)
gib.streak(alldirs)
for(var/i = 1, i<= gibtypes.len, i++)
if(gibamounts[i])
for(var/j = 1, j<= gibamounts[i], j++)
var/gibType = gibtypes[i]
gib = new gibType(location)
if(virus && prob(virusProb))
gib.virus = new virus.type
gib.virus.holder = gib
gib.virus.spread_type = CONTACT_FEET
var/list/directions = gibdirections[i]
if(directions.len)
gib.streak(directions)
del(src)
/obj/gibspawner
human
gibtypes = list(/obj/decal/cleanable/blood/gibs/up,/obj/decal/cleanable/blood/gibs/down,/obj/decal/cleanable/blood/gibs,/obj/decal/cleanable/blood/gibs,/obj/decal/cleanable/blood/gibs/body,/obj/decal/cleanable/blood/gibs/limb,/obj/decal/cleanable/blood/gibs/core)
gibamounts = list(1,1,1,1,1,1,1)
New()
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs, list())
gibamounts[6] = pick(0,1,2)
..()
xeno
gibtypes = list(/obj/decal/cleanable/xenoblood/xgibs/up,/obj/decal/cleanable/xenoblood/xgibs/down,/obj/decal/cleanable/xenoblood/xgibs,/obj/decal/cleanable/xenoblood/xgibs,/obj/decal/cleanable/xenoblood/xgibs/body,/obj/decal/cleanable/xenoblood/xgibs/limb,/obj/decal/cleanable/xenoblood/xgibs/core)
gibamounts = list(1,1,1,1,1,1,1)
New()
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs, list())
gibamounts[6] = pick(0,1,2)
..()
robot
sparks = 1
gibtypes = list(/obj/decal/cleanable/robot_debris/up,/obj/decal/cleanable/robot_debris/down,/obj/decal/cleanable/robot_debris,/obj/decal/cleanable/robot_debris,/obj/decal/cleanable/robot_debris,/obj/decal/cleanable/robot_debris/limb)
gibamounts = list(1,1,1,1,1,1)
New()
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs)
gibamounts[6] = pick(0,1,2)
..()

View File

@@ -165,4 +165,34 @@ YOUR MUMS BOX
usr << text("There are [] eggs in the box.", n)
return
/obj/item/weapon/monkeycube_box
name = "monkey cube box"
desc = "Drymate brand monkey cubes. Just add water!"
icon = 'food.dmi'
icon_state = "monkeycubebox"
var/amount = 5
attack_hand(mob/user as mob, unused, flag)
add_fingerprint(user)
if(user.r_hand == src || user.l_hand == src)
if(amount)
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src)
if (user.hand)
user.l_hand = M
else
user.r_hand = M
M.loc = user
M.layer = 20
user.update_clothing()
user << "You take a monkey cube out of the box."
amount--
else
user << "There are no monkey cubes left in the box."
else
..()
return
attack_paw(mob/user as mob)
return attack_hand(user)

View File

@@ -34,6 +34,8 @@
var/obj/item/weapon/card/id/anicard //By default, animals can open doors but not any with access restrictions.
var/intelligence = null // the intelligence var allows for additional access (by job).
var/species = "animal" //affects icon_state
New() //Initializes the livestock's AI and access
..()
anicard = new(src)
@@ -307,6 +309,7 @@
if (get_dist(src, src.target) >= distance) src.frustration++ //If it hasn't reached the target yet, get a little angry.
else src.frustration-- //It reached the target! Get less angry.
if(frustration >= patience) set_null() //If too angry? Fuck this shit.
special_extra()
if(target || flee_from.len)
spawn(cycle_pause / 3)
src.process()
@@ -364,7 +367,7 @@
if(!alive) return
alive = 0
density = 0
icon_state = "[initial(icon_state)]_d"
icon_state = "[species]_d"
set_null()
if(!messy)
for(var/mob/O in hearers(src, null))
@@ -410,6 +413,7 @@
name = "Spess Carp"
desc = "Oh shit, you're really fucked now."
icon_state = "spesscarp"
species = "spesscarp"
aggressive = 1
health = 25
maxhealth = 25
@@ -439,6 +443,7 @@
name = "Lizard"
desc = "A cute tiny lizard."
icon_state = "lizard"
species = "lizard"
cowardly = 1
health = 10
maxhealth = 10
@@ -447,6 +452,47 @@
patience = 50
view_range = 7
/obj/livestock/bear
name = "ninja space bear"
desc = "Its sight is unbearable to your eye."
icon_state = "bear"
species = "bear"
aggressive = 1
health = 100
maxhealth = 100
cycle_pause = 15
patience = 75
strength = 30
intelligence = "Captain"
var/adaptationChance = 10 //the chance per tick the bear will change its camouflage
var/camouflage = "space" //"", "space" or "floor"
New()
..()
//new /obj/item/clothing/suit/bearpelt(src)
new /obj/item/weapon/reagent_containers/food/snacks/bearmeat(src)
new /obj/item/weapon/reagent_containers/food/snacks/bearmeat(src)
new /obj/item/weapon/reagent_containers/food/snacks/bearmeat(src)
new /obj/item/weapon/reagent_containers/food/snacks/bearmeat(src)
new /obj/item/weapon/reagent_containers/food/snacks/bearmeat(src)
//new /obj/item/weapon/reagent_containers/food/snacks/bearinnards(src)
special_extra() //camouflage check
if(prob(adaptationChance))
if(istype(loc,/turf/simulated/floor))
if(camouflage != "floor")
camouflage = "floor"
else if(istype(loc,/turf/space))
if(camouflage != "space")
camouflage = "space"
else if(camouflage != "")
camouflage = ""
update_icon()
update_icon()
icon_state = "[species][camouflage][alive?"":"_d"]"
/* Commented out because of Filthy Xeno-lovers.
/obj/livestock/cow
name = "Pigmy Cow"

View File

@@ -117,6 +117,15 @@
reagents.add_reagent("nutriment", 3)
reagents.add_reagent("carpotoxin", 3)
/obj/item/weapon/reagent_containers/food/snacks/bearmeat
name = "bear meat"
desc = "A very manly slab of meat."
icon_state = "bearmeat"
New()
..()
reagents.add_reagent("nutriment", 12)
reagents.add_reagent("hyperzine", 5)
/obj/item/weapon/reagent_containers/food/snacks/xenomeat
name = "meat"
desc = "A slab of meat"
@@ -760,6 +769,45 @@
if(bananaphone)
bananaphone.hear_talk(M, msg)
/obj/item/weapon/reagent_containers/food/snacks/monkeycube
name = "monkey cube"
desc = "Just add water!"
icon_state = "monkeycube"
bitesize = 12
var/wrapped = 0
New()
..()
reagents.add_reagent("nutriment",12)
afterattack(obj/O as obj, mob/user as mob)
if(istype(O,/obj/machinery/sink) && !wrapped)
user << "You place [name] under a stream of water..."
loc = get_turf(O)
return Expand()
..()
attack_self(mob/user as mob)
if(wrapped)
Unwrap(user)
proc/Expand()
for(var/mob/M in viewers(src,7))
M << "\red The monkey cube expands!"
new /mob/living/carbon/monkey(get_turf(src))
del(src)
proc/Unwrap(mob/user as mob)
icon_state = "monkeycube"
desc = "Just add water!"
user << "You unwrap the cube."
wrapped = 0
return
wrapped
desc = "Still wrapped in some paper."
icon_state = "monkeycubewrap"
wrapped = 1
/////////////////////////////////////////////////Sliceable////////////////////////////////////////
// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels
@@ -988,7 +1036,7 @@
reagents.add_reagent("nutriment", 5)
reagents.add_reagent("psilocybin", 5)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/plump_pie
name = "plump pie"
desc = "I bet you love stuff made out of plump helmets!"