More changes

This commit is contained in:
JTGSZ
2019-05-19 07:29:09 -04:00
parent 09dfb448ed
commit 03f129fa6e
6 changed files with 131 additions and 269 deletions
+117 -20
View File
@@ -68,6 +68,8 @@
var/pre_noise = FALSE
var/post_noise = FALSE
var/datum/team/gang/gang //For marking territory, spraycans are gang-locked to their initial gang due to colors
/obj/item/toy/crayon/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is jamming [src] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide!</span>")
@@ -288,7 +290,8 @@
else if(drawing in numerals)
temp = "number"
temp = gang_check(user,target)
if(!temp) return // gang check
var/graf_rot
if(drawing in oriented)
switch(user.dir)
@@ -310,7 +313,7 @@
clicky = CLAMP(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2)
if(!instant)
to_chat(user, "<span class='notice'>You start drawing a [temp] on the [target.name]...</span>")
to_chat(user, "<span class='notice'>You start drawing a [temp] on the [target.name]...</span>")
if(pre_noise)
audible_message("<span class='notice'>You hear spraying.</span>")
@@ -322,6 +325,7 @@
if(paint_mode == PAINT_LARGE_HORIZONTAL)
wait_time *= 3
if(gang) takes_time = TRUE // gang tagging takes time.
if(takes_time)
if(!do_after(user, 50, target = target))
return
@@ -332,26 +336,29 @@
var/list/turf/affected_turfs = list()
if(actually_paints)
switch(paint_mode)
if(PAINT_NORMAL)
var/obj/effect/decal/cleanable/crayon/C = new(target, paint_color, drawing, temp, graf_rot)
C.add_hiddenprint(user)
C.pixel_x = clickx
C.pixel_y = clicky
affected_turfs += target
if(PAINT_LARGE_HORIZONTAL)
var/turf/left = locate(target.x-1,target.y,target.z)
var/turf/right = locate(target.x+1,target.y,target.z)
if(is_type_in_list(left, validSurfaces) && is_type_in_list(right, validSurfaces))
var/obj/effect/decal/cleanable/crayon/C = new(left, paint_color, drawing, temp, graf_rot, PAINT_LARGE_HORIZONTAL_ICON)
if(!gang) //drawing is done in gang_final() if it's a gang type
if(actually_paints)
switch(paint_mode)
if(PAINT_NORMAL)
var/obj/effect/decal/cleanable/crayon/C = new(target, paint_color, drawing, temp, graf_rot)
C.add_hiddenprint(user)
affected_turfs += left
affected_turfs += right
C.pixel_x = clickx
C.pixel_y = clicky
affected_turfs += target
else
to_chat(user, "<span class='warning'>There isn't enough space to paint!</span>")
return
if(PAINT_LARGE_HORIZONTAL)
var/turf/left = locate(target.x-1,target.y,target.z)
var/turf/right = locate(target.x+1,target.y,target.z)
if(is_type_in_list(left, validSurfaces) && is_type_in_list(right, validSurfaces))
var/obj/effect/decal/cleanable/crayon/C = new(left, paint_color, drawing, temp, graf_rot, PAINT_LARGE_HORIZONTAL_ICON)
C.add_hiddenprint(user)
affected_turfs += left
affected_turfs += right
affected_turfs += target
else
to_chat(user, "<span class='warning'>There isn't enough space to paint!</span>")
return
else // gangstuff
if(gang_final(user, target, affected_turfs)) return // gangstuff
if(!instant)
to_chat(user, "<span class='notice'>You finish drawing \the [temp].</span>")
@@ -373,6 +380,77 @@
reagents.trans_to(t, ., volume_multiplier)
check_empty(user)
//////////////Gang mode stuff/////////////////
/obj/item/toy/crayon/proc/gang_check(mob/user, atom/target) // hooked into afterattack
var/gang_mode = FALSE
if(gang && user.mind)
var/datum/antagonist/gang/G = user.mind.has_antag_datum(/datum/antagonist/gang)
if(G.gang != gang)
to_chat(user, "<span class='danger'>This spraycan's color isn't your gang's one! You cannot use it.</span>")
return FALSE
gang_mode = TRUE
instant = FALSE
. = "graffiti"
// discontinue if the area isn't valid for tagging because gang "honour"
if(gang_mode && (!can_claim_for_gang(user, target)))
return FALSE
/obj/item/toy/crayon/proc/gang_final(mob/user, atom/target, list/affected_turfs) // hooked into afterattack
// Double check it wasn't tagged in the meanwhile
if(!can_claim_for_gang(user, target))
return TRUE
tag_for_gang(user, target)
affected_turfs += target
/obj/item/toy/crayon/proc/can_claim_for_gang(mob/user, atom/target)
// Check area validity.
// Reject space, player-created areas, and non-station z-levels.
var/area/A = get_area(target)
if(!A || (!is_station_level(A.z)) || !A.valid_territory)
to_chat(user, "<span class='warning'>[A] is unsuitable for tagging.</span>")
return FALSE
var/spraying_over = FALSE
for(var/G in target)
var/obj/effect/decal/cleanable/crayon/gang/gangtag = G
if(istype(gangtag))
var/datum/antagonist/gang/GA = user.mind.has_antag_datum(/datum/antagonist/gang)
if(gangtag.gang != GA.gang)
spraying_over = TRUE
break
for(var/obj/machinery/power/apc in target)
to_chat(user, "<span class='warning'>You can't tag an APC.</span>")
return FALSE
var/occupying_gang = territory_claimed(A, user)
if(occupying_gang && !spraying_over)
to_chat(user, "<span class='danger'>[A] has already been tagged by the [occupying_gang] gang! You must get rid of or spray over the old tag first!</span>")
return FALSE
// If you pass the gauntlet of checks, you're good to proceed
return TRUE
/obj/item/toy/crayon/proc/territory_claimed(area/territory, mob/user)
for(var/datum/team/gang/G in GLOB.gangs)
if(territory.type in (G.territories|G.new_territories))
. = G.name
break
/obj/item/toy/crayon/proc/tag_for_gang(mob/user, atom/target)
//Delete any old markings on this tile, including other gang tags
for(var/obj/effect/decal/cleanable/crayon/old_marking in target)
qdel(old_marking)
var/datum/antagonist/gang/G = user.mind.has_antag_datum(/datum/antagonist/gang)
var/area/territory = get_area(target)
new /obj/effect/decal/cleanable/crayon/gang(target,G.gang,"graffiti",0,user)
to_chat(user, "<span class='notice'>You tagged [territory] for your gang!</span>")
////////////Gang end////////////////////
/obj/item/toy/crayon/attack(mob/M, mob/user)
if(edible && (M == user))
to_chat(user, "You take a bite of the [src.name]. Delicious!")
@@ -703,6 +781,25 @@
post_noise = FALSE
reagent_contents = list("nothing" = 1, "mutetoxin" = 1)
/obj/item/toy/crayon/spraycan/gang
charges = 20
gang = TRUE
pre_noise = FALSE
post_noise = TRUE
/obj/item/toy/crayon/spraycan/gang/Initialize(loc, datum/team/gang/G)
..()
if(G)
gang = G
paint_color = G.color
update_icon()
/obj/item/toy/crayon/spraycan/gang/examine(mob/user)
. = ..()
if(user.mind && user.mind.has_antag_datum(/datum/antagonist/gang) || isobserver(user))
to_chat(user, "This spraycan has been specially modified for tagging territory.")
#undef RANDOM_GRAFFITI
#undef RANDOM_LETTER
#undef RANDOM_NUMBER