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."