Updated ismonkey(), refactored kitchen spike, refactored plastic flaps.

This commit is contained in:
Zuhayr
2015-03-26 12:45:12 +10:30
parent 8af1a818e9
commit ba648e3e8d
26 changed files with 111 additions and 107 deletions

View File

@@ -235,7 +235,7 @@ datum/hud/New(mob/owner)
if(ishuman(mymob)) if(ishuman(mymob))
human_hud(ui_style, ui_color, ui_alpha, mymob) // Pass the player the UI style chosen in preferences human_hud(ui_style, ui_color, ui_alpha, mymob) // Pass the player the UI style chosen in preferences
else if(ismonkey(mymob)) else if(issmall(mymob))
monkey_hud(ui_style) monkey_hud(ui_style)
else if(isbrain(mymob)) else if(isbrain(mymob))
brain_hud(ui_style) brain_hud(ui_style)

View File

@@ -102,7 +102,7 @@
if (usr.stat != 0) if (usr.stat != 0)
return return
if (!ishuman(usr) && !ismonkey(usr)) //Make sure they're a mob that has dna if (!ishuman(usr) && !issmall(usr)) //Make sure they're a mob that has dna
usr << "\blue Try as you might, you can not climb up into the scanner." usr << "\blue Try as you might, you can not climb up into the scanner."
return return
if (src.occupant) if (src.occupant)

View File

@@ -822,7 +822,7 @@ var/list/datum/dna/hivemind_bank = list()
var/mob/living/carbon/T = changeling_sting(40,/mob/proc/changeling_transformation_sting) var/mob/living/carbon/T = changeling_sting(40,/mob/proc/changeling_transformation_sting)
if(!T) return 0 if(!T) return 0
if((HUSK in T.mutations) || (!ishuman(T) && !ismonkey(T))) if((HUSK in T.mutations) || (!ishuman(T) && !issmall(T)))
src << "<span class='warning'>Our sting appears ineffective against its DNA.</span>" src << "<span class='warning'>Our sting appears ineffective against its DNA.</span>"
return 0 return 0
T.visible_message("<span class='warning'>[T] transforms!</span>") T.visible_message("<span class='warning'>[T] transforms!</span>")

View File

@@ -408,7 +408,7 @@
set category = "Object" set category = "Object"
set src in oview(1) set src in oview(1)
if(usr.stat != 0 || !(ishuman(usr) || ismonkey(usr))) if(usr.stat != 0 || !(ishuman(usr) || issmall(usr)))
return return
if(src.occupant) if(src.occupant)

View File

@@ -194,9 +194,9 @@
if(critter.meat_type) if(critter.meat_type)
slab_type = critter.meat_type slab_type = critter.meat_type
else if(istype(src.occupant,/mob/living/carbon/human)) else if(istype(src.occupant,/mob/living/carbon/human))
var/mob/living/carbon/human/H = occupant
slab_name = src.occupant.real_name slab_name = src.occupant.real_name
// /obj/item/weapon/reagent_containers/food/snacks/meat/monkey Move to species datum. slab_type = H.species.meat_type
slab_type = /obj/item/weapon/reagent_containers/food/snacks/meat/human
// Small mobs don't give as much nutrition. // Small mobs don't give as much nutrition.
if(src.occupant.small) if(src.occupant.small)

View File

@@ -488,7 +488,7 @@
if(iscuffed(L)) // If the target is handcuffed, leave it alone if(iscuffed(L)) // If the target is handcuffed, leave it alone
return TURRET_NOT_TARGET return TURRET_NOT_TARGET
if(isanimal(L) || ismonkey(L)) // Animals are not so dangerous if(isanimal(L) || issmall(L)) // Animals are not so dangerous
return check_anomalies ? TURRET_SECONDARY_TARGET : TURRET_NOT_TARGET return check_anomalies ? TURRET_SECONDARY_TARGET : TURRET_NOT_TARGET
if(isxenomorph(L) || isalien(L)) // Xenos are dangerous if(isxenomorph(L) || isalien(L)) // Xenos are dangerous
return check_anomalies ? TURRET_PRIORITY_TARGET : TURRET_NOT_TARGET return check_anomalies ? TURRET_PRIORITY_TARGET : TURRET_NOT_TARGET

