Refactors slipping to be completely general for items

This commit is contained in:
Crazylemon64
2017-07-16 18:58:55 -07:00
parent 12317a77b9
commit a8e7716649
13 changed files with 90 additions and 53 deletions
+20
View File
@@ -87,6 +87,15 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
var/sprite_sheets_obj = null //Used to override hardcoded clothing inventory object dmis in human clothing proc.
var/list/species_fit = null //This object has a different appearance when worn by these species
var/trip_verb = TV_TRIP
var/trip_bonus = 0
var/trip_stun = 0
var/trip_weaken = 2
var/trip_any = FALSE
var/trip_walksafe = TRUE
var/trip_tiles = 0
/obj/item/New()
..()
for(var/path in actions_types)
@@ -530,3 +539,14 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
/obj/item/proc/is_equivalent(obj/item/I)
return I == src
/obj/item/Crossed(atom/movable/AM)
if(ishuman(AM))
var/mob/living/carbon/human/H = AM
if(prob(trip_bonus))
on_trip(H)
/obj/item/proc/on_trip(mob/living/carbon/human/H)
if(H.slip(src, trip_stun, trip_weaken, trip_tiles, trip_walksafe, trip_any, trip_verb))
H.visible_message("<span class='warning'>[H] [trip_verb]s on [src]!</span>")
return TRUE
@@ -8,10 +8,6 @@
/*
* Soap
*/
/obj/item/weapon/soap/Crossed(AM as mob|obj) //EXACTLY the same as bananapeel for now, so it makes sense to put it in the same dm -- Urist
if(istype(AM, /mob/living/carbon))
var/mob/living/carbon/M = AM
M.slip("soap", 4, 2)
/obj/item/weapon/soap/afterattack(atom/target, mob/user, proximity)
if(!proximity) return
@@ -50,24 +50,21 @@
*/
/obj/item/weapon/grown/bananapeel/traitorpeel
trip_stun = 0
trip_weaken = 7
trip_tiles = 4
trip_walksafe = FALSE
trip_bonus = 100
/obj/item/weapon/grown/bananapeel/traitorpeel/Crossed(AM as mob|obj)
var/burned = rand(2,5)
if(istype(AM, /mob/living/carbon))
var/mob/living/carbon/M = AM
if(ishuman(M))
if(isobj(M:shoes))
if(M:shoes.flags & NOSLIP)
return
else
to_chat(M, "<span class='warning'>Your feet feel like they're on fire!</span>")
M.take_overall_damage(0, max(0, (burned - 2)))
if(!istype(M, /mob/living/carbon/slime) && !isrobot(M))
M.slip("banana peel!", 0, 7, 4)
M.take_organ_damage(2) // Was 5 -- TLE
M.take_overall_damage(0, burned)
/obj/item/weapon/grown/bananapeel/traitorpeel/on_trip(mob/living/carbon/human/H)
. = ..()
if(.)
var/burned = rand(2,5)
to_chat(H, "<span class='warning'>Your feet feel like they're on fire!</span>")
H.take_overall_damage(0, max(0, 2*burned - 2))
H.take_organ_damage(2) // Was 5 -- TLE
/obj/item/weapon/grown/bananapeel/traitorpeel/throw_impact(atom/hit_atom)
var/burned = rand(1,3)
+7
View File
@@ -9,6 +9,13 @@
throw_speed = 4
throw_range = 20
discrete = 1
trip_stun = 4
trip_weaken = 2
trip_bonus = 100
trip_walksafe = FALSE
trip_verb = TV_SLIP
var/cleanspeed = 50 //slower than mop
/obj/item/weapon/soap/nanotrasen