From 6e5f20f58ef1cca74e2460013445a549daf07d08 Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Thu, 1 Jun 2017 23:07:07 -0700 Subject: [PATCH 1/9] thanks, robustin! --- code/game/gamemodes/gang/gang.dm | 13 +++- code/game/gamemodes/gang/gang_datum.dm | 70 ++++++++++++++++++---- code/game/objects/effects/decals/crayon.dm | 20 +++++-- 3 files changed, 84 insertions(+), 19 deletions(-) diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index 6606a0d8718..f36eaeac43a 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -62,7 +62,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ for(var/n in 1 to 3) var/datum/mind/boss = pick(antag_candidates) antag_candidates -= boss - G.bosses += boss + G.bosses[boss] = 0 boss.gang_datum = G var/title if(n == 1) @@ -170,7 +170,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ return 0 if(check && gangster_mind.current.isloyal()) //Check to see if the potential gangster is implanted return 1 - G.gangsters += gangster_mind + G.gangsters[gangster_mind] = 0 gangster_mind.gang_datum = G if(check) if(iscarbon(gangster_mind.current)) @@ -209,15 +209,24 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ if(!G.is_deconvertible && !remove_bosses) return 0 if(gangster_mind in G.gangsters) + G.reclaim_points(G.gangsters[gangster_mind]) G.gangsters -= gangster_mind removed = 1 if(remove_bosses && (gangster_mind in G.bosses)) + G.reclaim_points(G.bosses[gangster_mind]) G.bosses -= gangster_mind removed = 1 if(!removed) return 0 + if(G.tags_by_mind[gangster_mind] && islist(G.tags_by_mind[gangster_mind]) + var/list/tags_cache = G.tags_by_mind[gangster_mind] + for(var/v in tags_cache) + var/obj/effect/decal/cleanable/crayon/gang/G = v + G.set_mind_owner(null) + G.tags_by_mind -= gangster_mind + gangster_mind.special_role = null gangster_mind.gang_datum = null diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index d6aa1830f25..da93cfa7ea1 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -8,6 +8,7 @@ var/list/datum/mind/gangsters = list() //gang B Members var/list/datum/mind/bosses = list() //gang A Bosses var/list/obj/item/device/gangtool/gangtools = list() + var/list/tags_by_mind = list() //Assoc list in format of tags_by_mind[mind_of_gangster] = list(tag1, tag2, tag3) where tags are the actual object decals. var/style var/fighting_style = "normal" var/list/territory = list() @@ -202,9 +203,9 @@ return var/added_names = "" var/lost_names = "" - + SSticker.mode.shuttle_check() // See if its time to start wrapping things up - + //Re-add territories that were reclaimed, so if they got tagged over, they can still earn income if they tag it back before the next status report var/list/reclaimed_territories = territory_new & territory_lost territory |= reclaimed_territories @@ -245,16 +246,13 @@ set_domination_time(new_time) message += "[seconds_remaining] seconds remain in hostile takeover.
" else + pay_territory_income_to_bosses() + pay_territory_income_to_soldiers(sbonus) + pay_all_clothing_bonuses() + announce_all_influence() + + ////////////////////////////////// for(var/obj/item/device/gangtool/G in gangtools) - var/pmessage = message - var/points_new = 0 - if(istype(G, /obj/item/device/gangtool/soldier)) - points_new = max(0,round(3 - G.points/10)) + (sbonus) + (LAZYLEN(G.tags)/2) // Soldier points - pmessage += "Your influence has increased by [round(sbonus)] from your gang holding [LAZYLEN(territory)] territories, and a bonus of [round(LAZYLEN(G.tags)/2)] for territories you have personally marked and kept intact.
" - else - points_new = max(0,round(5 - G.points/10)) + LAZYLEN(territory) // Boss points, more focused on big picture - pmessage += "Your influence has increased by [round(points_new)] from your gang holding [territory.len] territories
" - G.points += points_new var/mob/living/carbon/human/ganger = get(G.loc, /mob/living) var/points_newer = 0 var/static/inner = inner_outfit @@ -285,7 +283,57 @@ pmessage += "Your influential choice of clothing has further increased your influence by [points_newer] points.
" pmessage += "You now have [G.points] influence.
" to_chat(ganger, "\icon[G] [pmessage]") + /////////////////////////////////////////////// +/datum/gang/proc/pay_soldier_territory_income(datum/mind/soldier, sbonus = 0) + . = 0 + . = max(0,round(3 - gangsters[soldier]/10)) + (sbonus) + (get_soldier_territories(soldier)/2) + gangsters[soldier] += . + +/datum/gang/proc/get_soldier_territories(datum/mind/soldier) + if(!islist(tags_by_mind[soldier])) //They have no tagged territories! + return 0 + var/list/tags = tags_by_mind[soldier] + return tags.len + +/datum/gang/proc/pay_territory_income_to_soldiers(sbonus = 0) + for(var/datum/mind/soldier in gangsters) + var/returned = pay_soldier_territory_income(soldier) + if(!returned) + announce_to_mind(soldier, "You have not gained any influence from territories you personally tagged. Get to work, soldier!") + else + announce_to_mind(soldier, "You have gained [returned] influence from [get_soldier_territories(soldier)] territories you have personally tagged.") + +/datum/gang/proc/announce_all_influence() + for(datum/mind/MG in bosses|gangsters) + announce_total_influence(MG) + +/datum/gang/proc/pay_territory_income_to_bosses() + . = 0 + for(var/datum/mind/boss_mind in bosses) + var/inc = max(0,round(5 - bosses[boss_mind]/10)) + LAZYLEN(territory) + . += inc + adjust_influence(boss_mind, inc) + announce_to_mind(boss_mind, "Your influence has increased by [inc] from your gang holding [LAZYLEN(territory)] territories!") + +/datum/gang/proc/get_influence(datum/mind/gangster_mind) + if(gangster_mind in gangsters) + return gangsters[gangster_mind] + if(gangster_mind in bosses) + return bosses[gangster_mind] + +/datum/gang/proc/adjust_influence(datum/mind/gangster_mind, amount) + if(gangster_mind in gangsters) + gangsters[gangster_mind] += amount + if(gangster_mind in bosses) + bosses[gangster_mind] += amount + +/datum/gang/proc/announce_to_mind(datum/mind/gangster_mind, message) + if(gangster_mind.current && gangster_mind.current.stat != DEAD) + to_chat(gangster_mind.current, message) + +/datum/gang/proc/announce_total_influence(datum/mind/gangster_mind) + announce_to_mind(gangster_mind, "[name] Gang: You now have a total of [get_influence(gangster_mind)] influence!") //Multiverse diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index a96f3b50a2e..d0f0e7546d9 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -30,27 +30,35 @@ layer = HIGH_OBJ_LAYER //Harder to hide do_icon_rotate = FALSE //These are designed to always face south, so no rotation please. var/datum/gang/gang - var/obj/item/device/gangtool/linked_tool + var/datum/mind/user_mind var/area/territory /obj/effect/decal/cleanable/crayon/gang/Initialize(mapload, var/datum/gang/G, var/e_name = "gang tag", var/rotation = 0, var/mob/user) if(!type || !G) qdel(src) + user_mind = user.mind territory = get_area(src) gang = G var/newcolor = G.color_hex icon_state = G.name G.territory_new |= list(territory.type = territory.name) - linked_tool = locate(/obj/item/device/gangtool) in user.contents - if(linked_tool) - linked_tool.tags += src + //If this isn't tagged by a specific gangster there's no bonus income. + set_mind_owner(user_mind) ..(mapload, newcolor, icon_state, e_name, rotation) +/obj/effect/decal/cleanable/crayon/gang/proc/set_mind_owner(datum/mind/mind) + if(istype(user_mind) && istype(gang) && islist(gang.tags_by_mind[user_mind])) //Clear us out of old ownership + gang.tags_by_mind[user_mind] -= src + if(istype(mind)) + if(!islist(G.tags_by_mind[mind])) + G.tags_by_mind[mind] = list() + G.tags_by_mind[mind] += src + user_mind = mind + /obj/effect/decal/cleanable/crayon/gang/Destroy() - if(linked_tool) - linked_tool.tags -= src if(gang) gang.territory -= territory.type + set_mind_owner(null) gang.territory_new -= territory.type gang.territory_lost |= list(territory.type = territory.name) return ..() From b55df02c407c06d627a6a2c78a7ab19acb3c6813 Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Fri, 2 Jun 2017 00:02:50 -0700 Subject: [PATCH 2/9] my cloud storage is better than yours --- code/game/gamemodes/gang/gang.dm | 2 +- code/game/gamemodes/gang/gang_datum.dm | 71 ++++++++++++++------------ code/game/gamemodes/gang/recaller.dm | 1 - 3 files changed, 38 insertions(+), 36 deletions(-) diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index f36eaeac43a..8b812c61d25 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -220,7 +220,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ if(!removed) return 0 - if(G.tags_by_mind[gangster_mind] && islist(G.tags_by_mind[gangster_mind]) + if(G.tags_by_mind[gangster_mind] && islist(G.tags_by_mind[gangster_mind])) var/list/tags_cache = G.tags_by_mind[gangster_mind] for(var/v in tags_cache) var/obj/effect/decal/cleanable/crayon/gang/G = v diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index da93cfa7ea1..298172cf213 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -251,44 +251,47 @@ pay_all_clothing_bonuses() announce_all_influence() - ////////////////////////////////// - for(var/obj/item/device/gangtool/G in gangtools) - var/mob/living/carbon/human/ganger = get(G.loc, /mob/living) - var/points_newer = 0 - var/static/inner = inner_outfit - var/static/outer = outer_outfit - if(ishuman(ganger) && ganger.mind in (gangsters|bosses)) - for(var/obj/C in ganger.contents) - if(C.type == inner_outfit) - points_newer += 2 - continue - if(C.type == outer_outfit) - points_newer += 2 - continue - switch(C.type) - if(/obj/item/clothing/neck/necklace/dope) - points_newer += 2 - if(/obj/item/clothing/head/collectable/petehat/gang) - points_newer += 4 - if(/obj/item/clothing/shoes/gang) - points_newer += 6 - if(/obj/item/clothing/mask/gskull) - points_newer += 5 - if(/obj/item/clothing/gloves/gang) - points_newer += 3 - if(/obj/item/weapon/storage/belt/military/gang) - points_newer += 4 - if(points_newer) - G.points += points_newer - pmessage += "Your influential choice of clothing has further increased your influence by [points_newer] points.
" - pmessage += "You now have [G.points] influence.
" - to_chat(ganger, "\icon[G] [pmessage]") - /////////////////////////////////////////////// +/datum/gang/proc/pay_all_clothing_bonuses() + for(var/datum/mind/mind in gangsters|bosses) + pay_clothing_bonus(mind) + +/datum/gang/proc/pay_clothing_bonus(var/datum/mind/gangsta) + var/mob/living/carbon/human/gangbanger = gangsta.current + . = 0 + if(!istype(gangbanger) || gangbanger.stat == DEAD) //Dead gangsters aren't influential at all! + return 0 + var/static/inner = inner_outfit + var/static/outer = outer_outfit + for(var/obj/C in gangbanger.contents) + if(C.type == inner_outfit) + . += 2 + continue + if(C.type == outer_outfit) + . += 2 + continue + switch(C.type) + if(/obj/item/clothing/neck/necklace/dope) + . += 2 + if(/obj/item/clothing/head/collectable/petehat/gang) + . += 4 + if(/obj/item/clothing/shoes/gang) + . += 6 + if(/obj/item/clothing/mask/gskull) + . += 5 + if(/obj/item/clothing/gloves/gang) + . += 3 + if(/obj/item/weapon/storage/belt/military/gang) + . += 4 + adjust_influence(gangsta, .) + if(.) + announce_to_mind(gangsta, "Your influential choice of clothing has increased your influence by [.] points!") + else + announce_to_mind(gangsta, "Unfortunately, you have not gained any additional influence from your drab, old, boring clothing. Learn to dress like a gangsta, bro!") //Kek /datum/gang/proc/pay_soldier_territory_income(datum/mind/soldier, sbonus = 0) . = 0 . = max(0,round(3 - gangsters[soldier]/10)) + (sbonus) + (get_soldier_territories(soldier)/2) - gangsters[soldier] += . + adjust_influence(solder, .) /datum/gang/proc/get_soldier_territories(datum/mind/soldier) if(!islist(tags_by_mind[soldier])) //They have no tagged territories! diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index 8363261c5d3..4257942ed02 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -15,7 +15,6 @@ var/outfits = 2 var/free_pen = 0 var/promotable = 0 - var/points = 15 var/list/tags = list() /obj/item/device/gangtool/Initialize() //Initialize supply point income if it hasn't already been started From f756b6b9c204892f4c71087011014844aed3e364 Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Fri, 2 Jun 2017 00:51:10 -0700 Subject: [PATCH 3/9] the question is now , does this work? --- code/game/gamemodes/gang/gang.dm | 19 +++++++++++-------- code/game/gamemodes/gang/gang_datum.dm | 9 +++++++-- code/game/gamemodes/gang/gang_items.dm | 4 ++-- code/game/gamemodes/gang/recaller.dm | 7 ++----- code/game/objects/effects/decals/crayon.dm | 6 +++--- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index 8b812c61d25..342cc92070d 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -1,6 +1,9 @@ //gang.dm //Gang War Game Mode +#define GANGSTER_SOLDIER_STARTING_INFLUENCE 5 +#define GANGSTER_BOSS_STARTING_INFLUENCE 20 + GLOBAL_LIST_INIT(gang_name_pool, list("Clandestine", "Prima", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib", "Tunnel", "Diablo", "Psyke", "Osiron", "Sirius", "Sleeping Carp")) GLOBAL_LIST_INIT(gang_colors_pool, list("red","orange","yellow","green","blue","purple", "white")) GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/obj/item/clothing/suit/jacket/leather/overcoat,/obj/item/clothing/suit/jacket/puffer,/obj/item/clothing/suit/jacket/miljacket,/obj/item/clothing/suit/jacket/puffer,/obj/item/clothing/suit/pirate,/obj/item/clothing/suit/poncho,/obj/item/clothing/suit/apron/overalls,/obj/item/clothing/suit/jacket/letterman)) @@ -62,7 +65,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ for(var/n in 1 to 3) var/datum/mind/boss = pick(antag_candidates) antag_candidates -= boss - G.bosses[boss] = 0 + G.bosses[boss] = GANGSTER_BOSS_STARTING_INFLUENCE boss.gang_datum = G var/title if(n == 1) @@ -170,7 +173,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ return 0 if(check && gangster_mind.current.isloyal()) //Check to see if the potential gangster is implanted return 1 - G.gangsters[gangster_mind] = 0 + G.gangsters[gangster_mind] = GANGSTER_SOLDIER_STARTING_INFLUENCE gangster_mind.gang_datum = G if(check) if(iscarbon(gangster_mind.current)) @@ -216,16 +219,16 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ G.reclaim_points(G.bosses[gangster_mind]) G.bosses -= gangster_mind removed = 1 + if(G.tags_by_mind[gangster_mind] && islist(G.tags_by_mind[gangster_mind])) + var/list/tags_cache = G.tags_by_mind[gangster_mind] + for(var/v in tags_cache) + var/obj/effect/decal/cleanable/crayon/gang/c = v + c.set_mind_owner(null) + G.tags_by_mind -= gangster_mind if(!removed) return 0 - if(G.tags_by_mind[gangster_mind] && islist(G.tags_by_mind[gangster_mind])) - var/list/tags_cache = G.tags_by_mind[gangster_mind] - for(var/v in tags_cache) - var/obj/effect/decal/cleanable/crayon/gang/G = v - G.set_mind_owner(null) - G.tags_by_mind -= gangster_mind gangster_mind.special_role = null gangster_mind.gang_datum = null diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index 298172cf213..cc6cfff8205 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -291,7 +291,7 @@ /datum/gang/proc/pay_soldier_territory_income(datum/mind/soldier, sbonus = 0) . = 0 . = max(0,round(3 - gangsters[soldier]/10)) + (sbonus) + (get_soldier_territories(soldier)/2) - adjust_influence(solder, .) + adjust_influence(soldier, .) /datum/gang/proc/get_soldier_territories(datum/mind/soldier) if(!islist(tags_by_mind[soldier])) //They have no tagged territories! @@ -308,7 +308,7 @@ announce_to_mind(soldier, "You have gained [returned] influence from [get_soldier_territories(soldier)] territories you have personally tagged.") /datum/gang/proc/announce_all_influence() - for(datum/mind/MG in bosses|gangsters) + for(var/datum/mind/MG in bosses|gangsters) announce_total_influence(MG) /datum/gang/proc/pay_territory_income_to_bosses() @@ -338,6 +338,11 @@ /datum/gang/proc/announce_total_influence(datum/mind/gangster_mind) announce_to_mind(gangster_mind, "[name] Gang: You now have a total of [get_influence(gangster_mind)] influence!") +/datum/gang/proc/reclaim_points(amount) + for(var/datum/mind/bawss in bosses) + adjust_influence(bawss, amount/bosses.len) + announce_to_mind(bawss, "[name] Gang: [amount/bosses.len] influence given from internal automatic restructuring.") + //Multiverse /datum/gang/multiverse diff --git a/code/game/gamemodes/gang/gang_items.dm b/code/game/gamemodes/gang/gang_items.dm index 2318ccd6041..245f682dfac 100644 --- a/code/game/gamemodes/gang/gang_items.dm +++ b/code/game/gamemodes/gang/gang_items.dm @@ -11,7 +11,7 @@ if(check_canbuy && !can_buy(user, gang, gangtool)) return FALSE var/real_cost = get_cost(user, gang, gangtool) - gangtool.points -= real_cost + gang.adjust_influence(user.mind, -real_cost) spawn_item(user, gang, gangtool) return TRUE @@ -23,7 +23,7 @@ to_chat(user, spawn_msg) /datum/gang_item/proc/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return gang && (gangtool.points >= get_cost(user, gang, gangtool)) && can_see(user, gang, gangtool) + return gang && (gang.get_influence(user.mind) >= get_cost(user, gang, gangtool)) && can_see(user, gang, gangtool) /datum/gang_item/proc/can_see(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return TRUE diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index 4257942ed02..380c8baf737 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -49,7 +49,7 @@ var/isboss = (user.mind == gang.bosses[1]) dat += "Registration: [gang.name] Gang [isboss ? "Boss" : "Lieutenant"]
" dat += "Organization Size: [gang.gangsters.len + gang.bosses.len] | Station Control: [round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%
" - dat += "Your Influence: [points]
" + dat += "Your Influence: [gang.get_influence(user.mind)]
" dat += "Time until Influence grows: [time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss")]
" dat += "
" @@ -245,9 +245,6 @@ ///////////// Internal tool used by gang regulars /////////// -/obj/item/device/gangtool/soldier - points = 5 - /obj/item/device/gangtool/soldier/New(mob/user) . = ..() gang = user.mind.gang_datum @@ -263,7 +260,7 @@ dat += "
Takeover In Progress:
[gang.domination_time_remaining()] seconds remain
" dat += "Registration: [gang.name] - Foot Soldier
" dat += "Organization Size: [gang.gangsters.len + gang.bosses.len] | Station Control: [round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%
" - dat += "Your Influence: [points]
" + dat += "Your Influence: [gang.get_influence(user.mind)]
" if(LAZYLEN(tags)) dat += "Your tags generate bonus influence for you.
You have tagged the following territories:" for(var/obj/effect/decal/cleanable/crayon/gang/T in tags) diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index d0f0e7546d9..00987d78595 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -50,9 +50,9 @@ if(istype(user_mind) && istype(gang) && islist(gang.tags_by_mind[user_mind])) //Clear us out of old ownership gang.tags_by_mind[user_mind] -= src if(istype(mind)) - if(!islist(G.tags_by_mind[mind])) - G.tags_by_mind[mind] = list() - G.tags_by_mind[mind] += src + if(!islist(gang.tags_by_mind[mind])) + gang.tags_by_mind[mind] = list() + gang.tags_by_mind[mind] += src user_mind = mind /obj/effect/decal/cleanable/crayon/gang/Destroy() From 7bde181832d58a5fa7802bfa566ad5fe1da6cf1c Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Fri, 2 Jun 2017 02:28:31 -0700 Subject: [PATCH 4/9] gangboss --- code/datums/mind.dm | 2 +- code/game/gamemodes/gang/gang.dm | 1 + code/game/gamemodes/gang/recaller.dm | 3 ++- code/game/gamemodes/wizard/artefact.dm | 2 +- code/modules/admin/verbs/onlyone.dm | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 7520e99997c..5242e883958 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -988,7 +988,7 @@ if(!G || (src in G.bosses)) return SSticker.mode.remove_gangster(src,0,2,1) - G.bosses += src + G.bosses[src] = GANGSTER_BOSS_STARTING_INFLUENCE gang_datum = G special_role = "[G.name] Gang Boss" G.add_gang_hud(src) diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index 342cc92070d..7a6f74a068d 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -88,6 +88,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ sleep(rand(10,100)) for(var/datum/gang/G in gangs) for(var/datum/mind/boss_mind in G.bosses) + G.bosses[boss_mind] = GANGSTER_BOSS_STARTING_INFLUENCE //Force influence to be put on it. G.add_gang_hud(boss_mind) forge_gang_objectives(boss_mind) greet_gang(boss_mind) diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index 380c8baf737..8533ccf49ee 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -146,8 +146,9 @@ gang.gangtools += src icon_state = "gangtool-[gang.color]" if(!(user.mind in gang.bosses)) + var/cached_influence = gang.gangsters[user.mind] SSticker.mode.remove_gangster(user.mind, 0, 2) - gang.bosses += user.mind + gang.bosses[user.mind] = cached_influence user.mind.gang_datum = gang user.mind.special_role = "[gang.name] Gang Lieutenant" gang.add_gang_hud(user.mind) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index a5904138328..fd73b82d740 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -243,7 +243,7 @@ if(!is_gangster(user)) var/datum/gang/multiverse/G = new(src, "[user.real_name]") SSticker.mode.gangs += G - G.bosses += user.mind + G.bosses[user.mind] = 0 G.add_gang_hud(user.mind) user.mind.gang_datum = G to_chat(user, "With your new found power you could easily conquer the station!") diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index feba659d725..fb08b727320 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -99,7 +99,7 @@ GLOBAL_VAR_INIT(highlander, FALSE) var/datum/gang/multiverse/G = new(src, "[H.real_name]") SSticker.mode.gangs += G - G.bosses += H.mind + G.bosses[H.mind] = 0 //No they don't use influence but this prevents runtimes. G.add_gang_hud(H.mind) H.mind.gang_datum = G From 77d56288a23981acaff339c56c2332ec43ff5555 Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Fri, 2 Jun 2017 02:29:50 -0700 Subject: [PATCH 5/9] defines --- code/__DEFINES/misc.dm | 5 +++++ code/game/gamemodes/gang/gang.dm | 3 --- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 40840ee0775..7b835435795 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -425,3 +425,8 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define GIBTONITE_ACTIVE 1 #define GIBTONITE_STABLE 2 #define GIBTONITE_DETONATE 3 + +//Gangster starting influences + +#define GANGSTER_SOLDIER_STARTING_INFLUENCE 5 +#define GANGSTER_BOSS_STARTING_INFLUENCE 20 diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index 7a6f74a068d..5b97280e9ac 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -1,9 +1,6 @@ //gang.dm //Gang War Game Mode -#define GANGSTER_SOLDIER_STARTING_INFLUENCE 5 -#define GANGSTER_BOSS_STARTING_INFLUENCE 20 - GLOBAL_LIST_INIT(gang_name_pool, list("Clandestine", "Prima", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib", "Tunnel", "Diablo", "Psyke", "Osiron", "Sirius", "Sleeping Carp")) GLOBAL_LIST_INIT(gang_colors_pool, list("red","orange","yellow","green","blue","purple", "white")) GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/obj/item/clothing/suit/jacket/leather/overcoat,/obj/item/clothing/suit/jacket/puffer,/obj/item/clothing/suit/jacket/miljacket,/obj/item/clothing/suit/jacket/puffer,/obj/item/clothing/suit/pirate,/obj/item/clothing/suit/poncho,/obj/item/clothing/suit/apron/overalls,/obj/item/clothing/suit/jacket/letterman)) From cc340cb73bbce417b2df3b5244b1553c0180bd2d Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Sat, 3 Jun 2017 14:00:14 -0700 Subject: [PATCH 6/9] stuff --- code/game/gamemodes/gang/gang_datum.dm | 18 +++--------------- code/game/gamemodes/gang/gang_items.dm | 15 +++++++++++++-- code/game/objects/objs.dm | 3 +++ code/modules/clothing/neck/ties.dm | 3 +++ 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index cc6cfff8205..a2e7220106e 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -262,26 +262,14 @@ return 0 var/static/inner = inner_outfit var/static/outer = outer_outfit - for(var/obj/C in gangbanger.contents) + for(var/obj/item/C in gangbanger.contents) if(C.type == inner_outfit) . += 2 continue - if(C.type == outer_outfit) + else if(C.type == outer_outfit) . += 2 continue - switch(C.type) - if(/obj/item/clothing/neck/necklace/dope) - . += 2 - if(/obj/item/clothing/head/collectable/petehat/gang) - . += 4 - if(/obj/item/clothing/shoes/gang) - . += 6 - if(/obj/item/clothing/mask/gskull) - . += 5 - if(/obj/item/clothing/gloves/gang) - . += 3 - if(/obj/item/weapon/storage/belt/military/gang) - . += 4 + . += C.gang_contraband_value() adjust_influence(gangsta, .) if(.) announce_to_mind(gangsta, "Your influential choice of clothing has increased your influence by [.] points!") diff --git a/code/game/gamemodes/gang/gang_items.dm b/code/game/gamemodes/gang/gang_items.dm index 245f682dfac..2799ca9d64d 100644 --- a/code/game/gamemodes/gang/gang_items.dm +++ b/code/game/gamemodes/gang/gang_items.dm @@ -118,6 +118,9 @@ name = "pimpin' hat" desc = "The undisputed king of style." +/obj/item/clothing/head/collectable/petehat/gang/gang_contraband_value() + return 4 + /datum/gang_item/clothing/mask name = "Golden Death Mask" id = "mask" @@ -129,6 +132,8 @@ icon_state = "gskull" desc = "Strike terror, and envy, into the hearts of your enemies." +/obj/item/clothing/mask/gskull/gang_contraband_value() + return 5 /datum/gang_item/clothing/shoes name = "Bling Boots" @@ -141,13 +146,15 @@ desc = "Stand aside peasants." icon_state = "bling" +/obj/item/clothing/shoes/gang/gang_contraband_value() + return 6 + /datum/gang_item/clothing/neck name = "Gold Necklace" id = "necklace" cost = 9 item_path = /obj/item/clothing/neck/necklace/dope - /datum/gang_item/clothing/hands name = "Decorative Brass Knuckles" id = "hand" @@ -160,6 +167,9 @@ icon_state = "knuckles" w_class = 3 +/obj/item/clothing/gloves/gang/gang_contraband_value() + return 3 + /datum/gang_item/clothing/belt name = "Badass Belt" id = "belt" @@ -173,7 +183,8 @@ desc = "The belt buckle simply reads 'BAMF'." storage_slots = 1 - +/obj/item/weapon/storage/belt/military/gang/gang_contraband_value() + return 4 /////////////////// //WEAPONS diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 20f8e8c15c7..4706e26245e 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -193,3 +193,6 @@ ..() if(unique_rename) to_chat(user, "Use a pen on it to rename it or change its description.") + +/obj/proc/gang_contraband_value() + return 0 diff --git a/code/modules/clothing/neck/ties.dm b/code/modules/clothing/neck/ties.dm index 59dc504098a..3affebc270e 100644 --- a/code/modules/clothing/neck/ties.dm +++ b/code/modules/clothing/neck/ties.dm @@ -164,6 +164,9 @@ icon_state = "bling" item_color = "bling" +/obj/item/clothing/neck/necklace/dope/gang_contraband_value() + return 2 + //////////////// //OONGA BOONGA// //////////////// From 93e3fa18a2916c60ab554165450e4321fec9453b Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 8 Jun 2017 13:04:58 -0400 Subject: [PATCH 7/9] Revert "Players cannot observe before PREGAME is reached" --- code/__DEFINES/mobs.dm | 7 +- code/controllers/subsystem/job.dm | 6 +- code/controllers/subsystem/ticker.dm | 14 +-- code/game/gamemodes/game_mode.dm | 25 +++-- code/game/gamemodes/objective.dm | 2 +- .../modules/mob/dead/new_player/new_player.dm | 99 ++++++++----------- 6 files changed, 64 insertions(+), 89 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 670a1778fb1..e5d1f4c19e1 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -2,11 +2,6 @@ //Misc mob defines -//Ready states at roundstart for mob/dead/new_player -#define PLAYER_NOT_READY 0 -#define PLAYER_READY_TO_PLAY 1 -#define PLAYER_READY_TO_OBSERVE 2 - //movement intent defines for the m_intent var #define MOVE_INTENT_WALK "walk" #define MOVE_INTENT_RUN "run" @@ -133,4 +128,4 @@ #define INCORPOREAL_MOVE_BASIC 1 #define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows -#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt +#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt \ No newline at end of file diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 731166e0a9f..05d8dbb5b7e 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -224,7 +224,7 @@ SUBSYSTEM_DEF(job) //Get the players who are ready for(var/mob/dead/new_player/player in GLOB.player_list) - if(player.ready == PLAYER_READY_TO_PLAY && player.mind && !player.mind.assigned_role) + if(player.ready && player.mind && !player.mind.assigned_role) unassigned += player initial_players_to_assign = unassigned.len @@ -456,7 +456,7 @@ SUBSYSTEM_DEF(job) var/level5 = 0 //banned var/level6 = 0 //account too young for(var/mob/dead/new_player/player in GLOB.player_list) - if(!(player.ready == PLAYER_READY_TO_PLAY && player.mind && !player.mind.assigned_role)) + if(!(player.ready && player.mind && !player.mind.assigned_role)) continue //This player is not ready if(jobban_isbanned(player, job.title)) level5++ @@ -489,7 +489,7 @@ SUBSYSTEM_DEF(job) Debug("Popcap overflow Check observer located, Player: [player]") to_chat(player, "You have failed to qualify for any job you desired.") unassigned -= player - player.ready = PLAYER_NOT_READY + player.ready = 0 /datum/controller/subsystem/job/Recover() diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 2a1f54e1712..55f3fc26afa 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -83,8 +83,6 @@ SUBSYSTEM_DEF(ticker) window_flash(C, ignorepref = TRUE) //let them know lobby has opened up. to_chat(world, "Welcome to [station_name()]!") current_state = GAME_STATE_PREGAME - //Everyone who wants to be an observer is now spawned - create_observers() fire() if(GAME_STATE_PREGAME) //lobby stats for statpanels @@ -94,7 +92,7 @@ SUBSYSTEM_DEF(ticker) totalPlayersReady = 0 for(var/mob/dead/new_player/player in GLOB.player_list) ++totalPlayers - if(player.ready == PLAYER_READY_TO_PLAY) + if(player.ready) ++totalPlayersReady if(start_immediately) @@ -133,7 +131,6 @@ SUBSYSTEM_DEF(ticker) declare_completion(force_ending) Master.SetRunLevel(RUNLEVEL_POSTGAME) - /datum/controller/subsystem/ticker/proc/setup() to_chat(world, "Starting game...") var/init_start = world.timeofday @@ -405,7 +402,7 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/create_characters() for(var/mob/dead/new_player/player in GLOB.player_list) - if(player.ready == PLAYER_READY_TO_PLAY && player.mind) + if(player.ready && player.mind) GLOB.joined_player_list += player.ckey player.create_character(FALSE) else @@ -796,13 +793,6 @@ SUBSYSTEM_DEF(ticker) else timeLeft = newtime -//Everyone who wanted to be an observer gets made one now -/datum/controller/subsystem/ticker/proc/create_observers() - for(var/mob/dead/new_player/player in GLOB.player_list) - if(player.ready == PLAYER_READY_TO_OBSERVE && player.mind) - //Break chain since this has a sleep input in it - addtimer(CALLBACK(player, /mob/dead/new_player.proc/make_me_an_observer), 1) - /datum/controller/subsystem/ticker/proc/load_mode() var/mode = trim(file2text("data/mode.txt")) if(mode) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index b5f2b1cec12..1fe8fcac652 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -54,7 +54,7 @@ /datum/game_mode/proc/can_start() var/playerC = 0 for(var/mob/dead/new_player/player in GLOB.player_list) - if((player.client)&&(player.ready == PLAYER_READY_TO_PLAY)) + if((player.client)&&(player.ready)) playerC++ if(!GLOB.Debug2) if(playerC < required_players || (maximum_players >= 0 && playerC > maximum_players)) @@ -308,7 +308,7 @@ // Ultimate randomizing code right here for(var/mob/dead/new_player/player in GLOB.player_list) - if(player.client && player.ready == PLAYER_READY_TO_PLAY) + if(player.client && player.ready) players += player // Shuffling, the players list is now ping-independent!!! @@ -316,7 +316,7 @@ players = shuffle(players) for(var/mob/dead/new_player/player in players) - if(player.client && player.ready == PLAYER_READY_TO_PLAY) + if(player.client && player.ready) if(role in player.client.prefs.be_special) if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans if(age_check(player.client)) //Must be older than the minimum age @@ -330,7 +330,7 @@ if(candidates.len < recommended_enemies) for(var/mob/dead/new_player/player in players) - if(player.client && player.ready == PLAYER_READY_TO_PLAY) + if(player.client && player.ready) if(!(role in player.client.prefs.be_special)) // We don't have enough people who want to be antagonist, make a seperate list of people who don't want to be one if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans drafted += player.mind @@ -352,7 +352,13 @@ else // Not enough scrubs, ABORT ABORT ABORT break - +/* + if(candidates.len < recommended_enemies && override_jobbans) //If we still don't have enough people, we're going to start drafting banned people. + for(var/mob/dead/new_player/player in players) + if (player.client && player.ready) + if(jobban_isbanned(player, "Syndicate") || jobban_isbanned(player, roletext)) //Nodrak/Carn: Antag Job-bans + drafted += player.mind +*/ if(restricted_jobs) for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist for(var/job in restricted_jobs) @@ -375,12 +381,17 @@ // recommended_enemies if the number of people with that role set to yes is less than recomended_enemies, // Less if there are not enough valid players in the game entirely to make recommended_enemies. - +/* +/datum/game_mode/proc/check_player_role_pref(var/role, var/mob/dead/new_player/player) + if(player.preferences.be_special & role) + return 1 + return 0 +*/ /datum/game_mode/proc/num_players() . = 0 for(var/mob/dead/new_player/P in GLOB.player_list) - if(P.client && P.ready == PLAYER_READY_TO_PLAY) + if(P.client && P.ready) . ++ /////////////////////////////////// diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 21b1180b3d3..039b4cc3a45 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -658,7 +658,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) var/n_p = 1 //autowin if (SSticker.current_state == GAME_STATE_SETTING_UP) for(var/mob/dead/new_player/P in GLOB.player_list) - if(P.client && P.ready == PLAYER_READY_TO_PLAY && P.mind!=owner) + if(P.client && P.ready && P.mind!=owner) n_p ++ else if (SSticker.IsRoundInProgress()) for(var/mob/living/carbon/human/P in GLOB.player_list) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index c26c1089fc7..c8bc7f4ff5b 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -29,25 +29,21 @@ /mob/dead/new_player/prepare_huds() return -/mob/dead/new_player/proc/linkify_ready(string, value) - return "Setup Character