View File

@@ -77,7 +77,7 @@
race = "[H.species.name]" race = "[H.species.name]"
else if(ismonkey(M)) else if(issmall(M))
race = "Monkey" race = "Monkey"
language = race language = race

View File

@@ -26,7 +26,7 @@
//returns 1 if the master item's parent's MouseDrop() should be called, 0 otherwise. It's strange, but no other way of //returns 1 if the master item's parent's MouseDrop() should be called, 0 otherwise. It's strange, but no other way of
//doing it without the ability to call another proc's parent, really. //doing it without the ability to call another proc's parent, really.
/obj/item/weapon/storage/internal/proc/handle_mousedrop(mob/user as mob, obj/over_object as obj) /obj/item/weapon/storage/internal/proc/handle_mousedrop(mob/user as mob, obj/over_object as obj)
if (ishuman(user) || ismonkey(user)) //so monkeys can take off their backpacks -- Urist if (ishuman(user) || issmall(user)) //so monkeys can take off their backpacks -- Urist
if (istype(user.loc,/obj/mecha)) // stops inventory actions in a mech if (istype(user.loc,/obj/mecha)) // stops inventory actions in a mech
return 0 return 0

View File

@@ -28,7 +28,7 @@
if(!canremove) if(!canremove)
return return
if (ishuman(usr) || ismonkey(usr)) //so monkeys can take off their backpacks -- Urist if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
return return

View File

@@ -66,6 +66,14 @@
..() ..()
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(H.species.is_small)
user << "<span class='warning'>It's too heavy for you to wield fully.</span>"
return
else
return
if(wielded) //Trying to unwield it if(wielded) //Trying to unwield it
unwield() unwield()
user << "<span class='notice'>You are now carrying the [name] with one hand.</span>" user << "<span class='notice'>You are now carrying the [name] with one hand.</span>"

View File

@@ -4,76 +4,57 @@
name = "a meat spike" name = "a meat spike"
icon = 'icons/obj/kitchen.dmi' icon = 'icons/obj/kitchen.dmi'
icon_state = "spike" icon_state = "spike"
desc = "A spike for collecting meat from animals" desc = "A spike for collecting meat from animals."
density = 1 density = 1
anchored = 1 anchored = 1
var/meat = 0 var/meat = 0
var/occupied = 0 var/occupied
var/meattype = 0 // 0 - Nothing, 1 - Monkey, 2 - Xeno var/meat_type
var/victim_name = "corpse"
/obj/structure/kitchenspike /obj/structure/kitchenspike/attackby(obj/item/weapon/grab/G as obj, mob/user as mob)
if(!istype(G, /obj/item/weapon/grab) || !G.affecting)
attackby(obj/item/weapon/grab/G as obj, mob/user as mob)
if(!istype(G, /obj/item/weapon/grab))
return return
if(istype(G.affecting, /mob/living/carbon/human)) if(occupied)
var/mob/living/carbon/human/H = G.affecting user << "<span class = 'danger'>The spike already has something on it, finish collecting its meat first!</span>"
if(H.species.is_small) else
if(src.occupied == 0) if(spike(G.affecting))
src.icon_state = "spikebloody" visible_message("<span class = 'danger'>[user] has forced [G.affecting] onto the spike, killing them instantly!</span>")
src.occupied = 1
src.meat = 5
src.meattype = 1
for(var/mob/O in viewers(src, null))
O.show_message(text("\red [user] has forced [G.affecting] onto the spike, killing them instantly!"))
del(G.affecting) del(G.affecting)
del(G) del(G)
else else
user << "\red The spike already has something on it, finish collecting its meat first!" user << "<span class='danger'>They are too big for the spike, try something smaller!</span>"
else if(istype(G.affecting, /mob/living/carbon/alien))
if(src.occupied == 0) /obj/structure/kitchenspike/proc/spike(var/mob/living/victim)
src.icon_state = "spikebloodygreen"
src.occupied = 1 if(!istype(victim))
src.meat = 5
src.meattype = 2
for(var/mob/O in viewers(src, null))
O.show_message(text("\red [user] has forced [G.affecting] onto the spike, killing them instantly!"))
del(G.affecting)
del(G)
else
user << "\red The spike already has something on it, finish collecting its meat first!"
else
user << "\red They are too big for the spike, try something smaller!"
return return
// MouseDrop_T(var/atom/movable/C, mob/user) if(istype(victim, /mob/living/carbon/human))
// if(istype(C, /obj/mob/carbon/monkey) var/mob/living/carbon/human/H = victim
// else if(istype(C, /obj/mob/carbon/alien) && !istype(C, /mob/living/carbon/alien/larva/slime)) if(!H.species.is_small)
// else if(istype(C, /obj/livestock/spesscarp return 0
meat_type = H.species.meat_type
icon_state = "spikebloody"
else if(istype(victim, /mob/living/carbon/alien))
meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
icon_state = "spikebloodygreen"
else
return 0
attack_hand(mob/user as mob) victim_name = victim.name
if(..()) occupied = 1
meat = 5
return 1
/obj/structure/kitchenspike/attack_hand(mob/user as mob)
if(..() || !occupied)
return return
if(src.occupied) meat--
if(src.meattype == 1) new meattype(get_turf(src))
if(src.meat > 1) if(src.meat > 1)
src.meat-- user << "You remove some meat from \the [victim_name]."
new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey( src.loc )
usr << "You remove some meat from the monkey."
else if(src.meat == 1) else if(src.meat == 1)
src.meat-- user << "You remove the last piece of meat from \the [victim_name]!"
new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src.loc) icon_state = "spike"
usr << "You remove the last piece of meat from the monkey!" occupied = 0
src.icon_state = "spike"
src.occupied = 0
else if(src.meattype == 2)
if(src.meat > 1)
src.meat--
new /obj/item/weapon/reagent_containers/food/snacks/xenomeat( src.loc )
usr << "You remove some meat from the alien."
else if(src.meat == 1)
src.meat--
new /obj/item/weapon/reagent_containers/food/snacks/xenomeat(src.loc)
usr << "You remove the last piece of meat from the alien!"
src.icon_state = "spike"
src.occupied = 0

