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..f1f7e30e92f 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,8 @@ 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 + var/promotion_cost = 20 /obj/item/device/gangtool/New() //Initialize supply point income if it hasn't already been started if(!ticker.mode.gang_points) @@ -28,22 +29,35 @@ 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 >= 10) + dat += "(10 Influence) Territory Spraycan
" + else + dat += "(10 Influence) Territory Spraycan
" + if(points >= 25) dat += "(25 Influence) 10mm Pistol
" else @@ -55,9 +69,9 @@ dat += "(10 Influence) 10mm Ammo
" if(points >= 10) - dat += "(10 Influence) Territory Spraycan
" + dat += "(10 Influence) Switchblade
" else - dat += "(10 Influence) Territory Spraycan
" + dat += "(10 Influence) Switchblade
" if(points >= 50) dat += "(50 Influence) Recruitment Pen
" @@ -65,10 +79,12 @@ dat += "(50 Influence) Recruitment Pen
" if(boss) - if(points >= 40) - dat += "(40 Influence) Unregistered Gangtool
" + if(promotion_cost > 100) + dat += "(Maximum Reached) Promote a Gangster
" + else 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
" @@ -87,6 +103,10 @@ var/points = ((gang == "A") ? ticker.mode.gang_points.A : ticker.mode.gang_points.B) var/item_type switch(href_list["purchase"]) + if("spraycan") + if(points >= 10) + item_type = /obj/item/toy/crayon/spraycan/gang + points = 10 if("pistol") if(points >= 25) item_type = /obj/item/weapon/gun/projectile/automatic/pistol @@ -95,18 +115,19 @@ if(points >= 10) item_type = /obj/item/ammo_box/magazine/m10mm points = 10 - if("spraycan") + if("switchblade") if(points >= 10) - item_type = /obj/item/toy/crayon/spraycan/gang + item_type = /obj/item/weapon/switchblade points = 10 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 + promotion_cost += 30 if(item_type) if(gang == "A") @@ -117,9 +138,14 @@ var/mob/living/carbon/human/H = usr H.put_in_any_hand_if_possible(purchased) ticker.mode.message_gangtools(((gang=="A")? ticker.mode.A_tools : ticker.mode.B_tools), "A [href_list["purchase"]] was purchased by [usr] for [points] Influence.") + log_game("A [href_list["purchase"]] was purchased by [key_name(usr)] for [points] Influence.") 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 +178,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..e7f13f3a881 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -158,4 +158,40 @@ 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/Genhit.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") + hitsound = 'sound/weapons/bladeslice.ogg' + else + force = 1 + w_class = 2 + throwforce = 5 + icon_state = "switchblade" + attack_verb = list("stubbed", "poked") + hitsound = 'sound/weapons/Genhit.ogg' + +/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 += "
" + dat += "
[gang_name("A")] Gang: [round((ticker.mode.A_territory.len/start_state.num_territories)*100, 0.1)]% Station Control
" for(var/datum/mind/N in ticker.mode.A_bosses) var/mob/M = N.current if(!M) @@ -402,7 +402,7 @@ 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
" if(ticker.mode.B_bosses.len || ticker.mode.B_gang.len) - dat += "
" + dat += "
[gang_name("B")] Gang: [round((ticker.mode.B_territory.len/start_state.num_territories)*100, 0.1)]% Station Control
" for(var/datum/mind/N in ticker.mode.B_bosses) var/mob/M = N.current if(!M) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 7045311cb55..01ea0ee5d35 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -113,7 +113,7 @@ cooldown = 1 icon_state = "pen_blink" //The more gang members there are the longer the cooldown will be - var/time = 500 + (100 * modifier) //50 seconds + 10 seconds for every member in the gang + var/time = 450 + (150 * modifier) //45 seconds + 15 seconds for every member in the gang spawn(time) cooldown = 0 icon_state = "pen" diff --git a/html/changelogs/Ikarrus-gang4.yml b/html/changelogs/Ikarrus-gang4.yml new file mode 100644 index 00000000000..bbb41c01a6c --- /dev/null +++ b/html/changelogs/Ikarrus-gang4.yml @@ -0,0 +1,10 @@ +author: Ikarrus + +delete-after: True + +changes: + - rscadd: "Gangs can now purchase switchblades, a relatively cheap and decently robust melee weapon." + - tweak: "Gangs now require at least 66% control of the station to win." + - tweak: "Gang spraycan uses reduced to 15." + - tweak: "Pistol cost increased to 30 Influence" + - tweak: "Promotions now start off cheap at 20 influence but get more expensive the more people you promote." \ No newline at end of file diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 4f1f25c3a4b..84ed7d9fc07 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index fbc69f8e91a..2a6a9930431 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 276ed025c8c..1cc952fb001 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 0daf90741ca..9b5be0100e8 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ
[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