Gang Update: Implants Edition

- Multiple gang leaders are spawned at round start, the number which depends on server population
- Only one boss per gang, the rest are lieutenants
- Only the gang boss can recall the shuttle
- Gangsters can no longer be promoted mid-game.
- Security can once again deconvert gangsters with loyalty implants
  - A message is shown if the deconversion destroys the implant in the process

- 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
  - As this is an implanter it requires the target to remain still for a few seconds to administer it
- Implanters no longer work if the target is wearing headgear. Remove them first

- Added help text whenever you buy certain items from the gangtool
- Spare gangtools now cost 30 influence for everyone
  - They no longer give you a free pen
- Increases domination limit back to 3
- Purchased outfits are automatically equipped in your hand, if possible
- Gang boss has a 3 minute window at round start to select an outfit style. If he doesn't select one, the his lieutenants may pick one. No gang outfits can be created without a style picked first.
  - This is just to give the gang boss the first opportunity to pick an outfit style for his gang
- You can now see how many outfits your gangtool has in stock
- Outfits are no longer used up if you cancel the style selection prompt
- Loyalty implant destruction message has been moved to its Destroy()
This commit is contained in:
Ikarrus
2015-06-29 23:50:06 -06:00
parent 78daa21670
commit 1e30fc4b6c
7 changed files with 204 additions and 103 deletions
+38 -15
View File
@@ -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 << "<FONT size=3 color=red><B>You are the founding member of the [(boss_mind in A_bosses) ? gang_name("A") : gang_name("B")] Gang!</B></FONT>"
boss_mind.current << "<FONT size=3 color=red><B>You are [isboss ? "the Boss of" : "a Lieutenant in"] the [(boss_mind in A_bosses) ? gang_name("A") : gang_name("B")] Gang!</B></FONT>"
for(var/datum/objective/objective in boss_mind.objectives)
boss_mind.current << "<B>Objective #[obj_count]</B>: [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 <b>Gangtool</b> 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 <b>lieutenant</b> 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 <b>Gangtool</b> in your [where] will allow you to use your influence to purchase weapons and equipment and communicate with your gangsters."
if(isboss)
mob << "<b>As the Gang Boss</b> 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 << "<span class='warning'>Your gang boss hasn't picked a style yet!</span>"
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 << "<span class='warning'>Your gang boss hasn't picked a style yet!</span>"
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
+70 -1
View File
@@ -43,4 +43,73 @@
cooldown = 0
icon_state = "pen"
var/mob/M = get(src, /mob)
M << "<span class='notice'>\icon[src] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly.</span>"
M << "<span class='notice'>\icon[src] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly.</span>"
/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 = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Criminal Loyalty Implant<BR>
<b>Life:</b> A few seconds after injection.<BR>
<b>Important Notes:</b> Illegal<BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a small pod of nanobots that change the host's brain to be loyal to a certain organization.<BR>
<b>Special Features:</b> This device will also emit a small EMP pulse, destroying any other implants within the host's brain.<BR>
<b>Integrity:</b> 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 = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Criminal Loyalty Implant<BR>
<b>Life:</b> A few seconds after injection.<BR>
<b>Important Notes:</b> Illegal<BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a small pod of nanobots that change the host's brain to be loyal to a certain organization.<BR>
<b>Special Features:</b> This device will also emit a small EMP pulse, destroying any other implants within the host's brain.<BR>
<b>Integrity:</b> 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("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the influence of your enemies try to invade your mind!</span>")
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()
+41 -83
View File
@@ -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.<br><br>"
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.<hr>"
dat += "If this is meant as a spare device for yourself:<br>"
dat += "<a href='?src=\ref[src];register=1'>Register Device</a><br>"
else if (gang_bosses < 3)
dat += "You have been selected for a promotion!<br>"
dat += "<a href='?src=\ref[src];register=1'>Register Device</a><br>"
else
dat += "No promotions available: All positions filled."
dat += "<a href='?src=\ref[src];register=1'>Register Device</a><br>"
else
var/datum/game_mode/gang/gangmode
if(istype(ticker.mode, /datum/game_mode/gang))
@@ -54,9 +45,9 @@
if(isnum(timer))
dat += "<center><font color='red'>Takeover In Progress:<br><B>[timer] seconds remain</B></font></center><br>"
dat += "Registration: <B>[(gang == "A")? gang_name("A") : gang_name("B")] Gang [boss ? "Administrator" : "Lieutenant"]</B><br>"
dat += "Registration: <B>[(gang == "A")? gang_name("A") : gang_name("B")] Gang [boss ? "Boss" : "Lieutenant"]</B><br>"
dat += "Organization Size: <B>[gang_size]</B> | Station Control: <B>[round((gang_territory/start_state.num_territories)*100, 1)]%</B><br>"
dat += "Influence: <B>[points]</B><br>"
dat += "Gang Influence: <B>[points]</B> | Outfit Stock: <B>[outfits]</B><br>"
dat += "Time until Influence grows: <B>[(points >= 999) ? ("--:--") : (time2text(ticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]</B><br>"
dat += "<hr>"
dat += "<B>Gangtool Functions:</B><br>"
@@ -66,7 +57,7 @@
dat += "<a href='?src=\ref[src];choice=outfit'>Create Armored Gang Outfit</a><br>"
else
dat += "<b>Create Gang Outfit</b> (Restocking)<br>"
if(gangmode)
if(gangmode && boss)
dat += "<a href='?src=\ref[src];choice=recall'>Recall Emergency Shuttle</a><br>"
dat += "<br>"
@@ -151,24 +142,23 @@
else
dat += "C4 Explosive<br>"
if(free_pen)
dat += "(ONE FREE) "
dat += "(10 Influence) "
if(points >= 10)
dat += "<a href='?src=\ref[src];purchase=implant'>Implant Breaker</a><br>"
else
dat += "(50 Influence) "
if(free_pen || (points >= 50))
dat += "Implant Breaker<br>"
dat += "(50 Influence) "
if(points >= 50)
dat += "<a href='?src=\ref[src];purchase=pen'>Recruitment Pen</a><br>"
else
dat += "Recruitment Pen<br>"
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 += "<a href='?src=\ref[src];purchase=gangtool'>[gangtooldesc]</a><br>"
dat += "(30 Influence) "
if(points >= 30)
dat += "<a href='?src=\ref[src];purchase=gangtool'>Spare Gangtool</a><br>"
else
dat += "[gangtooldesc]<br>"
dat += "Spare Gangtool<br>"
if(gangmode)
if(gang == "A" ? !gangmode.A_dominations : !gangmode.B_dominations)
@@ -184,7 +174,7 @@
dat += "<br>"
dat += "<a href='?src=\ref[src];choice=refresh'>Refresh</a><br>"
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 << "<span class='warning'>Device is busy. Shuttle recall in progress.</span>"
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 << "<span class='notice'>Anyone who reads the <b>sleeping carp scroll</b> will learn secrets of the sleeping carp martial arts style.</span>"
points = 30
if("wrestlingbelt")
if(points >= 20)
item_type = /obj/item/weapon/storage/belt/champion/wrestling
usr << "<span class='notice'>Anyone wearing the <b>wresting belt</b> will know how to be effective with wrestling.</span>"
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 << "<span class='notice'>The <b>implant breaker</b> destroys all other implants within the target before trying to recruit them to your gang. Implant is destroyed after one use.</span>"
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 << "<span class='notice'>The <b>dominator</b> will secure your gang's dominance over the station. Turn it on when you are ready to defend it.</span>"
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 = "<span class='danger'><B><i>[gang_name(gang)] [boss ? "Gang Boss" : "Gang Lieutenant"]</i>: [message]</B></span>"
var/ping = "<span class='danger'><B><i>[gang_name(gang)] [boss ? "Gang Boss" : "Lieutenant"] [user.real_name]</i>: [message]</B></span>"
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 << "<span class='warning'>\icon[src] Error: All positions filled.</span>"
return
if(jobban_isbanned(user, "gangster") || jobban_isbanned(user, "Syndicate"))
user << "<span class='warning'>\icon[src] ACCESS DENIED: Blacklisted user.</span>"
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 << "<FONT size=3 color=red><B>You have been promoted to Lieutenant!</B></FONT>"
ticker.mode.forge_gang_objectives(user.mind)
ticker.mode.greet_gang(user.mind,0)
user << "The <b>Gangtool</b> 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 <b>recruitment pens</b> 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 << "<span class='warning'>ACCESS DENIED: Unauthorized user.</span>"
@@ -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 << "<span class='info'>\icon[src]Generating shuttle recall order with codes retrieved from last call signal...</span>"
@@ -461,4 +420,3 @@
/obj/item/device/gangtool/lt
boss = 0
outfits = 1
free_pen = 1
@@ -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("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>")
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("<span class='warning'>[src] was destroyed in the process!</span>", "<span class='notice'>You feel a surge of loyalty towards Nanotrasen.</span>")
return
if(target.mind in ticker.mode.cult)
target << "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>"
else
target << "<span class='notice'>You feel a surge of loyalty towards Nanotrasen.</span>"
return 1
/obj/item/weapon/implant/loyalty/Destroy()
loc << "<span class='notice'><b>You feel a sense of liberation as Nanotrasen's grip on your mind fades away.</b></span>"
..()
/obj/item/weapon/implant/adrenalin
name = "adrenal implant"
@@ -20,11 +20,16 @@
if(!iscarbon(M))
return
if(user && imp)
if(M.head)
user << "<span class='warning'>[M]'s [M.head.name] is in the way! Take it off first!</span>"
return
M.visible_message("<span class='warning'>[user] is attemping to implant [M].</span>")
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].", "<span class='notice'>[user] implants you with the implant.</span>")
add_logs(user, M, "implanted", object="[name]")
user << "<span class='notice'>You implant the implant into [M].</span>"
-2
View File
@@ -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]!", "<span class='notice'>You successfully remove [I] from [target]'s [target_zone].</span>")
if(istype(I, /obj/item/weapon/implant/loyalty))
target << "<span class='notice'><b>You feel a sense of liberation as Nanotrasen's grip on your mind fades away.</b></span>"
qdel(I)
if(istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/H = target
+41
View File
@@ -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<BR>* They are a one-use item that destroys all implants in the target, including loyalty implants<BR>* 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."