View File

@@ -49,6 +49,11 @@ var/list/mechtoys = list(
anchored = 1 anchored = 1
layer = 4 layer = 4
explosion_resistance = 5 explosion_resistance = 5
var/list/mobs_can_pass = list(
/mob/living/carbon/slime,
/mob/living/simple_animal/mouse,
/mob/living/silicon/robot/drone
)
/obj/structure/plasticflaps/CanPass(atom/A, turf/T) /obj/structure/plasticflaps/CanPass(atom/A, turf/T)
if(istype(A) && A.checkpass(PASSGLASS)) if(istype(A) && A.checkpass(PASSGLASS))
@@ -61,10 +66,19 @@ var/list/mechtoys = list(
if(istype(A, /obj/vehicle)) //no vehicles if(istype(A, /obj/vehicle)) //no vehicles
return 0 return 0
if(istype(A, /mob/living)) // You Shall Not Pass!
var/mob/living/M = A var/mob/living/M = A
if(!M.lying && !istype(M, /mob/living/carbon/slime) && !istype(M, /mob/living/simple_animal/mouse) && !istype(M, /mob/living/silicon/robot/drone)) //If your not laying down, or a small creature, no pass. if(istype(M))
if(M.lying)
return ..()
for(var/mob_type in mobs_can_pass)
if(istype(A, mob_type))
return ..()
if(istype(A, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(H.is_small)
return ..()
return 0 return 0
return ..() return ..()
/obj/structure/plasticflaps/ex_act(severity) /obj/structure/plasticflaps/ex_act(severity)

View File

@@ -92,7 +92,7 @@ var/global/floorIsLava = 0
body += "<br>" body += "<br>"
//Monkey //Monkey
if(ismonkey(M)) if(issmall(M))
body += "<B>Monkeyized</B> | " body += "<B>Monkeyized</B> | "
else else
body += "<A href='?src=\ref[src];monkeyone=\ref[M]'>Monkeyize</A> | " body += "<A href='?src=\ref[src];monkeyone=\ref[M]'>Monkeyize</A> | "

View File

@@ -231,7 +231,7 @@
M_job = M.job M_job = M.job
else if(isslime(M)) else if(isslime(M))
M_job = "slime" M_job = "slime"
else if(ismonkey(M)) else if(issmall(M))
M_job = "Monkey" M_job = "Monkey"
else if(isalien(M)) else if(isalien(M))
M_job = "Alien" M_job = "Alien"
@@ -342,7 +342,7 @@
dat += "<td>New Player</td>" dat += "<td>New Player</td>"
else if(isobserver(M)) else if(isobserver(M))
dat += "<td>Ghost</td>" dat += "<td>Ghost</td>"
else if(ismonkey(M)) else if(issmall(M))
dat += "<td>Monkey</td>" dat += "<td>Monkey</td>"
else if(isalien(M)) else if(isalien(M))
dat += "<td>Alien</td>" dat += "<td>Alien</td>"

View File

@@ -1609,7 +1609,7 @@
where = "onfloor" where = "onfloor"
if ( where == "inhand" ) //Can only give when human or monkey if ( where == "inhand" ) //Can only give when human or monkey
if ( !( ishuman(usr) || ismonkey(usr) ) ) if ( !( ishuman(usr) || issmall(usr) ) )
usr << "Can only spawn in hand when you're a human or a monkey." usr << "Can only spawn in hand when you're a human or a monkey."
where = "onfloor" where = "onfloor"
else if ( usr.get_active_hand() ) else if ( usr.get_active_hand() )

View File

@@ -453,13 +453,13 @@ BLIND // can't see anything
A.attack_hand(user) A.attack_hand(user)
return return
if ((ishuman(usr) || ismonkey(usr)) && src.loc == user) //make it harder to accidentally undress yourself if ((ishuman(usr) || issmall(usr)) && src.loc == user) //make it harder to accidentally undress yourself
return return
..() ..()
/obj/item/clothing/under/MouseDrop(obj/over_object as obj) /obj/item/clothing/under/MouseDrop(obj/over_object as obj)
if (ishuman(usr) || ismonkey(usr)) if (ishuman(usr) || issmall(usr))
//makes sure that the clothing is equipped so that we can't drag it into our hand from miles away. //makes sure that the clothing is equipped so that we can't drag it into our hand from miles away.
if (!(src.loc == usr)) if (!(src.loc == usr))
return return

View File

@@ -41,6 +41,7 @@
var/vision_flags = 0 // Same flags as glasses. var/vision_flags = 0 // Same flags as glasses.
// Death vars. // Death vars.
var/meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/human
var/gibber_type = /obj/effect/gibspawner/human var/gibber_type = /obj/effect/gibspawner/human
var/remains_type = /obj/effect/decal/remains/xeno var/remains_type = /obj/effect/decal/remains/xeno
var/gibbed_anim = "gibbed-h" var/gibbed_anim = "gibbed-h"

View File

@@ -248,7 +248,7 @@
Target = C Target = C
break break
if(isalien(C) || ismonkey(C) || isanimal(C)) if(isalien(C) || issmall(C) || isanimal(C))
Target = C Target = C
break break

View File

@@ -69,7 +69,7 @@
//Removing from inventory //Removing from inventory
if(href_list["remove_inv"]) if(href_list["remove_inv"])
if(!Adjacent(usr) || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr))) if(!Adjacent(usr) || !(ishuman(usr) || issmall(usr) || isrobot(usr) || isalienadult(usr)))
return return
var/remove_from = href_list["remove_inv"] var/remove_from = href_list["remove_inv"]
switch(remove_from) switch(remove_from)
@@ -100,7 +100,7 @@
//Adding things to inventory //Adding things to inventory
else if(href_list["add_inv"]) else if(href_list["add_inv"])
if(!Adjacent(usr) || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr))) if(!Adjacent(usr) || !(ishuman(usr) || issmall(usr) || isrobot(usr) || isalienadult(usr)))
return return
var/add_to = href_list["add_inv"] var/add_to = href_list["add_inv"]
if(!usr.get_active_hand()) if(!usr.get_active_hand())

