diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm
index 9db0d34f83e..f09ddde72ff 100644
--- a/code/game/gamemodes/gang/gang.dm
+++ b/code/game/gamemodes/gang/gang.dm
@@ -34,8 +34,8 @@
var/A_timer = "OFFLINE"
var/B_timer = "OFFLINE"
//How many attempts at domination each team is allowed
- var/A_dominations = 2
- var/B_dominations = 2
+ var/A_dominations = 3
+ var/B_dominations = 3
///////////////////////////
//Announces the game type//
///////////////////////////
@@ -54,7 +54,11 @@
if(config.protect_assistant_from_antagonist)
restricted_jobs += "Assistant"
- if(antag_candidates.len >= 2)
+ //Spawn more bosses depending on server population
+ assign_bosses(1)
+ if(num_players() >= 30) //30
+ assign_bosses()
+ if(num_players() >= 40) //40
assign_bosses()
if(!A_bosses.len || !B_bosses.len)
@@ -91,20 +95,23 @@
check_win()
-/datum/game_mode/gang/proc/assign_bosses()
+/datum/game_mode/gang/proc/assign_bosses(var/leader)
+ if(antag_candidates.len < 2) //Not enough bosses
+ return
+
var/datum/mind/boss = pick(antag_candidates)
A_bosses += boss
antag_candidates -= boss
- boss.special_role = "[gang_name("A")] Gang (A) Boss"
+ boss.special_role = "[gang_name("A")] Gang (A) [leader ? "Boss" : "Lieutenant"]"
boss.restricted_roles = restricted_jobs
- log_game("[boss.key] has been selected as the boss for the [gang_name("A")] Gang (A)")
+ log_game("[boss.key] has been selected as a [leader ? "Boss" : "Lieutenant"] for the [gang_name("A")] Gang (A)")
boss = pick(antag_candidates)
B_bosses += boss
antag_candidates -= boss
- boss.special_role = "[gang_name("B")] Gang (B) Boss"
+ boss.special_role = "[gang_name("B")] Gang (B) [leader ? "Boss" : "Lieutenant"]"
boss.restricted_roles = restricted_jobs
- log_game("[boss.key] has been selected as the boss for the [gang_name("B")] Gang (B)")
+ log_game("[boss.key] has been selected as a [leader ? "Boss" : "Lieutenant"] for the [gang_name("B")] Gang (B)")
/datum/game_mode/proc/forge_gang_objectives(var/datum/mind/boss_mind)
if(istype(ticker.mode, /datum/game_mode/gang))
@@ -127,8 +134,9 @@
/datum/game_mode/proc/greet_gang(var/datum/mind/boss_mind, var/you_are=1)
var/obj_count = 1
+ var/isboss = (boss_mind==A_bosses[1] || boss_mind==B_bosses[1])
if (you_are)
- boss_mind.current << "You are the founding member of the [(boss_mind in A_bosses) ? gang_name("A") : gang_name("B")] Gang!"
+ boss_mind.current << "You are [isboss ? "the Boss of" : "a Lieutenant in"] the [(boss_mind in A_bosses) ? gang_name("A") : gang_name("B")] Gang!"
for(var/datum/objective/objective in boss_mind.objectives)
boss_mind.current << "Objective #[obj_count]: [objective.explanation_text]"
obj_count++
@@ -151,13 +159,20 @@
if(!istype(mob))
return
+ var/isboss
if (mob.mind)
+ isboss = (mob.mind==A_bosses[1] || mob.mind==B_bosses[1])
if (mob.mind.assigned_role == "Clown")
mob << "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself."
mob.dna.remove_mutation(CLOWNMUT)
+ var/obj/item/device/gangtool/gangtool
+ if(isboss)
+ gangtool = new(mob)
+ else
+ var/obj/item/device/gangtool/lt/lt_tool = new(mob)
+ gangtool = lt_tool
var/obj/item/weapon/pen/gang/T = new(mob)
- var/obj/item/device/gangtool/gangtool = new(mob)
var/obj/item/toy/crayon/spraycan/gang/SC = new(mob)
var/list/slots = list (
@@ -176,8 +191,9 @@
. += 1
else
gangtool.register_device(mob)
- mob << "The Gangtool in your [where] will allow you to purchase items, send messages to your gangsters and recall the emergency shuttle from anywhere on the station."
- mob << "You can also promote your gang members to lieutenant by having them use an unregistered gangtool. Unlike regular gangsters, Lieutenants cannot be deconverted and are able to use recruitment pens and gangtools."
+ mob << "The Gangtool in your [where] will allow you to use your influence to purchase weapons and equipment and communicate with your gangsters."
+ if(isboss)
+ mob << "As the Gang Boss you also have the power to recall the emergency shuttle from anywhere on the station."
var/where2 = mob.equip_in_one_of_slots(T, slots)
if (!where2)
@@ -198,7 +214,7 @@
//Used by recallers when purchasing a gang outfit. First time a gang outfit is purchased the buyer decides a gang style which is stored so gang outfits are uniform
-/datum/game_mode/proc/gang_outfit(mob/user,var/obj/item/device/gangtool/gangtool,var/gang)
+/datum/game_mode/proc/gang_outfit(mob/living/carbon/user,var/obj/item/device/gangtool/gangtool,var/gang)
if(!user || !gangtool || !gang)
return 0
if(!gangtool.can_use(user))
@@ -208,12 +224,18 @@
var/style
if(gang == "A")
if(!A_style)
- A_style = input("Pick an outfit style.", "Pick Style") as null|anything in gang_style_list
+ if(gangtool.outfits >=3) //Gives the gang boss a few minutes to pick a style first before someone else gets to
+ A_style = input("Pick an outfit style.", "Pick Style") as null|anything in gang_style_list
+ else
+ user << "Your gang boss hasn't picked a style yet!"
style = A_style
if(gang == "B")
if(!B_style)
- B_style = input("Pick an outfit style.", "Pick Style") as null|anything in gang_style_list
+ if(gangtool.outfits >=3) //Gives the gang boss a few minutes to pick a style first before someone else gets to
+ B_style = input("Pick an outfit style.", "Pick Style") as null|anything in gang_style_list
+ else
+ user << "Your gang boss hasn't picked a style yet!"
style = B_style
if(!style)
@@ -252,6 +274,7 @@
outfit.armor = list(melee = 20, bullet = 30, laser = 10, energy = 10, bomb = 20, bio = 0, rad = 0)
outfit.desc += " Tailored for the [gang_name(gang)] Gang to offer the wearer moderate protection against ballistics and physical trauma."
outfit.gang = gang
+ user.put_in_any_hand_if_possible(outfit)
return 1
return 0
diff --git a/code/game/gamemodes/gang/gang_pen.dm b/code/game/gamemodes/gang/gang_pen.dm
index 0b978d39c4f..a085f3c7bb0 100644
--- a/code/game/gamemodes/gang/gang_pen.dm
+++ b/code/game/gamemodes/gang/gang_pen.dm
@@ -43,4 +43,73 @@
cooldown = 0
icon_state = "pen"
var/mob/M = get(src, /mob)
- M << "\icon[src] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly."
\ No newline at end of file
+ M << "\icon[src] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly."
+
+
+/obj/item/weapon/implant/gang
+ name = "gang implant"
+ desc = "Makes you a gangster or such."
+ activated = 0
+
+/obj/item/weapon/implant/gang/get_data()
+ var/dat = {"Implant Specifications:
+ Name: Criminal Loyalty Implant
+ Life: A few seconds after injection.
+ Important Notes: Illegal
+
+ Implant Details:
+ Function: Contains a small pod of nanobots that change the host's brain to be loyal to a certain organization.
+ Special Features: This device will also emit a small EMP pulse, destroying any other implants within the host's brain.
+ Integrity: Implant's EMP function will destroy itself in the process."}
+ return dat
+
+
+//////////////
+// IMPLANTS //
+//////////////
+
+/obj/item/weapon/implant/gang
+ name = "gang implant"
+ desc = "Makes you a gangster or such."
+ activated = 0
+ var/gang
+
+/obj/item/weapon/implant/gang/New(loc,var/setgang)
+ ..()
+ gang = setgang
+
+/obj/item/weapon/implant/gang/get_data()
+ var/dat = {"Implant Specifications:
+ Name: Criminal Loyalty Implant
+ Life: A few seconds after injection.
+ Important Notes: Illegal
+
+ Implant Details:
+ Function: Contains a small pod of nanobots that change the host's brain to be loyal to a certain organization.
+ Special Features: This device will also emit a small EMP pulse, destroying any other implants within the host's brain.
+ Integrity: Implant's EMP function will destroy itself in the process."}
+ return dat
+
+/obj/item/weapon/implant/gang/implanted(mob/target)
+ ..()
+ for(var/obj/item/weapon/implant/I in target)
+ if(I != src)
+ qdel(I)
+
+ ticker.mode.remove_gangster(target.mind,0,1,1)
+ if(ticker.mode.add_gangster(target.mind,gang))
+ target.Paralyse(5)
+ else
+ target.visible_message("[target] seems to resist the implant!", "You feel the influence of your enemies try to invade your mind!")
+ qdel(src)
+
+/obj/item/weapon/implanter/gang
+ name = "implanter-gang"
+
+/obj/item/weapon/implanter/gang/New(loc,var/gang)
+ if(!gang)
+ qdel(src)
+ return
+ imp = new /obj/item/weapon/implant/gang(src,gang)
+ ..()
+ update_icon()
\ No newline at end of file
diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm
index f8bfa02bbd8..15c604a2722 100644
--- a/code/game/gamemodes/gang/recaller.dm
+++ b/code/game/gamemodes/gang/recaller.dm
@@ -10,10 +10,9 @@
throw_range = 7
flags = CONDUCT
var/gang //Which gang uses this?
- var/boss = 1 //Is this the original boss?
+ var/boss = 1 //If this gangtool belongs to the big boss
var/recalling = 0
var/outfits = 3
- var/free_pen = 0
/obj/item/device/gangtool/New() //Initialize supply point income if it hasn't already been started
if(!ticker.mode.gang_points)
@@ -31,15 +30,7 @@
var/dat
if(!gang)
dat += "This device is not registered.
"
- if(user.mind in (ticker.mode.A_bosses | ticker.mode.B_bosses))
- dat += "Give this device to another member of your organization to use to promote them.
"
- dat += "If this is meant as a spare device for yourself:
"
- dat += "Register Device
"
- else if (gang_bosses < 3)
- dat += "You have been selected for a promotion!
"
- dat += "Register Device
"
- else
- dat += "No promotions available: All positions filled."
+ dat += "Register Device
"
else
var/datum/game_mode/gang/gangmode
if(istype(ticker.mode, /datum/game_mode/gang))
@@ -54,9 +45,9 @@
if(isnum(timer))
dat += "Takeover In Progress:
[timer] seconds remain
"
- dat += "Registration: [(gang == "A")? gang_name("A") : gang_name("B")] Gang [boss ? "Administrator" : "Lieutenant"]
"
+ dat += "Registration: [(gang == "A")? gang_name("A") : gang_name("B")] Gang [boss ? "Boss" : "Lieutenant"]
"
dat += "Organization Size: [gang_size] | Station Control: [round((gang_territory/start_state.num_territories)*100, 1)]%
"
- dat += "Influence: [points]
"
+ dat += "Gang Influence: [points] | Outfit Stock: [outfits]
"
dat += "Time until Influence grows: [(points >= 999) ? ("--:--") : (time2text(ticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]
"
dat += "
"
dat += "Gangtool Functions:
"
@@ -66,7 +57,7 @@
dat += "Create Armored Gang Outfit
"
else
dat += "Create Gang Outfit (Restocking)
"
- if(gangmode)
+ if(gangmode && boss)
dat += "Recall Emergency Shuttle
"
dat += "
"
@@ -151,24 +142,23 @@
else
dat += "C4 Explosive
"
- if(free_pen)
- dat += "(ONE FREE) "
+ dat += "(10 Influence) "
+ if(points >= 10)
+ dat += "Implant Breaker
"
else
- dat += "(50 Influence) "
- if(free_pen || (points >= 50))
+ dat += "Implant Breaker
"
+
+ dat += "(50 Influence) "
+ if(points >= 50)
dat += "Recruitment Pen
"
else
dat += "Recruitment Pen
"
- var/tool_cost = (boss ? 10 : 30)
- var/gangtooldesc = "Promote a Gangster ([3-gang_bosses] left)"
- if(gang_bosses >= 3)
- gangtooldesc = "Additional Gangtools"
- dat += "([tool_cost] Influence) "
- if(points >= tool_cost)
- dat += "[gangtooldesc]
"
+ dat += "(30 Influence) "
+ if(points >= 30)
+ dat += "Spare Gangtool
"
else
- dat += "[gangtooldesc]
"
+ dat += "Spare Gangtool
"
if(gangmode)
if(gang == "A" ? !gangmode.A_dominations : !gangmode.B_dominations)
@@ -184,7 +174,7 @@
dat += "
"
dat += "Refresh
"
- var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v2.1", 340, 600)
+ var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v2.2", 340, 620)
popup.set_content(dat)
popup.open()
@@ -196,10 +186,6 @@
add_fingerprint(usr)
- if(recalling)
- usr << "Device is busy. Shuttle recall in progress."
- return
-
if(href_list["register"])
register_device(usr)
@@ -230,39 +216,41 @@
if(points >= 50)
item_type = /obj/item/weapon/gun/projectile/automatic/mini_uzi
points = 50
+ if("9mmammo")
+ if(points >= 20)
+ item_type = /obj/item/ammo_box/magazine/uzim9mm
+ points = 20
if("scroll")
if(points >= 30)
item_type = /obj/item/weapon/sleeping_carp_scroll
+ usr << "Anyone who reads the sleeping carp scroll will learn secrets of the sleeping carp martial arts style."
points = 30
if("wrestlingbelt")
if(points >= 20)
item_type = /obj/item/weapon/storage/belt/champion/wrestling
+ usr << "Anyone wearing the wresting belt will know how to be effective with wrestling."
points = 20
if("bostaff")
if(points >= 10)
item_type = /obj/item/weapon/twohanded/bostaff
points = 10
- if("9mmammo")
- if(points >= 20)
- item_type = /obj/item/ammo_box/magazine/uzim9mm
- points = 20
if("C4")
if(points >= 10)
item_type = /obj/item/weapon/c4
points = 10
if("pen")
- if(free_pen)
- item_type = /obj/item/weapon/pen/gang
- free_pen = 0
- points = 0
- else if(points >= 50)
+ if(points >= 50)
item_type = /obj/item/weapon/pen/gang
points = 50
+ if("implant")
+ if(points >= 10)
+ item_type = /obj/item/weapon/implanter/gang
+ usr << "The implant breaker destroys all other implants within the target before trying to recruit them to your gang. Implant is destroyed after one use."
+ points = 10
if("gangtool")
- var/tool_cost = (boss ? 10 : 30)
- if(points >= tool_cost)
+ if(points >= 30)
item_type = /obj/item/device/gangtool/lt
- points = tool_cost
+ points = 30
if("dominator")
if(istype(ticker.mode, /datum/game_mode/gang))
var/datum/game_mode/gang/mode = ticker.mode
@@ -285,6 +273,7 @@
if(points >= 30)
item_type = /obj/machinery/dominator
+ usr << "The dominator will secure your gang's dominance over the station. Turn it on when you are ready to defend it."
points = 30
if(item_type)
@@ -293,7 +282,7 @@
else if(gang == "B")
ticker.mode.gang_points.B -= points
if(ispath(item_type))
- var/obj/purchased = new item_type(get_turf(usr))
+ var/obj/purchased = new item_type(get_turf(usr),gang)
var/mob/living/carbon/human/H = usr
H.put_in_any_hand_if_possible(purchased)
if(points)
@@ -306,11 +295,12 @@
else if(href_list["choice"])
switch(href_list["choice"])
if("recall")
- recall(usr)
+ if(boss)
+ recall(usr)
if("outfit")
if(outfits > 0)
- ticker.mode.gang_outfit(usr,src,gang)
- outfits -= 1
+ if(ticker.mode.gang_outfit(usr,src,gang))
+ outfits -= 1
if("ping")
ping_gang(usr)
attack_self(usr)
@@ -331,7 +321,7 @@
else if(gang == "B")
members += ticker.mode.B_bosses | ticker.mode.B_gang
if(members.len)
- var/ping = "[gang_name(gang)] [boss ? "Gang Boss" : "Gang Lieutenant"]: [message]"
+ var/ping = "[gang_name(gang)] [boss ? "Gang Boss" : "Lieutenant"] [user.real_name]: [message]"
for(var/datum/mind/ganger in members)
if((ganger.current.z <= 2) && (ganger.current.stat == CONSCIOUS))
ganger.current << ping
@@ -341,46 +331,14 @@
/obj/item/device/gangtool/proc/register_device(var/mob/user)
- if(!(user.mind in (ticker.mode.A_bosses|ticker.mode.B_bosses)))
- var/gang_bosses = ((gang == "A")? ticker.mode.A_bosses.len : ticker.mode.B_bosses.len)
- if(gang_bosses >= 3)
- user << "\icon[src] Error: All positions filled."
- return
-
- if(jobban_isbanned(user, "gangster") || jobban_isbanned(user, "Syndicate"))
- user << "\icon[src] ACCESS DENIED: Blacklisted user."
- return 0
-
- var/promoted
- if(user.mind in (ticker.mode.A_gang | ticker.mode.A_bosses))
+ if(user.mind in ticker.mode.A_bosses)
ticker.mode.A_tools += src
gang = "A"
icon_state = "gangtool-a"
- if(!(user.mind in ticker.mode.A_bosses))
- ticker.mode.remove_gangster(user.mind, 0, 2)
- ticker.mode.A_bosses += user.mind
- user.mind.special_role = "[gang_name("A")] Gang (A) Lieutenant"
- ticker.mode.update_gang_icons_added(user.mind, "A")
- log_game("[key_name(user)] has been promoted to Lieutenant in the [gang_name("A")] Gang (A)")
- promoted = 1
- else if(user.mind in (ticker.mode.B_gang | ticker.mode.B_bosses))
+ else if(user.mind in ticker.mode.B_bosses)
ticker.mode.B_tools += src
gang = "B"
icon_state = "gangtool-b"
- if(!(user.mind in ticker.mode.B_bosses))
- ticker.mode.remove_gangster(user.mind, 0, 2)
- ticker.mode.B_bosses += user.mind
- user.mind.special_role = "[gang_name("B")] Gang (B) Lieutenant"
- ticker.mode.update_gang_icons_added(user.mind, "B")
- log_game("[key_name(user)] has been promoted to Lieutenant in the [gang_name("B")] Gang (B)")
- promoted = 1
- if(promoted)
- ticker.mode.message_gangtools(((gang=="A")? ticker.mode.A_tools : ticker.mode.B_tools), "[user] has been promoted to Lieutenant.")
- user << "You have been promoted to Lieutenant!"
- ticker.mode.forge_gang_objectives(user.mind)
- ticker.mode.greet_gang(user.mind,0)
- user << "The Gangtool you registered will allow you to purchase items, send messages to your gangsters and to recall the emergency shuttle from anywhere on the station."
- user << "Unlike regular gangsters, you may use recruitment pens to add recruits to your gang. Use them on unsuspecting crew members to recruit them. Don't forget to get your one free pen from the gangtool."
if(!gang)
usr << "ACCESS DENIED: Unauthorized user."
@@ -392,6 +350,7 @@
return 0
var/datum/game_mode/gang/mode = ticker.mode
+ mode.message_gangtools(((gang=="A")? ticker.mode.A_tools : ticker.mode.B_tools), "[usr] is attempting to recall the emergency shuttle.")
recalling = 1
loc << "\icon[src]Generating shuttle recall order with codes retrieved from last call signal..."
@@ -461,4 +420,3 @@
/obj/item/device/gangtool/lt
boss = 0
outfits = 1
- free_pen = 1
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 7031edd688f..730e797e74b 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -238,17 +238,24 @@
/obj/item/weapon/implant/loyalty/implanted(mob/target)
..()
- if((target.mind in ticker.mode.head_revolutionaries) || is_shadow_or_thrall(target))
+ if((target.mind in (ticker.mode.head_revolutionaries | ticker.mode.A_bosses | ticker.mode.B_bosses)) || is_shadow_or_thrall(target))
target.visible_message("[target] seems to resist the implant!", "You feel the corporate tendrils of Nanotrasen try to invade your mind!")
return 0
if(target.mind in ticker.mode.revolutionaries)
ticker.mode.remove_revolutionary(target.mind)
- if(target.mind in (ticker.mode.cult| ticker.mode.A_bosses | ticker.mode.B_bosses | ticker.mode.A_gang | ticker.mode.B_gang))
+ if(target.mind in (ticker.mode.A_gang | ticker.mode.B_gang))
+ ticker.mode.remove_gangster(target.mind,exclude_bosses=1)
+ target.visible_message("[src] was destroyed in the process!", "You feel a surge of loyalty towards Nanotrasen.")
+ return
+ if(target.mind in ticker.mode.cult)
target << "You feel the corporate tendrils of Nanotrasen try to invade your mind!"
else
target << "You feel a surge of loyalty towards Nanotrasen."
return 1
+/obj/item/weapon/implant/loyalty/Destroy()
+ loc << "You feel a sense of liberation as Nanotrasen's grip on your mind fades away."
+ ..()
/obj/item/weapon/implant/adrenalin
name = "adrenal implant"
diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm
index 291b287fc14..77d634dc35f 100644
--- a/code/game/objects/items/weapons/implants/implanter.dm
+++ b/code/game/objects/items/weapons/implants/implanter.dm
@@ -20,11 +20,16 @@
if(!iscarbon(M))
return
if(user && imp)
+ if(M.head)
+ user << "[M]'s [M.head.name] is in the way! Take it off first!"
+ return
M.visible_message("[user] is attemping to implant [M].")
var/turf/T = get_turf(M)
if(T && (M == user || do_after(user, 50, target = M)))
if(user && M && (get_turf(M) == T) && src && imp)
+ if(M.head)
+ return
M.visible_message("[user] has implanted [M].", "[user] implants you with the implant.")
add_logs(user, M, "implanted", object="[name]")
user << "You implant the implant into [M]."
diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm
index 8e21fae2ff2..86851838afc 100644
--- a/code/modules/surgery/implant_removal.dm
+++ b/code/modules/surgery/implant_removal.dm
@@ -26,8 +26,6 @@
/datum/surgery_step/extract_implant/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(I)
user.visible_message("[user] successfully removes [I] from [target]'s [target_zone]!", "You successfully remove [I] from [target]'s [target_zone].")
- if(istype(I, /obj/item/weapon/implant/loyalty))
- target << "You feel a sense of liberation as Nanotrasen's grip on your mind fades away."
qdel(I)
if(istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/H = target
diff --git a/html/changelogs/ikarrus-penis.yml b/html/changelogs/ikarrus-penis.yml
new file mode 100644
index 00000000000..899bb42f0de
--- /dev/null
+++ b/html/changelogs/ikarrus-penis.yml
@@ -0,0 +1,41 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# spellcheck (typo fixes)
+# experiment
+# tgs (TG-ported fixes?)
+#################################
+
+# Your name.
+author: N3X15
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
+# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Multiple gang leaders are spawned at round start, the number which depends on server population"
+ - tweak: "Only the gang boss can recall the shuttle"
+ - rscdel: "Gangsters can no longer be promoted mid-game."
+ - rscadd: "Security can once again deconvert gangsters with loyalty implants"
+ - rscadd: "Added an Implant Breaker item to the gangtool as a purchasable item for 10 influence each
* They are a one-use item that destroys all implants in the target, including loyalty implants
* They will also attempt to recruit the target before destroying itself"
+ - rscdel: "Implanters no longer work if the target is wearing headgear. Remove them first."
\ No newline at end of file