diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 600f2f29f46..e9bb526ec28 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -168,7 +168,7 @@ /obj/item/weapon/legcuffs/beartrap name = "bear trap" - throw_speed = 2 + throw_speed = 1 throw_range = 1 icon_state = "beartrap0" desc = "A trap used to catch bears and other legged creatures." @@ -185,26 +185,31 @@ icon_state = "beartrap[armed]" user << "[src] is now [armed ? "armed" : "disarmed"]" + /obj/item/weapon/legcuffs/beartrap/Crossed(AM as mob|obj) - if(armed) - if(ishuman(AM)) - if(isturf(src.loc)) + if(armed && isturf(src.loc)) + if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator)) + var/mob/living/L = AM + armed = 0 + icon_state = "beartrap0" + playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) + L.visible_message("[L] triggers \the [src].", \ + "You trigger \the [src]!") + + if(ishuman(AM)) var/mob/living/carbon/H = AM - if(H.m_intent == "run") - armed = 0 + if(H.lying) + H.apply_damage(20,BRUTE,"chest") + else + H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg"))) + if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs. H.legcuffed = src src.loc = H - H.update_inv_legcuffed() - H << "\red You step on \the [src]!" + H.update_inv_legcuffed(0) feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart. - for(var/mob/O in viewers(H, null)) - if(O == H) - continue - O.show_message("\red [H] steps on \the [src].", 1) - if(isanimal(AM) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator)) - armed = 0 - var/mob/living/simple_animal/SA = AM - SA.health -= 20 + + else + L.apply_damage(20,BRUTE) ..() @@ -591,13 +596,13 @@ item_state = "RPED" w_class = 5 can_hold = list("/obj/item/weapon/stock_parts","/obj/item/weapon/cell") - storage_slots = 14 + storage_slots = 50 use_to_pickup = 1 allow_quick_gather = 1 allow_quick_empty = 1 collection_mode = 1 max_w_class = 3 - max_combined_w_class = 28 + max_combined_w_class = 100 /obj/item/weapon/storage/part_replacer/proc/play_rped_sound() //Plays the sound for RPED exchanging or installing parts. diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index eff51fc6976..d51f29655de 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -9,7 +9,7 @@ var/range = 2 //this is roughly the size of brig cell var/disable = 0 var/last_flash = 0 //Don't want it getting spammed like regular flashes - var/strength = 10 //How weakened targets are when flashed. + var/strength = 5 //How weakened targets are when flashed. var/base_state = "mflash" anchored = 1 @@ -17,7 +17,7 @@ name = "portable flasher" desc = "A portable flashing device. Wrench to activate and deactivate. Cannot detect slow movements." icon_state = "pflash1" - strength = 8 + strength = 4 anchored = 0 base_state = "pflash" density = 1 @@ -84,7 +84,7 @@ var/datum/organ/internal/eyes/E = H.internal_organs_by_name["eyes"] if ((E.damage > E.min_bruised_damage && prob(E.damage + 50))) flick("e_flash", O:flash) - E.damage += rand(1, 5) + E.damage += rand(1, 2) else if(!O.blinded) flick("flash", O:flash) diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 070fabb3b2e..ec5506e125b 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -72,7 +72,7 @@ if(iscarbon(M)) var/safety = M:eyecheck() if(safety <= 0) - M.Weaken(10) + M.Weaken(5) flick("e_flash", M.flash) if(ishuman(M) && ishuman(user) && M.stat!=DEAD) @@ -198,7 +198,7 @@ var/mob/living/carbon/M = loc var/safety = M.eyecheck() if(safety <= 0) - M.Weaken(10) + M.Weaken(5) flick("e_flash", M.flash) for(var/mob/O in viewers(M, null)) O.show_message("[M] is blinded by the flash!") diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 980fccf3186..c64cff22fdd 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -13,7 +13,7 @@ m_amt = 500 origin_tech = "materials=1" var/dispenser = 0 - var/breakouttime = 1200 //Deciseconds = 120s = 2 minutes + var/breakouttime = 600 //Deciseconds = 60s = 1 minutes /obj/item/weapon/handcuffs/attack(mob/living/carbon/C, mob/user) if(M_CLUMSY in user.mutations && prob(50)) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index f480f280c25..fb273ff1ed2 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -164,7 +164,7 @@ msg_admin_attack("[key_name(user)] stunned [key_name(L)] with the [src].") deductcharge(hitcost) - + if(ishuman(L)) var/mob/living/carbon/human/H = L H.forcesay(hit_appends) @@ -220,7 +220,7 @@ //secborg stun baton module /obj/item/weapon/melee/baton/robot - hitcost = 500 + hitcost = 500 /obj/item/weapon/melee/baton/robot/attack_self(mob/user) //try to find our power cell @@ -247,8 +247,8 @@ force = 3 throwforce = 5 stunforce = 0 - agonyforce = 60 //same force as a stunbaton, but uses way more charge. - hitcost = 2500 + agonyforce = 42 //less than a stunbaton and uses way more charge. + hitcost = 3750 attack_verb = list("poked") slot_flags = null diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index c0eb14ab167..37d9a2ed417 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -872,7 +872,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_if_possible(pda, slot_r_store) M.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store) - M.equip_if_possible(new /obj/item/weapon/gun/energy(M), slot_belt) + M.equip_if_possible(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt) var/obj/item/weapon/card/id/centcom/W = new(M) W.name = "[M.real_name]'s ID Card" diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 8d92ff519f8..a4600443825 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -154,44 +154,13 @@ if(w_uniform) w_uniform.add_fingerprint(M) var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting)) - - if (istype(r_hand,/obj/item/weapon/gun) || istype(l_hand,/obj/item/weapon/gun)) - var/obj/item/weapon/gun/W = null - var/chance = 0 - - if (istype(l_hand,/obj/item/weapon/gun)) - W = l_hand - chance = hand ? 40 : 20 - - if (istype(r_hand,/obj/item/weapon/gun)) - W = r_hand - chance = !hand ? 40 : 20 - - if (prob(chance)) - visible_message("[src]'s [W] goes off during struggle!") - var/list/turfs = list() - for(var/turf/T in view()) - turfs += T - var/turf/target = pick(turfs) - return W.afterattack(target,src) - var/randn = rand(1, 100) - - if(!src.handcuffed) // Bone White - disarm knockdown only occurs if you have an aggressive grab on the target, Longer duration (8) to allow handcuffing. - //check for an aggressive grab - for (var/obj/item/weapon/grab/G in src.grabbed_by) - if (G.assailant == M && G.state >= GRAB_AGGRESSIVE) - randn -= 30 // this value is the % chance of knockdown if you disarm someone whilst you have an aggressive grab. - else - //if target is handcuffed, always push them over - randn = 0 - - if (randn <= 0) - apply_effect(4, WEAKEN, run_armor_check(affecting, "melee")) // first var here is the length of the knockdown + if (randn <= 25) + apply_effect(2, WEAKEN, run_armor_check(affecting, "melee")) playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("\red [M] has floored [src]!") - M.attack_log += text("\[[time_stamp()]\] Floored [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] Has been floored by [M.name] ([M.ckey])") + visible_message("\red [M] has pushed [src]!") + M.attack_log += text("\[[time_stamp()]\] Pushed [src.name] ([src.ckey])") + src.attack_log += text("\[[time_stamp()]\] Has been pushed by [M.name] ([M.ckey])") if(!iscarbon(M)) LAssailant = null else @@ -199,6 +168,7 @@ log_attack("[M.name] ([M.ckey]) pushed [src.name] ([src.ckey])") return + if(randn <= 45 && !lying) if(head) var/obj/item/clothing/head/H = head diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 21011853c10..fb8ba283901 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -93,11 +93,12 @@ /obj/item/weapon/pen/paralysis/New() - var/datum/reagents/R = new/datum/reagents(50) + var/datum/reagents/R = new/datum/reagents(55) reagents = R R.my_atom = src R.add_reagent("stoxin", 30) R.add_reagent("mutetoxin", 15) + R.add_reagent("tirizene", 10) ..() return @@ -108,5 +109,5 @@ ..() msg_admin_attack("[user.name] ([user.ckey]) Used the [name] to stab [M.name] ([M.ckey]) (JMP)") if(reagents.total_volume) - if(M.reagents) reagents.trans_to(M, 50) //used to be 150 + if(M.reagents) reagents.trans_to(M, 55) //used to be 150 return \ No newline at end of file diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index eb06893cd56..c58612463ca 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -54,7 +54,7 @@ var/areastring = null var/obj/item/weapon/cell/cell var/start_charge = 90 // initial cell charge % - var/cell_type = 5000 // 0=no cell, 1=regular, 2=high-cap (x5) <- old, now it's just 0=no cell, otherwise dictate cellcapacity by changing this value. 1 used to be 1000, 2 was 2500 + var/cell_type = 2500 // 0=no cell, 1=regular, 2=high-cap (x5) <- old, now it's just 0=no cell, otherwise dictate cellcapacity by changing this value. 1 used to be 1000, 2 was 2500 var/opened = 0 //0=closed, 1=opened, 2=cover removed var/shorted = 0 var/lighting = 3 diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 41e924cfa8e..0fb8c826058 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -4,6 +4,7 @@ icon_state = "laser" item_state = "laser" fire_sound = 'sound/weapons/Laser.ogg' + charge_cost = 830 w_class = 3.0 m_amt = 2000 origin_tech = "combat=3;magnets=2" @@ -39,10 +40,10 @@ obj/item/weapon/gun/energy/laser/retro /obj/item/weapon/gun/energy/laser/captain/process() charge_tick++ - if(charge_tick < 4) + if(charge_tick < 4) return 0 charge_tick = 0 - if(!power_supply) + if(!power_supply) return 0 power_supply.give(1000) update_icon() @@ -53,7 +54,7 @@ obj/item/weapon/gun/energy/laser/retro desc = "An energy-based laser gun that draws power from the cyborg's internal energy cell directly. So this is what freedom looks like?" /obj/item/weapon/gun/energy/laser/cyborg/process() - return 1 + return 1 /obj/item/weapon/gun/energy/laser/cyborg/process_chambered() if(in_chamber) @@ -77,7 +78,6 @@ obj/item/weapon/gun/energy/laser/retro fire_sound = 'sound/weapons/lasercannonfire.ogg' origin_tech = "combat=4;materials=3;powerstorage=3" projectile_type = "/obj/item/projectile/beam/heavylaser" - charge_cost = 1250 isHandgun() return 0 @@ -109,7 +109,7 @@ obj/item/weapon/gun/energy/laser/retro name = "laser tag gun" icon_state = "bluetag" desc = "Standard issue weapon of the Imperial Guard" - projectile_type = "/obj/item/projectile/lastertag/blue" + projectile_type = "/obj/item/projectile/lasertag/blue" origin_tech = "combat=1;magnets=2" clumsy_check = 0 var/charge_tick = 0 @@ -146,7 +146,7 @@ obj/item/weapon/gun/energy/laser/retro name = "laser tag gun" icon_state = "redtag" desc = "Standard issue weapon of the Imperial Guard" - projectile_type = "/obj/item/projectile/lastertag/red" + projectile_type = "/obj/item/projectile/lasertag/red" origin_tech = "combat=1;magnets=2" clumsy_check = 0 var/charge_tick = 0 diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index ac5f1314190..a7f59cbecdf 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -5,7 +5,7 @@ item_state = null //so the human update icon uses the icon_state instead. force = 10 fire_sound = 'sound/weapons/pulse.ogg' - charge_cost = 2000 + charge_cost = 200 projectile_type = "/obj/item/projectile/beam/pulse" cell_type = "/obj/item/weapon/cell/super" var/mode = 2 diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 21443408a04..b83ab6ee73f 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -35,8 +35,8 @@ damage = 60 stun = 5 weaken = 5 - stutter = 5 - + stutter = 5 + /obj/item/projectile/beam/xray name = "xray beam" icon_state = "xray" @@ -75,7 +75,7 @@ var/mob/living/carbon/human/M = target if(istype(M.wear_suit)) if(M.wear_suit.type in suit_types) - M.Weaken(34) + M.adjustHalLoss(34) return 1 /obj/item/projectile/lasertag/omni diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 9ae5ded4641..d27839e3290 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -2079,6 +2079,19 @@ datum M.silent += REM + 1 ..() + staminatoxin + name = "Tirizene" + id = "tirizene" + description = "A toxin that affects the stamina of a person when injected into the bloodstream." + reagent_state = LIQUID + color = "#6E2828" + data = 13 + + on_mob_life(var/mob/living/M) + M.adjustHalLoss(REM * data) + data = max(data - 1, 3) + ..() + mindbreaker name = "Mindbreaker Toxin" id = "mindbreaker"