View File

@@ -82,7 +82,7 @@
//Removing from inventory //Removing from inventory
if(href_list["remove_inv"]) if(href_list["remove_inv"])
if(get_dist(src,usr) > 1 || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr))) if(get_dist(src,usr) > 1 || !(ishuman(usr) || issmall(usr) || isrobot(usr) || isalienadult(usr)))
return return
var/remove_from = href_list["remove_inv"] var/remove_from = href_list["remove_inv"]
switch(remove_from) switch(remove_from)
@@ -112,7 +112,7 @@
//Adding things to inventory //Adding things to inventory
else if(href_list["add_inv"]) else if(href_list["add_inv"])
if(get_dist(src,usr) > 1 || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr))) if(get_dist(src,usr) > 1 || !(ishuman(usr) || issmall(usr) || isrobot(usr) || isalienadult(usr)))
return return
var/add_to = href_list["add_inv"] var/add_to = href_list["add_inv"]
if(!usr.get_active_hand()) if(!usr.get_active_hand())

View File

@@ -136,7 +136,7 @@
return return
//Is the usr's mob type able to do this? //Is the usr's mob type able to do this?
if(ishuman(usr) || ismonkey(usr) || isrobot(usr)) if(ishuman(usr) || issmall(usr) || isrobot(usr))
//Removing from inventory //Removing from inventory
if(href_list["remove_inv"]) if(href_list["remove_inv"])