" + + var/output = "

Setup Character

" if(!SSticker || SSticker.current_state <= GAME_STATE_PREGAME) - switch(ready) - if(PLAYER_NOT_READY) - output += "

\[ [linkify_ready("Ready", PLAYER_READY_TO_PLAY)] | Not Ready | [linkify_ready("Observe", PLAYER_READY_TO_OBSERVE)] \]

" - if(PLAYER_READY_TO_PLAY) - output += "

\[ Ready | [linkify_ready("Not Ready", PLAYER_NOT_READY)] | [linkify_ready("Observe", PLAYER_READY_TO_OBSERVE)] \]

" - if(PLAYER_READY_TO_OBSERVE) - output += "

\[ [linkify_ready("Ready", PLAYER_READY_TO_PLAY)]] | [linkify_ready("Not Ready", PLAYER_NOT_READY)] | Observe \]

" + if(ready) + output += "

\[ Ready | Not Ready \]

" + else + output += "

\[ Ready | Not Ready \]

" else output += "

View the Crew Manifest

" output += "

Join Game!

" - output += "

[linkify_ready("Observe", 2)]

" + + output += "

Observe

" if(!IsGuestKey(src.key)) if (SSdbcore.Connect()) @@ -112,23 +108,42 @@ return 1 if(href_list["ready"]) - if(SSticker) - var/tready = text2num(href_list["ready"]) - //Avoid updating ready if we're after PREGAME (they should use latejoin instead) - //This is likely not an actual issue but I don't have time to prove that this - //no longer is required - if(SSticker.current_state <= GAME_STATE_PREGAME) - ready = tready - //if it's post initialisation and they're trying to observe we do the needful - if(!SSticker.current_state < GAME_STATE_PREGAME && tready == PLAYER_READY_TO_OBSERVE) - ready = tready - make_me_an_observer() - return + if(!SSticker || SSticker.current_state <= GAME_STATE_PREGAME) // Make sure we don't ready up after the round has started + ready = text2num(href_list["ready"]) if(href_list["refresh"]) src << browse(null, "window=playersetup") //closes the player setup window new_player_panel() + if(href_list["observe"]) + + if(alert(src,"Are you sure you wish to observe? You will not be able to play this round!","Player Setup","Yes","No") == "Yes") + if(!client) + return 1 + var/mob/dead/observer/observer = new() + + spawning = 1 + + observer.started_as_observer = 1 + close_spawn_windows() + var/obj/O = locate("landmark*Observer-Start") + to_chat(src, "Now teleporting.") + if (O) + observer.loc = O.loc + else + to_chat(src, "Teleporting failed. The map is probably still loading...") + observer.key = key + observer.client = client + observer.set_ghost_appearance() + if(observer.client && observer.client.prefs) + observer.real_name = observer.client.prefs.real_name + observer.name = observer.real_name + observer.update_icon() + observer.stop_sound_channel(CHANNEL_LOBBYMUSIC) + QDEL_NULL(mind) + qdel(src) + return 1 + if(href_list["late_join"]) if(!SSticker || !SSticker.IsRoundInProgress()) to_chat(usr, "The round is either not ready, or has already finished...") @@ -258,42 +273,6 @@ return to_chat(src, "Vote successful.") -//When you cop out of the round (NB: this HAS A SLEEP FOR PLAYER INPUT IN IT) -/mob/dead/new_player/proc/make_me_an_observer() - if(QDELETED(src) || !src.client) - ready = PLAYER_NOT_READY - return FALSE - - var/this_is_like_playing_right = alert(src,"Are you sure you wish to observe? You will not be able to play this round!","Player Setup","Yes","No") - - if(QDELETED(src) || !src.client || this_is_like_playing_right != "Yes") - ready = PLAYER_NOT_READY - return FALSE - - var/mob/dead/observer/observer = new() - spawning = TRUE - - observer.started_as_observer = TRUE - close_spawn_windows() - var/obj/O = locate("landmark*Observer-Start") - to_chat(src, "Now teleporting.") - if (O) - observer.loc = O.loc - else - to_chat(src, "Teleporting failed. Ahelp an admin please") - stack_trace("There's no freaking observer landmark available on this map or you're making observers before the map is initialised") - observer.key = key - observer.client = client - observer.set_ghost_appearance() - if(observer.client && observer.client.prefs) - observer.real_name = observer.client.prefs.real_name - observer.name = observer.real_name - observer.update_icon() - observer.stop_sound_channel(CHANNEL_LOBBYMUSIC) - QDEL_NULL(mind) - qdel(src) - return TRUE - /mob/dead/new_player/proc/IsJobAvailable(rank) var/datum/job/job = SSjob.GetJob(rank) if(!job) From 6659dd7c697ffc68bd908a7cc14a3a08af021108 Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Thu, 8 Jun 2017 11:10:32 -0700 Subject: [PATCH 8/9] Update neck.dm --- code/modules/clothing/neck/neck.dm | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/code/modules/clothing/neck/neck.dm b/code/modules/clothing/neck/neck.dm index 45bbe23e36b..defe797ce7d 100644 --- a/code/modules/clothing/neck/neck.dm +++ b/code/modules/clothing/neck/neck.dm @@ -166,14 +166,3 @@ /obj/item/clothing/neck/necklace/dope/gang_contraband_value() return 2 - -//////////////// -//OONGA BOONGA// -//////////////// - -/obj/item/clothing/neck/talisman - name = "bone talisman" - desc = "A hunter's talisman, some say the old gods smile on those who wear it." - icon_state = "talisman" - item_color = "talisman" - armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25) From 987d8f6c5727af8f2404632b996584af0460f246 Mon Sep 17 00:00:00 2001 From: bagil Date: Thu, 8 Jun 2017 19:48:18 +0000 Subject: [PATCH 9/9] Automatic changelog compile, [ci skip] --- html/changelog.html | 20 ++++++++++++++++++++ html/changelogs/.all_changelog.yml | 17 +++++++++++++++++ html/changelogs/AutoChangeLog-pr-28137.yml | 4 ---- html/changelogs/AutoChangeLog-pr-28171.yml | 4 ---- html/changelogs/AutoChangeLog-pr-28178.yml | 8 -------- html/changelogs/AutoChangeLog-pr-28189.yml | 4 ---- 6 files changed, 37 insertions(+), 20 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-28137.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-28171.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-28178.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-28189.yml diff --git a/html/changelog.html b/html/changelog.html index 451bf7fd683..4533e657e97 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -60,6 +60,14 @@
  • traitors show up on antagHUD
+

Expletive updated:

+
    +
  • The detective's flask has Hearty Punch instead of whiskey.
  • +
  • The Detective's fedora no longer clips with hair.
  • +
  • Adds 91 new sprites to fix clipping issues with the Detective's fedora and hair.
  • +
  • Change the standard fedora to match the detective and treasure hunter variants.
  • +
  • Detective, Treasure Hunter, and standard fedoras now all benefit from new sprites.
  • +

Joan updated:

  • Tinkerer's Daemons are no longer totally disabled if you drop below the servant requirement.
  • @@ -84,11 +92,23 @@
  • The ORM now uses the intended amount of resources when making alloys
  • Cyborgs can no longer alt-click their material stacks to split them
+

Robustin updated:

+
    +
  • The blood cult can only attempt to summon Nar-Sie in one of three rooms that are randomly selected at round-start.
  • +

Shadowlight213 updated:

  • Tracking implants and chem implants have been added to rnd
  • Adrenaline and freedom implants have been removed from rnd
+

Xhuis updated:

+
    +
  • Defibrillator paddles will no longer stick to your hands, and will snap back onto the unit if you drop them somehow.
  • +
+

lzimann updated:

+
    +
  • Xeno queens can no longer be maids
  • +

oranges updated:

  • Added stungloves to the brain damage lines
  • diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 1dbe6c706ef..35569368690 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -11744,6 +11744,15 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2017-06-08: 4dplanner: - bugfix: traitors show up on antagHUD + Expletive: + - tweak: The detective's flask has Hearty Punch instead of whiskey. + - bugfix: The Detective's fedora no longer clips with hair. + - imageadd: Adds 91 new sprites to fix clipping issues with the Detective's fedora + and hair. + - imageadd: Change the standard fedora to match the detective and treasure hunter + variants. + - tweak: Detective, Treasure Hunter, and standard fedoras now all benefit from new + sprites. Joan: - balance: Tinkerer's Daemons are no longer totally disabled if you drop below the servant requirement. @@ -11770,8 +11779,16 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: Cremators now still work when there's only one thing in them - bugfix: The ORM now uses the intended amount of resources when making alloys - rscdel: Cyborgs can no longer alt-click their material stacks to split them + Robustin: + - balance: The blood cult can only attempt to summon Nar-Sie in one of three rooms + that are randomly selected at round-start. Shadowlight213: - rscadd: Tracking implants and chem implants have been added to rnd - rscdel: Adrenaline and freedom implants have been removed from rnd + Xhuis: + - tweak: Defibrillator paddles will no longer stick to your hands, and will snap + back onto the unit if you drop them somehow. + lzimann: + - rscdel: Xeno queens can no longer be maids oranges: - rscadd: Added stungloves to the brain damage lines diff --git a/html/changelogs/AutoChangeLog-pr-28137.yml b/html/changelogs/AutoChangeLog-pr-28137.yml deleted file mode 100644 index 7ac18b1e849..00000000000 --- a/html/changelogs/AutoChangeLog-pr-28137.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - balance: "The blood cult can only attempt to summon Nar-Sie in one of three rooms that are randomly selected at round-start." diff --git a/html/changelogs/AutoChangeLog-pr-28171.yml b/html/changelogs/AutoChangeLog-pr-28171.yml deleted file mode 100644 index f7b64b0f08d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-28171.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "lzimann" -delete-after: True -changes: - - rscdel: "Xeno queens can no longer be maids" diff --git a/html/changelogs/AutoChangeLog-pr-28178.yml b/html/changelogs/AutoChangeLog-pr-28178.yml deleted file mode 100644 index ff5abf73f1e..00000000000 --- a/html/changelogs/AutoChangeLog-pr-28178.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Expletive" -delete-after: True -changes: - - tweak: "The detective's flask has Hearty Punch instead of whiskey." - - bugfix: "The Detective's fedora no longer clips with hair." - - imageadd: "Adds 91 new sprites to fix clipping issues with the Detective's fedora and hair." - - imageadd: "Change the standard fedora to match the detective and treasure hunter variants." - - tweak: "Detective, Treasure Hunter, and standard fedoras now all benefit from new sprites." diff --git a/html/changelogs/AutoChangeLog-pr-28189.yml b/html/changelogs/AutoChangeLog-pr-28189.yml deleted file mode 100644 index eeed3b359b0..00000000000 --- a/html/changelogs/AutoChangeLog-pr-28189.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - tweak: "Defibrillator paddles will no longer stick to your hands, and will snap back onto the unit if you drop them somehow."