diff --git a/code/game/objects/items/flag.dm b/code/game/objects/items/flag.dm index 75b2ad94d95..3c9be2c67de 100644 --- a/code/game/objects/items/flag.dm +++ b/code/game/objects/items/flag.dm @@ -1,4 +1,6 @@ /obj/item/flag + name = "flag" + desc = "It's a flag." icon = 'icons/obj/flag.dmi' icon_state = "ntflag" lefthand_file = 'icons/mob/inhands/flags_lefthand.dmi' @@ -6,13 +8,19 @@ w_class = WEIGHT_CLASS_BULKY burntime = 20 burn_state = FLAMMABLE + var/rolled = FALSE /obj/item/flag/attackby(obj/item/weapon/W, mob/user, params) ..() if(is_hot(W) && burn_state != ON_FIRE) - user.visible_message("[user] lights the [name] with [W].") + user.visible_message("[user] lights [src] with [W].", "You light [src] with [W].", "You hear a low whoosh.") fire_act() +/obj/item/flag/attack_self(mob/user) + rolled = !rolled + user.visible_message("[user] [rolled ? "rolls up" : "unfurls"] [src].", "You [rolled ? "roll up" : "unfurl"] [src].", "You hear fabric rustling.") + update_icon() + /obj/item/flag/fire_act(global_overlay = FALSE) ..() update_icon() @@ -23,16 +31,24 @@ /obj/item/flag/update_icon() overlays.Cut() + updateFlagIcon() + item_state = icon_state + if(rolled) + icon_state = "[icon_state]_rolled" if(burn_state == ON_FIRE) + item_state = "[item_state]_fire" + if(burn_state == ON_FIRE && rolled) + overlays += image('icons/obj/flag.dmi', src , "fire_rolled") + else if(burn_state == ON_FIRE && !rolled) overlays += image('icons/obj/flag.dmi', src , "fire") - item_state = "[icon_state]_fire" - else - item_state = initial(icon_state) if(ismob(loc)) var/mob/M = loc M.update_inv_r_hand() M.update_inv_l_hand() +/obj/item/flag/proc/updateFlagIcon() + icon_state = initial(icon_state) + /obj/item/flag/nt name = "Nanotrasen flag" desc = "A flag proudly boasting the logo of NT." @@ -187,11 +203,16 @@ desc = "A poor recreation of the official NT flag. It seems to shimmer a little." icon_state = "ntflag" origin_tech = "syndicate=4;magnets=4" - var/used = 0 + var/updated_icon_state = null + var/used = FALSE + +/obj/item/flag/chameleon/New() + updated_icon_state = icon_state + ..() /obj/item/flag/chameleon/attack_self(mob/user) if(used) - return + return ..() var/list/flag_types = typesof(/obj/item/flag) - list(src.type, /obj/item/flag) var/list/flag = list() @@ -208,12 +229,16 @@ var/obj/item/flag/chosen_flag = flag[input_flag] - if(chosen_flag) + if(chosen_flag && !used) name = chosen_flag.name icon_state = chosen_flag.icon_state + updated_icon_state = icon_state desc = chosen_flag.desc - used = 1 + used = TRUE /obj/item/flag/chameleon/burn() explosion(loc,1,2,4,4, flame_range = 4) qdel(src) + +/obj/item/flag/chameleon/updateFlagIcon() + icon_state = updated_icon_state diff --git a/icons/obj/flag.dmi b/icons/obj/flag.dmi index 8b7b2d4a517..309b1d38d87 100644 Binary files a/icons/obj/flag.dmi and b/icons/obj/flag.dmi differ