diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 415623e5e65..97d113d445f 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -295,10 +295,6 @@
else
text += "."
- if (objectives.len==0)
- text += "
Objectives are empty! Set to kill all rival gang leaders."
-
-
else if (src in ticker.mode.B_bosses)
text += "loyal|none|(A) gangster boss|(B) gangster BOSS"
text += "
Equipment: give"
@@ -306,13 +302,10 @@
var/list/L = current.get_contents()
var/obj/item/device/gangtool/gangtool = locate() in L
if (gangtool)
- text += "
take."
+ text += "|take."
else
text += "."
- if (objectives.len==0)
- text += "
Objectives are empty! Set to kill all rival gang leaders."
-
else if (src in ticker.mode.A_gang)
text += "loyal|none|(A) GANGSTER boss|(B) gangster boss"
else if (src in ticker.mode.B_gang)
@@ -835,6 +828,8 @@
current << "You are a [gang_name("A")] Gang Boss!"
message_admins("[key_name_admin(usr)] has added [current] to the [gang_name("A")] Gang (A) leadership.")
log_admin("[key_name(usr)] has added [current] to the [gang_name("A")] Gang (A) leadership.")
+ ticker.mode.forge_gang_objectives(src)
+ ticker.mode.greet_gang(src,0)
if("bgang")
if(src in ticker.mode.B_gang)
@@ -854,11 +849,8 @@
current << "You are a [gang_name("B")] Gang Boss!"
message_admins("[key_name_admin(usr)] has added [current] to the [gang_name("B")] Gang (B) leadership.")
log_admin("[key_name(usr)] has added [current] to the [gang_name("B")] Gang (B) leadership.")
-
- if("autoobjective")
ticker.mode.forge_gang_objectives(src)
ticker.mode.greet_gang(src,0)
- usr << "\icon[tool] [message]"
- if(beeps)
- playsound(mob.loc, 'sound/machines/twobeep.ogg', 50, 1)
\ No newline at end of file
+ if(tool.ignore_messages <= priority)
+ var/mob/living/mob = get(tool.loc,/mob/living)
+ if(mob && mob.mind)
+ if(((tool.gang == "A") && ((mob.mind in A_gang) || (mob.mind in A_bosses))) || ((tool.gang == "B") && ((mob.mind in B_gang) || (mob.mind in B_bosses))))
+ mob << "\icon[tool] [message]"
+ if(priority>=2)
+ playsound(mob.loc, 'sound/machines/twobeep.ogg', 50, 1)
\ No newline at end of file
diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm
index 81ed244f086..e392f101ae7 100644
--- a/code/game/gamemodes/intercept_report.dm
+++ b/code/game/gamemodes/intercept_report.dm
@@ -228,9 +228,9 @@
*/
/datum/intercept_text/proc/build_gang(datum/mind/correct_person)
- src.text += "
Syndicate forces may be supplying opposing criminal organizations within your sector in an attempt at destabilizing our operations."
- src.text += "Ensure law and order is maintained on the station and be on the lookout for violent confrontations between station factions."
- src.text += "Central Command retains an interest in any criminal leaders captured by station security. The execution or exile of these persons are ill-advised."
+ src.text += "
We have recieved reports of a sudden increase of criminal activity in close proximity to our operations within your sector."
+ src.text += "Ensure law and order is maintained on the station and be on the lookout for unusually territorial behavior from the crew."
+ src.text += "In the event of a full-scale takeover attempt, sensitive research items are to be secured and the station evacuated ASAP."
src.text += "
"
/datum/intercept_text/proc/build_wizard(datum/mind/correct_person)
diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm
index 7c460171a90..424467798e9 100644
--- a/code/game/objects/effects/decals/crayon.dm
+++ b/code/game/objects/effects/decals/crayon.dm
@@ -67,6 +67,6 @@
recipients += ticker.mode.B_tools
ticker.mode.B_territory -= territory.type
if(recipients.len)
- ticker.mode.message_gangtools(recipients,"Territory lost: [territory]",0)
+ ticker.mode.message_gangtools(recipients,"Territory lost: [territory]",1)
..()
\ No newline at end of file
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 1a120d0f33b..3d5281a7aab 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -88,6 +88,7 @@
/obj/item/toy/crayon/spraycan
icon_state = "spraycan_cap"
+ item_state = "spraycan"
desc = "A metallic container containing tasty paint."
var/capped = 1
instant = 1
@@ -156,4 +157,5 @@
desc = "A suspicious-looking spraycan modified to use special paint used by gangsters to mark territory."
icon_state = "spraycan_gang_cap"
gang = 1
+ uses = 15
instant = -1
\ No newline at end of file
diff --git a/code/game/objects/items/devices/recaller.dm b/code/game/objects/items/devices/recaller.dm
index 226ae801ee0..444297b3012 100644
--- a/code/game/objects/items/devices/recaller.dm
+++ b/code/game/objects/items/devices/recaller.dm
@@ -1,5 +1,4 @@
//gangtool device
-//Allows gang leaders to recall the shuttle
/obj/item/device/gangtool
name = "suspicious device"
desc = "A strange device of sorts. Hard to really make out what it actually does just by looking."
@@ -13,6 +12,7 @@
var/gang //Which gang uses this?
var/boss = 1 //If it has the power to promote gang members
var/recalling = 0
+ var/ignore_messages = 0
/obj/item/device/gangtool/New() //Initialize supply point income if it hasn't already been started
if(!ticker.mode.gang_points)
@@ -28,23 +28,36 @@
var/dat
if(!gang)
dat += "This device is not registered.
"
- dat += "Register Device
"
+ if((user.mind in ticker.mode.B_bosses) || (user.mind in ticker.mode.A_bosses))
+ dat += "Give this device to another member of your organization to use.
"
+ else
+ dat += "Register Device
"
else
var/gang_size = ((gang == "A")? (ticker.mode.A_gang.len + ticker.mode.A_bosses.len) : (ticker.mode.B_gang.len + ticker.mode.B_bosses.len))
var/gang_territory = ((gang == "A")? ticker.mode.A_territory.len : ticker.mode.B_territory.len)
var/points = ((gang == "A") ? ticker.mode.gang_points.A : ticker.mode.gang_points.B)
- dat += "Registered as [boss ? "Administrator." : "User."]
"
- dat += "Organization: [(gang == "A")?("[gang_name("A")] Gang"):("[gang_name("B")] Gang")]
"
+ dat += "Registration: [(gang == "A")? gang_name("A") : gang_name("B")] Gang [boss ? "Administrator" : "Member"]
"
dat += "Organization Size: [gang_size]
"
- dat += "Areas Controlled: [gang_territory] ([round((gang_territory/start_state.num_territories)*100, 0.1)]% of station)
"
+ dat += "Territories Controlled: [round((gang_territory/start_state.num_territories)*100, 1)]% of [station_name()]
"
+ var/alert = "Recieve all alerts"
+ if(ignore_messages == 1)
+ alert = "Ignore territories gained"
+ else if(ignore_messages == 2)
+ alert = "Ignore territories gained and lost"
+ dat += "Message Setting: [alert]
"
dat += "Recall Emergency Shuttle
"
dat += "
"
dat += "Influence: [points]
"
dat += "Time until Influence grows: [(points >= 100) ? ("--:--") : (time2text(ticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]
"
dat += "Purchase Items:
"
- if(points >= 25)
+ if(points >= 10)
+ dat += "(10 Influence) Territory Spraycan
"
+ else
+ dat += "(10 Influence) Territory Spraycan
"
+
+ if(points >= 30)
dat += "(25 Influence) 10mm Pistol
"
else
dat += "(25 Influence) 10mm Pistol
"
@@ -54,10 +67,10 @@
else
dat += "(10 Influence) 10mm Ammo
"
- if(points >= 10)
- dat += "(10 Influence) Territory Spraycan
"
+ if(points >= 15)
+ dat += "(15 Influence) Switchblade
"
else
- dat += "(10 Influence) Territory Spraycan
"
+ dat += "(15 Influence) Switchblade
"
if(points >= 50)
dat += "(50 Influence) Recruitment Pen
"
@@ -65,10 +78,11 @@
dat += "(50 Influence) Recruitment Pen
"
if(boss)
- if(points >= 40)
- dat += "(40 Influence) Unregistered Gangtool
"
+ var/promotion_cost = max(((gang == "A")? ticker.mode.A_bosses.len : ticker.mode.B_bosses.len) * 20,20)
+ if(points >= promotion_cost)
+ dat += "([promotion_cost] Influence) Promote a Gangster
"
else
- dat += "(40 Influence) Unregistered Gangtool
"
+ dat += "([promotion_cost] Influence) Promote a Gangster
"
dat += "
"
dat += "Refresh
"
@@ -86,27 +100,32 @@
if(href_list["purchase"])
var/points = ((gang == "A") ? ticker.mode.gang_points.A : ticker.mode.gang_points.B)
var/item_type
+ var/promotion_cost = max(((gang == "A")? ticker.mode.A_bosses.len : ticker.mode.B_bosses.len) * 20,20)
switch(href_list["purchase"])
- if("pistol")
- if(points >= 25)
- item_type = /obj/item/weapon/gun/projectile/automatic/pistol
- points = 25
- if("ammo")
- if(points >= 10)
- item_type = /obj/item/ammo_box/magazine/m10mm
- points = 10
if("spraycan")
if(points >= 10)
item_type = /obj/item/toy/crayon/spraycan/gang
points = 10
+ if("pistol")
+ if(points >= 30)
+ item_type = /obj/item/weapon/gun/projectile/automatic/pistol
+ points = 30
+ if("ammo")
+ if(points >= 10)
+ item_type = /obj/item/ammo_box/magazine/m10mm
+ points = 10
+ if("switchblade")
+ if(points >= 15)
+ item_type = /obj/item/weapon/switchblade
+ points = 15
if("pen")
if(points >= 50)
item_type = /obj/item/weapon/pen/gang
points = 50
if("gangtool")
- if(points >= 40)
+ if(points >= promotion_cost)
item_type = /obj/item/device/gangtool/lt
- points = 40
+ points = promotion_cost
if(item_type)
if(gang == "A")
@@ -120,6 +139,10 @@
else if(href_list["choice"])
switch(href_list["choice"])
+ if("ignore")
+ ignore_messages++
+ if(ignore_messages>2)
+ ignore_messages = 0
if("recall")
recall(usr)
if("register")
@@ -152,8 +175,8 @@
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!"
- user << "The Gangtool you registered will allow you to use your gang's influence to purchase items and prevent the station from evacuating before your gang can take over. Use it to recall the emergency shuttle from anywhere on the station."
- user << "You may also now use recruitment pens to grow your gang membership. Use them on unsuspecting crew members to recruit them."
+ user << "The Gangtool you registered will allow you to use your gang's influence to purchase items and prevent the station from evacuating before your gang can take over. Use it to recall the emergency shuttle from anywhere on the station."
+ user << "You may also now use recruitment pens to grow your gang membership. Use them on unsuspecting crew members to recruit them."
if(!gang)
usr << "ACCESS DENIED: Unauthorized user."
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 68a4b1935dd..bcf28cec697 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -412,17 +412,17 @@
var/area/territory
var/gangID
if(gang)
+ //Determine gang affiliation
+ if((user.mind in ticker.mode.A_bosses) || (user.mind in ticker.mode.A_gang))
+ temp = "[gang_name("A")] gang tag"
+ gangID = "A"
+ else if((user.mind in ticker.mode.B_bosses) || (user.mind in ticker.mode.B_gang))
+ temp = "[gang_name("B")] gang tag"
+ gangID = "B"
+
//Check area validity. Reject space, player-created areas, and non-station z-levels.
territory = get_area(target)
- if (territory && (territory.z == ZLEVEL_STATION) && territory.valid_territory)
- //Determine gang affiliation
- if((user.mind in ticker.mode.A_bosses) || (user.mind in ticker.mode.A_gang))
- temp = "[gang_name("A")] gang tag"
- gangID = "A"
- else if((user.mind in ticker.mode.B_bosses) || (user.mind in ticker.mode.B_gang))
- temp = "[gang_name("B")] gang tag"
- gangID = "B"
-
+ if (gangID && territory && (territory.z == ZLEVEL_STATION) && territory.valid_territory)
//Check if this area is already tagged by a gang
if(!(locate(/obj/effect/decal/cleanable/crayon/gang) in target)) //Ignore the check if the tile being sprayed has a gang tag
if(territory_claimed(territory, user))
@@ -457,6 +457,7 @@
for(var/obj/effect/decal/cleanable/crayon/old_marking in target)
qdel(old_marking)
new /obj/effect/decal/cleanable/crayon/gang(target,gangID,temp,graf_rot)
+ user << "You tagged [territory] for your gang!"
else
new /obj/effect/decal/cleanable/crayon(target,colour,drawtype,temp,graf_rot)
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index 57d102eb03f..7c1dc1aef34 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -158,4 +158,38 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob, params)
+/obj/item/weapon/switchblade
+ name = "switchblade"
+ icon_state = "switchblade"
+ desc = "A sharp, concealable, spring-loaded knife."
+ flags = CONDUCT
+ force = 20
+ w_class = 2
+ throwforce = 15
+ throw_speed = 3
+ throw_range = 6
+ m_amt = 12000
+ origin_tech = "materials=1"
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ attack_verb = list("stubbed", "poked")
+ var/extended
+/obj/item/weapon/switchblade/attack_self(mob/user)
+ extended = !extended
+ playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1)
+ if(extended)
+ force = 20
+ w_class = 3
+ throwforce = 15
+ icon_state = "switchblade_ext"
+ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ else
+ force = 1
+ w_class = 2
+ throwforce = 5
+ icon_state = "switchblade"
+ attack_verb = list("stubbed", "poked")
+
+/obj/item/weapon/switchblade/suicide_act(mob/user)
+ user.visible_message("[user] is slitting \his own throat with the [src.name]! It looks like \he's trying to commit suicide.")
+ return (BRUTELOSS)
\ No newline at end of file
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index 478231185de..dc82a42143a 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -386,7 +386,7 @@
dat += ""
if(ticker.mode.A_bosses.len || ticker.mode.A_gang.len)
- dat += "
| [gang_name("A")] Gang: [round((ticker.mode.A_territory.len/start_state.num_territories)*100, 0.1)]% Station Control | |
"
+ dat += "
| [gang_name("A")] Gang: [(ticker.mode.gang_points ? "[ticker.mode.gang_points.A] Influence, " : "")][round((ticker.mode.A_territory.len/start_state.num_territories)*100, 0.1)]% Control | |
"
for(var/datum/mind/N in ticker.mode.A_bosses)
var/mob/M = N.current
if(!M)
@@ -402,7 +402,7 @@
dat += "
"
if(ticker.mode.B_bosses.len || ticker.mode.B_gang.len)
- dat += "
| [gang_name("B")] Gang: [round((ticker.mode.B_territory.len/start_state.num_territories)*100, 0.1)]% Station Control | |
"
+ dat += "
| [gang_name("B")] Gang: [(ticker.mode.gang_points ? "[ticker.mode.gang_points.B] Influence, " : "")][round((ticker.mode.B_territory.len/start_state.num_territories)*100, 0.1)]% Control | |
"
for(var/datum/mind/N in ticker.mode.B_bosses)
var/mob/M = N.current
if(!M)
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index 0f73d04e0c2..4fd194aacbe 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ
diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi
index 6fcd74552cb..dc3f7d861b8 100644
Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index e2d406a6c91..b6b78aaf4fb 100644
Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