View File

@@ -196,14 +196,14 @@
if(M == assailant && state >= GRAB_AGGRESSIVE) if(M == assailant && state >= GRAB_AGGRESSIVE)
var/can_eat var/can_eat
if((FAT in user.mutations) && ismonkey(affecting)) if((FAT in user.mutations) && issmall(affecting))
can_eat = 1 can_eat = 1
else else
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
if(istype(H) && H.species.gluttonous) if(istype(H) && H.species.gluttonous)
if(H.species.gluttonous == 2) if(H.species.gluttonous == 2)
can_eat = 2 can_eat = 2
else if(!ishuman(affecting) && !ismonkey(affecting) && (affecting.small || iscarbon(affecting))) else if(!ishuman(affecting) && !issmall(affecting) && (affecting.small || iscarbon(affecting)))
can_eat = 1 can_eat = 1
if(can_eat) if(can_eat)

View File

@@ -15,10 +15,10 @@
return istype(H.species, /datum/species/xenos) return istype(H.species, /datum/species/xenos)
return 0 return 0
/proc/ismonkey(A) /proc/issmall(A)
if(A && istype(A, /mob/living/carbon/human)) if(A && istype(A, /mob/living/carbon/human))
var/mob/living/carbon/human/H = A var/mob/living/carbon/human/H = A
if(H.species && H.species.is_small) //todo if(H.species && H.species.is_small)
return 1 return 1
return 0 return 0

View File

@@ -1587,7 +1587,7 @@
else //someone is having a bad day else //someone is having a bad day
E.createwound(CUT, 30) E.createwound(CUT, 30)
E.embed(surprise) E.embed(surprise)
else if (ismonkey(M)) else if (issmall(M))
M.visible_message("<span class='danger'>[M] suddenly tears in half!</span>") M.visible_message("<span class='danger'>[M] suddenly tears in half!</span>")
var/mob/living/carbon/monkey/ook = new monkey_type(M.loc) var/mob/living/carbon/monkey/ook = new monkey_type(M.loc)
ook.name = "malformed [ook.name]" ook.name = "malformed [ook.name]"

View File

@@ -24,7 +24,7 @@
if("gib") if("gib")
target.gib() target.gib()
if("gib_brain") if("gib_brain")
if(ishuman(target) || ismonkey(target)) if(ishuman(target) || issmall(target))
var/mob/living/carbon/C = target var/mob/living/carbon/C = target
if(!C.has_brain()) // Their brain is already taken out if(!C.has_brain()) // Their brain is already taken out
var/obj/item/organ/brain/B = new(C.loc) var/obj/item/organ/brain/B = new(C.loc)

View File

@@ -80,7 +80,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
usr << "Not when you're incapacitated." usr << "Not when you're incapacitated."
return 0 return 0
if(ishuman(usr) || ismonkey(usr)) if(ishuman(usr) || issmall(usr))
if(istype(usr.wear_mask, /obj/item/clothing/mask/muzzle)) if(istype(usr.wear_mask, /obj/item/clothing/mask/muzzle))
usr << "Mmmf mrrfff!" usr << "Mmmf mrrfff!"
return 0 return 0