diff --git a/code/game/machinery/computer/sentencing.dm b/code/game/machinery/computer/sentencing.dm index 8b77fe8d857..72e9ff48529 100644 --- a/code/game/machinery/computer/sentencing.dm +++ b/code/game/machinery/computer/sentencing.dm @@ -96,7 +96,6 @@ /obj/machinery/computer/sentencing/proc/incident_report() . = "" - if( !istype( incident )) . += "There was an error loading the incident, please Try Again" return . @@ -106,8 +105,9 @@ . += "" . += "Convict:" . += "" - if( incident.criminal ) - . += "[incident.criminal]" + if( istype(incident.card) ) + var/obj/item/weapon/card/id/card = incident.card.resolve() + . += "[card]" else . += "None" . += "" @@ -191,8 +191,9 @@ . += "Convict" . += "
" - if( incident.criminal ) - . += "[incident.criminal]" + if( istype(incident.card) ) + var/obj/item/weapon/card/id/card = incident.card.resolve() + . += "[card]" else . += "None" . += "
" @@ -435,7 +436,8 @@ return . /obj/machinery/computer/sentencing/proc/render_innocent( var/mob/user ) - ping( "\The [src] pings, \"[incident.criminal] has been found innocent of the accused crimes!\"" ) + var/obj/item/weapon/card/id/card = incident.card.resolve() + ping( "\The [src] pings, \"[card] has been found innocent of the accused crimes!\"" ) qdel( incident ) incident = null @@ -456,11 +458,11 @@ return incident.renderGuilty( user ) - + var/obj/item/weapon/card/id/card = incident.card.resolve() if( incident.brig_sentence < PERMABRIG_SENTENCE) - ping( "\The [src] pings, \"[incident.criminal] has been found guilty of their crimes!\"" ) + ping( "\The [src] pings, \"[card] has been found guilty of their crimes!\"" ) else - pingx3( "\The [src] pings, \"[incident.criminal] has been found guilty of their crimes and earned a HuT Sentence\"" ) + pingx3( "\The [src] pings, \"[card] has been found guilty of their crimes and earned a HuT Sentence\"" ) incident = null menu_screen = "main_menu" @@ -483,7 +485,7 @@ // // incident.renderGuilty( user ) // -// ping( "\The [src] pings, \"[incident.criminal] has been fined for their crimes!\"" ) +// ping( "\The [src] pings, \"[incident.card] has been fined for their crimes!\"" ) // // incident = null // menu_screen = "main_menu" @@ -528,10 +530,12 @@ if( istype( C )) if( incident && C.mob ) incident.criminal = C.mob - ping( "\The [src] pings, \"Convict [C.mob] verified.\"" ) + incident.card = WEAKREF(C) + ping( "\The [src] pings, \"Convict [C] verified.\"" ) else if( incident.criminal ) ping( "\The [src] pings, \"Convict cleared.\"" ) incident.criminal = null + incident.card = null if( "change_brig" ) if( !incident ) return diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 89058dbee8b..40341b7b66e 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -207,7 +207,6 @@ // Used for the 'time left' display var/second = round(timeleft() % 60) var/minute = round((timeleft() - second) / 60) - . = "

Timer System:

" . += "Controls [src.id]
" @@ -215,7 +214,8 @@ . += "Insert a Securty Incident Report to load a criminal sentence
" else // Time Left display (uses releasetime) - . += "Criminal: [incident.criminal]\t" + var/obj/item/weapon/card/id/card = incident.card.resolve() + . += "Criminal: [card]\t" . += "Charges
" . += "Sentence: [add_zero( "[minute]", 2 )]:[add_zero( "[second]", 2 )]\t" // Start/Stop timer diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm index 29dc2185dfe..99317004992 100644 --- a/code/game/objects/items/weapons/material/twohanded.dm +++ b/code/game/objects/items/weapons/material/twohanded.dm @@ -245,6 +245,7 @@ MA.layer = FLOAT_LAYER HS.add_overlay(MA) HS.name = "[I.name] on a spear" + HS.material = material.name qdel(src) return @@ -299,10 +300,11 @@ icon_state = "headspear" density = 0 anchored = 1 + var/material = "glass" /obj/structure/headspear/attack_hand(mob/living/user) user.visible_message("[user] kicks over \the [src]!", "You kick down \the [src]!") - new /obj/item/weapon/material/twohanded/spear(user.loc) + new /obj/item/weapon/material/twohanded/spear(user.loc, material) for(var/obj/item/organ/external/head/H in src) H.loc = user.loc qdel(src) diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index a12c91e6b76..6db5a72bbc4 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -161,10 +161,18 @@ if(!istype(W)) user <<"The [W] is blocking the cigarettes." return + //Checking contents of packet so lighters won't be cigarettes. + for (var/i = contents.len; i > 0; i--) + W = contents[i] + if (istype(W)) + break + else + W = null + if (!W) + return reagents.trans_to_obj(W, (reagents.total_volume/contents.len)) user.equip_to_slot_if_possible(W, slot_wear_mask) reagents.maximum_volume = 15 * contents.len - contents.len-- user << "You take a cigarette out of the pack." update_icon() else diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 753bba63176..848a36523f9 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -1898,7 +1898,7 @@ All custom items with worn sprites must follow the contained sprite system: http light_color = LIGHT_COLOR_BLUE -/obj/item/clothing/suit/storage/hooded/wintercoat/fluff/make_poncho //Raincoat Poncho - M.A.K.E - toasterstrudes +obj/item/clothing/suit/storage/hooded/fluff/make_poncho //Raincoat Poncho - M.A.K.E - toasterstrudes name = "raincoat poncho" desc = "A tough brown hooded poncho that looks to be good at protecting someone from the rain." icon = 'icons/obj/custom_items/make_items.dmi' @@ -1906,6 +1906,7 @@ All custom items with worn sprites must follow the contained sprite system: http item_state = "make_poncho" contained_sprite = TRUE hoodtype = /obj/item/clothing/head/winterhood/fluff/make_hood + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS /obj/item/clothing/head/winterhood/fluff/make_hood flags_inv = HIDEEARS diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm index a0e76685c5f..159817e531f 100644 --- a/code/modules/economy/cash.dm +++ b/code/modules/economy/cash.dm @@ -168,43 +168,71 @@ proc/spawn_money(var/sum, spawnloc, mob/living/carbon/human/human_user as mob) user << "Charge card's owner: [src.owner_name]. Credit chips remaining: [src.worth]." /obj/item/weapon/spacecash/ewallet/lotto - name = "lottery card" - desc = "A scratch-action charge card that contains a variable amount of money." + name = "space lottery card" + desc = "A virtual scratch-action charge card that contains a variable amount of money." worth = 0 - var/scratched = 0 + var/scratches_remaining = 3 + var/next_scratch = 0 /obj/item/weapon/spacecash/ewallet/lotto/attack_self(mob/user) - if(!scratched) - user << "You initiate the simulated scratch action process on the charge card..." - if(do_after(user,5)) - var/result = rand(1,10000) - if(result <= 5000) // 50% chance to not earn anything at all. - worth = 0 - user << "The card reads [worth]. Not your lucky day!" - else if (result <= 8000) // 30% chance to break even. - worth = 200 - user << "The card reads [worth]. At least you broke even..." - else if (result <= 9000) // 10% chance to earn 500 credits - worth = 500 - user << "The card reads [worth]. You doubled your money!" - else if (result <= 9500) // 5% chance to earn 1000 credits. - worth = 1000 - user << "The card reads [worth]. Wow, you're lucky!" - else if (result <= 9750) // 2.5% chance to earn 2500 credits. - worth = 2500 - user << "The card reads [worth]. Wow, your luck is running high!" - else if (result <= 9900) // 1.5% chance to earn 5000 credits. - worth = 5000 - user << "The card reads [worth]. Wow, you're rich!" - else if (result <= 9950) // 0.5% chance to earn 10000 credits - worth = 10000 - user << "The card reads [worth]. Wow, your're super rich!" - else if (result <= 9975) // 0.25% chance to earn 50000 credits. - worth = 25000 - user << "The card reads [worth]. Wow, your're super rich!" - else // 0.25% chance to earn 100000 credits. - user << "The card reads [worth]. YOU HIT THE JACKPOT!" - worth = 50000 - scratched = 1 - owner_name = user.name + if(scratches_remaining <= 0) + user << "The card flashes: \"No scratches remaining!\"" + return + + if(next_scratch > world.time) + user << "The card flashes: \"Please wait!\"" + return + + next_scratch = world.time + 6 SECONDS + + user << "You initiate the simulated scratch action process on the [src]..." + playsound(src.loc, 'sound/items/drumroll.ogg', 50, 0, 0) + if(do_after(user,4.5 SECONDS)) + var/won = 0 + var/result = rand(1,10000) + if(result <= 4000) // 40% chance to not earn anything at all. + won = 0 + speak("You've won: [won] CREDITS. Better luck next time!") + else if (result <= 8000) // 40% chance + won = 50 + speak("You've won: [won] CREDITS. Partial winner!") + else if (result <= 9000) // 10% chance + won = 100 + speak("You've won: [won] CREDITS. Winner!") + else if (result <= 9500) // 5% chance + won = 200 + speak("You've won: [won] CREDITS. SUPER WINNER! You're lucky!") + else if (result <= 9750) // 2.5% chance + won = 500 + speak("You've won: [won] CREDITS. MEGA WINNER! You're super lucky!") + else if (result <= 9900) // 1.5% chance + won = 1000 + speak("You've won: [won] CREDITS. ULTRA WINNER! You're mega lucky!") + else if (result <= 9950) // 0.5% chance + won = 2500 + speak("You've won: [won] CREDITS. ULTIMATE WINNER! You're ultra lucky!") + else if (result <= 9975) // 0.25% chance + won = 5000 + speak("You've won: [won] CREDITS. ULTIMATE WINNER! You're ultra lucky!") + else if (result <= 9999) // 0.24% chance + won = 10000 + speak("You've won: [won] CREDITS. ULTIMATE WINNER! You're ultra lucky!") + else ///0.01% chance + won = 25000 + speak("You've won: [won] CREDITS. JACKPOT WINNER! You're JACKPOT lucky!") + + scratches_remaining -= 1 + worth += won + sleep(1 SECONDS) + if(scratches_remaining > 0) + user << "The card flashes: You have: [scratches_remaining] SCRATCHES remaining! Scratch again!" + else + user << "The card flashes: You have: [scratches_remaining] SCRATCHES remaining! You won a total of: [worth] CREDITS. Thanks for playing the space lottery!" + + owner_name = user.name + +/obj/item/weapon/spacecash/ewallet/lotto/proc/speak(var/message = "Hello!") + for(var/mob/O in hearers(src.loc, null)) + O.show_message("\The [src] pings, \"[message]\"",2) + playsound(src.loc, 'sound/machines/ping.ogg', 50, 1, -4) diff --git a/code/modules/law/incident.dm b/code/modules/law/incident.dm index 5c2c43cd11e..3b02dbc1f11 100644 --- a/code/modules/law/incident.dm +++ b/code/modules/law/incident.dm @@ -8,6 +8,7 @@ var/list/arbiters = list( "Witness" = list() ) // The person or list of people who were involved in the conviction of the criminal var/mob/living/carbon/human/criminal // The person who committed the crimes + var/datum/weakref/card // The ID of the criminal var/datetime = "" //When the crime has been commited diff --git a/code/modules/law/laws/med_severity.dm b/code/modules/law/laws/med_severity.dm index c591dac2280..7a887aac9ba 100644 --- a/code/modules/law/laws/med_severity.dm +++ b/code/modules/law/laws/med_severity.dm @@ -142,7 +142,7 @@ max_brig_time = 25 /datum/law/med_severity/excessive_force - name = "i218 - Severe Use of Excessive Force" + name = "i218 - Use of Excessive Force" desc = "To put a victim in critical state in defense of yourself or others, or seriously injuring a suspect while attempting to detain them. This includes pulling them when they have open wounds." id = "i218" @@ -163,4 +163,12 @@ id = "i220" min_brig_time = 15 - max_brig_time = 20 \ No newline at end of file + max_brig_time = 20 + +/datum/law/med_severity/gross_negligence + name = "i221 - Gross Negligence" + desc = "To display a severe lack of diligence or disregard for safe conduct, which causes or will cause serious harm to people or property." + id = "i221" + + min_brig_time = 15 + max_brig_time = 20 diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index a5ea463b6b9..7d9b68baf4b 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1561,7 +1561,7 @@ . = ..() reagents.add_reagent("protein", 4) reagents.add_reagent("msg", 2) - reagents.add_reagent("palmoil", 1) + reagents.add_reagent("sodiumchloride", 4) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/no_raisin @@ -1578,7 +1578,6 @@ . = ..() reagents.add_reagent("msg", 1) reagents.add_reagent("hfcs", 1) - reagents.add_reagent("palmoil", 1) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie @@ -1611,7 +1610,7 @@ . = ..() reagents.add_reagent("cheese", 3) reagents.add_reagent("palmoil", 1) - reagents.add_reagent("msg", 2) + reagents.add_reagent("msg", 1) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/syndicake @@ -4398,21 +4397,18 @@ /obj/item/weapon/reagent_containers/food/snacks/tastybread name = "bread tube" - desc = "Bread in a tube. Chewy...and questionably tasty." + desc = "Bread in a tube. Chewy." icon_state = "tastybread" trash = /obj/item/trash/tastybread filling_color = "#A66829" center_of_mass = list("x"=17, "y"=16) - nutriment_desc = list("tasty bread" = 4) + nutriment_desc = list("stale bread" = 4) //NO LONGER TASTY BECAUSE OF REMOVED FLAVORINGS. ENJOY EATING STALE BREAD FUCKERS. HAHAHAHAHA. nutriment_amt = 4 /obj/item/weapon/reagent_containers/food/snacks/tastybread/Initialize() . = ..() reagents.add_reagent("shortening", 1) - reagents.add_reagent("palmoil", 1) - reagents.add_reagent("sugar", 1) - reagents.add_reagent("msg", 4) - reagents.add_reagent("sodiumchloride", 2) + reagents.add_reagent("sodiumchloride", 4) bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks @@ -4426,7 +4422,6 @@ /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks/Initialize() . = ..() - reagents.add_reagent("shortening", 2) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/friedkois @@ -4559,7 +4554,7 @@ . = ..() reagents.add_reagent("protein", 10) reagents.add_reagent("shortening", 1) - reagents.add_reagent("msg", 4) + reagents.add_reagent("msg", 3) reagents.add_reagent("sodiumchloride", 3) bitesize = 5 @@ -4589,7 +4584,7 @@ . = ..() reagents.add_reagent("protein", 10) reagents.add_reagent("iron", 3) - reagents.add_reagent("msg", 4) + reagents.add_reagent("msg", 5) reagents.add_reagent("sodiumchloride", 5) bitesize = 4 diff --git a/html/changelog.html b/html/changelog.html index bbba2e9a6cc..dbd633ecd34 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,21 @@ -->
+

31 March 2018

+

TheGreatNacho updated:

+ + +

21 March 2018

+

BurgerBB updated:

+ +

18 March 2018

Alberyk updated: