From 60831090f3a523b72a22cc55a255b771a73fbac3 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 11 Apr 2024 02:21:59 -0500 Subject: [PATCH 001/102] orginize some weapon sprites --- icons/obj/improvised.dmi | Bin 856 -> 1315 bytes icons/obj/items_and_weapons.dmi | Bin 113837 -> 85369 bytes icons/obj/weapons/spear.dmi | Bin 0 -> 5121 bytes icons/obj/weapons/sword.dmi | Bin 0 -> 21878 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/obj/weapons/spear.dmi create mode 100644 icons/obj/weapons/sword.dmi diff --git a/icons/obj/improvised.dmi b/icons/obj/improvised.dmi index 43fc38a4be59ff9c8bfb9de3e7f4dd75ae044e9f..20890be4cbc166a81cb4cdebca9a7b75d1c91a1b 100644 GIT binary patch delta 1270 zcmcb?wwP;zIG+Ot8v_HwQpd;YPb)IkHYeVhJ=I`IjD4Z7;!*Jrk zeg=km7JE+@$B>FSZ)czPmUa|59xr4XCY*g#zI~RMj#AW7`6U-7Uy1HYSoa zep$KMd+YqNva)N;Tm~%_EA=1jI?N;hNA++PoDm$B)86TRwd?xgt-3XKpPt;GZP?|W zZ@@SAzQh%_lX;)^Jej=PbHze+=To1KKlR={FX*(k6ywb+>_yRQ+ZN~_|MvE|rVn3; zcACqK+4F*8s?h^d4 zWqr_-d;4SKPVFpeaS#+(thB&+*Y4d%cU^xi+I{?SV{jQ+>i5>Xh8=*8?z0_re;ic#zF0bdxuhe3~uH^W*JDB}!IT6D!`LTTc zOX=Gz31<#E3m)0PKmwXkr&>8TvTFYl9)5o31y%_^d*$~F8Xx>}X3M2px46nW4lvC) zq9+)^zM7+;{bjYh7X{w{J^&V$GKO z`eW(!&IcamC2yY25UP|ZT)5?&fwl4Ln>TJ4l&)Erm+^LORB!P2@81`0+7#q-(ay?B zXq$%$lf7QuMt{TO>ZyAry$gcE!($bp&>)3^M19naXrs&_r9r`WXrkzPPU-??YDoN1RMIMn6MY` z->)@I|6Fb|OTuk?Q`6K;ofDS|w%qLtpB%gYn40d>_kX;e-8iE(zi#cLQwuqcyiIm2 zyHa;#tA5HHiOq$|>v|csAAZjqbD;jO-GfyMt`fC&r delta 807 zcmV+?1K9kd3fKma7k^*~0{{R3)kcR30002DP)t-s0RI4HKMQC;3w%rsPEJmdSrCbd ziH3%TgM)*NjEsPQfF2$m6ciLuF$lQ0xVpN!yu7@R$f|~@l|A%k* z?`n1KFT<$1>mZ+y2xCwub=>Wxc;Un@mqROs1GJ8}LaZ5btZs`AzLH|XM7cLo%t_y2 z%U_jnUVu27GDUKc?HY*T(fp;`@(eJ5`NAUf$h0CGO;EIiiziMP>@QlYe(XNqeFI3? zX#zU_f6^fU00E#$L_t(&f$f)TQ-VMgh6xfdV7rNi*Uf4%$;wJ&$p8Pl+T~I%EQ6@q zjCLM|+2I54!*W>WtfBw_02~k}Dn(|#Mp1v+;Fi<+f|v#)XV4A9FipMLZ0cvGX&R7D5)yw`vNQf5LH8H8b!6x83e^+_vko^M*aXXVslT z>PQrYcf?_*)E6*CYN#ypR`Ho)gYRhTd?hJ{v%~!W000000OfQ=>@&aD?@{_0@kMV3 z!(h0pK-k-lDEM}a@i3RaCh)w1VB_8%-&v#k2SWTwKL1DHCFBI6-d-yn@qRJX%y?wgV-~{e`P6&B>{~#nUSS%Nm zWk!6lC@->|ZJ8RyCY=O9@dn{CC|?LkiP=6tD+)yUO7}CQ2V;G#S_i^yfG|IuK^TVI zxW}d3jh~uE^5gyl(*H#O006+B5`9S)J*>d+Uko6qLUs*g7devrh9cP$SjjH2^nB@` l(7`XVqxhFbk_Eu=@eTGpM-DwTHedh%002ovPDHLkV1hNdVBi1% diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index 12798b6eb2acda343a705ece5f4cf8432fe5b8b5..4bb9ddbe87db7fdca7e9bb9d6a3a8a29319fc2cc 100644 GIT binary patch literal 85369 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

)p2&o#Wb(&Lgys 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 wp&EtCw+$bM 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 iI)G~e|9gsf*N9~AV`hx{M!iIP_U diff --git a/icons/obj/weapons/spear.dmi b/icons/obj/weapons/spear.dmi new file mode 100644 index 0000000000000000000000000000000000000000..2f9a220a4b416ff02f344e504f88dbf0e2e98a37 GIT binary patch literal 5121 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 literal 0 HcmV?d00001 diff --git a/icons/obj/weapons/sword.dmi b/icons/obj/weapons/sword.dmi new file mode 100644 index 0000000000000000000000000000000000000000..568c800a7d2732574282609bbbbc1ffe75a41b50 GIT binary patch literal 21878 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 literal 0 HcmV?d00001 From f81394fe42b4326ef5f69b5c19aa438262ee844e Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 11 Apr 2024 02:34:42 -0500 Subject: [PATCH 002/102] more orginzing --- icons/obj/items_and_weapons.dmi | Bin 85369 -> 71268 bytes icons/obj/mysterybox.dmi | Bin 12483 -> 0 bytes icons/obj/weapon/axe.dmi | Bin 0 -> 2673 bytes icons/obj/weapon/baton.dmi | Bin 0 -> 2370 bytes icons/obj/weapon/blunt.dmi | Bin 0 -> 10659 bytes .../energy.dmi} | Bin icons/obj/{weapons => weapon}/spear.dmi | Bin icons/obj/{weapons => weapon}/sword.dmi | Bin 8 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 icons/obj/mysterybox.dmi create mode 100644 icons/obj/weapon/axe.dmi create mode 100644 icons/obj/weapon/baton.dmi create mode 100644 icons/obj/weapon/blunt.dmi rename icons/obj/{transforming_energy.dmi => weapon/energy.dmi} (100%) rename icons/obj/{weapons => weapon}/spear.dmi (100%) rename icons/obj/{weapons => weapon}/sword.dmi (100%) diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index 4bb9ddbe87db7fdca7e9bb9d6a3a8a29319fc2cc..989c207e4e23dc26141fd96d32b4d6c5e9b9444d 100644 GIT binary patch literal 71268 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 z�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 X#k35c?2Jo^LW0ZL!NtDb&OiBoA8v(` literal 85369 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

)p2&o#Wb(&Lgys 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 literal 0 HcmV?d00001 diff --git a/icons/obj/weapon/baton.dmi b/icons/obj/weapon/baton.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4612e2b405f5dddefa9c80daf2fae421eb1c122d GIT binary patch literal 2370 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 JE75Tb|33+NkW>Hw literal 0 HcmV?d00001 diff --git a/icons/obj/transforming_energy.dmi b/icons/obj/weapon/energy.dmi similarity index 100% rename from icons/obj/transforming_energy.dmi rename to icons/obj/weapon/energy.dmi diff --git a/icons/obj/weapons/spear.dmi b/icons/obj/weapon/spear.dmi similarity index 100% rename from icons/obj/weapons/spear.dmi rename to icons/obj/weapon/spear.dmi diff --git a/icons/obj/weapons/sword.dmi b/icons/obj/weapon/sword.dmi similarity index 100% rename from icons/obj/weapons/sword.dmi rename to icons/obj/weapon/sword.dmi From ae8b538abdfaf327c823a1b80e4b06788075fada Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 11 Apr 2024 15:32:42 -0500 Subject: [PATCH 003/102] new sprites mabye --- icons/obj/weapon/axe.dmi | Bin 2673 -> 3273 bytes icons/obj/weapon/blunt.dmi | Bin 10659 -> 4469 bytes icons/obj/weapon/spear.dmi | Bin 5121 -> 2985 bytes icons/obj/weapon/sword.dmi | Bin 21878 -> 15445 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/weapon/axe.dmi b/icons/obj/weapon/axe.dmi index ef1358cb4a47be85db0ee6cec09e9a6a01091db4..0ff8a436483399e1968ce9d0024e92cf6a980f13 100644 GIT binary patch literal 3273 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 diff --git a/icons/obj/weapon/blunt.dmi b/icons/obj/weapon/blunt.dmi index 1be0b1b13975c4f62179ef0d3d0bbf99d8fec51d..480515bbd79403d8ba02016cd71120b565ef7b9e 100644 GIT binary patch literal 4469 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 JE75Tb|33+NkW>Hw diff --git a/icons/obj/weapon/spear.dmi b/icons/obj/weapon/spear.dmi index 2f9a220a4b416ff02f344e504f88dbf0e2e98a37..4c77c8d159b2ca18608e1fcdb2c20b059025898c 100644 GIT binary patch literal 2985 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 literal 5121 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 diff --git a/icons/obj/weapon/sword.dmi b/icons/obj/weapon/sword.dmi index 568c800a7d2732574282609bbbbc1ffe75a41b50..adfc4e107c539e4f1b86d9620fedff75c45da757 100644 GIT binary patch literal 15445 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 From 925010f4767e5a3bfcd0b08b42dafcbdb657098a Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 11 Apr 2024 15:37:16 -0500 Subject: [PATCH 004/102] fix energy weapon icon path --- code/game/objects/items/dualsaber.dm | 2 +- code/game/objects/items/energyhalberd.dm | 2 +- code/game/objects/items/holy_weapons.dm | 2 +- code/game/objects/items/melee/energy.dm | 2 +- code/game/objects/items/toys.dm | 2 +- code/modules/flufftext/Hallucination.dm | 2 +- code/modules/holodeck/items.dm | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm index 7ddb02035927..965979db215a 100644 --- a/code/game/objects/items/dualsaber.dm +++ b/code/game/objects/items/dualsaber.dm @@ -2,7 +2,7 @@ * Double-Bladed Energy Swords - Cheridan */ /obj/item/dualsaber - icon = 'icons/obj/transforming_energy.dmi' + icon = 'icons/obj/weapon/energy.dmi' icon_state = "dualsaber" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' diff --git a/code/game/objects/items/energyhalberd.dm b/code/game/objects/items/energyhalberd.dm index 416964bbfded..574c4fda3519 100644 --- a/code/game/objects/items/energyhalberd.dm +++ b/code/game/objects/items/energyhalberd.dm @@ -3,7 +3,7 @@ * Copied mostly from dualsaber.dm to avoid inhertance issues */ /obj/item/energyhalberd - icon = 'icons/obj/transforming_energy.dmi' + icon = 'icons/obj/weapon/energy.dmi' icon_state = "halberd" lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index cd01cef70503..20ea6e747e83 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -373,7 +373,7 @@ /obj/item/nullrod/claymore/saber name = "light energy sword" hitsound = 'sound/weapons/blade1.ogg' - icon = 'icons/obj/transforming_energy.dmi' + icon = 'icons/obj/weapon/energy.dmi' icon_state = "swordblue" item_state = "swordblue" desc = "If you strike me down, I shall become more robust than you can possibly imagine." diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index b500eadca2f2..eb5adb35e106 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -1,5 +1,5 @@ /obj/item/melee/transforming/energy - icon = 'icons/obj/transforming_energy.dmi' + icon = 'icons/obj/weapon/energy.dmi' hitsound_on = 'sound/weapons/blade1.ogg' heat = 3500 max_integrity = 200 diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 00c619da8353..511687c22a5b 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -265,7 +265,7 @@ /obj/item/toy/sword name = "toy sword" desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up." - icon = 'icons/obj/transforming_energy.dmi' + icon = 'icons/obj/weapon/energy.dmi' icon_state = "sword" item_state = "sword" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 258e9a56217f..4b48fba2af22 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -1024,7 +1024,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( if(prob(25)) target.halitem.icon_state = "plasticx40" if(3) //sword - target.halitem.icon = 'icons/obj/transforming_energy.dmi' + target.halitem.icon = 'icons/obj/weapon/energy.dmi' target.halitem.icon_state = "sword0" target.halitem.name = "Energy Sword" if(4) //stun baton diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index f1a5862649a4..c0b6c2434b78 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -13,7 +13,7 @@ /obj/item/holo/esword name = "holographic energy sword" desc = "May the force be with you. Sorta." - icon = 'icons/obj/transforming_energy.dmi' + icon = 'icons/obj/weapon/energy.dmi' icon_state = "sword" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' From 4adba958fae79803d96bb6a04b36e76f064cc877 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sat, 13 Apr 2024 16:44:38 -0500 Subject: [PATCH 005/102] orginizes files --- .../objects/items/{ => melee}/chainsaw.dm | 0 .../objects/items/{ => melee}/dualsaber.dm | 0 .../items/{ => melee}/energyhalberd.dm | 0 .../game/objects/items/{ => melee}/fireaxe.dm | 0 .../objects/items/{ => melee}/holy_weapons.dm | 0 .../objects/items/{ => melee}/pitchfork.dm | 0 .../objects/items/{ => melee}/powerfist.dm | 0 .../items/{ => melee}/singularityhammer.dm | 0 code/game/objects/items/{ => melee}/spear.dm | 0 .../objects/items/{ => melee}/stunbaton.dm | 0 .../objects/items/{ => melee}/teleprod.dm | 0 .../objects/items/{ => melee}/weaponry.dm | 0 code/game/objects/items/toys.dm | 2 +- shiptest.dme | 24 +++++++++---------- 14 files changed, 13 insertions(+), 13 deletions(-) rename code/game/objects/items/{ => melee}/chainsaw.dm (100%) rename code/game/objects/items/{ => melee}/dualsaber.dm (100%) rename code/game/objects/items/{ => melee}/energyhalberd.dm (100%) rename code/game/objects/items/{ => melee}/fireaxe.dm (100%) rename code/game/objects/items/{ => melee}/holy_weapons.dm (100%) rename code/game/objects/items/{ => melee}/pitchfork.dm (100%) rename code/game/objects/items/{ => melee}/powerfist.dm (100%) rename code/game/objects/items/{ => melee}/singularityhammer.dm (100%) rename code/game/objects/items/{ => melee}/spear.dm (100%) rename code/game/objects/items/{ => melee}/stunbaton.dm (100%) rename code/game/objects/items/{ => melee}/teleprod.dm (100%) rename code/game/objects/items/{ => melee}/weaponry.dm (100%) diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/melee/chainsaw.dm similarity index 100% rename from code/game/objects/items/chainsaw.dm rename to code/game/objects/items/melee/chainsaw.dm diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/melee/dualsaber.dm similarity index 100% rename from code/game/objects/items/dualsaber.dm rename to code/game/objects/items/melee/dualsaber.dm diff --git a/code/game/objects/items/energyhalberd.dm b/code/game/objects/items/melee/energyhalberd.dm similarity index 100% rename from code/game/objects/items/energyhalberd.dm rename to code/game/objects/items/melee/energyhalberd.dm diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/melee/fireaxe.dm similarity index 100% rename from code/game/objects/items/fireaxe.dm rename to code/game/objects/items/melee/fireaxe.dm diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/melee/holy_weapons.dm similarity index 100% rename from code/game/objects/items/holy_weapons.dm rename to code/game/objects/items/melee/holy_weapons.dm diff --git a/code/game/objects/items/pitchfork.dm b/code/game/objects/items/melee/pitchfork.dm similarity index 100% rename from code/game/objects/items/pitchfork.dm rename to code/game/objects/items/melee/pitchfork.dm diff --git a/code/game/objects/items/powerfist.dm b/code/game/objects/items/melee/powerfist.dm similarity index 100% rename from code/game/objects/items/powerfist.dm rename to code/game/objects/items/melee/powerfist.dm diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/melee/singularityhammer.dm similarity index 100% rename from code/game/objects/items/singularityhammer.dm rename to code/game/objects/items/melee/singularityhammer.dm diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/melee/spear.dm similarity index 100% rename from code/game/objects/items/spear.dm rename to code/game/objects/items/melee/spear.dm diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm similarity index 100% rename from code/game/objects/items/stunbaton.dm rename to code/game/objects/items/melee/stunbaton.dm diff --git a/code/game/objects/items/teleprod.dm b/code/game/objects/items/melee/teleprod.dm similarity index 100% rename from code/game/objects/items/teleprod.dm rename to code/game/objects/items/melee/teleprod.dm diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/melee/weaponry.dm similarity index 100% rename from code/game/objects/items/weaponry.dm rename to code/game/objects/items/melee/weaponry.dm diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 511687c22a5b..68245a88c4f2 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -407,7 +407,7 @@ /obj/item/toy/katana name = "replica katana" desc = "Woefully underpowered in D20." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/weapon/sword.dmi' icon_state = "katana" item_state = "katana" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' diff --git a/shiptest.dme b/shiptest.dme index 41bc340bb144..37aa5082db3c 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1105,7 +1105,6 @@ #include "code\game\objects\items\cardboard_cutouts.dm" #include "code\game\objects\items\cards_ids.dm" #include "code\game\objects\items\cash.dm" -#include "code\game\objects\items\chainsaw.dm" #include "code\game\objects\items\charter.dm" #include "code\game\objects\items\chromosome.dm" #include "code\game\objects\items\chrono_eraser.dm" @@ -1125,19 +1124,15 @@ #include "code\game\objects\items\dna_injector.dm" #include "code\game\objects\items\documents.dm" #include "code\game\objects\items\door_seal.dm" -#include "code\game\objects\items\dualsaber.dm" #include "code\game\objects\items\dyekit.dm" #include "code\game\objects\items\eightball.dm" -#include "code\game\objects\items\energyhalberd.dm" #include "code\game\objects\items\etherealdiscoball.dm" #include "code\game\objects\items\extinguisher.dm" -#include "code\game\objects\items\fireaxe.dm" #include "code\game\objects\items\flamethrower.dm" #include "code\game\objects\items\gift.dm" #include "code\game\objects\items\granters.dm" #include "code\game\objects\items\handcuffs.dm" #include "code\game\objects\items\holosign_creator.dm" -#include "code\game\objects\items\holy_weapons.dm" #include "code\game\objects\items\hot_potato.dm" #include "code\game\objects\items\hourglass.dm" #include "code\game\objects\items\inducer.dm" @@ -1150,10 +1145,8 @@ #include "code\game\objects\items\paiwire.dm" #include "code\game\objects\items\pet_carrier.dm" #include "code\game\objects\items\pinpointer.dm" -#include "code\game\objects\items\pitchfork.dm" #include "code\game\objects\items\plushes.dm" #include "code\game\objects\items\pneumaticCannon.dm" -#include "code\game\objects\items\powerfist.dm" #include "code\game\objects\items\puzzle_pieces.dm" #include "code\game\objects\items\RCD.dm" #include "code\game\objects\items\RCL.dm" @@ -1167,20 +1160,15 @@ #include "code\game\objects\items\shrapnel.dm" #include "code\game\objects\items\shuttle_creator.dm" #include "code\game\objects\items\signs.dm" -#include "code\game\objects\items\singularityhammer.dm" -#include "code\game\objects\items\spear.dm" -#include "code\game\objects\items\stunbaton.dm" #include "code\game\objects\items\survery_handheld.dm" #include "code\game\objects\items\taster.dm" #include "code\game\objects\items\teleportation.dm" -#include "code\game\objects\items\teleprod.dm" #include "code\game\objects\items\theft_tools.dm" #include "code\game\objects\items\toy_mechs.dm" #include "code\game\objects\items\toys.dm" #include "code\game\objects\items\trash.dm" #include "code\game\objects\items\vending_items.dm" #include "code\game\objects\items\wayfinding.dm" -#include "code\game\objects\items\weaponry.dm" #include "code\game\objects\items\circuitboards\circuitboard.dm" #include "code\game\objects\items\circuitboards\computer_circuitboards.dm" #include "code\game\objects\items\circuitboards\machine_circuitboards.dm" @@ -1258,10 +1246,22 @@ #include "code\game\objects\items\implants\implanter.dm" #include "code\game\objects\items\implants\implantpad.dm" #include "code\game\objects\items\implants\implantuplink.dm" +#include "code\game\objects\items\melee\chainsaw.dm" #include "code\game\objects\items\melee\energy.dm" +#include "code\game\objects\items\melee\energyhalberd.dm" +#include "code\game\objects\items\melee\holy_weapons.dm" #include "code\game\objects\items\melee\misc.dm" +#include "code\game\objects\items\melee\dualsaber.dm" +#include "code\game\objects\items\melee\pitchfork.dm" +#include "code\game\objects\items\melee\powerfist.dm" +#include "code\game\objects\items\melee\singularityhammer.dm" +#include "code\game\objects\items\melee\stunbaton.dm" +#include "code\game\objects\items\melee\teleprod.dm" #include "code\game\objects\items\melee\transforming.dm" +#include "code\game\objects\items\melee\fireaxe.dm" +#include "code\game\objects\items\melee\weaponry.dm" #include "code\game\objects\items\robot\ai_upgrades.dm" +#include "code\game\objects\items\melee\spear.dm" #include "code\game\objects\items\robot\robot_items.dm" #include "code\game\objects\items\robot\robot_parts.dm" #include "code\game\objects\items\robot\robot_upgrades.dm" From 4a76632982d2c60911349580dc00ce00202b9b64 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sat, 13 Apr 2024 17:22:27 -0500 Subject: [PATCH 006/102] cruft --- _maps/RandomRuins/BeachRuins/beach_colony.dmm | 4 +- .../independent/independent_lagoon.dmm | 2 +- code/datums/components/crafting/recipes.dm | 9 - code/game/objects/items.dm | 5 + code/game/objects/items/gift.dm | 4 +- code/game/objects/items/melee/misc.dm | 485 ++++-------------- code/game/objects/items/melee/pitchfork.dm | 102 ---- code/game/objects/items/melee/stunbaton.dm | 234 +++++++++ code/game/objects/items/melee/weaponry.dm | 391 -------------- code/game/objects/items/miscellaneous.dm | 172 ++++++- .../game/objects/items/storage/uplink_kits.dm | 20 +- code/modules/antagonists/devil/devil.dm | 7 - .../nukeop/equipment/nuclearbomb.dm | 14 - code/modules/cargo/bounties/assistant.dm | 2 +- code/modules/cargo/exports/lavaland.dm | 1 - code/modules/events/wizard/curseditems.dm | 60 --- code/modules/mining/abandoned_crates.dm | 5 +- code/modules/mining/equipment/survival_pod.dm | 3 +- .../mining/lavaland/necropolis_chests.dm | 4 - code/modules/spells/spell_types/conjure.dm | 2 +- code/modules/spells/spell_types/devil.dm | 22 - code/modules/vehicles/scooter.dm | 8 +- code/modules/vending/games.dm | 4 +- icons/obj/weapon/misc.dmi | Bin 0 -> 189 bytes shiptest.dme | 2 - 25 files changed, 528 insertions(+), 1034 deletions(-) delete mode 100644 code/game/objects/items/melee/pitchfork.dm delete mode 100644 code/modules/events/wizard/curseditems.dm create mode 100644 icons/obj/weapon/misc.dmi diff --git a/_maps/RandomRuins/BeachRuins/beach_colony.dmm b/_maps/RandomRuins/BeachRuins/beach_colony.dmm index 05a810e004ad..9e73439acba4 100644 --- a/_maps/RandomRuins/BeachRuins/beach_colony.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_colony.dmm @@ -406,7 +406,7 @@ /turf/open/floor/wood, /area/ruin/unpowered) "Oa" = ( -/obj/item/melee/skateboard/pro, +/obj/item/skateboard/pro, /turf/open/floor/wood, /area/ruin/unpowered) "Om" = ( @@ -435,7 +435,7 @@ /area/overmap_encounter/planetoid/beachplanet/explored) "RK" = ( /obj/item/toy/beach_ball/holoball/dodgeball, -/obj/item/melee/skateboard/hoverboard, +/obj/item/skateboard/hoverboard, /turf/open/floor/plating/asteroid/sand/lit, /area/overmap_encounter/planetoid/beachplanet/explored) "RM" = ( diff --git a/_maps/shuttles/independent/independent_lagoon.dmm b/_maps/shuttles/independent/independent_lagoon.dmm index c015f0c262a1..56c3cda4bc2d 100644 --- a/_maps/shuttles/independent/independent_lagoon.dmm +++ b/_maps/shuttles/independent/independent_lagoon.dmm @@ -6796,7 +6796,7 @@ pixel_x = 4; pixel_y = 9 }, -/obj/item/melee/skateboard/hoverboard{ +/obj/item/skateboard/hoverboard{ pixel_x = -4 }, /turf/open/floor/eighties, diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index 9ec90bf09eac..cd646c164e4b 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -634,15 +634,6 @@ result = /obj/structure/headpike category = CAT_PRIMAL -/datum/crafting_recipe/legionpike - name = "Legion on a Spear" - time = 55 - reqs = list(/obj/item/spear = 1, - /obj/item/organ/regenerative_core = 1, - /obj/item/crusher_trophy/legion_skull = 2) - result = /obj/structure/legionpike - category = CAT_PRIMAL - /datum/crafting_recipe/tribal_torch name = "Tribal Torch" result = /obj/item/candle/tribal_torch diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index df7c5ae431c5..60053a80c0b6 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1102,3 +1102,8 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb */ /obj/item/proc/get_writing_implement_details() return null + +/obj/item/proc/can_trigger_gun(mob/living/user) + if(!user.can_use_guns(src)) + return FALSE + return TRUE \ No newline at end of file diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm index 8ec4353d1ca2..31ac7d44ecff 100644 --- a/code/game/objects/items/gift.dm +++ b/code/game/objects/items/gift.dm @@ -47,8 +47,7 @@ GLOBAL_LIST_EMPTY(possible_gifts) I.add_fingerprint(M) /obj/item/a_gift/proc/get_gift_type() - var/gift_type_list = list(/obj/item/sord, - /obj/item/storage/wallet, + var/gift_type_list = list(/obj/item/storage/wallet, /obj/item/storage/photo_album, /obj/item/storage/box/snappops, /obj/item/storage/crayons, @@ -67,7 +66,6 @@ GLOBAL_LIST_EMPTY(possible_gifts) /obj/item/bikehorn, /obj/item/toy/beach_ball, /obj/item/toy/beach_ball/holoball, - /obj/item/banhammer, /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus, /obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris, /obj/item/paicard, diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index f4fbd42be38b..0058f999436d 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -1,5 +1,8 @@ /obj/item/melee item_flags = NEEDS_PERMIT + icon = 'icons/obj/weapon/misc.dmi' + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' /obj/item/melee/proc/check_martial_counter(mob/living/carbon/human/target, mob/living/carbon/human/user) if(target.check_block()) @@ -8,7 +11,6 @@ user.Stun(40) return TRUE - /obj/item/melee/chainofcommand name = "chain of command" desc = "A tool used by great men to placate the frothing masses." @@ -116,12 +118,9 @@ w_class = WEIGHT_CLASS_SMALL attack_verb = list("smacked", "prodded") - var/extended = FALSE var/extend_sound = 'sound/weapons/batonextend.ogg' - - var/on_icon_state = "suns-tsword_ext" var/on_item_state = "suns-tsword_ext" var/off_icon_state = "suns-tsword" @@ -164,267 +163,6 @@ playsound(get_turf(src), extend_sound, 50, TRUE) add_fingerprint(user) -/obj/item/melee/beesword - name = "The Stinger" - desc = "Taken from a giant bee and folded over one thousand times in pure honey. Can sting through anything." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "beesword" - item_state = "stinger" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - force = 5 - w_class = WEIGHT_CLASS_BULKY - sharpness = IS_SHARP - throwforce = 10 - block_chance = 20 - armour_penetration = 65 - attack_verb = list("slashed", "stung", "prickled", "poked") - hitsound = 'sound/weapons/rapierhit.ogg' - -/obj/item/melee/beesword/afterattack(atom/target, mob/user, proximity) - . = ..() - if(!proximity) - return - user.changeNext_move(CLICK_CD_RAPID) - if(iscarbon(target)) - var/mob/living/carbon/H = target - H.reagents.add_reagent(/datum/reagent/toxin, 4) - -/obj/item/melee/classic_baton - name = "police baton" - desc = "A wooden truncheon for beating criminal scum." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "classic_baton" - item_state = "classic_baton" - lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - force = 12 //9 hit crit - w_class = WEIGHT_CLASS_NORMAL - - var/cooldown_check = 0 // Used interally, you don't want to modify - - var/cooldown = 40 // Default wait time until can stun again. - var/knockdown_time_carbon = (1.5 SECONDS) // Knockdown length for carbons. - var/stun_time_silicon = (5 SECONDS) // If enabled, how long do we stun silicons. - var/stamina_damage = 55 // Do we deal stamina damage. - var/affect_silicon = FALSE // Does it stun silicons. - var/on_sound // "On" sound, played when switching between able to stun or not. - var/on_stun_sound = 'sound/effects/woodhit.ogg' // Default path to sound for when we stun. - var/stun_animation = TRUE // Do we animate the "hit" when stunning. - var/on = TRUE // Are we on or off. - - var/on_icon_state // What is our sprite when turned on - var/off_icon_state // What is our sprite when turned off - var/on_item_state // What is our in-hand sprite when turned on - var/force_on // Damage when on - not stunning - var/force_off // Damage when off - not stunning - var/weight_class_on // What is the new size class when turned on - -// Description for trying to stun when still on cooldown. -/obj/item/melee/classic_baton/proc/get_wait_description() - return - -// Description for when turning their baton "on" -/obj/item/melee/classic_baton/proc/get_on_description() - . = list() - - .["local_on"] = "You extend the baton." - .["local_off"] = "You collapse the baton." - - return . - -// Default message for stunning mob. -/obj/item/melee/classic_baton/proc/get_stun_description(mob/living/target, mob/living/user) - . = list() - - .["visible"] = "[user] knocks [target] down with [src]!" - .["local"] = "[user] knocks you down with [src]!" - - return . - -// Default message for stunning a silicon. -/obj/item/melee/classic_baton/proc/get_silicon_stun_description(mob/living/target, mob/living/user) - . = list() - - .["visible"] = "[user] pulses [target]'s sensors with the baton!" - .["local"] = "You pulse [target]'s sensors with the baton!" - - return . - -// Are we applying any special effects when we stun to carbon -/obj/item/melee/classic_baton/proc/additional_effects_carbon(mob/living/target, mob/living/user) - return - -// Are we applying any special effects when we stun to silicon -/obj/item/melee/classic_baton/proc/additional_effects_silicon(mob/living/target, mob/living/user) - return - -/obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user) - if(!on) - return ..() - - add_fingerprint(user) - if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) - to_chat(user, "You hit yourself over the head!") - - user.Paralyze(knockdown_time_carbon * force) - user.apply_damage(stamina_damage, STAMINA, BODY_ZONE_HEAD) - - additional_effects_carbon(user) // user is the target here - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) - else - user.take_bodypart_damage(2*force) - return - if(iscyborg(target)) - // We don't stun if we're on harm. - if (user.a_intent != INTENT_HARM) - if (affect_silicon) - var/list/desc = get_silicon_stun_description(target, user) - - target.flash_act(affect_silicon = TRUE) - target.Paralyze(stun_time_silicon) - additional_effects_silicon(target, user) - - user.visible_message(desc["visible"], desc["local"]) - playsound(get_turf(src), on_stun_sound, 100, TRUE, -1) - - if (stun_animation) - user.do_attack_animation(target) - else - ..() - else - ..() - return - if(!isliving(target)) - return - if (user.a_intent == INTENT_HARM) - if(!..()) - return - if(!iscyborg(target)) - return - else - if(cooldown_check <= world.time) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) - return - if(check_martial_counter(H, user)) - return - - var/list/desc = get_stun_description(target, user) - - if (stun_animation) - user.do_attack_animation(target) - - playsound(get_turf(src), on_stun_sound, 75, TRUE, -1) - target.Knockdown(knockdown_time_carbon) - target.apply_damage(stamina_damage, STAMINA, BODY_ZONE_CHEST) - additional_effects_carbon(target, user) - - log_combat(user, target, "stunned", src) - add_fingerprint(user) - - target.visible_message(desc["visible"], desc["local"]) - - if(!iscarbon(user)) - target.LAssailant = null - else - target.LAssailant = WEAKREF(user) - cooldown_check = world.time + cooldown - else - var/wait_desc = get_wait_description() - if (wait_desc) - to_chat(user, wait_desc) - -/obj/item/conversion_kit - name = "conversion kit" - desc = "A strange box containing wood working tools and an instruction paper to turn stun batons into something else." - icon = 'icons/obj/storage.dmi' - icon_state = "uk" - custom_price = 450 - -/obj/item/melee/classic_baton/telescopic - name = "telescopic baton" - desc = "A compact yet robust personal defense weapon. Can be concealed when folded." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "telebaton_0" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - item_state = null - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - item_flags = NONE - force = 0 - on = FALSE - on_sound = 'sound/weapons/batonextend.ogg' - - on_icon_state = "telebaton_1" - off_icon_state = "telebaton_0" - on_item_state = "nullrod" - force_on = 10 - force_off = 0 - weight_class_on = WEIGHT_CLASS_BULKY - -/obj/item/melee/classic_baton/telescopic/attack_self(mob/user) - on = !on - var/list/desc = get_on_description() - - if(on) - to_chat(user, desc["local_on"]) - icon_state = on_icon_state - item_state = on_item_state - w_class = weight_class_on - force = force_on - attack_verb = list("smacked", "struck", "cracked", "beaten") - else - to_chat(user, desc["local_off"]) - icon_state = off_icon_state - item_state = null //no sprite for concealment even when in hand - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - force = force_off - attack_verb = list("hit", "poked") - - playsound(src.loc, on_sound, 50, TRUE) - add_fingerprint(user) - -/obj/item/melee/classic_baton/telescopic/contractor_baton - name = "contractor baton" - desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "contractor_baton_0" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - item_state = null - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - item_flags = NONE - force = 5 - - cooldown = 25 - stamina_damage = 85 - affect_silicon = TRUE - on_sound = 'sound/weapons/contractorbatonextend.ogg' - on_stun_sound = 'sound/effects/contractorbatonhit.ogg' - - on_icon_state = "contractor_baton_1" - off_icon_state = "contractor_baton_0" - on_item_state = "contractor_baton" - force_on = 16 - force_off = 5 - weight_class_on = WEIGHT_CLASS_NORMAL - -/obj/item/melee/classic_baton/telescopic/contractor_baton/get_wait_description() - return "The baton is still charging!" - -/obj/item/melee/classic_baton/telescopic/contractor_baton/additional_effects_carbon(mob/living/target, mob/living/user) - target.Jitter(20) - target.stuttering += 20 - /obj/item/melee/supermatter_sword name = "supermatter sword" desc = "In a universe full of bad ideas, this might just be the worst." @@ -538,114 +276,6 @@ H.drop_all_held_items() H.visible_message("[user] disarms [H]!", "[user] disarmed you!") -/obj/item/melee/roastingstick - name = "advanced roasting stick" - desc = "A telescopic roasting stick with a miniature shield generator designed to ensure entry into various high-tech shielded cooking ovens and firepits." - icon_state = "roastingstick_0" - item_state = "null" - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - item_flags = NONE - force = 0 - attack_verb = list("hit", "poked") - var/obj/item/reagent_containers/food/snacks/sausage/held_sausage - var/static/list/ovens - var/on = FALSE - var/datum/beam/beam - -/obj/item/melee/roastingstick/Initialize() - . = ..() - if (!ovens) - ovens = typecacheof(list(/obj/singularity, /obj/machinery/power/supermatter_crystal, /obj/structure/bonfire)) - -/obj/item/melee/roastingstick/attack_self(mob/user) - on = !on - if(on) - extend(user) - else - if (held_sausage) - to_chat(user, "You can't retract [src] while [held_sausage] is attached!") - return - retract(user) - - playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) - add_fingerprint(user) - -/obj/item/melee/roastingstick/attackby(atom/target, mob/user) - ..() - if (istype(target, /obj/item/reagent_containers/food/snacks/sausage)) - if (!on) - to_chat(user, "You must extend [src] to attach anything to it!") - return - if (held_sausage) - to_chat(user, "[held_sausage] is already attached to [src]!") - return - if (user.transferItemToLoc(target, src)) - held_sausage = target - else - to_chat(user, "[target] doesn't seem to want to get on [src]!") - update_appearance() - -/obj/item/melee/roastingstick/attack_hand(mob/user) - ..() - if (held_sausage) - user.put_in_hands(held_sausage) - held_sausage = null - update_appearance() - -/obj/item/melee/roastingstick/update_overlays() - . = ..() - if (held_sausage) - . += mutable_appearance(icon, "roastingstick_sausage") - -/obj/item/melee/roastingstick/proc/extend(user) - to_chat(user, "You extend [src].") - icon_state = "roastingstick_1" - item_state = "nullrod" - w_class = WEIGHT_CLASS_BULKY - -/obj/item/melee/roastingstick/proc/retract(user) - to_chat(user, "You collapse [src].") - icon_state = "roastingstick_0" - item_state = null - w_class = WEIGHT_CLASS_SMALL - -/obj/item/melee/roastingstick/handle_atom_del(atom/target) - if (target == held_sausage) - held_sausage = null - update_appearance() - -/obj/item/melee/roastingstick/afterattack(atom/target, mob/user, proximity) - . = ..() - if (!on) - return - if (is_type_in_typecache(target, ovens)) - if (held_sausage && held_sausage.roasted) - to_chat(src, "Your [held_sausage] has already been cooked!") - return - if (istype(target, /obj/singularity) && get_dist(user, target) < 10) - to_chat(user, "You send [held_sausage] towards [target].") - playsound(src, 'sound/items/rped.ogg', 50, TRUE) - beam = user.Beam(target,icon_state="rped_upgrade",time=100) - else if (user.Adjacent(target)) - to_chat(user, "You extend [src] towards [target].") - playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) - else - return - if(do_after(user, 100, target = user)) - finish_roasting(user, target) - else - QDEL_NULL(beam) - playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE) - -/obj/item/melee/roastingstick/proc/finish_roasting(user, atom/target) - to_chat(user, "You finish roasting [held_sausage].") - playsound(src,'sound/items/welder2.ogg',50,TRUE) - held_sausage.add_atom_colour(rgb(103,63,24), FIXED_COLOUR_PRIORITY) - held_sausage.name = "[target.name]-roasted [held_sausage.name]" - held_sausage.desc = "[held_sausage.desc] It has been cooked to perfection on \a [target]." - update_appearance() - /obj/item/melee/cleric_mace name = "cleric mace" desc = "The grandson of the club, yet the grandfather of the baseball bat. Most notably used by holy orders in days past." @@ -905,3 +535,112 @@ sword.name = "[n_title] blade of clan [n_name]" name = "[n_title] scabbard of clan [n_name]" update_appearance() + +/obj/item/melee/baseball_bat + name = "baseball bat" + desc = "There ain't a skull in the league that can withstand a swatter." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "baseball_bat" + item_state = "baseball_bat" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + force = 12 + throwforce = 12 + attack_verb = list("beat", "smacked") + custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 3.5) + w_class = WEIGHT_CLASS_HUGE + var/homerun_ready = 0 + var/homerun_able = 0 + +/obj/item/melee/baseball_bat/homerun + name = "home run bat" + desc = "This thing looks dangerous... Dangerously good at baseball, that is." + homerun_able = 1 + +/obj/item/melee/baseball_bat/attack_self(mob/user) + if(!homerun_able) + ..() + return + if(homerun_ready) + to_chat(user, "You're already ready to do a home run!") + ..() + return + to_chat(user, "You begin gathering strength...") + playsound(get_turf(src), 'sound/magic/lightning_chargeup.ogg', 65, TRUE) + if(do_after(user, 90, target = src)) + to_chat(user, "You gather power! Time for a home run!") + homerun_ready = 1 + ..() + +/obj/item/melee/baseball_bat/attack(mob/living/target, mob/living/user) + . = ..() + var/atom/throw_target = get_edge_target_turf(target, user.dir) + if(homerun_ready) + user.visible_message("It's a home run!") + target.throw_at(throw_target, rand(8,10), 14, user) + SSexplosions.medturf += throw_target + playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, TRUE) + homerun_ready = 0 + return + else if(!target.anchored) + target.throw_at(throw_target, rand(1,2), 2, user, gentle = TRUE) + +/obj/item/melee/baseball_bat/ablative + name = "metal baseball bat" + desc = "This bat is made of highly reflective, highly armored material." + icon_state = "baseball_bat_metal" + item_state = "baseball_bat_metal" + force = 12 + throwforce = 15 + +/obj/item/melee/baseball_bat/bone + name = "bone club" + desc = "A long and hard shaft of rock solid bone." // I am the master of comedy + icon_state = "baseball_bat_bone" + item_state = "baseball_bat_bone" + +/obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers + var/picksound = rand(1,2) + var/turf = get_turf(src) + if(picksound == 1) + playsound(turf, 'sound/weapons/effects/batreflect1.ogg', 50, TRUE) + if(picksound == 2) + playsound(turf, 'sound/weapons/effects/batreflect2.ogg', 50, TRUE) + return 1 + +/obj/item/melee/flyswatter + name = "flyswatter" + desc = "Useful for killing insects of all sizes." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "flyswatter" + item_state = "flyswatter" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + force = 1 + throwforce = 1 + attack_verb = list("swatted", "smacked") + hitsound = 'sound/effects/snap.ogg' + w_class = WEIGHT_CLASS_SMALL + //Things in this list will be instantly splatted. Flyman weakness is handled in the flyman species weakness proc. + var/list/strong_against + +/obj/item/melee/flyswatter/Initialize() + . = ..() + strong_against = typecacheof(list( + /mob/living/simple_animal/hostile/poison/bees/, + /mob/living/simple_animal/butterfly, + /mob/living/simple_animal/hostile/cockroach, + /obj/item/queen_bee + )) + +/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag) + . = ..() + if(proximity_flag) + if(is_type_in_typecache(target, strong_against)) + new /obj/effect/decal/cleanable/insectguts(target.drop_location()) + to_chat(user, "You easily splat the [target].") + if(istype(target, /mob/living/)) + var/mob/living/bug = target + bug.death(1) + else + qdel(target) diff --git a/code/game/objects/items/melee/pitchfork.dm b/code/game/objects/items/melee/pitchfork.dm deleted file mode 100644 index 05183ed479db..000000000000 --- a/code/game/objects/items/melee/pitchfork.dm +++ /dev/null @@ -1,102 +0,0 @@ -/obj/item/pitchfork - icon_state = "pitchfork0" - base_icon_state = "pitchfork" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "pitchfork" - desc = "A simple tool used for moving hay." - force = 7 - throwforce = 15 - w_class = WEIGHT_CLASS_BULKY - attack_verb = list("attacked", "impaled", "pierced") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) - resistance_flags = FIRE_PROOF - var/wielded = FALSE // track wielded status on item - -/obj/item/pitchfork/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - -/obj/item/pitchfork/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=7, force_wielded=15, icon_wielded="[base_icon_state]1") - -/// triggered on wield of two handed item -/obj/item/pitchfork/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/pitchfork/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/pitchfork/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/pitchfork/demonic - name = "demonic pitchfork" - desc = "A red pitchfork, it looks like the work of the devil." - force = 19 - throwforce = 24 - light_system = MOVABLE_LIGHT - light_range = 3 - light_power = 6 - light_color = COLOR_SOFT_RED - - -/obj/item/pitchfork/demonic/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=19, force_wielded=25) - -/obj/item/pitchfork/demonic/greater - force = 24 - throwforce = 50 - -/obj/item/pitchfork/demonic/greater/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=24, force_wielded=34) - -/obj/item/pitchfork/demonic/ascended - force = 100 - throwforce = 100 - -/obj/item/pitchfork/demonic/ascended/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=100, force_wielded=500000) // Kills you DEAD - -/obj/item/pitchfork/demonic/pickup(mob/living/user) - . = ..() - if(isliving(user) && user.mind && user.owns_soul() && !is_devil(user)) - var/mob/living/U = user - U.visible_message("As [U] picks [src] up, [U]'s arms briefly catch fire.", \ - "\"As you pick up [src] your arms ignite, reminding you of all your past sins.\"") - if(ishuman(U)) - var/mob/living/carbon/human/H = U - H.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - else - U.adjustFireLoss(rand(force/2,force)) - -/obj/item/pitchfork/demonic/attack(mob/target, mob/living/carbon/human/user) - if(user.mind && user.owns_soul() && !is_devil(user)) - to_chat(user, "[src] burns in your hands.") - user.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - ..() - -/obj/item/pitchfork/demonic/ascended/afterattack(atom/target, mob/user, proximity) - . = ..() - if(!proximity || !wielded) - return - if(iswallturf(target)) - var/turf/closed/wall/W = target - user.visible_message("[user] blasts \the [target] with \the [src]!") - playsound(target, 'sound/magic/disintegrate.ogg', 100, TRUE) - W.dismantle_wall(devastated = FALSE) - return diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index e1ad81e21413..59821ea78d43 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -333,3 +333,237 @@ /obj/item/melee/baton/boomerang/loaded //Same as above, comes with a cell. preload_cell_type = /obj/item/stock_parts/cell/high + +/obj/item/melee/classic_baton + name = "police baton" + desc = "A wooden truncheon for beating criminal scum." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "classic_baton" + item_state = "classic_baton" + lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' + slot_flags = ITEM_SLOT_BELT + force = 12 //9 hit crit + w_class = WEIGHT_CLASS_NORMAL + + var/cooldown_check = 0 // Used interally, you don't want to modify + + var/cooldown = 40 // Default wait time until can stun again. + var/knockdown_time_carbon = (1.5 SECONDS) // Knockdown length for carbons. + var/stun_time_silicon = (5 SECONDS) // If enabled, how long do we stun silicons. + var/stamina_damage = 55 // Do we deal stamina damage. + var/affect_silicon = FALSE // Does it stun silicons. + var/on_sound // "On" sound, played when switching between able to stun or not. + var/on_stun_sound = 'sound/effects/woodhit.ogg' // Default path to sound for when we stun. + var/stun_animation = TRUE // Do we animate the "hit" when stunning. + var/on = TRUE // Are we on or off. + + var/on_icon_state // What is our sprite when turned on + var/off_icon_state // What is our sprite when turned off + var/on_item_state // What is our in-hand sprite when turned on + var/force_on // Damage when on - not stunning + var/force_off // Damage when off - not stunning + var/weight_class_on // What is the new size class when turned on + +// Description for trying to stun when still on cooldown. +/obj/item/melee/classic_baton/proc/get_wait_description() + return + +// Description for when turning their baton "on" +/obj/item/melee/classic_baton/proc/get_on_description() + . = list() + + .["local_on"] = "You extend the baton." + .["local_off"] = "You collapse the baton." + + return . + +// Default message for stunning mob. +/obj/item/melee/classic_baton/proc/get_stun_description(mob/living/target, mob/living/user) + . = list() + + .["visible"] = "[user] knocks [target] down with [src]!" + .["local"] = "[user] knocks you down with [src]!" + + return . + +// Default message for stunning a silicon. +/obj/item/melee/classic_baton/proc/get_silicon_stun_description(mob/living/target, mob/living/user) + . = list() + + .["visible"] = "[user] pulses [target]'s sensors with the baton!" + .["local"] = "You pulse [target]'s sensors with the baton!" + + return . + +// Are we applying any special effects when we stun to carbon +/obj/item/melee/classic_baton/proc/additional_effects_carbon(mob/living/target, mob/living/user) + return + +// Are we applying any special effects when we stun to silicon +/obj/item/melee/classic_baton/proc/additional_effects_silicon(mob/living/target, mob/living/user) + return + +/obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user) + if(!on) + return ..() + + add_fingerprint(user) + if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) + to_chat(user, "You hit yourself over the head!") + + user.Paralyze(knockdown_time_carbon * force) + user.apply_damage(stamina_damage, STAMINA, BODY_ZONE_HEAD) + + additional_effects_carbon(user) // user is the target here + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) + else + user.take_bodypart_damage(2*force) + return + if(iscyborg(target)) + // We don't stun if we're on harm. + if (user.a_intent != INTENT_HARM) + if (affect_silicon) + var/list/desc = get_silicon_stun_description(target, user) + + target.flash_act(affect_silicon = TRUE) + target.Paralyze(stun_time_silicon) + additional_effects_silicon(target, user) + + user.visible_message(desc["visible"], desc["local"]) + playsound(get_turf(src), on_stun_sound, 100, TRUE, -1) + + if (stun_animation) + user.do_attack_animation(target) + else + ..() + else + ..() + return + if(!isliving(target)) + return + if (user.a_intent == INTENT_HARM) + if(!..()) + return + if(!iscyborg(target)) + return + else + if(cooldown_check <= world.time) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) + return + if(check_martial_counter(H, user)) + return + + var/list/desc = get_stun_description(target, user) + + if (stun_animation) + user.do_attack_animation(target) + + playsound(get_turf(src), on_stun_sound, 75, TRUE, -1) + target.Knockdown(knockdown_time_carbon) + target.apply_damage(stamina_damage, STAMINA, BODY_ZONE_CHEST) + additional_effects_carbon(target, user) + + log_combat(user, target, "stunned", src) + add_fingerprint(user) + + target.visible_message(desc["visible"], desc["local"]) + + if(!iscarbon(user)) + target.LAssailant = null + else + target.LAssailant = WEAKREF(user) + cooldown_check = world.time + cooldown + else + var/wait_desc = get_wait_description() + if (wait_desc) + to_chat(user, wait_desc) + +/obj/item/conversion_kit + name = "conversion kit" + desc = "A strange box containing wood working tools and an instruction paper to turn stun batons into something else." + icon = 'icons/obj/storage.dmi' + icon_state = "uk" + custom_price = 450 + +/obj/item/melee/classic_baton/telescopic + name = "telescopic baton" + desc = "A compact yet robust personal defense weapon. Can be concealed when folded." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "telebaton_0" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + item_state = null + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + item_flags = NONE + force = 0 + on = FALSE + on_sound = 'sound/weapons/batonextend.ogg' + + on_icon_state = "telebaton_1" + off_icon_state = "telebaton_0" + on_item_state = "nullrod" + force_on = 10 + force_off = 0 + weight_class_on = WEIGHT_CLASS_BULKY + +/obj/item/melee/classic_baton/telescopic/attack_self(mob/user) + on = !on + var/list/desc = get_on_description() + + if(on) + to_chat(user, desc["local_on"]) + icon_state = on_icon_state + item_state = on_item_state + w_class = weight_class_on + force = force_on + attack_verb = list("smacked", "struck", "cracked", "beaten") + else + to_chat(user, desc["local_off"]) + icon_state = off_icon_state + item_state = null //no sprite for concealment even when in hand + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + force = force_off + attack_verb = list("hit", "poked") + + playsound(src.loc, on_sound, 50, TRUE) + add_fingerprint(user) + +/obj/item/melee/classic_baton/telescopic/contractor_baton + name = "contractor baton" + desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "contractor_baton_0" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + item_state = null + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + item_flags = NONE + force = 5 + + cooldown = 25 + stamina_damage = 85 + affect_silicon = TRUE + on_sound = 'sound/weapons/contractorbatonextend.ogg' + on_stun_sound = 'sound/effects/contractorbatonhit.ogg' + + on_icon_state = "contractor_baton_1" + off_icon_state = "contractor_baton_0" + on_item_state = "contractor_baton" + force_on = 16 + force_off = 5 + weight_class_on = WEIGHT_CLASS_NORMAL + +/obj/item/melee/classic_baton/telescopic/contractor_baton/get_wait_description() + return "The baton is still charging!" + +/obj/item/melee/classic_baton/telescopic/contractor_baton/additional_effects_carbon(mob/living/target, mob/living/user) + target.Jitter(20) + target.stuttering += 20 diff --git a/code/game/objects/items/melee/weaponry.dm b/code/game/objects/items/melee/weaponry.dm index 9e8d1e3c17b9..e88f95324096 100644 --- a/code/game/objects/items/melee/weaponry.dm +++ b/code/game/objects/items/melee/weaponry.dm @@ -1,47 +1,3 @@ -/obj/item/banhammer - desc = "A banhammer." - name = "banhammer" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "toyhammer" - slot_flags = ITEM_SLOT_BELT - throwforce = 0 - force = 1 - w_class = WEIGHT_CLASS_TINY - throw_speed = 3 - throw_range = 7 - attack_verb = list("banned") - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) - resistance_flags = FIRE_PROOF - -/* -oranges says: This is a meme relating to the english translation of the ss13 russian wiki page on lurkmore. -mrdoombringer sez: and remember kids, if you try and PR a fix for this item's grammar, you are admitting that you are, indeed, a newfriend. -for further reading, please see: https://github.com/tgstation/tgstation/pull/30173 and https://translate.google.com/translate?sl=auto&tl=en&js=y&prev=_t&hl=en&ie=UTF-8&u=%2F%2Flurkmore.to%2FSS13&edit-text=&act=url -*/ -/obj/item/banhammer/attack(mob/M, mob/user) - if(user.zone_selected == BODY_ZONE_HEAD) - M.visible_message("[user] is stroking the head of [M] with a banhammer.", "[user] is stroking your head with a banhammer.", "You hear a banhammer stroking a head.") - else - M.visible_message("[M] has been banned FOR NO REISIN by [user]!", "You have been banned FOR NO REISIN by [user]!", "You hear a banhammer banning someone.") - playsound(loc, 'sound/effects/adminhelp.ogg', 15) //keep it at 15% volume so people don't jump out of their skin too much - if(user.a_intent != INTENT_HELP) - return ..(M, user) - -/obj/item/sord - name = "\improper SORD" - desc = "This thing is so unspeakably shitty you are having a hard time even holding it." - icon_state = "sord" - item_state = "sord" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - force = 2 - throwforce = 1 - w_class = WEIGHT_CLASS_NORMAL - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - /obj/item/claymore name = "claymore" desc = "What are you standing around staring at this for? Get to killing!" @@ -68,131 +24,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 . = ..() AddComponent(/datum/component/butchering, 40, 105) -/obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS - desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim." - flags_1 = CONDUCT_1 - item_flags = DROPDEL //WOW BRO YOU LOST AN ARM, GUESS WHAT YOU DONT GET YOUR SWORD ANYMORE //I CANT BELIEVE SPOOKYDONUT WOULD BREAK THE REQUIREMENTS - slot_flags = null - block_chance = 0 //RNG WON'T HELP YOU NOW, PANSY - light_range = 3 - attack_verb = list("brutalized", "eviscerated", "disemboweled", "hacked", "carved", "cleaved") //ONLY THE MOST VISCERAL ATTACK VERBS - var/notches = 0 //HOW MANY PEOPLE HAVE BEEN SLAIN WITH THIS BLADE - var/obj/item/disk/nuclear/nuke_disk //OUR STORED NUKE DISK - -/obj/item/claymore/highlander/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HIGHLANDER) - START_PROCESSING(SSobj, src) - -/obj/item/claymore/highlander/Destroy() - if(nuke_disk) - nuke_disk.forceMove(get_turf(src)) - nuke_disk.visible_message("The nuke disk is vulnerable!") - nuke_disk = null - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/claymore/highlander/process() - if(ishuman(loc)) - var/mob/living/carbon/human/H = loc - loc.layer = LARGE_MOB_LAYER //NO HIDING BEHIND PLANTS FOR YOU, DICKWEED (HA GET IT, BECAUSE WEEDS ARE PLANTS) - H.bleedsuppress = TRUE //AND WE WON'T BLEED OUT LIKE COWARDS - else - if(!(flags_1 & ADMIN_SPAWNED_1)) - qdel(src) - - -/obj/item/claymore/highlander/pickup(mob/living/user) - . = ..() - to_chat(user, "The power of Scotland protects you! You are shielded from all stuns and knockdowns.") - user.add_stun_absorption("highlander", INFINITY, 1, " is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!") - user.ignore_slowdown(HIGHLANDER) - -/obj/item/claymore/highlander/dropped(mob/living/user) - . = ..() - user.unignore_slowdown(HIGHLANDER) - -/obj/item/claymore/highlander/examine(mob/user) - . = ..() - . += "It has [!notches ? "nothing" : "[notches] notches"] scratched into the blade." - if(nuke_disk) - . += "It's holding the nuke disk!" - -/obj/item/claymore/highlander/attack(mob/living/target, mob/living/user) - . = ..() - if(!QDELETED(target) && iscarbon(target) && target.stat == DEAD && target.mind && target.mind.special_role == "highlander") - user.fully_heal(admin_revive = FALSE) //STEAL THE LIFE OF OUR FALLEN FOES - add_notch(user) - target.visible_message("[target] crumbles to dust beneath [user]'s blows!", "As you fall, your body crumbles to dust!") - target.dust() - -/obj/item/claymore/highlander/attack_self(mob/living/user) - var/closest_victim - var/closest_distance = 255 - for(var/mob/living/carbon/human/H in GLOB.player_list - user) - if(H.mind.special_role == "highlander" && (!closest_victim || get_dist(user, closest_victim) < closest_distance)) - closest_victim = H - if(!closest_victim) - to_chat(user, "[src] thrums for a moment and falls dark. Perhaps there's nobody nearby.") - return - to_chat(user, "[src] thrums and points to the [dir2text(get_dir(user, closest_victim))].") - -/obj/item/claymore/highlander/IsReflect() - return 1 //YOU THINK YOUR PUNY LASERS CAN STOP ME? - -/obj/item/claymore/highlander/proc/add_notch(mob/living/user) //DYNAMIC CLAYMORE PROGRESSION SYSTEM - THIS IS THE FUTURE - notches++ - force++ - var/new_name = name - switch(notches) - if(1) - to_chat(user, "Your first kill - hopefully one of many. You scratch a notch into [src]'s blade.") - to_chat(user, "You feel your fallen foe's soul entering your blade, restoring your wounds!") - new_name = "notched claymore" - if(2) - to_chat(user, "Another falls before you. Another soul fuses with your own. Another notch in the blade.") - new_name = "double-notched claymore" - add_atom_colour(rgb(255, 235, 235), ADMIN_COLOUR_PRIORITY) - if(3) - to_chat(user, "You're beginning to relish the thrill of battle.") - new_name = "triple-notched claymore" - add_atom_colour(rgb(255, 215, 215), ADMIN_COLOUR_PRIORITY) - if(4) - to_chat(user, "You've lost count of how many you've killed.") - new_name = "many-notched claymore" - add_atom_colour(rgb(255, 195, 195), ADMIN_COLOUR_PRIORITY) - if(5) - to_chat(user, "Five voices now echo in your mind, cheering the slaughter.") - new_name = "battle-tested claymore" - add_atom_colour(rgb(255, 175, 175), ADMIN_COLOUR_PRIORITY) - if(6) - to_chat(user, "Is this what the vikings felt like? Visions of glory fill your head as you slay your sixth foe.") - new_name = "battle-scarred claymore" - add_atom_colour(rgb(255, 155, 155), ADMIN_COLOUR_PRIORITY) - if(7) - to_chat(user, "Kill. Butcher. Conquer.") - new_name = "vicious claymore" - add_atom_colour(rgb(255, 135, 135), ADMIN_COLOUR_PRIORITY) - if(8) - to_chat(user, "IT NEVER GETS OLD. THE SCREAMING. THE BLOOD AS IT SPRAYS ACROSS YOUR FACE.") - new_name = "bloodthirsty claymore" - add_atom_colour(rgb(255, 115, 115), ADMIN_COLOUR_PRIORITY) - if(9) - to_chat(user, "ANOTHER ONE FALLS TO YOUR BLOWS. ANOTHER WEAKLING UNFIT TO LIVE.") - new_name = "gore-stained claymore" - add_atom_colour(rgb(255, 95, 95), ADMIN_COLOUR_PRIORITY) - if(10) - user.visible_message("[user]'s eyes light up with a vengeful fire!", \ - "YOU FEEL THE POWER OF VALHALLA FLOWING THROUGH YOU! THERE CAN BE ONLY ONE!!!") - user.update_icons() - new_name = "GORE-DRENCHED CLAYMORE OF [pick("THE WHIMSICAL SLAUGHTER", "A THOUSAND SLAUGHTERED CATTLE", "GLORY AND VALHALLA", "ANNIHILATION", "OBLITERATION")]" - icon_state = "claymore_gold" - item_state = "cultblade" - remove_atom_colour(ADMIN_COLOUR_PRIORITY) - - name = new_name - playsound(user, 'sound/items/screwdriver2.ogg', 50, TRUE) - /obj/item/katana name = "katana" desc = "Woefully underpowered in D20." @@ -216,57 +47,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 resistance_flags = FIRE_PROOF supports_variations = VOX_VARIATION -/obj/item/katana/cursed - name = "ominous katana" - desc = "A japanese single-edged blade, once used to contain an ancient evil. The being within is grateful for being released, but beware: generosity has a price." - icon_state = "ominous_katana" - item_state = "ominous_katana" - icon = 'icons/obj/lavaland/artefacts.dmi' - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - force = 35 - armour_penetration = 30 - max_integrity = 500 - resistance_flags = FIRE_PROOF | ACID_PROOF - var/essence = 0//Used for blade abilities, mainly heals(If I can safely implement this I will nerf the damage slightly, and boost the selfdam) - var/list/nemesis_factions = list("mining", "boss") - var/faction_bonus_force = 25 - - -/obj/item/katana/cursed/examine(mob/user) - . = ..() - . += "To cut into the flesh of your target with this weapon is to feed the gluttonous emptiness within. Burn the blood of your enemies to replenish your own spent essence." - -/obj/item/katana/cursed/attack(mob/living/target, mob/living/user) - . = ..() - if(isliving(target) && target.stat != DEAD) - essence += rand(15, 20) - -/obj/item/katana/cursed/attack(mob/living/target, mob/living/carbon/human/user) - var/nemesis_faction = FALSE - if(LAZYLEN(nemesis_factions)) - for(var/F in target.faction) - if(F in nemesis_factions) - nemesis_faction = TRUE - force += faction_bonus_force - nemesis_effects(user, target) - break - . = ..() - if(nemesis_faction) - force -= faction_bonus_force - -/obj/item/katana/cursed/proc/nemesis_effects(mob/living/user, mob/living/target) - return - -/obj/item/katana/cursed/attack(mob/target, mob/living/carbon/human/user) - if(user.mind && user.owns_soul()) - to_chat(user, "You feel a terrible chill as the emptiness within [src] devours on your life force!") - user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN)) - user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN)) - user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN)) - user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN)) - ..() - /obj/item/wirerod name = "wired rod" desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit." @@ -388,20 +168,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 hitsound = 'sound/weapons/genhit.ogg' sharpness = IS_BLUNT -/obj/item/phone - name = "red phone" - desc = "Should anything ever go wrong..." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "red_phone" - force = 3 - throwforce = 2 - throw_speed = 3 - throw_range = 4 - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("called", "rang") - hitsound = 'sound/weapons/ring.ogg' - - /obj/item/cane name = "cane" desc = "A cane used by a true gentleman. Or a clown." @@ -460,7 +226,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 icon = 'icons/obj/wizard.dmi' icon_state = "ectoplasm" - /obj/item/ectoplasm/angelic icon = 'icons/obj/wizard.dmi' icon_state = "angelplasm" @@ -523,161 +288,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 icon_state = "hippocratic" impressiveness = 50 -/obj/item/melee/skateboard - name = "improvised skateboard" - desc = "A skateboard. It can be placed on its wheels and ridden, or used as a strong weapon." - icon_state = "skateboard" - item_state = "skateboard" - force = 12 - throwforce = 4 - w_class = WEIGHT_CLASS_NORMAL - attack_verb = list("smacked", "whacked", "slammed", "smashed") - ///The vehicle counterpart for the board - var/board_item_type = /obj/vehicle/ridden/scooter/skateboard - -/obj/item/melee/skateboard/attack_self(mob/user) - var/obj/vehicle/ridden/scooter/skateboard/S = new board_item_type(get_turf(user))//this probably has fucky interactions with telekinesis but for the record it wasnt my fault - S.buckle_mob(user) - qdel(src) - -/obj/item/melee/skateboard/pro - name = "skateboard" - desc = "A RaDSTORMz brand professional skateboard. It looks sturdy and well made." - icon_state = "skateboard2" - item_state = "skateboard2" - board_item_type = /obj/vehicle/ridden/scooter/skateboard/pro - custom_premium_price = 500 - -/obj/item/melee/skateboard/hoverboard - name = "hoverboard" - desc = "A blast from the past, so retro!" - icon_state = "hoverboard_red" - item_state = "hoverboard_red" - board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard - custom_premium_price = 2015 - -/obj/item/melee/skateboard/hoverboard/admin - name = "\improper Board Of Directors" - desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too." - icon_state = "hoverboard_nt" - item_state = "hoverboard_nt" - board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin - -/obj/item/melee/baseball_bat - name = "baseball bat" - desc = "There ain't a skull in the league that can withstand a swatter." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "baseball_bat" - item_state = "baseball_bat" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 12 - throwforce = 12 - attack_verb = list("beat", "smacked") - custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 3.5) - w_class = WEIGHT_CLASS_HUGE - var/homerun_ready = 0 - var/homerun_able = 0 - -/obj/item/melee/baseball_bat/homerun - name = "home run bat" - desc = "This thing looks dangerous... Dangerously good at baseball, that is." - homerun_able = 1 - -/obj/item/melee/baseball_bat/attack_self(mob/user) - if(!homerun_able) - ..() - return - if(homerun_ready) - to_chat(user, "You're already ready to do a home run!") - ..() - return - to_chat(user, "You begin gathering strength...") - playsound(get_turf(src), 'sound/magic/lightning_chargeup.ogg', 65, TRUE) - if(do_after(user, 90, target = src)) - to_chat(user, "You gather power! Time for a home run!") - homerun_ready = 1 - ..() - -/obj/item/melee/baseball_bat/attack(mob/living/target, mob/living/user) - . = ..() - var/atom/throw_target = get_edge_target_turf(target, user.dir) - if(homerun_ready) - user.visible_message("It's a home run!") - target.throw_at(throw_target, rand(8,10), 14, user) - SSexplosions.medturf += throw_target - playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, TRUE) - homerun_ready = 0 - return - else if(!target.anchored) - target.throw_at(throw_target, rand(1,2), 2, user, gentle = TRUE) - -/obj/item/melee/baseball_bat/ablative - name = "metal baseball bat" - desc = "This bat is made of highly reflective, highly armored material." - icon_state = "baseball_bat_metal" - item_state = "baseball_bat_metal" - force = 12 - throwforce = 15 - -/obj/item/melee/baseball_bat/bone - name = "bone club" - desc = "A long and hard shaft of rock solid bone." // I am the master of comedy - icon_state = "baseball_bat_bone" - item_state = "baseball_bat_bone" - -/obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers - var/picksound = rand(1,2) - var/turf = get_turf(src) - if(picksound == 1) - playsound(turf, 'sound/weapons/effects/batreflect1.ogg', 50, TRUE) - if(picksound == 2) - playsound(turf, 'sound/weapons/effects/batreflect2.ogg', 50, TRUE) - return 1 - -/obj/item/melee/flyswatter - name = "flyswatter" - desc = "Useful for killing insects of all sizes." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "flyswatter" - item_state = "flyswatter" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 1 - throwforce = 1 - attack_verb = list("swatted", "smacked") - hitsound = 'sound/effects/snap.ogg' - w_class = WEIGHT_CLASS_SMALL - //Things in this list will be instantly splatted. Flyman weakness is handled in the flyman species weakness proc. - var/list/strong_against - -/obj/item/melee/flyswatter/Initialize() - . = ..() - strong_against = typecacheof(list( - /mob/living/simple_animal/hostile/poison/bees/, - /mob/living/simple_animal/butterfly, - /mob/living/simple_animal/hostile/cockroach, - /obj/item/queen_bee - )) - - -/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag) - . = ..() - if(proximity_flag) - if(is_type_in_typecache(target, strong_against)) - new /obj/effect/decal/cleanable/insectguts(target.drop_location()) - to_chat(user, "You easily splat the [target].") - if(istype(target, /mob/living/)) - var/mob/living/bug = target - bug.death(1) - else - qdel(target) - -/obj/item/proc/can_trigger_gun(mob/living/user) - if(!user.can_use_guns(src)) - return FALSE - return TRUE - /obj/item/extendohand name = "extendo-hand" desc = "Futuristic tech has allowed these classic spring-boxing toys to essentially act as a fully functional hand-operated hand prosthetic." @@ -817,7 +427,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 throwforce = 10 armour_penetration = 15 - /obj/item/vibro_weapon/weak armour_penetration = 10 block_chance = 10 diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 487d5d2c96ca..a0f9cda6dfb6 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -230,17 +230,6 @@ ouija_spaghetti_list[initial(A.name)] = A return ouija_spaghetti_list -/obj/structure/legionpike - name = "legion on a spear" - desc = "EXTREME interior decorating. You can feel it watching you." - icon = 'icons/obj/structures.dmi' - icon_state = "headpike-legion" - density = FALSE - anchored = TRUE - light_color = "#8B0000" - light_power = 2 - light_range = 2 - //rare and valulable gems- designed to eventually be used for archeology, or to be given as opposed to money as loot. Auctioned off at export, or kept as a trophy. /obj/item/gem/rupee name = "\improper Ruperium Crystal" @@ -295,3 +284,164 @@ light_power = 1 light_color = "#4785a4" w_class = WEIGHT_CLASS_SMALL + +/obj/item/phone + name = "red phone" + desc = "Should anything ever go wrong..." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "red_phone" + force = 3 + throwforce = 2 + throw_speed = 3 + throw_range = 4 + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("called", "rang") + hitsound = 'sound/weapons/ring.ogg' + +/obj/item/melee/roastingstick + name = "advanced roasting stick" + desc = "A telescopic roasting stick with a miniature shield generator designed to ensure entry into various high-tech shielded cooking ovens and firepits." + icon_state = "roastingstick_0" + item_state = "null" + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + item_flags = NONE + force = 0 + attack_verb = list("hit", "poked") + var/obj/item/reagent_containers/food/snacks/sausage/held_sausage + var/static/list/ovens + var/on = FALSE + var/datum/beam/beam + +/obj/item/melee/roastingstick/Initialize() + . = ..() + if (!ovens) + ovens = typecacheof(list(/obj/singularity, /obj/machinery/power/supermatter_crystal, /obj/structure/bonfire)) + +/obj/item/melee/roastingstick/attack_self(mob/user) + on = !on + if(on) + extend(user) + else + if (held_sausage) + to_chat(user, "You can't retract [src] while [held_sausage] is attached!") + return + retract(user) + + playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) + add_fingerprint(user) + +/obj/item/melee/roastingstick/attackby(atom/target, mob/user) + ..() + if (istype(target, /obj/item/reagent_containers/food/snacks/sausage)) + if (!on) + to_chat(user, "You must extend [src] to attach anything to it!") + return + if (held_sausage) + to_chat(user, "[held_sausage] is already attached to [src]!") + return + if (user.transferItemToLoc(target, src)) + held_sausage = target + else + to_chat(user, "[target] doesn't seem to want to get on [src]!") + update_appearance() + +/obj/item/melee/roastingstick/attack_hand(mob/user) + ..() + if (held_sausage) + user.put_in_hands(held_sausage) + held_sausage = null + update_appearance() + +/obj/item/melee/roastingstick/update_overlays() + . = ..() + if (held_sausage) + . += mutable_appearance(icon, "roastingstick_sausage") + +/obj/item/melee/roastingstick/proc/extend(user) + to_chat(user, "You extend [src].") + icon_state = "roastingstick_1" + item_state = "nullrod" + w_class = WEIGHT_CLASS_BULKY + +/obj/item/melee/roastingstick/proc/retract(user) + to_chat(user, "You collapse [src].") + icon_state = "roastingstick_0" + item_state = null + w_class = WEIGHT_CLASS_SMALL + +/obj/item/melee/roastingstick/handle_atom_del(atom/target) + if (target == held_sausage) + held_sausage = null + update_appearance() + +/obj/item/melee/roastingstick/afterattack(atom/target, mob/user, proximity) + . = ..() + if (!on) + return + if (is_type_in_typecache(target, ovens)) + if (held_sausage && held_sausage.roasted) + to_chat(src, "Your [held_sausage] has already been cooked!") + return + if (istype(target, /obj/singularity) && get_dist(user, target) < 10) + to_chat(user, "You send [held_sausage] towards [target].") + playsound(src, 'sound/items/rped.ogg', 50, TRUE) + beam = user.Beam(target,icon_state="rped_upgrade",time=100) + else if (user.Adjacent(target)) + to_chat(user, "You extend [src] towards [target].") + playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) + else + return + if(do_after(user, 100, target = user)) + finish_roasting(user, target) + else + QDEL_NULL(beam) + playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE) + +/obj/item/melee/roastingstick/proc/finish_roasting(user, atom/target) + to_chat(user, "You finish roasting [held_sausage].") + playsound(src,'sound/items/welder2.ogg',50,TRUE) + held_sausage.add_atom_colour(rgb(103,63,24), FIXED_COLOUR_PRIORITY) + held_sausage.name = "[target.name]-roasted [held_sausage.name]" + held_sausage.desc = "[held_sausage.desc] It has been cooked to perfection on \a [target]." + update_appearance() + +/obj/item/skateboard + name = "improvised skateboard" + desc = "A skateboard. It can be placed on its wheels and ridden, or used as a strong weapon." + icon_state = "skateboard" + item_state = "skateboard" + force = 12 + throwforce = 4 + w_class = WEIGHT_CLASS_NORMAL + attack_verb = list("smacked", "whacked", "slammed", "smashed") + ///The vehicle counterpart for the board + var/board_item_type = /obj/vehicle/ridden/scooter/skateboard + +/obj/item/skateboard/attack_self(mob/user) + var/obj/vehicle/ridden/scooter/skateboard/S = new board_item_type(get_turf(user))//this probably has fucky interactions with telekinesis but for the record it wasnt my fault + S.buckle_mob(user) + qdel(src) + +/obj/item/skateboard/pro + name = "skateboard" + desc = "A RaDSTORMz brand professional skateboard. It looks sturdy and well made." + icon_state = "skateboard2" + item_state = "skateboard2" + board_item_type = /obj/vehicle/ridden/scooter/skateboard/pro + custom_premium_price = 500 + +/obj/item/skateboard/hoverboard + name = "hoverboard" + desc = "A blast from the past, so retro!" + icon_state = "hoverboard_red" + item_state = "hoverboard_red" + board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard + custom_premium_price = 2015 + +/obj/item/skateboard/hoverboard/admin + name = "\improper Board Of Directors" + desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too." + icon_state = "hoverboard_nt" + item_state = "hoverboard_nt" + board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 221cdf42d3f3..116ae0062809 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -117,7 +117,7 @@ new /obj/item/card/emag(src) // 6 tc /obj/item/storage/box/syndicate/bundle_B/PopulateContents() - switch (pickweight(list( "bond" = 2, "ninja" = 1, "darklord" = 1, "white_whale_holy_grail" = 2, "mad_scientist" = 2, "bee" = 1, "mr_freeze" = 2, "made_man"= 1))) + switch (pickweight(list( "bond" = 2, "ninja" = 1, "darklord" = 1, "white_whale_holy_grail" = 2, "mad_scientist" = 2, "mr_freeze" = 2, "made_man"= 1))) if("bond") new /obj/item/gun/ballistic/automatic/pistol(src) new /obj/item/suppressor(src) @@ -167,16 +167,6 @@ new /obj/item/pen/edagger(src) new /obj/item/gun/energy/decloner/unrestricted(src) - if("bee") - new /obj/item/paper/fluff/bee_objectives(src) // 0 tc (motivation) - new /obj/item/clothing/suit/hooded/bee_costume(src) // 0 tc - new /obj/item/clothing/mask/rat/bee(src) // 0 tc - new /obj/item/storage/belt/fannypack/yellow(src) // 0 tc - new /obj/item/grenade/spawnergrenade/buzzkill(src) - new /obj/item/grenade/spawnergrenade/buzzkill(src) - new /obj/item/reagent_containers/glass/bottle/beesease(src) // 10 tc? - new /obj/item/melee/beesword(src) //priceless - if("mr_freeze") new /obj/item/clothing/glasses/cold(src) new /obj/item/clothing/gloves/color/black(src) @@ -209,14 +199,6 @@ new /obj/item/reagent_containers/food/drinks/flask (src) // 1 TC, I can't believe I forgot about the booze flask AAAAAAA new /obj/item/storage/secure/briefcase/syndie (src) // 1TC, for bribing the bartender to let you set up shop... amongst other actions. - -/obj/item/paper/fluff/bee_objectives - name = "Objectives of a Bee Liberation Front Operative" - default_raw_text = "Objective #1. Liberate all bees on the NT transport vessel 2416/B. Success!
Objective #2. Escape alive. Failed." - - - - /obj/item/storage/box/syndicate/contract_kit name = "Contract Kit" desc = "Supplied to Syndicate contractors." diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index 9b9ba7c4d69d..23a6f3496bf6 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -102,9 +102,6 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", var/form = BASIC_DEVIL var/static/list/devil_spells = typecacheof(list( /obj/effect/proc_holder/spell/aimed/fireball/hellish, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended, /obj/effect/proc_holder/spell/targeted/infernal_jaunt, /obj/effect/proc_holder/spell/targeted/sintouch, /obj/effect/proc_holder/spell/targeted/sintouch/ascended, @@ -340,21 +337,17 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", /datum/antagonist/devil/proc/give_base_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null)) /datum/antagonist/devil/proc/give_blood_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) /datum/antagonist/devil/proc/give_true_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null)) /datum/antagonist/devil/proc/give_arch_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch/ascended(null)) /datum/antagonist/devil/proc/beginResurrectionCheck(mob/living/body) diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index d0019eb19cc2..d38f274e87b4 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -663,20 +663,6 @@ This is here to make the tiles around the station mininuke change when it's arme if(isobserver(user) || HAS_TRAIT(user.mind, TRAIT_DISK_VERIFIER)) . += "The serial numbers on [src] are incorrect." -/obj/item/disk/nuclear/attackby(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/claymore/highlander) && !fake) - var/obj/item/claymore/highlander/H = I - if(H.nuke_disk) - to_chat(user, "Wait... what?") - qdel(H.nuke_disk) - H.nuke_disk = null - return - user.visible_message("[user] captures [src]!", "You've got the disk! Defend it with your life!") - forceMove(H) - H.nuke_disk = src - return TRUE - return ..() - /obj/item/disk/nuclear/Destroy(force=FALSE) // respawning is handled in /obj/Destroy() if(force) diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index 3ddc15dfa33b..01916354caa7 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -15,7 +15,7 @@ name = "Skateboard" description = "Nanotrasen has determined walking to be wasteful. Ship a skateboard to CentCom to speed operations up." reward = 900 // the tony hawk - wanted_types = list(/obj/vehicle/ridden/scooter/skateboard, /obj/item/melee/skateboard) + wanted_types = list(/obj/vehicle/ridden/scooter/skateboard, /obj/item/skateboard) /datum/bounty/item/assistant/stunprod name = "Stunprod" diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm index cd1946265374..83f2425a86a7 100644 --- a/code/modules/cargo/exports/lavaland.dm +++ b/code/modules/cargo/exports/lavaland.dm @@ -10,7 +10,6 @@ /obj/item/gun/magic/hook, /obj/item/wisp_lantern, /obj/item/reagent_containers/glass/bottle/potion/flight, - /obj/item/katana/cursed, /obj/item/clothing/glasses/godeye, /obj/item/melee/ghost_sword, /obj/item/clothing/suit/space/hardsuit/cult, diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm deleted file mode 100644 index e99b0d754910..000000000000 --- a/code/modules/events/wizard/curseditems.dm +++ /dev/null @@ -1,60 +0,0 @@ -/datum/round_event_control/wizard/cursed_items //fashion disasters - name = "Cursed Items" - weight = 3 - typepath = /datum/round_event/wizard/cursed_items - max_occurrences = 3 - earliest_start = 0 MINUTES - -//Note about adding items to this: Because of how NODROP_1 works if an item spawned to the hands can also be equiped to a slot -//it will be able to be put into that slot from the hand, but then get stuck there. To avoid this make a new subtype of any -//item you want to equip to the hand, and set its slots_flags = null. Only items equiped to hands need do this. - -/datum/round_event/wizard/cursed_items/start() - var/item_set = pick("wizardmimic", "swords", "bigfatdoobie", "boxing", "voicemodulators", "catgirls2015") - var/list/loadout[SLOTS_AMT] - var/ruins_spaceworthiness - var/ruins_wizard_loadout - - switch(item_set) - if("wizardmimic") - loadout[ITEM_SLOT_OCLOTHING] = /obj/item/clothing/suit/wizrobe - loadout[ITEM_SLOT_FEET] = /obj/item/clothing/shoes/sandal/magic - loadout[ITEM_SLOT_HEAD] = /obj/item/clothing/head/wizard - ruins_spaceworthiness = 1 - if("swords") - loadout[ITEM_SLOT_HANDS] = /obj/item/katana/cursed - if("bigfatdoobie") - loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/cigarette/rollie/trippy - ruins_spaceworthiness = 1 - if("boxing") - loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/luchador - loadout[ITEM_SLOT_GLOVES] = /obj/item/clothing/gloves/boxing - ruins_spaceworthiness = 1 - if("voicemodulators") - loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/chameleon - if("catgirls2015") - loadout[ITEM_SLOT_HEAD] = /obj/item/clothing/head/kitty - ruins_spaceworthiness = 1 - ruins_wizard_loadout = 1 - - for(var/mob/living/carbon/human/H as anything in GLOB.human_list) - if(ruins_spaceworthiness && isspaceturf(H.loc) || isplasmaman(H)) - continue //#savetheminers - if(ruins_wizard_loadout && iswizard(H)) - continue - if(item_set == "catgirls2015") //Wizard code means never having to say you're sorry - H.gender = FEMALE - for(var/i in 1 to loadout.len) - if(loadout[i]) - var/obj/item/J = loadout[i] - var/obj/item/I = new J //dumb but required because of byond throwing a fit anytime new gets too close to a list - H.dropItemToGround(H.get_item_by_slot(i), TRUE) - H.equip_to_slot_or_del(I, i) - ADD_TRAIT(I, TRAIT_NODROP, CURSED_ITEM_TRAIT) - I.item_flags |= DROPDEL - I.name = "cursed " + I.name - - for(var/mob/living/carbon/human/H as anything in GLOB.human_list) - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(0, H.loc) - smoke.start() diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 140b87c1707f..515efcac62ee 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -136,7 +136,7 @@ for(var/i in 1 to 3) new /obj/item/clothing/mask/cigarette/rollie(src) if(6 to 10) - new /obj/item/melee/skateboard/pro(src) + new /obj/item/skateboard/pro(src) if(11 to 15) new /mob/living/simple_animal/bot/honkbot(src) if(16 to 20) @@ -220,7 +220,6 @@ if(95) new /obj/item/toy/plush/nukeplushie(src) if(96) - new /obj/item/banhammer(src) for(var/i in 1 to 3) var/obj/effect/mine/sound/bwoink/mine = new (src) mine.set_anchored(FALSE) @@ -239,5 +238,5 @@ if(99) new /obj/item/implanter/sad_trombone(src) if(100) - new /obj/item/melee/skateboard/hoverboard(src) + new /obj/item/skateboard/hoverboard(src) spawned_loot = TRUE diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 5e012735b706..f95385f4beaa 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -319,8 +319,7 @@ /obj/item/gun/magic/wand/fireball, /obj/item/stack/telecrystal/twenty, /obj/item/nuke_core, - /obj/item/phylactery, - /obj/item/banhammer) + /obj/item/phylactery) /obj/item/fakeartefact/Initialize() . = ..() diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 985c5212299b..66eb1d517dd3 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -21,8 +21,6 @@ new /obj/item/clothing/suit/space/hardsuit/cult(src) if(3) new /obj/item/necromantic_stone/lava(src) - if(4) - new /obj/item/katana/cursed(src) if(5) new /obj/item/clothing/glasses/godeye(src) if(6) @@ -98,8 +96,6 @@ new /obj/item/clothing/suit/space/hardsuit/cult(src) if(3) new /obj/item/necromantic_stone/lava(src) - if(4) - new /obj/item/katana/cursed(src) if(5) new /obj/item/clothing/glasses/godeye(src) if(6) diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm index c47205a27323..baa32eadb517 100644 --- a/code/modules/spells/spell_types/conjure.dm +++ b/code/modules/spells/spell_types/conjure.dm @@ -75,7 +75,7 @@ range = -1 clothes_req = FALSE var/obj/item/item - var/item_type = /obj/item/banhammer + var/item_type = /obj/item school = "conjuration" charge_max = 150 cooldown_min = 10 diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm index 6631d943a3aa..e60df200445d 100644 --- a/code/modules/spells/spell_types/devil.dm +++ b/code/modules/spells/spell_types/devil.dm @@ -1,25 +1,3 @@ -/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork - name = "Summon Pitchfork" - desc = "A devil's weapon of choice. Use this to summon/unsummon your pitchfork." - invocation_type = "none" - include_user = TRUE - range = -1 - clothes_req = FALSE - item_type = /obj/item/pitchfork/demonic - - school = "conjuration" - charge_max = 150 - cooldown_min = 10 - action_icon = 'icons/mob/actions/actions_minor_antag.dmi' - action_icon_state = "pitchfork" - action_background_icon_state = "bg_demon" - -/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater - item_type = /obj/item/pitchfork/demonic/greater - -/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended - item_type = /obj/item/pitchfork/demonic/ascended - /obj/effect/proc_holder/spell/targeted/conjure_item/violin item_type = /obj/item/instrument/violin/golden desc = "A devil's instrument of choice. Use this to summon/unsummon your golden violin." diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm index 8d6acea28452..ebef11cd2630 100644 --- a/code/modules/vehicles/scooter.dm +++ b/code/modules/vehicles/scooter.dm @@ -57,7 +57,7 @@ ///Stores the default icon state var/board_icon = "skateboard" ///The handheld item counterpart for the board - var/board_item_type = /obj/item/melee/skateboard + var/board_item_type = /obj/item/skateboard ///Stamina drain multiplier var/instability = 10 @@ -165,13 +165,13 @@ desc = "A RaDSTORMz brand professional skateboard. Looks a lot more stable than the average board." icon_state = "skateboard2" board_icon = "skateboard2" - board_item_type = /obj/item/melee/skateboard/pro + board_item_type = /obj/item/skateboard/pro instability = 6 /obj/vehicle/ridden/scooter/skateboard/hoverboard/ name = "hoverboard" desc = "A blast from the past, so retro!" - board_item_type = /obj/item/melee/skateboard/hoverboard + board_item_type = /obj/item/skateboard/hoverboard instability = 3 icon_state = "hoverboard_red" board_icon = "hoverboard_red" @@ -188,7 +188,7 @@ /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin name = "\improper Board Of Directors" desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too." - board_item_type = /obj/item/melee/skateboard/hoverboard/admin + board_item_type = /obj/item/skateboard/hoverboard/admin instability = 0 icon_state = "hoverboard_nt" board_icon = "hoverboard_nt" diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index d209c93eae8e..4886f387f407 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -16,8 +16,8 @@ /obj/item/dyespray = 3) contraband = list(/obj/item/dice/fudge = 9) premium = list( - /obj/item/melee/skateboard/pro = 3, - /obj/item/melee/skateboard/hoverboard = 1) + /obj/item/skateboard/pro = 3, + /obj/item/skateboard/hoverboard = 1) refill_canister = /obj/item/vending_refill/games default_price = 50 extra_price = 250 diff --git a/icons/obj/weapon/misc.dmi b/icons/obj/weapon/misc.dmi new file mode 100644 index 0000000000000000000000000000000000000000..56a7ecb9b979942eb67b87e794f8425639e12ca9 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&#I7!5|`BC)e_1!5cyiE*d|0q;uX!^CUx2Pwx&3;~?Y9#$F0CsjT7l z;v3i)KHlcf^{%~V4K!5W)5S5QV$R!hhKvjh9ES}K>|f!@EN-*1aoOZ6>7T3Efl83T Y4zb8vObsf Date: Sat, 13 Apr 2024 17:40:38 -0500 Subject: [PATCH 007/102] yea --- code/datums/components/crafting/recipes.dm | 48 ------ code/game/objects/items/melee/weaponry.dm | 179 ++------------------- code/game/objects/items/miscellaneous.dm | 121 ++++++++++++++ 3 files changed, 134 insertions(+), 214 deletions(-) diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index cd646c164e4b..5b8cbd58e035 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -511,16 +511,6 @@ /obj/item/stack/sheet/animalhide/goliath_hide = 1) category = CAT_PRIMAL -/datum/crafting_recipe/bonestaff - name = "Legion Staff" - result = /obj/item/legion_staff - time = 35 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/crusher_trophy/legion_skull = 2,\ - /obj/item/crusher_trophy/dwarf_skull = 1, - /obj/item/organ/regenerative_core/legion = 1) - category = CAT_PRIMAL - /datum/crafting_recipe/skilt name = "Sinew Kilt" result = /obj/item/clothing/accessory/skilt @@ -701,34 +691,6 @@ tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) category = CAT_MISC -/datum/crafting_recipe/aitater - name = "intelliTater" - result = /obj/item/aicard/aitater - time = 30 - tools = list(TOOL_WIRECUTTER) - reqs = list(/obj/item/aicard = 1, - /obj/item/reagent_containers/food/snacks/grown/potato = 1, - /obj/item/stack/cable_coil = 5) - category = CAT_MISC - -/datum/crafting_recipe/aitater/check_requirements(mob/user, list/collected_requirements) - var/obj/item/aicard/aicard = collected_requirements[/obj/item/aicard][1] - if(!aicard.AI) - return TRUE - - to_chat(user, "You can't craft an intelliTater with an AI in the card!") - return FALSE - -/datum/crafting_recipe/aispook - name = "intelliLantern" - result = /obj/item/aicard/aispook - time = 30 - tools = list(TOOL_WIRECUTTER) - reqs = list(/obj/item/aicard = 1, - /obj/item/reagent_containers/food/snacks/grown/pumpkin = 1, - /obj/item/stack/cable_coil = 5) - category = CAT_MISC - /datum/crafting_recipe/ghettojetpack name = "Improvised Jetpack" result = /obj/item/tank/jetpack/improvised @@ -798,16 +760,6 @@ result = /obj/item/clothing/gloves/tackler/offbrand category = CAT_CLOTHING -/*WS edit - Normal BoH -/datum/crafting_recipe/boh - name = "Bag of Holding" - reqs = list( - /obj/item/bag_of_holding_inert = 1, - /obj/item/assembly/signaler/anomaly/bluespace = 1) - result = /obj/item/storage/backpack/holding - category = CAT_CLOTHING -*/ - /datum/crafting_recipe/ipickaxe name = "Improvised Pickaxe" reqs = list( diff --git a/code/game/objects/items/melee/weaponry.dm b/code/game/objects/items/melee/weaponry.dm index e88f95324096..97665cfb47b6 100644 --- a/code/game/objects/items/melee/weaponry.dm +++ b/code/game/objects/items/melee/weaponry.dm @@ -24,6 +24,19 @@ . = ..() AddComponent(/datum/component/butchering, 40, 105) +/obj/item/claymore/bone + name = "Bone Sword" + desc = "Jagged pieces of bone are tied to what looks like a goliaths femur." + icon_state = "bone_sword" + item_state = "bone_sword" + icon = 'icons/obj/items_and_weapons.dmi' + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + mob_overlay_icon = 'icons/mob/clothing/back.dmi' + force = 15 + throwforce = 10 + armour_penetration = 15 + /obj/item/katana name = "katana" desc = "Woefully underpowered in D20." @@ -86,7 +99,6 @@ else return ..() - /obj/item/throwing_star name = "throwing star" desc = "An ancient weapon still used to this day, due to its ease of lodging itself into its victim's body parts." @@ -168,68 +180,6 @@ hitsound = 'sound/weapons/genhit.ogg' sharpness = IS_BLUNT -/obj/item/cane - name = "cane" - desc = "A cane used by a true gentleman. Or a clown." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "cane" - item_state = "stick" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 5 - throwforce = 5 - w_class = WEIGHT_CLASS_SMALL - custom_materials = list(/datum/material/iron=50) - attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed") - -/obj/item/staff - name = "wizard staff" - desc = "Apparently a staff used by the wizard." - icon = 'icons/obj/wizard.dmi' - icon_state = "staff" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - force = 3 - throwforce = 5 - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - armour_penetration = 100 - attack_verb = list("bludgeoned", "whacked", "disciplined") - resistance_flags = FLAMMABLE - -/obj/item/staff/broom - name = "broom" - desc = "Used for sweeping, and flying into the night while cackling. Black cat not included." - icon = 'icons/obj/wizard.dmi' - icon_state = "broom" - resistance_flags = FLAMMABLE - -/obj/item/staff/stick - name = "stick" - desc = "A great tool to drag someone else's drinks across the bar." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "cane" - item_state = "stick" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 3 - throwforce = 5 - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - -/obj/item/ectoplasm - name = "ectoplasm" - desc = "Spooky." - gender = PLURAL - icon = 'icons/obj/wizard.dmi' - icon_state = "ectoplasm" - -/obj/item/ectoplasm/angelic - icon = 'icons/obj/wizard.dmi' - icon_state = "angelplasm" - /obj/item/mounted_chainsaw name = "mounted chainsaw" desc = "A chainsaw that has replaced your arm." @@ -265,66 +215,6 @@ if(part) part.drop_limb() -/obj/item/statuebust - name = "bust" - desc = "A priceless ancient marble bust, the kind that belongs in a museum." //or you can hit people with it - icon = 'icons/obj/statue.dmi' - icon_state = "bust" - force = 15 - throwforce = 10 - throw_speed = 5 - throw_range = 2 - attack_verb = list("busted") - var/impressiveness = 45 - -/obj/item/statuebust/Initialize() - . = ..() - AddComponent(/datum/component/art, impressiveness) - AddElement(/datum/element/beauty, 1000) - -/obj/item/statuebust/hippocratic - name = "hippocrates bust" - desc = "A bust of the famous Greek physician Hippocrates of Kos, often referred to as the father of western medicine." - icon_state = "hippocratic" - impressiveness = 50 - -/obj/item/extendohand - name = "extendo-hand" - desc = "Futuristic tech has allowed these classic spring-boxing toys to essentially act as a fully functional hand-operated hand prosthetic." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "extendohand" - item_state = "extendohand" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 0 - throwforce = 5 - reach = 2 - var/min_reach = 2 - -/obj/item/extendohand/acme - name = "\improper ACME Extendo-Hand" - desc = "A novelty extendo-hand produced by the ACME corporation. Originally designed to knock out roadrunners." - -/obj/item/extendohand/attack(atom/M, mob/living/carbon/human/user) - var/dist = get_dist(M, user) - if(dist < min_reach) - to_chat(user, "[M] is too close to use [src] on.") - return - M.attack_hand(user) - -/obj/item/gohei - name = "gohei" - desc = "A wooden stick with white streamers at the end. Originally used by shrine maidens to purify things. Now used by the station's valued weeaboos." - force = 5 - throwforce = 5 - hitsound = "swing_hit" - attack_verb = list("whacked", "thwacked", "walloped", "socked") - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "gohei" - item_state = "gohei" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - //HF blade /obj/item/vibro_weapon icon_state = "hfrequency0" @@ -385,51 +275,8 @@ return 1 return 0 -/obj/item/legion_staff - icon_state = "legion_staff" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - name = "legionnaire staff" - desc = "The remnants of a legionnaire, reconstructed around a pole of bone. The skulls it produces are loyal to the wielder, seeming to recognize them as their host body." - icon = 'icons/obj/guns/magic.dmi' - block_chance = 20 - force = 20 - throwforce = 10 - throw_speed = 4 - attack_verb = list("bit", "gnawed", "chomped") - w_class = WEIGHT_CLASS_NORMAL - slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT - hitsound = 'sound/weapons/bite.ogg' - var/next_use_time - -/obj/item/legion_staff/attack_self(mob/user) - if(next_use_time > world.time) - user.visible_message("[src] rattles in [user]'s hands, but nothing happens...") - to_chat(user, "You need to wait longer to use this again.") - return - user.visible_message("[user] raises the [src] and summons a legion skull!") - for(var/i in 1 to 3) - var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/staff/LegionSkull = new /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/staff(user.loc) - LegionSkull.faction = user.faction.Copy() - LegionSkull.friends += user - next_use_time = world.time + 6 SECONDS - -/obj/item/claymore/bone - name = "Bone Sword" - desc = "Jagged pieces of bone are tied to what looks like a goliaths femur." - icon_state = "bone_sword" - item_state = "bone_sword" - icon = 'icons/obj/items_and_weapons.dmi' - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - mob_overlay_icon = 'icons/mob/clothing/back.dmi' - force = 15 - throwforce = 10 - armour_penetration = 15 - /obj/item/vibro_weapon/weak armour_penetration = 10 block_chance = 10 force = 15 throwforce = 20 - diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index a0f9cda6dfb6..0e7f29dbff2d 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -445,3 +445,124 @@ icon_state = "hoverboard_nt" item_state = "hoverboard_nt" board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin + +/obj/item/statuebust + name = "bust" + desc = "A priceless ancient marble bust, the kind that belongs in a museum." //or you can hit people with it + icon = 'icons/obj/statue.dmi' + icon_state = "bust" + force = 15 + throwforce = 10 + throw_speed = 5 + throw_range = 2 + attack_verb = list("busted") + var/impressiveness = 45 + +/obj/item/statuebust/Initialize() + . = ..() + AddComponent(/datum/component/art, impressiveness) + AddElement(/datum/element/beauty, 1000) + +/obj/item/statuebust/hippocratic + name = "hippocrates bust" + desc = "A bust of the famous Greek physician Hippocrates of Kos, often referred to as the father of western medicine." + icon_state = "hippocratic" + impressiveness = 50 + +/obj/item/extendohand + name = "extendo-hand" + desc = "Futuristic tech has allowed these classic spring-boxing toys to essentially act as a fully functional hand-operated hand prosthetic." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "extendohand" + item_state = "extendohand" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + force = 0 + throwforce = 5 + reach = 2 + var/min_reach = 2 + +/obj/item/extendohand/acme + name = "\improper ACME Extendo-Hand" + desc = "A novelty extendo-hand produced by the ACME corporation. Originally designed to knock out roadrunners." + +/obj/item/extendohand/attack(atom/M, mob/living/carbon/human/user) + var/dist = get_dist(M, user) + if(dist < min_reach) + to_chat(user, "[M] is too close to use [src] on.") + return + M.attack_hand(user) + +/obj/item/gohei + name = "gohei" + desc = "A wooden stick with white streamers at the end. Originally used by shrine maidens to purify things." + force = 5 + throwforce = 5 + hitsound = "swing_hit" + attack_verb = list("whacked", "thwacked", "walloped", "socked") + icon_state = "gohei" + item_state = "gohei" + lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' + +/obj/item/ectoplasm + name = "ectoplasm" + desc = "Spooky." + gender = PLURAL + icon = 'icons/obj/wizard.dmi' + icon_state = "ectoplasm" + +/obj/item/ectoplasm/angelic + icon = 'icons/obj/wizard.dmi' + icon_state = "angelplasm" + +/obj/item/cane + name = "cane" + desc = "A cane used by a true gentleman. Or a clown." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "cane" + item_state = "stick" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + force = 5 + throwforce = 5 + w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron=50) + attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed") + +/obj/item/staff + name = "wizard staff" + desc = "Apparently a staff used by the wizard." + icon = 'icons/obj/wizard.dmi' + icon_state = "staff" + lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' + force = 3 + throwforce = 5 + throw_speed = 2 + throw_range = 5 + w_class = WEIGHT_CLASS_SMALL + armour_penetration = 100 + attack_verb = list("bludgeoned", "whacked", "disciplined") + resistance_flags = FLAMMABLE + +/obj/item/staff/broom + name = "broom" + desc = "Used for sweeping, and flying into the night while cackling. Black cat not included." + icon = 'icons/obj/wizard.dmi' + icon_state = "broom" + resistance_flags = FLAMMABLE + +/obj/item/staff/stick + name = "stick" + desc = "A great tool to drag someone else's drinks across the bar." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "cane" + item_state = "stick" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + force = 3 + throwforce = 5 + throw_speed = 2 + throw_range = 5 + w_class = WEIGHT_CLASS_SMALL From e03cb56f1556a7eb02db5c9be56bcdc2484e3f09 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 21 Mar 2024 02:04:07 -0500 Subject: [PATCH 008/102] orginizes primal and clothing cat (cherrypicked) --- code/datums/components/crafting/recipes.dm | 334 ------------------ .../{tailoring.dm => recipes/clothing.dm} | 39 ++ .../components/crafting/recipes/tribal.dm | 316 +++++++++++++++++ shiptest.dme | 3 +- 4 files changed, 357 insertions(+), 335 deletions(-) rename code/datums/components/crafting/{tailoring.dm => recipes/clothing.dm} (85%) create mode 100644 code/datums/components/crafting/recipes/tribal.dm diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index 5b8cbd58e035..026d21e55190 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -477,88 +477,6 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/bonearmor - name = "Bone Armor" - result = /obj/item/clothing/suit/armor/bone - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 6) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonetalisman - name = "Bone Talisman" - result = /obj/item/clothing/accessory/talisman - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonenecklace - name = "Hunter's Necklace" - result = /obj/item/clothing/accessory/wolftalisman - time = 35 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/sinew = 3, - /obj/item/crusher_trophy/wolf_ear = 2, - /obj/item/crusher_trophy/fang = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonecodpiece - name = "Skull Codpiece" - result = /obj/item/clothing/accessory/skullcodpiece - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/crusher_trophy/legion_skull = 1, - /obj/item/stack/sheet/animalhide/goliath_hide = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/skilt - name = "Sinew Kilt" - result = /obj/item/clothing/accessory/skilt - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 1, - /obj/item/stack/sheet/sinew = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/bracers - name = "Bone Bracers" - result = /obj/item/clothing/gloves/bracer - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/skullhelm - name = "Skull Helmet" - result = /obj/item/clothing/head/helmet/skull - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 4) - category = CAT_PRIMAL - -/datum/crafting_recipe/goliathcloak - name = "Goliath Cloak" - result = /obj/item/clothing/suit/hooded/cloak/goliath - time = 50 - reqs = list(/obj/item/stack/sheet/leather = 2, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 2) //it takes 4 goliaths to make 1 cloak if the plates are skinned - category = CAT_PRIMAL - -/datum/crafting_recipe/drakecloak - name = "Ash Drake Armour" - result = /obj/item/clothing/suit/hooded/cloak/drake - time = 60 - reqs = list(/obj/item/stack/sheet/bone = 10, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/ashdrake = 5) - category = CAT_PRIMAL - -/datum/crafting_recipe/firebrand - name = "Firebrand" - result = /obj/item/match/firebrand - time = 100 //Long construction time. Making fire is hard work. - reqs = list(/obj/item/stack/sheet/mineral/wood = 2) - category = CAT_PRIMAL - /datum/crafting_recipe/gold_horn name = "Golden Bike Horn" result = /obj/item/bikehorn/golden @@ -567,80 +485,6 @@ /obj/item/bikehorn = 1) category = CAT_MISC -/datum/crafting_recipe/bonedagger - name = "Bone Dagger" - result = /obj/item/kitchen/knife/combat/bone - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonespear - name = "Bone Spear" - result = /obj/item/spear/bonespear - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 4, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/boneaxe - name = "Bone Axe" - result = /obj/item/fireaxe/boneaxe - time = 50 - reqs = list(/obj/item/stack/sheet/bone = 6, - /obj/item/stack/sheet/sinew = 3) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonfire - name = "Bonfire" - time = 60 - reqs = list(/obj/item/grown/log = 5) - parts = list(/obj/item/grown/log = 5) - blacklist = list(/obj/item/grown/log/steel) - result = /obj/structure/bonfire - category = CAT_PRIMAL - -/datum/crafting_recipe/rake //Category resorting incoming - name = "Rake" - time = 30 - reqs = list(/obj/item/stack/sheet/mineral/wood = 5) - result = /obj/item/cultivator/rake - category = CAT_PRIMAL - -/datum/crafting_recipe/woodbucket - name = "Wooden Bucket" - time = 30 - reqs = list(/obj/item/stack/sheet/mineral/wood = 3) - result = /obj/item/reagent_containers/glass/bucket/wooden - category = CAT_PRIMAL - -/datum/crafting_recipe/headpike - name = "Spike Head (Glass Spear)" - time = 65 - reqs = list(/obj/item/spear = 1, - /obj/item/bodypart/head = 1) - parts = list(/obj/item/bodypart/head = 1, - /obj/item/spear = 1) - blacklist = list(/obj/item/spear/explosive, /obj/item/spear/bonespear) - result = /obj/structure/headpike - category = CAT_PRIMAL - -/datum/crafting_recipe/tribal_torch - name = "Tribal Torch" - result = /obj/item/candle/tribal_torch - time = 30 - reqs = list(/obj/item/stack/sheet/mineral/wood = 4) - category = CAT_PRIMAL - -/datum/crafting_recipe/headpikebone - name = "Spike Head (Bone Spear)" - time = 65 - reqs = list(/obj/item/spear/bonespear = 1, - /obj/item/bodypart/head = 1) - parts = list(/obj/item/bodypart/head = 1, - /obj/item/spear/bonespear = 1) - result = /obj/structure/headpike/bone - category = CAT_PRIMAL - /datum/crafting_recipe/pressureplate name = "Pressure Plate" result = /obj/item/pressure_plate @@ -660,27 +504,6 @@ reqs = list(/obj/item/stack/sheet/metal = 15) category = CAT_MISC -/datum/crafting_recipe/mummy - name = "Mummification Bandages (Mask)" - result = /obj/item/clothing/mask/mummy - time = 10 - tools = list(/obj/item/nullrod/egyptian) - reqs = list(/obj/item/stack/sheet/cotton/cloth = 2) - category = CAT_CLOTHING - -/datum/crafting_recipe/mummy/body - name = "Mummification Bandages (Body)" - result = /obj/item/clothing/under/costume/mummy - reqs = list(/obj/item/stack/sheet/cotton/cloth = 5) - -/datum/crafting_recipe/chaplain_hood - name = "Follower Hoodie" - result = /obj/item/clothing/suit/hooded/chaplain_hoodie - time = 10 - tools = list(/obj/item/clothing/suit/hooded/chaplain_hoodie, /obj/item/storage/book/bible) - reqs = list(/obj/item/stack/sheet/cotton/cloth = 4) - category = CAT_CLOTHING - /datum/crafting_recipe/guillotine name = "Guillotine" result = /obj/structure/guillotine @@ -707,59 +530,6 @@ category = CAT_MISC tools = list(TOOL_WELDER) -/datum/crafting_recipe/rib - name = "Collosal Rib" - always_availible = FALSE - reqs = list( - /obj/item/stack/sheet/bone = 10, - /datum/reagent/fuel/oil = 5) - result = /obj/structure/statue/bone/rib - subcategory = CAT_PRIMAL - -/datum/crafting_recipe/skull - name = "Skull Carving" - always_availible = FALSE - reqs = list( - /obj/item/stack/sheet/bone = 6, - /datum/reagent/fuel/oil = 5) - result = /obj/structure/statue/bone/skull - category = CAT_PRIMAL - -/datum/crafting_recipe/halfskull - name = "Cracked Skull Carving" - always_availible = FALSE - reqs = list( - /obj/item/stack/sheet/bone = 3, - /datum/reagent/fuel/oil = 5) - result = /obj/structure/statue/bone/skull/half - category = CAT_PRIMAL - -/datum/crafting_recipe/boneshovel - name = "Serrated Bone Shovel" - always_availible = FALSE - reqs = list( - /obj/item/stack/sheet/bone = 4, - /datum/reagent/fuel/oil = 5, - /obj/item/shovel/spade = 1) - result = /obj/item/shovel/serrated - category = CAT_PRIMAL - -/datum/crafting_recipe/lasso - name = "Bone Lasso" - reqs = list( - /obj/item/stack/sheet/bone = 1, - /obj/item/stack/sheet/sinew = 5) - result = /obj/item/key/lasso - category = CAT_PRIMAL - -/datum/crafting_recipe/gripperoffbrand - name = "Improvised Gripper Gloves" - reqs = list( - /obj/item/clothing/gloves/fingerless = 1, - /obj/item/stack/tape = 1) - result = /obj/item/clothing/gloves/tackler/offbrand - category = CAT_CLOTHING - /datum/crafting_recipe/ipickaxe name = "Improvised Pickaxe" reqs = list( @@ -790,16 +560,6 @@ result = /obj/item/reagent_containers/glass/filter category = CAT_MISC -/datum/crafting_recipe/dragonspear - name = "Dragonslayer's Spear" - result = /obj/item/spear/dragonspear - time = 45 - reqs = list(/obj/item/crusher_trophy/ash_spike = 1, - /obj/item/crusher_trophy/tail_spike = 2, - /obj/item/stack/sheet/bone = 5, - /obj/item/stack/sheet/sinew = 3) - category = CAT_PRIMAL - /datum/crafting_recipe/splint name = "Makeshift Splint" reqs = list( @@ -865,76 +625,6 @@ category = CAT_WEAPONRY subcategory = CAT_AMMO -/datum/crafting_recipe/heavybonearmor - name = "Heavy Bone Armor" - result = /obj/item/clothing/suit/hooded/cloak/bone - time = 60 - reqs = list(/obj/item/stack/sheet/bone = 8, - /obj/item/stack/sheet/sinew = 3) - category = CAT_PRIMAL - -/datum/crafting_recipe/watcherbola - name = "Watcher Bola" - result = /obj/item/restraints/legcuffs/bola/watcher - time = 30 - reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 2, - /obj/item/restraints/handcuffs/cable/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/goliathshield - name = "Goliath shield" - result = /obj/item/shield/riot/goliath - time = 60 - reqs = list(/obj/item/stack/sheet/bone = 4, - /obj/item/stack/sheet/animalhide/goliath_hide = 3) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonesword - name = "Bone Sword" - result = /obj/item/claymore/bone - time = 40 - reqs = list(/obj/item/stack/sheet/bone = 3, - /obj/item/stack/sheet/sinew = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/hunterbelt - name = "Hunters Belt" - result = /obj/item/storage/belt/mining/primitive - time = 20 - reqs = list(/obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/quiver - name = "Quiver" - result = /obj/item/storage/bag/quiver/empty - time = 80 - reqs = list(/obj/item/stack/sheet/leather = 3, - /obj/item/stack/sheet/sinew = 4) - category = CAT_PRIMAL - -/datum/crafting_recipe/bone_bow - name = "Bone Bow" - result = /obj/item/gun/ballistic/bow/ashen - time = 200 - reqs = list(/obj/item/stack/sheet/bone = 8, - /obj/item/stack/sheet/sinew = 4) - category = CAT_PRIMAL -/datum/crafting_recipe/boneclub - name = "Bone Club" - result = /obj/item/melee/baseball_bat/bone - time = 40 - reqs = list(/obj/item/stack/sheet/bone = 6) - category = CAT_PRIMAL -/datum/crafting_recipe/polarbearcloak - name = "Polar Cloak" - result = /obj/item/clothing/suit/hooded/cloak/goliath/polar - time = 50 - reqs = list(/obj/item/stack/sheet/leather = 2, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 2) - blacklist = list(/obj/item/stack/sheet/animalhide/goliath_hide) - category = CAT_PRIMAL /datum/crafting_recipe/portableseedextractor name = "Portable seed extractor" reqs = list( @@ -961,16 +651,6 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/scrap_armor - name = "Scrap Armor" - result = /obj/item/clothing/suit/armor/vest/scrap_armor - time = 60 - reqs = list( - /obj/item/stack/sheet/metal = 10, - /obj/item/stack/cable_coil = 20, - ) - category = CAT_CLOTHING - /datum/crafting_recipe/umbrellared name = "Red Drink Umbrella" result = /obj/item/garnish/umbrellared @@ -1062,17 +742,3 @@ /obj/item/stack/sheet/mineral/plasma = 1) tools = list(TOOL_WELDER) category = CAT_DRINK - -/datum/crafting_recipe/fermenting_barrel - name = "Wooden Barrel" - result = /obj/structure/fermenting_barrel - reqs = list(/obj/item/stack/sheet/mineral/wood = 8) - time = 50 - category = CAT_PRIMAL - -/datum/crafting_recipe/distiller - name = "Distiller" - result = /obj/structure/fermenting_barrel/distiller - reqs = list(/obj/item/stack/sheet/mineral/wood = 8, /obj/item/stack/sheet/metal = 5, /datum/reagent/srm_bacteria = 30) - time = 50 - category = CAT_PRIMAL diff --git a/code/datums/components/crafting/tailoring.dm b/code/datums/components/crafting/recipes/clothing.dm similarity index 85% rename from code/datums/components/crafting/tailoring.dm rename to code/datums/components/crafting/recipes/clothing.dm index 4caaa55ded29..897dcdb8ff6c 100644 --- a/code/datums/components/crafting/tailoring.dm +++ b/code/datums/components/crafting/recipes/clothing.dm @@ -236,3 +236,42 @@ reqs = list(/obj/item/stack/sheet/leather = 2) time = 45 category = CAT_CLOTHING + +/datum/crafting_recipe/mummy + name = "Mummification Bandages (Mask)" + result = /obj/item/clothing/mask/mummy + time = 10 + tools = list(/obj/item/nullrod/egyptian) + reqs = list(/obj/item/stack/sheet/cotton/cloth = 2) + category = CAT_CLOTHING + +/datum/crafting_recipe/mummy/body + name = "Mummification Bandages (Body)" + result = /obj/item/clothing/under/costume/mummy + reqs = list(/obj/item/stack/sheet/cotton/cloth = 5) + +/datum/crafting_recipe/chaplain_hood + name = "Follower Hoodie" + result = /obj/item/clothing/suit/hooded/chaplain_hoodie + time = 10 + tools = list(/obj/item/clothing/suit/hooded/chaplain_hoodie, /obj/item/storage/book/bible) + reqs = list(/obj/item/stack/sheet/cotton/cloth = 4) + category = CAT_CLOTHING + +/datum/crafting_recipe/gripperoffbrand + name = "Improvised Gripper Gloves" + reqs = list( + /obj/item/clothing/gloves/fingerless = 1, + /obj/item/stack/tape = 1) + result = /obj/item/clothing/gloves/tackler/offbrand + category = CAT_CLOTHING + +/datum/crafting_recipe/scrap_armor + name = "Scrap Armor" + result = /obj/item/clothing/suit/armor/vest/scrap_armor + time = 60 + reqs = list( + /obj/item/stack/sheet/metal = 10, + /obj/item/stack/cable_coil = 20, + ) + category = CAT_CLOTHING diff --git a/code/datums/components/crafting/recipes/tribal.dm b/code/datums/components/crafting/recipes/tribal.dm new file mode 100644 index 000000000000..942a6e6712cc --- /dev/null +++ b/code/datums/components/crafting/recipes/tribal.dm @@ -0,0 +1,316 @@ +/datum/crafting_recipe/bonearmor + name = "Bone Armor" + result = /obj/item/clothing/suit/armor/bone + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 6) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonetalisman + name = "Bone Talisman" + result = /obj/item/clothing/accessory/talisman + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonenecklace + name = "Hunter's Necklace" + result = /obj/item/clothing/accessory/wolftalisman + time = 35 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/sinew = 3, + /obj/item/crusher_trophy/wolf_ear = 2, + /obj/item/crusher_trophy/fang = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonecodpiece + name = "Skull Codpiece" + result = /obj/item/clothing/accessory/skullcodpiece + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/crusher_trophy/legion_skull = 1, + /obj/item/stack/sheet/animalhide/goliath_hide = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonestaff + name = "Legion Staff" + result = /obj/item/legion_staff + time = 35 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/crusher_trophy/legion_skull = 2,\ + /obj/item/crusher_trophy/dwarf_skull = 1, + /obj/item/organ/regenerative_core/legion = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/skilt + name = "Sinew Kilt" + result = /obj/item/clothing/accessory/skilt + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 1, + /obj/item/stack/sheet/sinew = 2) + category = CAT_PRIMAL + +/datum/crafting_recipe/bracers + name = "Bone Bracers" + result = /obj/item/clothing/gloves/bracer + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/skullhelm + name = "Skull Helmet" + result = /obj/item/clothing/head/helmet/skull + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 4) + category = CAT_PRIMAL + +/datum/crafting_recipe/goliathcloak + name = "Goliath Cloak" + result = /obj/item/clothing/suit/hooded/cloak/goliath + time = 50 + reqs = list(/obj/item/stack/sheet/leather = 2, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/goliath_hide = 2) //it takes 4 goliaths to make 1 cloak if the plates are skinned + category = CAT_PRIMAL + +/datum/crafting_recipe/drakecloak + name = "Ash Drake Armour" + result = /obj/item/clothing/suit/hooded/cloak/drake + time = 60 + reqs = list(/obj/item/stack/sheet/bone = 10, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/ashdrake = 5) + category = CAT_PRIMAL + +/datum/crafting_recipe/firebrand + name = "Firebrand" + result = /obj/item/match/firebrand + time = 100 //Long construction time. Making fire is hard work. + reqs = list(/obj/item/stack/sheet/mineral/wood = 2) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonedagger + name = "Bone Dagger" + result = /obj/item/kitchen/knife/combat/bone + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonespear + name = "Bone Spear" + result = /obj/item/spear/bonespear + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 4, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/boneaxe + name = "Bone Axe" + result = /obj/item/fireaxe/boneaxe + time = 50 + reqs = list(/obj/item/stack/sheet/bone = 6, + /obj/item/stack/sheet/sinew = 3) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonfire + name = "Bonfire" + time = 60 + reqs = list(/obj/item/grown/log = 5) + parts = list(/obj/item/grown/log = 5) + blacklist = list(/obj/item/grown/log/steel) + result = /obj/structure/bonfire + category = CAT_PRIMAL + +/datum/crafting_recipe/rake //Category resorting incoming + name = "Rake" + time = 30 + reqs = list(/obj/item/stack/sheet/mineral/wood = 5) + result = /obj/item/cultivator/rake + category = CAT_PRIMAL + +/datum/crafting_recipe/woodbucket + name = "Wooden Bucket" + time = 30 + reqs = list(/obj/item/stack/sheet/mineral/wood = 3) + result = /obj/item/reagent_containers/glass/bucket/wooden + category = CAT_PRIMAL + +/datum/crafting_recipe/headpike + name = "Spike Head (Glass Spear)" + time = 65 + reqs = list(/obj/item/spear = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/spear = 1) + blacklist = list(/obj/item/spear/explosive, /obj/item/spear/bonespear) + result = /obj/structure/headpike + category = CAT_PRIMAL + +/datum/crafting_recipe/legionpike + name = "Legion on a Spear" + time = 55 + reqs = list(/obj/item/spear = 1, + /obj/item/organ/regenerative_core = 1, + /obj/item/crusher_trophy/legion_skull = 2) + result = /obj/structure/legionpike + category = CAT_PRIMAL + +/datum/crafting_recipe/tribal_torch + name = "Tribal Torch" + result = /obj/item/candle/tribal_torch + time = 30 + reqs = list(/obj/item/stack/sheet/mineral/wood = 4) + category = CAT_PRIMAL + +/datum/crafting_recipe/headpikebone + name = "Spike Head (Bone Spear)" + time = 65 + reqs = list(/obj/item/spear/bonespear = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/spear/bonespear = 1) + result = /obj/structure/headpike/bone + category = CAT_PRIMAL + +/datum/crafting_recipe/rib + name = "Collosal Rib" + always_availible = FALSE + reqs = list( + /obj/item/stack/sheet/bone = 10, + /datum/reagent/fuel/oil = 5) + result = /obj/structure/statue/bone/rib + subcategory = CAT_PRIMAL + +/datum/crafting_recipe/skull + name = "Skull Carving" + always_availible = FALSE + reqs = list( + /obj/item/stack/sheet/bone = 6, + /datum/reagent/fuel/oil = 5) + result = /obj/structure/statue/bone/skull + category = CAT_PRIMAL + +/datum/crafting_recipe/halfskull + name = "Cracked Skull Carving" + always_availible = FALSE + reqs = list( + /obj/item/stack/sheet/bone = 3, + /datum/reagent/fuel/oil = 5) + result = /obj/structure/statue/bone/skull/half + category = CAT_PRIMAL + +/datum/crafting_recipe/boneshovel + name = "Serrated Bone Shovel" + always_availible = FALSE + reqs = list( + /obj/item/stack/sheet/bone = 4, + /datum/reagent/fuel/oil = 5, + /obj/item/shovel/spade = 1) + result = /obj/item/shovel/serrated + category = CAT_PRIMAL + +/datum/crafting_recipe/lasso + name = "Bone Lasso" + reqs = list( + /obj/item/stack/sheet/bone = 1, + /obj/item/stack/sheet/sinew = 5) + result = /obj/item/key/lasso + category = CAT_PRIMAL + +/datum/crafting_recipe/dragonspear + name = "Dragonslayer's Spear" + result = /obj/item/spear/dragonspear + time = 45 + reqs = list(/obj/item/crusher_trophy/ash_spike = 1, + /obj/item/crusher_trophy/tail_spike = 2, + /obj/item/stack/sheet/bone = 5, + /obj/item/stack/sheet/sinew = 3) + category = CAT_PRIMAL + +/datum/crafting_recipe/heavybonearmor + name = "Heavy Bone Armor" + result = /obj/item/clothing/suit/hooded/cloak/bone + time = 60 + reqs = list(/obj/item/stack/sheet/bone = 8, + /obj/item/stack/sheet/sinew = 3) + category = CAT_PRIMAL + +/datum/crafting_recipe/watcherbola + name = "Watcher Bola" + result = /obj/item/restraints/legcuffs/bola/watcher + time = 30 + reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 2, + /obj/item/restraints/handcuffs/cable/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/goliathshield + name = "Goliath shield" + result = /obj/item/shield/riot/goliath + time = 60 + reqs = list(/obj/item/stack/sheet/bone = 4, + /obj/item/stack/sheet/animalhide/goliath_hide = 3) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonesword + name = "Bone Sword" + result = /obj/item/claymore/bone + time = 40 + reqs = list(/obj/item/stack/sheet/bone = 3, + /obj/item/stack/sheet/sinew = 2) + category = CAT_PRIMAL + +/datum/crafting_recipe/hunterbelt + name = "Hunters Belt" + result = /obj/item/storage/belt/mining/primitive + time = 20 + reqs = list(/obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/goliath_hide = 2) + category = CAT_PRIMAL + +/datum/crafting_recipe/quiver + name = "Quiver" + result = /obj/item/storage/bag/quiver/empty + time = 80 + reqs = list(/obj/item/stack/sheet/leather = 3, + /obj/item/stack/sheet/sinew = 4) + category = CAT_PRIMAL + +/datum/crafting_recipe/bone_bow + name = "Bone Bow" + result = /obj/item/gun/ballistic/bow/ashen + time = 200 + reqs = list(/obj/item/stack/sheet/bone = 8, + /obj/item/stack/sheet/sinew = 4) + category = CAT_PRIMAL + +/datum/crafting_recipe/boneclub + name = "Bone Club" + result = /obj/item/melee/baseball_bat/bone + time = 40 + reqs = list(/obj/item/stack/sheet/bone = 6) + category = CAT_PRIMAL + +/datum/crafting_recipe/polarbearcloak + name = "Polar Cloak" + result = /obj/item/clothing/suit/hooded/cloak/goliath/polar + time = 50 + reqs = list(/obj/item/stack/sheet/leather = 2, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 2) + blacklist = list(/obj/item/stack/sheet/animalhide/goliath_hide) + category = CAT_PRIMAL + +/datum/crafting_recipe/fermenting_barrel + name = "Wooden Barrel" + result = /obj/structure/fermenting_barrel + reqs = list(/obj/item/stack/sheet/mineral/wood = 8) + time = 50 + category = CAT_PRIMAL + +/datum/crafting_recipe/distiller + name = "Distiller" + result = /obj/structure/fermenting_barrel/distiller + reqs = list(/obj/item/stack/sheet/mineral/wood = 8, /obj/item/stack/sheet/metal = 5, /datum/reagent/srm_bacteria = 30) + time = 50 + category = CAT_PRIMAL diff --git a/shiptest.dme b/shiptest.dme index cca473fe78df..729aa2c89d4a 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -537,7 +537,8 @@ #include "code\datums\components\crafting\crafting.dm" #include "code\datums\components\crafting\guncrafting.dm" #include "code\datums\components\crafting\recipes.dm" -#include "code\datums\components\crafting\tailoring.dm" +#include "code\datums\components\crafting\recipes\clothing.dm" +#include "code\datums\components\crafting\recipes\tribal.dm" #include "code\datums\components\fantasy\_fantasy.dm" #include "code\datums\components\fantasy\affix.dm" #include "code\datums\components\fantasy\prefixes.dm" From 4f1bd7f90f7e822a8d8da43fbda4fd4b748276e4 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sat, 13 Apr 2024 17:46:57 -0500 Subject: [PATCH 009/102] orginizes some more recipes --- code/datums/components/crafting/recipes.dm | 718 ------------------ .../components/crafting/recipes/drink.dm | 52 ++ .../components/crafting/recipes/misc.dm | 265 +++++++ .../components/crafting/recipes/robot.dm | 86 +++ .../components/crafting/recipes/weapon.dm | 310 ++++++++ shiptest.dme | 4 + 6 files changed, 717 insertions(+), 718 deletions(-) create mode 100644 code/datums/components/crafting/recipes/drink.dm create mode 100644 code/datums/components/crafting/recipes/misc.dm create mode 100644 code/datums/components/crafting/recipes/robot.dm create mode 100644 code/datums/components/crafting/recipes/weapon.dm diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index 026d21e55190..ab7a2d4315d7 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -24,721 +24,3 @@ */ /datum/crafting_recipe/proc/check_requirements(mob/user, list/collected_requirements) return TRUE - -/datum/crafting_recipe/IED - name = "IED" - result = /obj/item/grenade/iedcasing - reqs = list(/datum/reagent/fuel = 50, - /obj/item/stack/cable_coil = 1, - /obj/item/assembly/igniter = 1, - /obj/item/reagent_containers/food/drinks/soda_cans = 1) - parts = list(/obj/item/reagent_containers/food/drinks/soda_cans = 1) - time = 15 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/lance - name = "Explosive Lance (Grenade)" - result = /obj/item/spear/explosive - reqs = list(/obj/item/spear = 1, - /obj/item/grenade = 1) - blacklist = list(/obj/item/spear/bonespear) - parts = list(/obj/item/spear = 1, - /obj/item/grenade = 1) - time = 15 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/strobeshield - name = "Strobe Shield" - result = /obj/item/shield/riot/flash - reqs = list(/obj/item/wallframe/flasher = 1, - /obj/item/assembly/flash/handheld = 1, - /obj/item/shield/riot = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/strobeshield/New() - ..() - blacklist |= subtypesof(/obj/item/shield/riot/) - -/datum/crafting_recipe/molotov - name = "Molotov" - result = /obj/item/reagent_containers/food/drinks/bottle/molotov - reqs = list(/obj/item/reagent_containers/glass/rag = 1, - /obj/item/reagent_containers/food/drinks/bottle = 1) - parts = list(/obj/item/reagent_containers/food/drinks/bottle = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/stunprod - name = "Stunprod" - result = /obj/item/melee/baton/cattleprod - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/stack/rods = 1, - /obj/item/assembly/igniter = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/teleprod - name = "Teleprod" - result = /obj/item/melee/baton/cattleprod/teleprod - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/stack/rods = 1, - /obj/item/assembly/igniter = 1, - /obj/item/stack/ore/bluespace_crystal = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/bola - name = "Bola" - result = /obj/item/restraints/legcuffs/bola - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/stack/sheet/metal = 6) - time = 20//15 faster than crafting them by hand! - category= CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/gonbola - name = "Gonbola" - result = /obj/item/restraints/legcuffs/bola/gonbola - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/stack/sheet/metal = 6, - /obj/item/stack/sheet/animalhide/gondola = 1) - time = 40 - category= CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/ed209 - name = "ED209" - result = /mob/living/simple_animal/bot/secbot/ed209 - reqs = list(/obj/item/robot_suit = 1, - /obj/item/clothing/head/helmet = 1, - /obj/item/clothing/suit/armor/vest = 1, - /obj/item/bodypart/leg/left/robot = 1, - /obj/item/bodypart/leg/right/robot = 1, - /obj/item/stack/sheet/metal = 1, - /obj/item/stack/cable_coil = 1, - /obj/item/gun/energy/disabler = 1, - /obj/item/assembly/prox_sensor = 1) - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER) - time = 60 - category = CAT_ROBOT - -/datum/crafting_recipe/secbot - name = "Secbot" - result = /mob/living/simple_animal/bot/secbot - reqs = list(/obj/item/assembly/signaler = 1, - /obj/item/clothing/head/helmet/sec = 1, - /obj/item/melee/baton = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - tools = list(TOOL_WELDER) - time = 60 - category = CAT_ROBOT - -/datum/crafting_recipe/cleanbot - name = "Cleanbot" - result = /mob/living/simple_animal/bot/cleanbot - reqs = list(/obj/item/reagent_containers/glass/bucket = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/floorbot - name = "Floorbot" - result = /mob/living/simple_animal/bot/floorbot - reqs = list(/obj/item/storage/toolbox = 1, - /obj/item/stack/tile/plasteel = 10, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/medbot - name = "Medbot" - result = /mob/living/simple_animal/bot/medbot - reqs = list(/obj/item/healthanalyzer = 1, - /obj/item/storage/firstaid = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/honkbot - name = "Honkbot" - result = /mob/living/simple_animal/bot/honkbot - reqs = list(/obj/item/storage/box/clown = 1, - /obj/item/bodypart/r_arm/robot = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bikehorn/ = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/Firebot - name = "Firebot" - result = /mob/living/simple_animal/bot/firebot - reqs = list(/obj/item/extinguisher = 1, - /obj/item/bodypart/r_arm/robot = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/clothing/head/hardhat/red = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/Vibebot - name = "Vibebot" - result = /mob/living/simple_animal/bot/vibebot - reqs = list(/obj/item/light/bulb = 2, - /obj/item/bodypart/head/robot = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/toy/crayon = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but - name = "Pneumatic Cannon" - result = /obj/item/pneumatic_cannon/ghetto - tools = list(TOOL_WELDER, TOOL_WRENCH) - reqs = list(/obj/item/stack/sheet/metal = 4, - /obj/item/stack/packageWrap = 8, - /obj/item/pipe = 2) - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/flamethrower - name = "Flamethrower" - result = /obj/item/flamethrower - reqs = list(/obj/item/weldingtool = 1, - /obj/item/assembly/igniter = 1, - /obj/item/stack/rods = 1) - parts = list(/obj/item/assembly/igniter = 1, - /obj/item/weldingtool = 1) - tools = list(TOOL_SCREWDRIVER) - time = 10 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/meteorslug - name = "Meteorslug Shell" - result = /obj/item/ammo_casing/shotgun/meteorslug - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/rcd_ammo = 1, - /obj/item/stock_parts/manipulator = 2) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/pulseslug - name = "Pulse Slug Shell" - result = /obj/item/ammo_casing/shotgun/pulseslug - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/stock_parts/capacitor/adv = 2, - /obj/item/stock_parts/micro_laser/ultra = 1) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/dragonsbreath - name = "Dragonsbreath Shell" - result = /obj/item/ammo_casing/shotgun/dragonsbreath - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, /datum/reagent/phosphorus = 5) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/frag12 - name = "FRAG-12 Shell" - result = /obj/item/ammo_casing/shotgun/frag12 - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /datum/reagent/glycerol = 5, - /datum/reagent/toxin/acid = 5, - /datum/reagent/toxin/acid/fluacid = 5) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/ionslug - name = "Ion Scatter Shell" - result = /obj/item/ammo_casing/shotgun/ion - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/stock_parts/micro_laser/ultra = 1, - /obj/item/stock_parts/subspace/crystal = 1) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/improvisedslug - name = "Improvised Shotgun Shell" - result = /obj/item/ammo_casing/shotgun/improvised - reqs = list(/obj/item/stack/sheet/metal = 2, - /obj/item/stack/cable_coil = 1, - /datum/reagent/fuel = 10) - tools = list(TOOL_SCREWDRIVER) - time = 12 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/laserscatter - name = "Scatter Laser Shell" - result = /obj/item/ammo_casing/shotgun/laserscatter - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/stock_parts/capacitor/adv = 1, - /obj/item/stock_parts/micro_laser/high = 1) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/ishotgun - name = "Improvised Shotgun" - result = /obj/item/gun/ballistic/shotgun/doublebarrel/improvised - reqs = list(/obj/item/weaponcrafting/receiver = 1, - /obj/item/pipe = 1, - /obj/item/weaponcrafting/stock = 1, - /obj/item/stack/packageWrap = 5) - tools = list(TOOL_SCREWDRIVER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/chainsaw - name = "Chainsaw" - result = /obj/item/chainsaw - reqs = list(/obj/item/circular_saw = 1, - /obj/item/stack/cable_coil = 3, - /obj/item/stack/sheet/plasteel = 5) - tools = list(TOOL_WELDER) - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/spear - name = "Spear" - result = /obj/item/spear - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/shard = 1, - /obj/item/stack/rods = 1) - parts = list(/obj/item/shard = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/spooky_camera - name = "Camera Obscura" - result = /obj/item/camera/spooky - time = 15 - reqs = list(/obj/item/camera = 1, - /datum/reagent/water/holywater = 10) - parts = list(/obj/item/camera = 1) - category = CAT_MISC - -/datum/crafting_recipe/skateboard - name = "Skateboard" - result = /obj/vehicle/ridden/scooter/skateboard - time = 60 - reqs = list(/obj/item/stack/sheet/metal = 5, - /obj/item/stack/rods = 10) - category = CAT_MISC - -/datum/crafting_recipe/scooter - name = "Scooter" - result = /obj/vehicle/ridden/scooter - time = 65 - reqs = list(/obj/item/stack/sheet/metal = 5, - /obj/item/stack/rods = 12) - category = CAT_MISC - -/datum/crafting_recipe/wheelchair - name = "Wheelchair" - result = /obj/vehicle/ridden/wheelchair - reqs = list(/obj/item/stack/sheet/metal = 4, - /obj/item/stack/rods = 6) - time = 100 - category = CAT_MISC - -/datum/crafting_recipe/motorized_wheelchair - name = "Motorized Wheelchair" - result = /obj/vehicle/ridden/wheelchair/motorized - reqs = list(/obj/item/stack/sheet/metal = 10, - /obj/item/stack/rods = 8, - /obj/item/stock_parts/manipulator = 2, - /obj/item/stock_parts/capacitor = 1) - parts = list(/obj/item/stock_parts/manipulator = 2, - /obj/item/stock_parts/capacitor = 1) - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) - time = 200 - category = CAT_MISC - -/datum/crafting_recipe/mousetrap - name = "Mouse Trap" - result = /obj/item/assembly/mousetrap - time = 10 - reqs = list(/obj/item/stack/sheet/cardboard = 1, - /obj/item/stack/rods = 1) - category = CAT_MISC - -/datum/crafting_recipe/papersack - name = "Paper Sack" - result = /obj/item/storage/box/papersack - time = 10 - reqs = list(/obj/item/paper = 5) - category = CAT_MISC - - -/datum/crafting_recipe/flashlight_eyes - name = "Flashlight Eyes" - result = /obj/item/organ/eyes/robotic/flashlight - time = 10 - reqs = list( - /obj/item/flashlight = 2, - /obj/item/restraints/handcuffs/cable = 1 - ) - category = CAT_MISC - -/datum/crafting_recipe/paperframes - name = "Paper Frames" - result = /obj/item/stack/sheet/paperframes/five - time = 10 - reqs = list(/obj/item/stack/sheet/mineral/wood = 5, /obj/item/paper = 20) - category = CAT_MISC - -/datum/crafting_recipe/naturalpaper - name = "Hand-Pressed Paper" - time = 30 - reqs = list(/datum/reagent/water = 50, /obj/item/stack/sheet/mineral/wood = 1) - tools = list(/obj/item/hatchet) - result = /obj/item/paper_bin/bundlenatural - category = CAT_MISC - -/datum/crafting_recipe/toysword - name = "Toy Sword" - reqs = list(/obj/item/light/bulb = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) - result = /obj/item/toy/sword - category = CAT_MISC - -/datum/crafting_recipe/blackcarpet - name = "Black Carpet" - reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) - result = /obj/item/stack/tile/carpet/black/fifty - category = CAT_MISC - -/datum/crafting_recipe/curtain - name = "Curtains" - reqs = list(/obj/item/stack/sheet/cotton/cloth = 4, /obj/item/stack/rods = 1) - result = /obj/structure/curtain/cloth - category = CAT_MISC - -/datum/crafting_recipe/showercurtain - name = "Shower Curtains" - reqs = list(/obj/item/stack/sheet/cotton/cloth = 2, /obj/item/stack/sheet/plastic = 2, /obj/item/stack/rods = 1) - result = /obj/structure/curtain - category = CAT_MISC - -/datum/crafting_recipe/extendohand - name = "Extendo-Hand" - reqs = list(/obj/item/bodypart/r_arm/robot = 1, /obj/item/clothing/gloves/boxing = 1) - result = /obj/item/extendohand - category = CAT_MISC - -/datum/crafting_recipe/chemical_payload - name = "Chemical Payload (C4)" - result = /obj/item/bombcore/chemical - reqs = list( - /obj/item/stock_parts/matter_bin = 1, - /obj/item/grenade/c4 = 1, - /obj/item/grenade/chem_grenade = 2 - ) - parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) - time = 30 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/chemical_payload2 - name = "Chemical Payload (Gibtonite)" - result = /obj/item/bombcore/chemical - reqs = list( - /obj/item/stock_parts/matter_bin = 1, - /obj/item/gibtonite = 1, - /obj/item/grenade/chem_grenade = 2 - ) - parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/gold_horn - name = "Golden Bike Horn" - result = /obj/item/bikehorn/golden - time = 20 - reqs = list(/obj/item/stack/sheet/mineral/bananium = 5, - /obj/item/bikehorn = 1) - category = CAT_MISC - -/datum/crafting_recipe/pressureplate - name = "Pressure Plate" - result = /obj/item/pressure_plate - time = 5 - reqs = list(/obj/item/stack/sheet/metal = 1, - /obj/item/stack/tile/plasteel = 1, - /obj/item/stack/cable_coil = 2, - /obj/item/assembly/igniter = 1) - category = CAT_MISC - - -/datum/crafting_recipe/rcl - name = "Makeshift Rapid Pipe Cleaner Layer" - result = /obj/item/rcl/ghetto - time = 40 - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) - reqs = list(/obj/item/stack/sheet/metal = 15) - category = CAT_MISC - -/datum/crafting_recipe/guillotine - name = "Guillotine" - result = /obj/structure/guillotine - time = 150 // Building a functioning guillotine takes time - reqs = list(/obj/item/stack/sheet/plasteel = 3, - /obj/item/stack/sheet/mineral/wood = 20, - /obj/item/stack/cable_coil = 10) - tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) - category = CAT_MISC - -/datum/crafting_recipe/ghettojetpack - name = "Improvised Jetpack" - result = /obj/item/tank/jetpack/improvised - time = 30 - reqs = list(/obj/item/tank/internals/oxygen = 2, /obj/item/extinguisher = 1, /obj/item/pipe = 3, /obj/item/stack/cable_coil = MAXCOIL) - category = CAT_MISC - tools = list(TOOL_WRENCH, TOOL_WELDER, TOOL_WIRECUTTER) - -/datum/crafting_recipe/multiduct - name = "Multi-layer duct" - result = /obj/machinery/duct/multilayered - time = 5 - reqs = list(/obj/item/stack/ducts = 5) - category = CAT_MISC - tools = list(TOOL_WELDER) - -/datum/crafting_recipe/ipickaxe - name = "Improvised Pickaxe" - reqs = list( - /obj/item/crowbar = 1, - /obj/item/kitchen/knife = 1, - /obj/item/stack/tape = 1) - result = /obj/item/pickaxe/improvised - category = CAT_MISC - -/datum/crafting_recipe/chem_scanner - name = "Reagent Scanner" - time = 30 - tools = list(TOOL_WIRECUTTER, TOOL_SCREWDRIVER) - reqs = list( - /obj/item/healthanalyzer = 1, - /obj/item/stack/cable_coil = 5, - /obj/item/stock_parts/scanning_module = 1) - result = /obj/item/reagent_scanner - category = CAT_MISC - -/datum/crafting_recipe/filter - name = "Seperatory Funnel" - time = 40 - tools = list(TOOL_WELDER, TOOL_WIRECUTTER) - reqs = list( - /obj/item/stack/cable_coil = 1, - /obj/item/reagent_containers/glass/beaker = 3) - result = /obj/item/reagent_containers/glass/filter - category = CAT_MISC - -/datum/crafting_recipe/splint - name = "Makeshift Splint" - reqs = list( - /obj/item/stack/rods = 2, - /obj/item/stack/sheet/cotton/cloth = 4) - result = /obj/item/stack/medical/splint/ghetto - category = CAT_MISC - -/datum/crafting_recipe/cwzippo - name = "Clockwork Zippo" - reqs = list( - /obj/item/lighter = 1, - /obj/item/stack/tile/bronze = 5) - result = /obj/item/lighter/clockwork - category = CAT_MISC - -/datum/crafting_recipe/pipebow - name = "Pipe Bow" - result = /obj/item/gun/ballistic/bow/pipe - reqs = list(/obj/item/pipe = 5, - /obj/item/stack/sheet/plastic = 15, - /obj/item/weaponcrafting/silkstring = 10) - time = 450 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/arrow - name = "Arrow" - result = /obj/item/ammo_casing/caseless/arrow/wood - time = 30 - reqs = list(/obj/item/stack/sheet/mineral/wood = 1, - /obj/item/stack/sheet/silk = 1, - /obj/item/stack/rods = 1) //1 metal sheet = 2 rods= 2 arrows - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/bone_arrow - name = "Bone Arrow" - result = /obj/item/ammo_casing/caseless/arrow/bone - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 1, - /obj/item/stack/sheet/sinew = 1, - /obj/item/ammo_casing/caseless/arrow/ash = 1) - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/ashen_arrow - name = "Fire hardened arrow" - result = /obj/item/ammo_casing/caseless/arrow/ash - tools = list(TOOL_WELDER) - time = 30 - reqs = list(/obj/item/ammo_casing/caseless/arrow/wood = 1) - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/bronze_arrow - name = "Bronze arrow" - result = /obj/item/ammo_casing/caseless/arrow/bronze - time = 30 - reqs = list(/obj/item/stack/sheet/mineral/wood = 1, - /obj/item/stack/tile/bronze = 1, - /obj/item/stack/sheet/silk = 1) - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/portableseedextractor - name = "Portable seed extractor" - reqs = list( - /obj/item/storage/bag/plants = 1, - /obj/item/plant_analyzer = 1, - /obj/item/stock_parts/manipulator = 1, - /obj/item/stack/cable_coil = 2) - result = /obj/item/storage/bag/plants/portaseeder //this will probably mean that you can craft portable seed extractors into themselves, sending the other materials into the void, but we still don't have a solution for recipes involving radios stealing your headset, so this is officially not my problem. "no, Tills-The-Soil, adding more analyzers and micro-manipulators to your portable seed extractor does not make it make more seeds. in fact it does exactly nothing." - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - category = CAT_MISC - -/datum/crafting_recipe/zip_pistol - name = "Zip Pistol" - result = /obj/item/gun/ballistic/automatic/zip_pistol - reqs = list(/obj/item/stack/rods = 4, - /obj/item/pipe = 1, - /obj/item/stack/cable_coil = 15, - /obj/item/weaponcrafting/receiver = 1, - /obj/item/floor_painter = 1, - /obj/item/stack/packageWrap = 10) - tools = list(TOOL_SCREWDRIVER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/umbrellared - name = "Red Drink Umbrella" - result = /obj/item/garnish/umbrellared - time = 1 SECONDS - tools = list(/obj/item/toy/crayon/spraycan) - reqs = list( - /obj/item/paper = 1, - /obj/item/stack/rods = 1) - category = CAT_DRINK - -/datum/crafting_recipe/umbrellablue - name = "Blue Drink Umbrella" - result = /obj/item/garnish/umbrellablue - time = 1 SECONDS - tools = list(/obj/item/toy/crayon/spraycan) - reqs = list( - /obj/item/paper = 1, - /obj/item/stack/rods = 1) - category = CAT_DRINK - -/datum/crafting_recipe/umbrellagreen - name = "Green Drink Umbrella" - result = /obj/item/garnish/umbrellagreen - time = 1 SECONDS - tools = list(/obj/item/toy/crayon/spraycan) - reqs = list( - /obj/item/paper = 1, - /obj/item/stack/rods = 1) - category = CAT_DRINK - -/datum/crafting_recipe/ash_garnish - name = "Ash Garnish" - result = /obj/item/garnish/ash - reqs = list(/datum/reagent/ash = 10) - time = 5 - category = CAT_DRINK - -/datum/crafting_recipe/salt_garnish - name = "Salt Garnish" - result = /obj/item/garnish/salt - reqs = list(/datum/reagent/consumable/sodiumchloride = 10) - time = 5 - category = CAT_DRINK - -/datum/crafting_recipe/crystalamulet - name = "Crystal Amulet" - result = /obj/item/clothing/neck/crystal_amulet - time = 4 SECONDS - reqs = list(/obj/item/strange_crystal = 3) - category = CAT_MISC - -/datum/crafting_recipe/crystalspear - name = "Crystal Spear" - result = /obj/item/spear/crystal - time = 4 SECONDS - reqs = list(/obj/item/strange_crystal = 2) - category = CAT_MISC - -/datum/crafting_recipe/freezer - name = "Freezer" - result = /obj/structure/closet/crate/freezer - time = 2 SECONDS - reqs = list(/datum/reagent/consumable/ice = 25, - /obj/item/stack/sheet/metal = 2) - category = CAT_MISC - -/datum/crafting_recipe/aquarium - name = "Aquarium" - result = /obj/structure/aquarium - time = 10 SECONDS - reqs = list(/obj/item/stack/sheet/metal = 15, - /obj/item/stack/sheet/glass = 10, - /obj/item/aquarium_kit = 1) - category = CAT_MISC - -/datum/crafting_recipe/mothplush - name = "Moth Plushie" - result = /obj/item/toy/plush/moth - reqs = list(/obj/item/stack/sheet/animalhide/mothroach = 1, - /obj/item/organ/heart = 1, - /obj/item/stack/sheet/cotton/cloth = 3) - category = CAT_MISC - -/datum/crafting_recipe/breakawayflask - name = "Breakaway Flask" - result = /obj/item/reagent_containers/food/drinks/breakawayflask - time = 5 SECONDS - reqs = list(/obj/item/stack/sheet/glass = 5, - /obj/item/stack/sheet/mineral/plasma = 1) - tools = list(TOOL_WELDER) - category = CAT_DRINK diff --git a/code/datums/components/crafting/recipes/drink.dm b/code/datums/components/crafting/recipes/drink.dm new file mode 100644 index 000000000000..5ca6d14814c1 --- /dev/null +++ b/code/datums/components/crafting/recipes/drink.dm @@ -0,0 +1,52 @@ +/datum/crafting_recipe/umbrellared + name = "Red Drink Umbrella" + result = /obj/item/garnish/umbrellared + time = 1 SECONDS + tools = list(/obj/item/toy/crayon/spraycan) + reqs = list( + /obj/item/paper = 1, + /obj/item/stack/rods = 1) + category = CAT_DRINK + +/datum/crafting_recipe/umbrellablue + name = "Blue Drink Umbrella" + result = /obj/item/garnish/umbrellablue + time = 1 SECONDS + tools = list(/obj/item/toy/crayon/spraycan) + reqs = list( + /obj/item/paper = 1, + /obj/item/stack/rods = 1) + category = CAT_DRINK + +/datum/crafting_recipe/umbrellagreen + name = "Green Drink Umbrella" + result = /obj/item/garnish/umbrellagreen + time = 1 SECONDS + tools = list(/obj/item/toy/crayon/spraycan) + reqs = list( + /obj/item/paper = 1, + /obj/item/stack/rods = 1) + category = CAT_DRINK + +/datum/crafting_recipe/ash_garnish + name = "Ash Garnish" + result = /obj/item/garnish/ash + reqs = list(/datum/reagent/ash = 10) + time = 5 + category = CAT_DRINK + +/datum/crafting_recipe/salt_garnish + name = "Salt Garnish" + result = /obj/item/garnish/salt + reqs = list(/datum/reagent/consumable/sodiumchloride = 10) + time = 5 + category = CAT_DRINK + +/datum/crafting_recipe/breakawayflask + name = "Breakaway Flask" + result = /obj/item/reagent_containers/food/drinks/breakawayflask + time = 5 SECONDS + reqs = list(/obj/item/stack/sheet/glass = 5, + /obj/item/stack/sheet/mineral/plasma = 1) + tools = list(TOOL_WELDER) + category = CAT_DRINK diff --git a/code/datums/components/crafting/recipes/misc.dm b/code/datums/components/crafting/recipes/misc.dm new file mode 100644 index 000000000000..41dc7777cd25 --- /dev/null +++ b/code/datums/components/crafting/recipes/misc.dm @@ -0,0 +1,265 @@ +/datum/crafting_recipe/spooky_camera + name = "Camera Obscura" + result = /obj/item/camera/spooky + time = 15 + reqs = list(/obj/item/camera = 1, + /datum/reagent/water/holywater = 10) + parts = list(/obj/item/camera = 1) + category = CAT_MISC + +/datum/crafting_recipe/skateboard + name = "Skateboard" + result = /obj/vehicle/ridden/scooter/skateboard + time = 60 + reqs = list(/obj/item/stack/sheet/metal = 5, + /obj/item/stack/rods = 10) + category = CAT_MISC + +/datum/crafting_recipe/scooter + name = "Scooter" + result = /obj/vehicle/ridden/scooter + time = 65 + reqs = list(/obj/item/stack/sheet/metal = 5, + /obj/item/stack/rods = 12) + category = CAT_MISC + +/datum/crafting_recipe/wheelchair + name = "Wheelchair" + result = /obj/vehicle/ridden/wheelchair + reqs = list(/obj/item/stack/sheet/metal = 4, + /obj/item/stack/rods = 6) + time = 100 + category = CAT_MISC + +/datum/crafting_recipe/motorized_wheelchair + name = "Motorized Wheelchair" + result = /obj/vehicle/ridden/wheelchair/motorized + reqs = list(/obj/item/stack/sheet/metal = 10, + /obj/item/stack/rods = 8, + /obj/item/stock_parts/manipulator = 2, + /obj/item/stock_parts/capacitor = 1) + parts = list(/obj/item/stock_parts/manipulator = 2, + /obj/item/stock_parts/capacitor = 1) + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) + time = 200 + category = CAT_MISC + +/datum/crafting_recipe/mousetrap + name = "Mouse Trap" + result = /obj/item/assembly/mousetrap + time = 10 + reqs = list(/obj/item/stack/sheet/cardboard = 1, + /obj/item/stack/rods = 1) + category = CAT_MISC + +/datum/crafting_recipe/papersack + name = "Paper Sack" + result = /obj/item/storage/box/papersack + time = 10 + reqs = list(/obj/item/paper = 5) + category = CAT_MISC + + +/datum/crafting_recipe/flashlight_eyes + name = "Flashlight Eyes" + result = /obj/item/organ/eyes/robotic/flashlight + time = 10 + reqs = list( + /obj/item/flashlight = 2, + /obj/item/restraints/handcuffs/cable = 1 + ) + category = CAT_MISC + +/datum/crafting_recipe/paperframes + name = "Paper Frames" + result = /obj/item/stack/sheet/paperframes/five + time = 10 + reqs = list(/obj/item/stack/sheet/mineral/wood = 5, /obj/item/paper = 20) + category = CAT_MISC + +/datum/crafting_recipe/naturalpaper + name = "Hand-Pressed Paper" + time = 30 + reqs = list(/datum/reagent/water = 50, /obj/item/stack/sheet/mineral/wood = 1) + tools = list(/obj/item/hatchet) + result = /obj/item/paper_bin/bundlenatural + category = CAT_MISC + +/datum/crafting_recipe/toysword + name = "Toy Sword" + reqs = list(/obj/item/light/bulb = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) + result = /obj/item/toy/sword + category = CAT_MISC + +/datum/crafting_recipe/blackcarpet + name = "Black Carpet" + reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) + result = /obj/item/stack/tile/carpet/black/fifty + category = CAT_MISC + +/datum/crafting_recipe/curtain + name = "Curtains" + reqs = list(/obj/item/stack/sheet/cotton/cloth = 4, /obj/item/stack/rods = 1) + result = /obj/structure/curtain/cloth + category = CAT_MISC + +/datum/crafting_recipe/showercurtain + name = "Shower Curtains" + reqs = list(/obj/item/stack/sheet/cotton/cloth = 2, /obj/item/stack/sheet/plastic = 2, /obj/item/stack/rods = 1) + result = /obj/structure/curtain + category = CAT_MISC + +/datum/crafting_recipe/extendohand + name = "Extendo-Hand" + reqs = list(/obj/item/bodypart/r_arm/robot = 1, /obj/item/clothing/gloves/boxing = 1) + result = /obj/item/extendohand + category = CAT_MISC + +/datum/crafting_recipe/gold_horn + name = "Golden Bike Horn" + result = /obj/item/bikehorn/golden + time = 20 + reqs = list(/obj/item/stack/sheet/mineral/bananium = 5, + /obj/item/bikehorn = 1) + category = CAT_MISC + +/datum/crafting_recipe/pressureplate + name = "Pressure Plate" + result = /obj/item/pressure_plate + time = 5 + reqs = list(/obj/item/stack/sheet/metal = 1, + /obj/item/stack/tile/plasteel = 1, + /obj/item/stack/cable_coil = 2, + /obj/item/assembly/igniter = 1) + category = CAT_MISC + +/datum/crafting_recipe/rcl + name = "Makeshift Rapid Pipe Cleaner Layer" + result = /obj/item/rcl/ghetto + time = 40 + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) + reqs = list(/obj/item/stack/sheet/metal = 15) + category = CAT_MISC + +/datum/crafting_recipe/guillotine + name = "Guillotine" + result = /obj/structure/guillotine + time = 150 // Building a functioning guillotine takes time + reqs = list(/obj/item/stack/sheet/plasteel = 3, + /obj/item/stack/sheet/mineral/wood = 20, + /obj/item/stack/cable_coil = 10) + tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) + category = CAT_MISC + +/datum/crafting_recipe/ghettojetpack + name = "Improvised Jetpack" + result = /obj/item/tank/jetpack/improvised + time = 30 + reqs = list(/obj/item/tank/internals/oxygen = 2, /obj/item/extinguisher = 1, /obj/item/pipe = 3, /obj/item/stack/cable_coil = MAXCOIL) + category = CAT_MISC + tools = list(TOOL_WRENCH, TOOL_WELDER, TOOL_WIRECUTTER) + +/datum/crafting_recipe/multiduct + name = "Multi-layer duct" + result = /obj/machinery/duct/multilayered + time = 5 + reqs = list(/obj/item/stack/ducts = 5) + category = CAT_MISC + tools = list(TOOL_WELDER) + +/datum/crafting_recipe/ipickaxe + name = "Improvised Pickaxe" + reqs = list( + /obj/item/crowbar = 1, + /obj/item/kitchen/knife = 1, + /obj/item/stack/tape = 1) + result = /obj/item/pickaxe/improvised + category = CAT_MISC + +/datum/crafting_recipe/chem_scanner + name = "Reagent Scanner" + time = 30 + tools = list(TOOL_WIRECUTTER, TOOL_SCREWDRIVER) + reqs = list( + /obj/item/healthanalyzer = 1, + /obj/item/stack/cable_coil = 5, + /obj/item/stock_parts/scanning_module = 1) + result = /obj/item/reagent_scanner + category = CAT_MISC + +/datum/crafting_recipe/filter + name = "Seperatory Funnel" + time = 40 + tools = list(TOOL_WELDER, TOOL_WIRECUTTER) + reqs = list( + /obj/item/stack/cable_coil = 1, + /obj/item/reagent_containers/glass/beaker = 3) + result = /obj/item/reagent_containers/glass/filter + category = CAT_MISC + +/datum/crafting_recipe/splint + name = "Makeshift Splint" + reqs = list( + /obj/item/stack/rods = 2, + /obj/item/stack/sheet/cotton/cloth = 4) + result = /obj/item/stack/medical/splint/ghetto + category = CAT_MISC + +/datum/crafting_recipe/cwzippo + name = "Clockwork Zippo" + reqs = list( + /obj/item/lighter = 1, + /obj/item/stack/tile/bronze = 5) + result = /obj/item/lighter/clockwork + category = CAT_MISC + +/datum/crafting_recipe/portableseedextractor + name = "Portable seed extractor" + reqs = list( + /obj/item/storage/bag/plants = 1, + /obj/item/plant_analyzer = 1, + /obj/item/stock_parts/manipulator = 1, + /obj/item/stack/cable_coil = 2) + result = /obj/item/storage/bag/plants/portaseeder //this will probably mean that you can craft portable seed extractors into themselves, sending the other materials into the void, but we still don't have a solution for recipes involving radios stealing your headset, so this is officially not my problem. "no, Tills-The-Soil, adding more analyzers and micro-manipulators to your portable seed extractor does not make it make more seeds. in fact it does exactly nothing." + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + category = CAT_MISC + +/datum/crafting_recipe/crystalamulet + name = "Crystal Amulet" + result = /obj/item/clothing/neck/crystal_amulet + time = 4 SECONDS + reqs = list(/obj/item/strange_crystal = 3) + category = CAT_MISC + +/datum/crafting_recipe/crystalspear + name = "Crystal Spear" + result = /obj/item/spear/crystal + time = 4 SECONDS + reqs = list(/obj/item/strange_crystal = 2) + category = CAT_MISC + +/datum/crafting_recipe/freezer + name = "Freezer" + result = /obj/structure/closet/crate/freezer + time = 2 SECONDS + reqs = list(/datum/reagent/consumable/ice = 25, + /obj/item/stack/sheet/metal = 2) + category = CAT_MISC + +/datum/crafting_recipe/aquarium + name = "Aquarium" + result = /obj/structure/aquarium + time = 10 SECONDS + reqs = list(/obj/item/stack/sheet/metal = 15, + /obj/item/stack/sheet/glass = 10, + /obj/item/aquarium_kit = 1) + category = CAT_MISC + +/datum/crafting_recipe/mothplush + name = "Moth Plushie" + result = /obj/item/toy/plush/moth + reqs = list(/obj/item/stack/sheet/animalhide/mothroach = 1, + /obj/item/organ/heart = 1, + /obj/item/stack/sheet/cotton/cloth = 3) + category = CAT_MISC diff --git a/code/datums/components/crafting/recipes/robot.dm b/code/datums/components/crafting/recipes/robot.dm new file mode 100644 index 000000000000..a5558682e86b --- /dev/null +++ b/code/datums/components/crafting/recipes/robot.dm @@ -0,0 +1,86 @@ +/datum/crafting_recipe/ed209 + name = "ED209" + result = /mob/living/simple_animal/bot/secbot/ed209 + reqs = list(/obj/item/robot_suit = 1, + /obj/item/clothing/head/helmet = 1, + /obj/item/clothing/suit/armor/vest = 1, + /obj/item/bodypart/leg/left/robot = 1, + /obj/item/bodypart/leg/right/robot = 1, + /obj/item/stack/sheet/metal = 1, + /obj/item/stack/cable_coil = 1, + /obj/item/gun/energy/disabler = 1, + /obj/item/assembly/prox_sensor = 1) + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER) + time = 60 + category = CAT_ROBOT + +/datum/crafting_recipe/secbot + name = "Secbot" + result = /mob/living/simple_animal/bot/secbot + reqs = list(/obj/item/assembly/signaler = 1, + /obj/item/clothing/head/helmet/sec = 1, + /obj/item/melee/baton = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + tools = list(TOOL_WELDER) + time = 60 + category = CAT_ROBOT + +/datum/crafting_recipe/cleanbot + name = "Cleanbot" + result = /mob/living/simple_animal/bot/cleanbot + reqs = list(/obj/item/reagent_containers/glass/bucket = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/floorbot + name = "Floorbot" + result = /mob/living/simple_animal/bot/floorbot + reqs = list(/obj/item/storage/toolbox = 1, + /obj/item/stack/tile/plasteel = 10, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/medbot + name = "Medbot" + result = /mob/living/simple_animal/bot/medbot + reqs = list(/obj/item/healthanalyzer = 1, + /obj/item/storage/firstaid = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/honkbot + name = "Honkbot" + result = /mob/living/simple_animal/bot/honkbot + reqs = list(/obj/item/storage/box/clown = 1, + /obj/item/bodypart/r_arm/robot = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bikehorn/ = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/Firebot + name = "Firebot" + result = /mob/living/simple_animal/bot/firebot + reqs = list(/obj/item/extinguisher = 1, + /obj/item/bodypart/r_arm/robot = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/clothing/head/hardhat/red = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/Vibebot + name = "Vibebot" + result = /mob/living/simple_animal/bot/vibebot + reqs = list(/obj/item/light/bulb = 2, + /obj/item/bodypart/head/robot = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/toy/crayon = 1) + time = 40 + category = CAT_ROBOT diff --git a/code/datums/components/crafting/recipes/weapon.dm b/code/datums/components/crafting/recipes/weapon.dm new file mode 100644 index 000000000000..10f63bede5ce --- /dev/null +++ b/code/datums/components/crafting/recipes/weapon.dm @@ -0,0 +1,310 @@ +/datum/crafting_recipe/IED + name = "IED" + result = /obj/item/grenade/iedcasing + reqs = list(/datum/reagent/fuel = 50, + /obj/item/stack/cable_coil = 1, + /obj/item/assembly/igniter = 1, + /obj/item/reagent_containers/food/drinks/soda_cans = 1) + parts = list(/obj/item/reagent_containers/food/drinks/soda_cans = 1) + time = 15 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/lance + name = "Explosive Lance (Grenade)" + result = /obj/item/spear/explosive + reqs = list(/obj/item/spear = 1, + /obj/item/grenade = 1) + blacklist = list(/obj/item/spear/bonespear) + parts = list(/obj/item/spear = 1, + /obj/item/grenade = 1) + time = 15 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/strobeshield + name = "Strobe Shield" + result = /obj/item/shield/riot/flash + reqs = list(/obj/item/wallframe/flasher = 1, + /obj/item/assembly/flash/handheld = 1, + /obj/item/shield/riot = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/strobeshield/New() + ..() + blacklist |= subtypesof(/obj/item/shield/riot/) + +/datum/crafting_recipe/molotov + name = "Molotov" + result = /obj/item/reagent_containers/food/drinks/bottle/molotov + reqs = list(/obj/item/reagent_containers/glass/rag = 1, + /obj/item/reagent_containers/food/drinks/bottle = 1) + parts = list(/obj/item/reagent_containers/food/drinks/bottle = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/stunprod + name = "Stunprod" + result = /obj/item/melee/baton/cattleprod + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/stack/rods = 1, + /obj/item/assembly/igniter = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/teleprod + name = "Teleprod" + result = /obj/item/melee/baton/cattleprod/teleprod + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/stack/rods = 1, + /obj/item/assembly/igniter = 1, + /obj/item/stack/ore/bluespace_crystal = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/bola + name = "Bola" + result = /obj/item/restraints/legcuffs/bola + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/stack/sheet/metal = 6) + time = 20//15 faster than crafting them by hand! + category= CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/gonbola + name = "Gonbola" + result = /obj/item/restraints/legcuffs/bola/gonbola + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/stack/sheet/metal = 6, + /obj/item/stack/sheet/animalhide/gondola = 1) + time = 40 + category= CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but + name = "Pneumatic Cannon" + result = /obj/item/pneumatic_cannon/ghetto + tools = list(TOOL_WELDER, TOOL_WRENCH) + reqs = list(/obj/item/stack/sheet/metal = 4, + /obj/item/stack/packageWrap = 8, + /obj/item/pipe = 2) + time = 50 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/flamethrower + name = "Flamethrower" + result = /obj/item/flamethrower + reqs = list(/obj/item/weldingtool = 1, + /obj/item/assembly/igniter = 1, + /obj/item/stack/rods = 1) + parts = list(/obj/item/assembly/igniter = 1, + /obj/item/weldingtool = 1) + tools = list(TOOL_SCREWDRIVER) + time = 10 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/meteorslug + name = "Meteorslug Shell" + result = /obj/item/ammo_casing/shotgun/meteorslug + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/rcd_ammo = 1, + /obj/item/stock_parts/manipulator = 2) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/pulseslug + name = "Pulse Slug Shell" + result = /obj/item/ammo_casing/shotgun/pulseslug + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/stock_parts/capacitor/adv = 2, + /obj/item/stock_parts/micro_laser/ultra = 1) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/dragonsbreath + name = "Dragonsbreath Shell" + result = /obj/item/ammo_casing/shotgun/dragonsbreath + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, /datum/reagent/phosphorus = 5) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/frag12 + name = "FRAG-12 Shell" + result = /obj/item/ammo_casing/shotgun/frag12 + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /datum/reagent/glycerol = 5, + /datum/reagent/toxin/acid = 5, + /datum/reagent/toxin/acid/fluacid = 5) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/ionslug + name = "Ion Scatter Shell" + result = /obj/item/ammo_casing/shotgun/ion + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/stock_parts/micro_laser/ultra = 1, + /obj/item/stock_parts/subspace/crystal = 1) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/improvisedslug + name = "Improvised Shotgun Shell" + result = /obj/item/ammo_casing/shotgun/improvised + reqs = list(/obj/item/stack/sheet/metal = 2, + /obj/item/stack/cable_coil = 1, + /datum/reagent/fuel = 10) + tools = list(TOOL_SCREWDRIVER) + time = 12 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/laserscatter + name = "Scatter Laser Shell" + result = /obj/item/ammo_casing/shotgun/laserscatter + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/stock_parts/capacitor/adv = 1, + /obj/item/stock_parts/micro_laser/high = 1) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/ishotgun + name = "Improvised Shotgun" + result = /obj/item/gun/ballistic/shotgun/doublebarrel/improvised + reqs = list(/obj/item/weaponcrafting/receiver = 1, + /obj/item/pipe = 1, + /obj/item/weaponcrafting/stock = 1, + /obj/item/stack/packageWrap = 5) + tools = list(TOOL_SCREWDRIVER) + time = 100 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/chainsaw + name = "Chainsaw" + result = /obj/item/chainsaw + reqs = list(/obj/item/circular_saw = 1, + /obj/item/stack/cable_coil = 3, + /obj/item/stack/sheet/plasteel = 5) + tools = list(TOOL_WELDER) + time = 50 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/spear + name = "Spear" + result = /obj/item/spear + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/shard = 1, + /obj/item/stack/rods = 1) + parts = list(/obj/item/shard = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/chemical_payload + name = "Chemical Payload (C4)" + result = /obj/item/bombcore/chemical + reqs = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/grenade/c4 = 1, + /obj/item/grenade/chem_grenade = 2 + ) + parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) + time = 30 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/chemical_payload2 + name = "Chemical Payload (Gibtonite)" + result = /obj/item/bombcore/chemical + reqs = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/gibtonite = 1, + /obj/item/grenade/chem_grenade = 2 + ) + parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) + time = 50 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/pipebow + name = "Pipe Bow" + result = /obj/item/gun/ballistic/bow/pipe + reqs = list(/obj/item/pipe = 5, + /obj/item/stack/sheet/plastic = 15, + /obj/item/weaponcrafting/silkstring = 10) + time = 450 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/arrow + name = "Arrow" + result = /obj/item/ammo_casing/caseless/arrow/wood + time = 30 + reqs = list(/obj/item/stack/sheet/mineral/wood = 1, + /obj/item/stack/sheet/silk = 1, + /obj/item/stack/rods = 1) //1 metal sheet = 2 rods= 2 arrows + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/bone_arrow + name = "Bone Arrow" + result = /obj/item/ammo_casing/caseless/arrow/bone + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 1, + /obj/item/stack/sheet/sinew = 1, + /obj/item/ammo_casing/caseless/arrow/ash = 1) + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/ashen_arrow + name = "Fire hardened arrow" + result = /obj/item/ammo_casing/caseless/arrow/ash + tools = list(TOOL_WELDER) + time = 30 + reqs = list(/obj/item/ammo_casing/caseless/arrow/wood = 1) + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/bronze_arrow + name = "Bronze arrow" + result = /obj/item/ammo_casing/caseless/arrow/bronze + time = 30 + reqs = list(/obj/item/stack/sheet/mineral/wood = 1, + /obj/item/stack/tile/bronze = 1, + /obj/item/stack/sheet/silk = 1) + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/zip_pistol + name = "Zip Pistol" + result = /obj/item/gun/ballistic/automatic/zip_pistol + reqs = list(/obj/item/stack/rods = 4, + /obj/item/pipe = 1, + /obj/item/stack/cable_coil = 15, + /obj/item/weaponcrafting/receiver = 1, + /obj/item/floor_painter = 1, + /obj/item/stack/packageWrap = 10) + tools = list(TOOL_SCREWDRIVER) + time = 100 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON diff --git a/shiptest.dme b/shiptest.dme index 729aa2c89d4a..3fa9bb9824ba 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -538,7 +538,11 @@ #include "code\datums\components\crafting\guncrafting.dm" #include "code\datums\components\crafting\recipes.dm" #include "code\datums\components\crafting\recipes\clothing.dm" +#include "code\datums\components\crafting\recipes\drink.dm" +#include "code\datums\components\crafting\recipes\misc.dm" +#include "code\datums\components\crafting\recipes\robot.dm" #include "code\datums\components\crafting\recipes\tribal.dm" +#include "code\datums\components\crafting\recipes\weapon.dm" #include "code\datums\components\fantasy\_fantasy.dm" #include "code\datums\components\fantasy\affix.dm" #include "code\datums\components\fantasy\prefixes.dm" From 57b39e98c200018a4cbdea899860f09fe35f7a79 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sat, 13 Apr 2024 20:20:33 -0500 Subject: [PATCH 010/102] recipe cruft --- .../components/crafting/recipes/clothing.dm | 85 --------- .../components/crafting/recipes/misc.dm | 52 ----- .../components/crafting/recipes/tribal.dm | 178 +++++------------- code/game/objects/items/religion.dm | 48 ----- .../items/stacks/sheets/sheet_types.dm | 1 + code/modules/mining/lavaland/ash_flora.dm | 8 - code/modules/paperwork/pen.dm | 7 - .../reagents/reagent_containers/mortar.dm | 8 - .../lavalandruin_code/elephantgraveyard.dm | 11 -- code/modules/vehicles/lavaboat.dm | 15 -- 10 files changed, 50 insertions(+), 363 deletions(-) diff --git a/code/datums/components/crafting/recipes/clothing.dm b/code/datums/components/crafting/recipes/clothing.dm index 897dcdb8ff6c..95b37502bcaf 100644 --- a/code/datums/components/crafting/recipes/clothing.dm +++ b/code/datums/components/crafting/recipes/clothing.dm @@ -73,14 +73,6 @@ ) category = CAT_CLOTHING -/datum/crafting_recipe/hudsunsecremoval - name = "Security HUD removal" - result = /obj/item/clothing/glasses/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses = 1) - category = CAT_CLOTHING - /datum/crafting_recipe/hudsunmed name = "Medical HUDsunglasses" result = /obj/item/clothing/glasses/hud/health/sunglasses @@ -93,14 +85,6 @@ ) category = CAT_CLOTHING -/datum/crafting_recipe/hudsunmedremoval - name = "Medical HUD removal" - result = /obj/item/clothing/glasses/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/health/sunglasses = 1) - category = CAT_CLOTHING - /datum/crafting_recipe/hudsundiag name = "Diagnostic HUDsunglasses" result = /obj/item/clothing/glasses/hud/diagnostic/sunglasses @@ -113,14 +97,6 @@ ) category = CAT_CLOTHING -/datum/crafting_recipe/hudsundiagremoval - name = "Diagnostic HUD removal" - result = /obj/item/clothing/glasses/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/diagnostic/sunglasses = 1) - category = CAT_CLOTHING - /datum/crafting_recipe/sciencesunglasses name = "Science Sunglasses" result = /obj/item/clothing/glasses/sunglasses/chemical @@ -133,14 +109,6 @@ ) category = CAT_CLOTHING -/datum/crafting_recipe/sciencesunglassesremoval - name = "Science Sunglasses Dissemble" - result = /obj/item/clothing/glasses/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1) - category = CAT_CLOTHING - /datum/crafting_recipe/medhudglasses // The prescription HUD glasses. This long to have them... #Lianvee name = "MedicalHUD Prescription Glasses" result = /obj/item/clothing/glasses/hud/health/prescription @@ -153,14 +121,6 @@ ) category = CAT_CLOTHING -/datum/crafting_recipe/medhudglassesremoval - name = "MedicalHUD Prescription Glasses Disassembly" - result = /obj/item/clothing/glasses/regular - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/health/prescription = 1) - category = CAT_CLOTHING - /datum/crafting_recipe/sechudglasses name = "SecurityHUD Prescription Glasses" result = /obj/item/clothing/glasses/hud/security/prescription @@ -173,14 +133,6 @@ ) category = CAT_CLOTHING -/datum/crafting_recipe/sechudglassesremoval - name = "SecurityHUD Prescription Glasses Disassembly" - result = /obj/item/clothing/glasses/regular - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/security/prescription = 1) - category = CAT_CLOTHING - /datum/crafting_recipe/mesonglasses name = "Meson Prescription Glasses" result = /obj/item/clothing/glasses/meson/prescription @@ -193,14 +145,6 @@ ) category = CAT_CLOTHING -/datum/crafting_recipe/mesonglassesremoval - name = "Meson Prescription Glasses Disassembly" - result = /obj/item/clothing/glasses/regular - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/meson/prescription = 1) - category = CAT_CLOTHING - /datum/crafting_recipe/scienceglasses name = "Science Prescription Glasses" result = /obj/item/clothing/glasses/science/prescription @@ -213,14 +157,6 @@ ) category = CAT_CLOTHING -/datum/crafting_recipe/scienceglassesremoval - name = "Science Prescription Glasses Disassembly" - result = /obj/item/clothing/glasses/regular - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/science/prescription = 1) - category = CAT_CLOTHING - // Misc. /datum/crafting_recipe/ghostsheet name = "Ghost Sheet" @@ -237,27 +173,6 @@ time = 45 category = CAT_CLOTHING -/datum/crafting_recipe/mummy - name = "Mummification Bandages (Mask)" - result = /obj/item/clothing/mask/mummy - time = 10 - tools = list(/obj/item/nullrod/egyptian) - reqs = list(/obj/item/stack/sheet/cotton/cloth = 2) - category = CAT_CLOTHING - -/datum/crafting_recipe/mummy/body - name = "Mummification Bandages (Body)" - result = /obj/item/clothing/under/costume/mummy - reqs = list(/obj/item/stack/sheet/cotton/cloth = 5) - -/datum/crafting_recipe/chaplain_hood - name = "Follower Hoodie" - result = /obj/item/clothing/suit/hooded/chaplain_hoodie - time = 10 - tools = list(/obj/item/clothing/suit/hooded/chaplain_hoodie, /obj/item/storage/book/bible) - reqs = list(/obj/item/stack/sheet/cotton/cloth = 4) - category = CAT_CLOTHING - /datum/crafting_recipe/gripperoffbrand name = "Improvised Gripper Gloves" reqs = list( diff --git a/code/datums/components/crafting/recipes/misc.dm b/code/datums/components/crafting/recipes/misc.dm index 41dc7777cd25..4df0521bcff3 100644 --- a/code/datums/components/crafting/recipes/misc.dm +++ b/code/datums/components/crafting/recipes/misc.dm @@ -1,12 +1,3 @@ -/datum/crafting_recipe/spooky_camera - name = "Camera Obscura" - result = /obj/item/camera/spooky - time = 15 - reqs = list(/obj/item/camera = 1, - /datum/reagent/water/holywater = 10) - parts = list(/obj/item/camera = 1) - category = CAT_MISC - /datum/crafting_recipe/skateboard name = "Skateboard" result = /obj/vehicle/ridden/scooter/skateboard @@ -59,7 +50,6 @@ reqs = list(/obj/item/paper = 5) category = CAT_MISC - /datum/crafting_recipe/flashlight_eyes name = "Flashlight Eyes" result = /obj/item/organ/eyes/robotic/flashlight @@ -85,18 +75,6 @@ result = /obj/item/paper_bin/bundlenatural category = CAT_MISC -/datum/crafting_recipe/toysword - name = "Toy Sword" - reqs = list(/obj/item/light/bulb = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) - result = /obj/item/toy/sword - category = CAT_MISC - -/datum/crafting_recipe/blackcarpet - name = "Black Carpet" - reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) - result = /obj/item/stack/tile/carpet/black/fifty - category = CAT_MISC - /datum/crafting_recipe/curtain name = "Curtains" reqs = list(/obj/item/stack/sheet/cotton/cloth = 4, /obj/item/stack/rods = 1) @@ -115,14 +93,6 @@ result = /obj/item/extendohand category = CAT_MISC -/datum/crafting_recipe/gold_horn - name = "Golden Bike Horn" - result = /obj/item/bikehorn/golden - time = 20 - reqs = list(/obj/item/stack/sheet/mineral/bananium = 5, - /obj/item/bikehorn = 1) - category = CAT_MISC - /datum/crafting_recipe/pressureplate name = "Pressure Plate" result = /obj/item/pressure_plate @@ -205,14 +175,6 @@ result = /obj/item/stack/medical/splint/ghetto category = CAT_MISC -/datum/crafting_recipe/cwzippo - name = "Clockwork Zippo" - reqs = list( - /obj/item/lighter = 1, - /obj/item/stack/tile/bronze = 5) - result = /obj/item/lighter/clockwork - category = CAT_MISC - /datum/crafting_recipe/portableseedextractor name = "Portable seed extractor" reqs = list( @@ -225,20 +187,6 @@ tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) category = CAT_MISC -/datum/crafting_recipe/crystalamulet - name = "Crystal Amulet" - result = /obj/item/clothing/neck/crystal_amulet - time = 4 SECONDS - reqs = list(/obj/item/strange_crystal = 3) - category = CAT_MISC - -/datum/crafting_recipe/crystalspear - name = "Crystal Spear" - result = /obj/item/spear/crystal - time = 4 SECONDS - reqs = list(/obj/item/strange_crystal = 2) - category = CAT_MISC - /datum/crafting_recipe/freezer name = "Freezer" result = /obj/structure/closet/crate/freezer diff --git a/code/datums/components/crafting/recipes/tribal.dm b/code/datums/components/crafting/recipes/tribal.dm index 942a6e6712cc..ec974a563fce 100644 --- a/code/datums/components/crafting/recipes/tribal.dm +++ b/code/datums/components/crafting/recipes/tribal.dm @@ -1,10 +1,3 @@ -/datum/crafting_recipe/bonearmor - name = "Bone Armor" - result = /obj/item/clothing/suit/armor/bone - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 6) - category = CAT_PRIMAL - /datum/crafting_recipe/bonetalisman name = "Bone Talisman" result = /obj/item/clothing/accessory/talisman @@ -32,16 +25,6 @@ /obj/item/stack/sheet/animalhide/goliath_hide = 1) category = CAT_PRIMAL -/datum/crafting_recipe/bonestaff - name = "Legion Staff" - result = /obj/item/legion_staff - time = 35 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/crusher_trophy/legion_skull = 2,\ - /obj/item/crusher_trophy/dwarf_skull = 1, - /obj/item/organ/regenerative_core/legion = 1) - category = CAT_PRIMAL - /datum/crafting_recipe/skilt name = "Sinew Kilt" result = /obj/item/clothing/accessory/skilt @@ -58,13 +41,6 @@ /obj/item/stack/sheet/sinew = 1) category = CAT_PRIMAL -/datum/crafting_recipe/skullhelm - name = "Skull Helmet" - result = /obj/item/clothing/head/helmet/skull - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 4) - category = CAT_PRIMAL - /datum/crafting_recipe/goliathcloak name = "Goliath Cloak" result = /obj/item/clothing/suit/hooded/cloak/goliath @@ -83,20 +59,6 @@ /obj/item/stack/sheet/animalhide/ashdrake = 5) category = CAT_PRIMAL -/datum/crafting_recipe/firebrand - name = "Firebrand" - result = /obj/item/match/firebrand - time = 100 //Long construction time. Making fire is hard work. - reqs = list(/obj/item/stack/sheet/mineral/wood = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonedagger - name = "Bone Dagger" - result = /obj/item/kitchen/knife/combat/bone - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2) - category = CAT_PRIMAL - /datum/crafting_recipe/bonespear name = "Bone Spear" result = /obj/item/spear/bonespear @@ -122,20 +84,6 @@ result = /obj/structure/bonfire category = CAT_PRIMAL -/datum/crafting_recipe/rake //Category resorting incoming - name = "Rake" - time = 30 - reqs = list(/obj/item/stack/sheet/mineral/wood = 5) - result = /obj/item/cultivator/rake - category = CAT_PRIMAL - -/datum/crafting_recipe/woodbucket - name = "Wooden Bucket" - time = 30 - reqs = list(/obj/item/stack/sheet/mineral/wood = 3) - result = /obj/item/reagent_containers/glass/bucket/wooden - category = CAT_PRIMAL - /datum/crafting_recipe/headpike name = "Spike Head (Glass Spear)" time = 65 @@ -147,22 +95,6 @@ result = /obj/structure/headpike category = CAT_PRIMAL -/datum/crafting_recipe/legionpike - name = "Legion on a Spear" - time = 55 - reqs = list(/obj/item/spear = 1, - /obj/item/organ/regenerative_core = 1, - /obj/item/crusher_trophy/legion_skull = 2) - result = /obj/structure/legionpike - category = CAT_PRIMAL - -/datum/crafting_recipe/tribal_torch - name = "Tribal Torch" - result = /obj/item/candle/tribal_torch - time = 30 - reqs = list(/obj/item/stack/sheet/mineral/wood = 4) - category = CAT_PRIMAL - /datum/crafting_recipe/headpikebone name = "Spike Head (Bone Spear)" time = 65 @@ -173,43 +105,6 @@ result = /obj/structure/headpike/bone category = CAT_PRIMAL -/datum/crafting_recipe/rib - name = "Collosal Rib" - always_availible = FALSE - reqs = list( - /obj/item/stack/sheet/bone = 10, - /datum/reagent/fuel/oil = 5) - result = /obj/structure/statue/bone/rib - subcategory = CAT_PRIMAL - -/datum/crafting_recipe/skull - name = "Skull Carving" - always_availible = FALSE - reqs = list( - /obj/item/stack/sheet/bone = 6, - /datum/reagent/fuel/oil = 5) - result = /obj/structure/statue/bone/skull - category = CAT_PRIMAL - -/datum/crafting_recipe/halfskull - name = "Cracked Skull Carving" - always_availible = FALSE - reqs = list( - /obj/item/stack/sheet/bone = 3, - /datum/reagent/fuel/oil = 5) - result = /obj/structure/statue/bone/skull/half - category = CAT_PRIMAL - -/datum/crafting_recipe/boneshovel - name = "Serrated Bone Shovel" - always_availible = FALSE - reqs = list( - /obj/item/stack/sheet/bone = 4, - /datum/reagent/fuel/oil = 5, - /obj/item/shovel/spade = 1) - result = /obj/item/shovel/serrated - category = CAT_PRIMAL - /datum/crafting_recipe/lasso name = "Bone Lasso" reqs = list( @@ -218,16 +113,6 @@ result = /obj/item/key/lasso category = CAT_PRIMAL -/datum/crafting_recipe/dragonspear - name = "Dragonslayer's Spear" - result = /obj/item/spear/dragonspear - time = 45 - reqs = list(/obj/item/crusher_trophy/ash_spike = 1, - /obj/item/crusher_trophy/tail_spike = 2, - /obj/item/stack/sheet/bone = 5, - /obj/item/stack/sheet/sinew = 3) - category = CAT_PRIMAL - /datum/crafting_recipe/heavybonearmor name = "Heavy Bone Armor" result = /obj/item/clothing/suit/hooded/cloak/bone @@ -284,13 +169,6 @@ /obj/item/stack/sheet/sinew = 4) category = CAT_PRIMAL -/datum/crafting_recipe/boneclub - name = "Bone Club" - result = /obj/item/melee/baseball_bat/bone - time = 40 - reqs = list(/obj/item/stack/sheet/bone = 6) - category = CAT_PRIMAL - /datum/crafting_recipe/polarbearcloak name = "Polar Cloak" result = /obj/item/clothing/suit/hooded/cloak/goliath/polar @@ -301,16 +179,58 @@ blacklist = list(/obj/item/stack/sheet/animalhide/goliath_hide) category = CAT_PRIMAL -/datum/crafting_recipe/fermenting_barrel - name = "Wooden Barrel" - result = /obj/structure/fermenting_barrel - reqs = list(/obj/item/stack/sheet/mineral/wood = 8) - time = 50 - category = CAT_PRIMAL - /datum/crafting_recipe/distiller name = "Distiller" result = /obj/structure/fermenting_barrel/distiller reqs = list(/obj/item/stack/sheet/mineral/wood = 8, /obj/item/stack/sheet/metal = 5, /datum/reagent/srm_bacteria = 30) time = 50 category = CAT_PRIMAL + +/datum/crafting_recipe/crystalamulet + name = "Crystal Amulet" + result = /obj/item/clothing/neck/crystal_amulet + time = 4 SECONDS + reqs = list(/obj/item/strange_crystal = 3) + category = CAT_PRIMAL + +/datum/crafting_recipe/crystalspear + name = "Crystal Spear" + result = /obj/item/spear/crystal + time = 4 SECONDS + reqs = list(/obj/item/strange_crystal = 2) + category = CAT_PRIMAL + +/datum/crafting_recipe/mushroom_bowl + name = "Mushroom Bowl" + result = /obj/item/reagent_containers/glass/bowl/mushroom_bowl + reqs = list(/obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings = 5) + time = 30 + category = CAT_PRIMAL + +/datum/crafting_recipe/charcoal_stylus + name = "Charcoal Stylus" + result = /obj/item/pen/charcoal + reqs = list(/obj/item/stack/sheet/mineral/wood = 1, /datum/reagent/ash = 30) + time = 30 + category = CAT_PRIMAL + +/datum/crafting_recipe/mushroom_mortar + name = "Mushroom Mortar" + result = /obj/item/reagent_containers/glass/mortar/mushroom + reqs = list(/obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings = 5) + time = 30 + category = CAT_PRIMAL + +/datum/crafting_recipe/oar + name = "Goliath Bone Oar" + result = /obj/item/oar + reqs = list(/obj/item/stack/sheet/bone = 2) + time = 15 + category = CAT_PRIMAL + +/datum/crafting_recipe/boat + name = "Goliath Hide Boat" + result = /obj/vehicle/ridden/lavaboat + reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 3) + time = 50 + category = CAT_PRIMAL diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index 0ba32f33099a..e2507dfb911b 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -87,14 +87,6 @@ /obj/item/banner/security/mundane inspiration_available = FALSE -/datum/crafting_recipe/security_banner - name = "Securistan Banner" - result = /obj/item/banner/security/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/security/officer = 1) - category = CAT_MISC - /obj/item/banner/medical name = "meditopia banner" desc = "The banner of Meditopia, generous benefactors that cure wounds and shelter the weak." @@ -111,14 +103,6 @@ /obj/item/banner/medical/check_inspiration(mob/living/carbon/human/H) return H.stat //Meditopia is moved to help those in need -/datum/crafting_recipe/medical_banner - name = "Meditopia Banner" - result = /obj/item/banner/medical/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/medical = 1) - category = CAT_MISC - /obj/item/banner/medical/special_inspiration(mob/living/carbon/human/H) H.adjustToxLoss(-15) H.setOxyLoss(0) @@ -140,14 +124,6 @@ /obj/item/banner/science/check_inspiration(mob/living/carbon/human/H) return H.on_fire //Sciencia is pleased by dedication to the art of Toxins -/datum/crafting_recipe/science_banner - name = "Sciencia Banner" - result = /obj/item/banner/science/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/rnd/scientist = 1) - category = CAT_MISC - /obj/item/banner/cargo name = "cargonia banner" desc = "The banner of the eternal Cargonia, with the mystical power of conjuring any object into existence." @@ -161,14 +137,6 @@ /obj/item/banner/cargo/mundane inspiration_available = FALSE -/datum/crafting_recipe/cargo_banner - name = "Cargonia Banner" - result = /obj/item/banner/cargo/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/cargo/tech = 1) - category = CAT_MISC - /obj/item/banner/engineering name = "engitopia banner" desc = "The banner of Engitopia, wielders of limitless power." @@ -185,14 +153,6 @@ /obj/item/banner/engineering/special_inspiration(mob/living/carbon/human/H) H.radiation = 0 -/datum/crafting_recipe/engineering_banner - name = "Engitopia Banner" - result = /obj/item/banner/engineering/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/engineering/engineer = 1) - category = CAT_MISC - /obj/item/banner/command name = "command banner" desc = "The banner of Command, a staunch and ancient line of bueraucratic kings and queens." @@ -206,14 +166,6 @@ /obj/item/banner/command/check_inspiration(mob/living/carbon/human/H) return HAS_TRAIT(H, TRAIT_MINDSHIELD) //Command is stalwart but rewards their allies. -/datum/crafting_recipe/command_banner - name = "Command Banner" - result = /obj/item/banner/command/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/command/captain/parade = 1) - category = CAT_MISC - /obj/item/banner/red name = "red banner" icon_state = "banner-red" diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 09b2338b244f..f9e4deab08cb 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -252,6 +252,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ new/datum/stack_recipe("loom", /obj/structure/loom, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("mortar", /obj/item/reagent_containers/glass/mortar, 3), \ new/datum/stack_recipe("firebrand", /obj/item/match/firebrand, 2, time = 100), \ + new/datum/stack_recipe("torch", /obj/item/candle/tribal_torch, 4, time = 30), \ null, \ new/datum/stack_recipe_list("pews", list( new /datum/stack_recipe("pew (middle)", /obj/structure/chair/pew, 3, one_per_turf = TRUE, on_floor = TRUE), diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 0bade04d3fe8..f9563cc078eb 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -432,14 +432,6 @@ user.put_in_hands(result) to_chat(user, "You finish breaking [src]") -//CRAFTING - -/datum/crafting_recipe/mushroom_bowl - name = "Mushroom Bowl" - result = /obj/item/reagent_containers/glass/bowl/mushroom_bowl - reqs = list(/obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings = 5) - time = 30 - category = CAT_PRIMAL /obj/item/reagent_containers/food/snacks/customizable/salad/ashsalad desc = "Very ashy." diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index b289c32e85e0..cd913c57fb0a 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -80,13 +80,6 @@ custom_materials = null grind_results = list(/datum/reagent/ash = 5, /datum/reagent/cellulose = 10) -/datum/crafting_recipe/charcoal_stylus - name = "Charcoal Stylus" - result = /obj/item/pen/charcoal - reqs = list(/obj/item/stack/sheet/mineral/wood = 1, /datum/reagent/ash = 30) - time = 30 - category = CAT_PRIMAL - /obj/item/pen/fountain/captain name = "captain's fountain pen" desc = "It's an expensive Oak fountain pen. The nib is quite sharp." diff --git a/code/modules/reagents/reagent_containers/mortar.dm b/code/modules/reagents/reagent_containers/mortar.dm index 3c1443bfb9d2..efd3ce70f0e1 100644 --- a/code/modules/reagents/reagent_containers/mortar.dm +++ b/code/modules/reagents/reagent_containers/mortar.dm @@ -136,11 +136,3 @@ to accommodate additional materials. /obj/item/reagent_containers/glass/mortar/mushroom icon_state = "mortar_shroom" custom_materials = list(/datum/material/biomass = MINERAL_MATERIAL_AMOUNT) - -// Mushroom recipes are all over the place so I'm just putting it here -/datum/crafting_recipe/mushroom_mortar - name = "Mushroom Mortar" - result = /obj/item/reagent_containers/glass/mortar/mushroom - reqs = list(/obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings = 5) - time = 30 - category = CAT_PRIMAL diff --git a/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm b/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm index 5d29bf9dc2a6..7a26946f0ddc 100644 --- a/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm +++ b/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm @@ -226,21 +226,10 @@ /obj/structure/closet/crate/grave/loot/lead_researcher/PopulateContents() //ADVANCED GRAVEROBBING ..() new /obj/effect/decal/cleanable/blood/gibs/old(src) - new /obj/item/book/granter/crafting_recipe/boneyard_notes(src) /obj/effect/decal/remains/human/grave turf_loc_check = FALSE -/obj/item/book/granter/crafting_recipe/boneyard_notes - name = "The Complete Works of Lavaland Bone Architecture" - desc = "Pried from the lead Archaeologist's cold, dead hands, this seems to explain how ancient bone architecture was erected long ago." - crafting_recipe_types = list(/datum/crafting_recipe/rib, /datum/crafting_recipe/boneshovel, /datum/crafting_recipe/halfskull, /datum/crafting_recipe/skull) - icon = 'icons/obj/library.dmi' - icon_state = "boneworking_learing" - oneuse = FALSE - remarks = list("Who knew you could bend bones that far back?", "I guess that was much easier before the planet heated up...", "So that's how they made those ruins survive the ashstorms. Neat!", "The page is just filled with insane ramblings about some 'legion' thing.", "But why would they need vinegar to polish the bones? And rags too?", "You spend a few moments cleaning dirt and blood off of the page, yeesh.") - - //***Fluff items for lore/intrigue /obj/item/paper/crumpled/muddy/fluff/elephant_graveyard name = "posted warning" diff --git a/code/modules/vehicles/lavaboat.dm b/code/modules/vehicles/lavaboat.dm index 3c893b9bf8a8..547bac91a2f0 100644 --- a/code/modules/vehicles/lavaboat.dm +++ b/code/modules/vehicles/lavaboat.dm @@ -29,21 +29,6 @@ force = 12 w_class = WEIGHT_CLASS_NORMAL resistance_flags = LAVA_PROOF | FIRE_PROOF - -/datum/crafting_recipe/oar - name = "Goliath Bone Oar" - result = /obj/item/oar - reqs = list(/obj/item/stack/sheet/bone = 2) - time = 15 - category = CAT_PRIMAL - -/datum/crafting_recipe/boat - name = "Goliath Hide Boat" - result = /obj/vehicle/ridden/lavaboat - reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 3) - time = 50 - category = CAT_PRIMAL - //Dragon Boat From 68903db753d00388399031e7974e1301ab47fd98 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sat, 13 Apr 2024 20:58:08 -0500 Subject: [PATCH 011/102] yea --- .../RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm | 1 - _maps/map_files/generic/CentCom.dmm | 1 - code/game/objects/effects/mines.dm | 3 +-- code/game/objects/items/melee/chainsaw.dm | 1 + code/game/objects/items/melee/energyhalberd.dm | 1 + code/game/objects/items/melee/fireaxe.dm | 1 + code/game/objects/items/melee/spear.dm | 1 + 7 files changed, 5 insertions(+), 4 deletions(-) diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm index 7fde87854827..dcd6daaca1ed 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm @@ -1250,7 +1250,6 @@ /area/ruin/unpowered) "Zs" = ( /obj/structure/table/wood, -/obj/item/banhammer, /turf/open/floor/wood{ initial_gas_mix = "ICEMOON_ATMOS" }, diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 2901c166a10c..da819a04447b 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -3336,7 +3336,6 @@ /area/tdome/tdomeobserve) "aHq" = ( /obj/structure/closet/cardboard, -/obj/item/banhammer, /obj/effect/turf_decal/industrial/warning, /turf/open/floor/plasteel, /area/wizard_station) diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 0ca73652857c..fb67e6b0f6b0 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -130,7 +130,6 @@ desc = "He." icon = 'icons/obj/marg.dmi' icon_state = "marg" - density = FALSE var/duration = 0 pixel_x = -8 pixel_y = 1 @@ -148,7 +147,7 @@ qdel(src) -/obj/effect/mine/pickup/bloodbath + name = "His Odium" desc = "Embrace my righteous fury." duration = 1200 //2min diff --git a/code/game/objects/items/melee/chainsaw.dm b/code/game/objects/items/melee/chainsaw.dm index f9181ef3ac6a..494ec65cdb5a 100644 --- a/code/game/objects/items/melee/chainsaw.dm +++ b/code/game/objects/items/melee/chainsaw.dm @@ -4,6 +4,7 @@ name = "chainsaw" desc = "A versatile power tool. Useful for limbing trees and delimbing humans." icon_state = "chainsaw_off" + icon = 'icons/obj/weapon/axe.dmi' lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' flags_1 = CONDUCT_1 diff --git a/code/game/objects/items/melee/energyhalberd.dm b/code/game/objects/items/melee/energyhalberd.dm index 574c4fda3519..62c6f5de6020 100644 --- a/code/game/objects/items/melee/energyhalberd.dm +++ b/code/game/objects/items/melee/energyhalberd.dm @@ -5,6 +5,7 @@ /obj/item/energyhalberd icon = 'icons/obj/weapon/energy.dmi' icon_state = "halberd" + icon = 'icons/obj/weapon/energy.dmi' lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' name = "energy halberd" diff --git a/code/game/objects/items/melee/fireaxe.dm b/code/game/objects/items/melee/fireaxe.dm index b2e5534a92b0..88988ae61cc2 100644 --- a/code/game/objects/items/melee/fireaxe.dm +++ b/code/game/objects/items/melee/fireaxe.dm @@ -4,6 +4,7 @@ /obj/item/fireaxe // DEM AXES MAN, marker -Agouri icon_state = "fireaxe0" base_icon_state = "fireaxe" + icon = 'icons/obj/weapon/axe.dmi' lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi' name = "fire axe" diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index be6b9d3a5a14..20261b0f5a2c 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -1,6 +1,7 @@ //spears /obj/item/spear icon_state = "spearglass0" + icon = 'icons/obj/weapon/spear.dmi' lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' name = "spear" From b6fab46871469b98589088a7b7524ce6ea876e68 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sat, 13 Apr 2024 22:42:18 -0500 Subject: [PATCH 012/102] trailing whitespace --- code/game/objects/items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 813989a4416b..50baca2f6ca8 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1106,4 +1106,4 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb /obj/item/proc/can_trigger_gun(mob/living/user) if(!user.can_use_guns(src)) return FALSE - return TRUE \ No newline at end of file + return TRUE From bacc3d41f94c94908f586a6c59883b2758fbcdea Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sat, 13 Apr 2024 23:48:50 -0500 Subject: [PATCH 013/102] better sword parent --- .../BeachRuins/beach_knights_rest.dmm | 2 +- .../icemoon_underground_drakelair.dmm | 2 +- .../RandomRuins/JungleRuins/jungle_pirate.dmm | 2 +- .../JungleRuins/jungle_surface_roommates.dmm | 4 +- .../lavaland_surface_SPOOKYCRASH.dmm | 6 +- .../lavaland_surface_lava_canyon.dmm | 2 +- _maps/RandomRuins/SpaceRuins/ntfacility.dmm | 2 +- .../wasteplanet_fortress_of_solitide.dmm | 2 +- .../WasteRuins/wasteplanet_pandora.dmm | 4 +- _maps/map_files/generic/CentCom.dmm | 12 +- code/_globalvars/lists/maintenance_loot.dm | 2 +- code/controllers/subsystem/traumas.dm | 2 +- .../components/crafting/recipes/tribal.dm | 2 +- .../components/storage/concrete/pockets.dm | 2 +- code/game/objects/items/melee/holy_weapons.dm | 120 ------- code/game/objects/items/melee/misc.dm | 257 --------------- code/game/objects/items/melee/sword.dm | 297 ++++++++++++++++++ code/game/objects/items/melee/weaponry.dm | 60 ---- code/game/objects/items/miscellaneous.dm | 2 +- code/game/objects/items/religion.dm | 12 - code/game/objects/items/storage/belt.dm | 22 +- code/game/objects/items/storage/book.dm | 2 +- .../structures/icemoon/cave_entrance.dm | 2 +- .../antagonists/wizard/equipment/artefact.dm | 2 +- .../clothing/outfits/factions/syndicate.dm | 4 +- code/modules/clothing/suits/armor.dm | 2 +- .../recipes/tablecraft/recipes_misc.dm | 2 +- code/modules/mining/equipment/survival_pod.dm | 2 +- .../mining/lavaland/necropolis_chests.dm | 87 +---- .../hostile/megafauna/cult_templar.dm | 23 +- .../hostile/mining_mobs/hivelord.dm | 2 +- .../living/simple_animal/hostile/skeleton.dm | 2 +- code/modules/projectiles/guns/magic/staff.dm | 25 -- code/modules/uplink/uplink_items.dm | 2 +- tools/UpdatePaths/Scripts/2776_cultbegone.txt | 2 +- 35 files changed, 346 insertions(+), 629 deletions(-) create mode 100644 code/game/objects/items/melee/sword.dm diff --git a/_maps/RandomRuins/BeachRuins/beach_knights_rest.dmm b/_maps/RandomRuins/BeachRuins/beach_knights_rest.dmm index bc6875cf81c3..c493d11ba9b9 100644 --- a/_maps/RandomRuins/BeachRuins/beach_knights_rest.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_knights_rest.dmm @@ -516,7 +516,7 @@ icon_state = "grave_lead"; desc = "An marked patch of soil, showing signs of a burial. The headstone cannot be read, its' message torn away by age." }, -/obj/item/nullrod/claymore{ +/obj/item/melee/sword/claymore{ name = "ancient claymore"; desc = "The gold on the sword is tarnished, yet retains an human letter carved into it. R." }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm index 113fde2af9c7..71433c34570d 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm @@ -424,7 +424,7 @@ /obj/item/shield/riot/roman{ pixel_x = -12 }, -/obj/item/nullrod/claymore{ +/obj/item/melee/sword/claymore{ pixel_x = 20 }, /turf/open/floor/grass/snow/basalt, diff --git a/_maps/RandomRuins/JungleRuins/jungle_pirate.dmm b/_maps/RandomRuins/JungleRuins/jungle_pirate.dmm index 83f17d9f7026..81ea74f3bfb4 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_pirate.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_pirate.dmm @@ -386,7 +386,7 @@ /area/ruin/unpowered) "Xt" = ( /obj/structure/table/wood/poker, -/obj/item/nullrod/claymore/saber/pirate, +/obj/item/melee/sword/claymore, /obj/item/melee/transforming/energy/sword/saber/pirate, /turf/open/floor/carpet/red, /area/ruin/unpowered) diff --git a/_maps/RandomRuins/JungleRuins/jungle_surface_roommates.dmm b/_maps/RandomRuins/JungleRuins/jungle_surface_roommates.dmm index 86e44d0d8480..c9a45717c6ec 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_surface_roommates.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_surface_roommates.dmm @@ -85,10 +85,10 @@ /area/ruin/jungle/roommates/shack) "p" = ( /obj/structure/closet/crate/wooden, -/obj/item/claymore{ +/obj/item/melee/sword/claymore{ pixel_x = -3 }, -/obj/item/claymore{ +/obj/item/melee/sword/claymore{ pixel_x = 5 }, /obj/item/clothing/head/peaceflower{ diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm index 4f4464b57c7c..3c06ce3eb95b 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm @@ -148,11 +148,7 @@ /obj/effect/decal/cleanable/blood, /obj/item/clothing/suit/armor/riot/knight/red, /obj/item/clothing/head/helmet/knight/red, -/obj/item/claymore/weak{ - desc = "Comically rusted to the point of near uselessness."; - force = 6; - name = "rusted claymore" - }, +/obj/item/melee/sword/claymore, /turf/open/floor/mineral/plastitanium/red, /area/overmap_encounter/planetoid/cave/explored) "J" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index ea2d614717da..13f2cf4efe6f 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -614,7 +614,7 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, /area/overmap_encounter/planetoid/lava/explored) "pX" = ( -/obj/item/claymore/bone{ +/obj/item/melee/sword/bone{ pixel_x = -12; pixel_y = 11 }, diff --git a/_maps/RandomRuins/SpaceRuins/ntfacility.dmm b/_maps/RandomRuins/SpaceRuins/ntfacility.dmm index d17fe7601d26..06a6d96498a4 100644 --- a/_maps/RandomRuins/SpaceRuins/ntfacility.dmm +++ b/_maps/RandomRuins/SpaceRuins/ntfacility.dmm @@ -1875,7 +1875,7 @@ req_access = list(103) }, /obj/item/ammo_box/c38, -/obj/item/melee/sabre, +/obj/item/melee/sword/sabre, /obj/item/clothing/suit/hooded/wintercoat/captain, /obj/item/clothing/head/beret/captain, /obj/item/card/id/captains_spare, diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm index 7756fdfa1fd6..3c8546773491 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm @@ -5209,7 +5209,7 @@ /area/ruin/powered) "Wv" = ( /obj/structure/table, -/obj/item/melee/greykingsword, +/obj/item/melee/sword/greyking, /obj/item/clothing/head/delinquent, /turf/open/floor/plating, /area/ruin/powered) diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index 83249514118f..e7a5fc12dc71 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -121,7 +121,7 @@ "gm" = ( /obj/structure/closet/cabinet, /obj/item/clothing/suit/hooded/cloak/bone, -/obj/item/claymore/bone, +/obj/item/melee/sword/bone, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) "gr" = ( @@ -492,7 +492,7 @@ /area/ruin/wasteplanet) "sV" = ( /obj/structure/closet/cabinet, -/obj/item/claymore/bone, +/obj/item/melee/sword/bone, /obj/item/clothing/suit/armor/riot/chaplain/studentuni, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 18d517a28f9e..b9a10d57b14c 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -1700,7 +1700,7 @@ /area/centcom/evac) "atW" = ( /obj/structure/rack, -/obj/item/nullrod/claymore{ +/obj/item/melee/sword/claymore{ damtype = "stamina"; force = 30 }, @@ -1926,7 +1926,7 @@ /area/wizard_station) "avt" = ( /obj/structure/rack, -/obj/item/nullrod/claymore/katana{ +/obj/item/melee/sword/katana{ damtype = "stamina"; force = 30 }, @@ -4079,7 +4079,7 @@ "aMx" = ( /obj/machinery/light/directional/east, /obj/structure/rack, -/obj/item/nullrod/claymore/saber/red{ +/obj/item/melee/sword/claymore{ damtype = "stamina"; force = 30 }, @@ -5008,7 +5008,7 @@ "aRS" = ( /obj/machinery/light/directional/west, /obj/structure/rack, -/obj/item/nullrod/claymore/glowing{ +/obj/item/melee/sword/claymore{ damtype = "stamina"; force = 30 }, @@ -5316,7 +5316,7 @@ "aUh" = ( /obj/machinery/light/directional/east, /obj/structure/rack, -/obj/item/nullrod/claymore/darkblade{ +/obj/item/melee/sword/claymore{ damtype = "stamina"; force = 30 }, @@ -5995,7 +5995,7 @@ "aYV" = ( /obj/machinery/light/directional/west, /obj/structure/rack, -/obj/item/nullrod/claymore/saber{ +/obj/item/melee/sword/claymore{ damtype = "stamina"; force = 30 }, diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 59f25efe9823..f041db0ac02c 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -253,7 +253,7 @@ GLOBAL_LIST_INIT(oddity_loot, list(//oddity: strange or crazy items /obj/item/clothing/shoes/jackboots/fast = 1, /obj/item/clothing/suit/armor/reactive/table = 1, /obj/item/storage/box/donkpockets/donkpocketgondola = 1, - /obj/item/melee/greykingsword = 1 //WS - Meth Sword + /obj/item/melee/sword/greyking = 1 //WS - Meth Sword )) //Maintenance loot spawner pools diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 1e697327c844..6d004524f30a 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -159,7 +159,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/clothing/suit/space/space_ninja, /obj/item/clothing/mask/gas/space_ninja, /obj/item/clothing/shoes/space_ninja, /obj/item/clothing/gloves/space_ninja, /obj/item/vibro_weapon, /obj/item/nullrod/scythe/vibro, /obj/item/energy_katana, /obj/item/toy/katana, - /obj/item/nullrod/claymore/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe)) + /obj/item/melee/sword/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe)) ) phobia_turfs = list( diff --git a/code/datums/components/crafting/recipes/tribal.dm b/code/datums/components/crafting/recipes/tribal.dm index ec974a563fce..370bb8febbd0 100644 --- a/code/datums/components/crafting/recipes/tribal.dm +++ b/code/datums/components/crafting/recipes/tribal.dm @@ -139,7 +139,7 @@ /datum/crafting_recipe/bonesword name = "Bone Sword" - result = /obj/item/claymore/bone + result = /obj/item/melee/sword/bone time = 40 reqs = list(/obj/item/stack/sheet/bone = 3, /obj/item/stack/sheet/sinew = 2) diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index bd0a59f85f42..a9f38eb3f165 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -35,7 +35,7 @@ /datum/component/storage/concrete/pockets/small/fedora/Initialize() . = ..() var/static/list/exception_cache = typecacheof(list( - /obj/item/katana, /obj/item/toy/katana, /obj/item/nullrod/claymore/katana, + /obj/item/katana, /obj/item/toy/katana, /obj/item/melee/sword/katana, /obj/item/energy_katana, /obj/item/gun/ballistic/automatic/smg/firestorm/pan )) exception_hold = exception_cache diff --git a/code/game/objects/items/melee/holy_weapons.dm b/code/game/objects/items/melee/holy_weapons.dm index 20ea6e747e83..428d872143c0 100644 --- a/code/game/objects/items/melee/holy_weapons.dm +++ b/code/game/objects/items/melee/holy_weapons.dm @@ -300,110 +300,6 @@ item_state = "godstaff-blue" shield_icon = "shield-old" -/obj/item/nullrod/claymore - icon_state = "claymore_gold" - item_state = "claymore_gold" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - pickup_sound = 'sound/items/handling/knife2_pickup.ogg' - drop_sound = 'sound/items/handling/metal_drop.ogg' - name = "holy claymore" - desc = "A weapon fit for a crusade!" - w_class = WEIGHT_CLASS_HUGE - slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT - block_chance = 30 - sharpness = IS_SHARP - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - -/obj/item/nullrod/claymore/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = 0 //Don't bring a sword to a gunfight - return ..() - -/obj/item/nullrod/claymore/darkblade - icon_state = "cultblade" - item_state = "cultblade" - lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' - righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' - inhand_x_dimension = 64 - inhand_y_dimension = 64 - name = "dark blade" - desc = "Spread the glory of the dark gods!" - slot_flags = ITEM_SLOT_BELT - hitsound = 'sound/hallucinations/growl1.ogg' - -/obj/item/nullrod/claymore/chainsaw_sword - icon_state = "chainswordon" - item_state = "chainswordon" - name = "sacred chainsaw sword" - desc = "Suffer not a heretic to live." - slot_flags = ITEM_SLOT_BELT - attack_verb = list("sawed", "torn", "cut", "chopped", "diced") - hitsound = 'sound/weapons/chainsawhit.ogg' - tool_behaviour = TOOL_SAW - toolspeed = 1.5 //slower than a real saw - -/obj/item/nullrod/claymore/glowing - icon_state = "swordon" - item_state = "swordon" - name = "force weapon" - desc = "The blade glows with the power of faith. Or possibly a battery." - slot_flags = ITEM_SLOT_BELT - -/obj/item/nullrod/claymore/katana - name = "\improper Hanzo steel" - desc = "Capable of cutting clean through a holy claymore." - icon_state = "katana" - item_state = "katana" - slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK - supports_variations = VOX_VARIATION - -/obj/item/nullrod/claymore/multiverse - name = "extradimensional blade" - desc = "Once the harbinger of an interdimensional war, its sharpness fluctuates wildly." - icon_state = "multiverse" - item_state = "multiverse" - slot_flags = ITEM_SLOT_BELT - -/obj/item/nullrod/claymore/multiverse/attack(mob/living/carbon/M, mob/living/carbon/user) - force = rand(1, 30) - ..() - -/obj/item/nullrod/claymore/saber - name = "light energy sword" - hitsound = 'sound/weapons/blade1.ogg' - icon = 'icons/obj/weapon/energy.dmi' - icon_state = "swordblue" - item_state = "swordblue" - desc = "If you strike me down, I shall become more robust than you can possibly imagine." - slot_flags = ITEM_SLOT_BELT - -/obj/item/nullrod/claymore/saber/red - name = "dark energy sword" - icon_state = "swordred" - item_state = "swordred" - desc = "Woefully ineffective when used on steep terrain." - -/obj/item/nullrod/claymore/saber/pirate - name = "nautical energy sword" - icon_state = "cutlassred" - item_state = "cutlassred" - desc = "Convincing HR that your religion involved piracy was no mean feat." - -/obj/item/nullrod/sord - name = "\improper UNREAL SORD" - desc = "This thing is so unspeakably HOLY you are having a hard time even holding it." - icon_state = "sord" - item_state = "sord" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - force = 4.13 - throwforce = 1 - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - /obj/item/nullrod/scythe icon_state = "scythe1" item_state = "scythe1" @@ -655,22 +551,6 @@ user.faction |= "carp" used_blessing = TRUE -/obj/item/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking - name = "monk's staff" - desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, it is now used to harass the clown." - w_class = WEIGHT_CLASS_BULKY - force = 15 - block_chance = 40 - slot_flags = ITEM_SLOT_BACK - sharpness = IS_BLUNT - hitsound = "swing_hit" - attack_verb = list("smashed", "slammed", "whacked", "thwacked") - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "bostaff0" - item_state = "bostaff0" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - /obj/item/nullrod/tribal_knife icon_state = "crysknife" item_state = "crysknife" diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 0058f999436d..ecf2328fec99 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -46,215 +46,7 @@ . = ..() AddComponent(/datum/component/butchering, 60, 80) //very imprecise -/obj/item/melee/sabre - name = "officer's sabre" - desc = "An elegant weapon, its monomolecular edge is capable of cutting through flesh and bone with ease." - icon_state = "sabre" - item_state = "sabre" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - pickup_sound = 'sound/items/unsheath.ogg' - drop_sound = 'sound/items/handling/metal_drop.ogg' - flags_1 = CONDUCT_1 - obj_flags = UNIQUE_RENAME - force = 15 - throwforce = 10 - w_class = WEIGHT_CLASS_BULKY - block_chance = 60 - armour_penetration = 75 - sharpness = IS_SHARP - attack_verb = list("slashed", "cut") - hitsound = 'sound/weapons/rapierhit.ogg' - custom_materials = list(/datum/material/iron = 1000) -/obj/item/melee/sabre/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results. - -/obj/item/melee/sabre/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = 0 //Don't bring a sword to a gunfight - return ..() - -/obj/item/melee/sabre/on_enter_storage(datum/component/storage/concrete/S) - var/obj/item/storage/belt/sabre/B = S.real_location() - if(istype(B)) - playsound(B, 'sound/items/sheath.ogg', 25, TRUE) - -/obj/item/melee/sabre/solgov - name = "solarian sabre" - desc = "A refined ceremonial blade often given to soldiers and high ranking officials of SolGov." - icon_state = "sabresolgov" - item_state = "sabresolgov" - -/obj/item/melee/sabre/suns - name = "SUNS sabre" - desc = "A blade of Solarian origin given to SUNS followers." - icon_state = "suns-sabre" - item_state = "suns-sabre" - -/obj/item/melee/sabre/suns/captain - name = "SUNS captain sabre" - desc = "An elegant blade awarded to SUNS captains. Despite its higher craftmanship, it appears to be just as effective as a normal sabre." - icon_state = "suns-capsabre" - item_state = "suns-capsabre" - -/obj/item/melee/sabre/suns/cmo - name = "SUNS stick sabre" - desc = "A thin blade used by SUNS medical instructors." - icon_state = "suns-swordstick" - item_state = "suns-swordstick" - -/obj/item/melee/sabre/suns/telescopic - name = "telescopic sabre" - desc = "A telescopic and retractable blade given to SUNS peacekeepers for easy concealment and carry. It's design makes it slightly less effective than normal sabres sadly, however it is still excelent at piercing armor." - icon_state = "suns-tsword" - item_state = "suns-tsword" - force = 0 - throwforce = 0 - block_chance = 0 - - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("smacked", "prodded") - - var/extended = FALSE - var/extend_sound = 'sound/weapons/batonextend.ogg' - - var/on_icon_state = "suns-tsword_ext" - var/on_item_state = "suns-tsword_ext" - var/off_icon_state = "suns-tsword" - var/off_item_state = "suns-tsword" - - var/force_on = 10 - var/on_throwforce = 10 - var/on_blockchance = 40 - - var/force_off = 0 - var/off_throwforce = 0 - var/off_blockchance = 0 - - var/weight_class_on = WEIGHT_CLASS_BULKY - -/obj/item/melee/sabre/suns/telescopic/attack_self(mob/user) - extended = !extended - - if(extended) - to_chat(user, "You extend the [src].") - icon_state = on_icon_state - item_state = on_item_state - slot_flags = 0 - w_class = weight_class_on - force = force_on - throwforce = on_throwforce - block_chance = on_blockchance - attack_verb = list("slashed", "cut") - else - to_chat(user, "You collapse the [src].") - icon_state = off_icon_state - item_state = off_item_state - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - force = force_off - throwforce = off_throwforce - block_chance = off_blockchance - attack_verb = list("smacked", "prodded") - - playsound(get_turf(src), extend_sound, 50, TRUE) - add_fingerprint(user) - -/obj/item/melee/supermatter_sword - name = "supermatter sword" - desc = "In a universe full of bad ideas, this might just be the worst." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "supermatter_sword" - item_state = "supermatter_sword" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - slot_flags = null - w_class = WEIGHT_CLASS_BULKY - force = 0.001 - armour_penetration = 1000 - var/obj/machinery/power/supermatter_crystal/shard - var/balanced = 1 - force_string = "INFINITE" - -/obj/item/melee/supermatter_sword/Initialize() - . = ..() - shard = new /obj/machinery/power/supermatter_crystal(src) - qdel(shard.countdown) - shard.countdown = null - START_PROCESSING(SSobj, src) - visible_message("[src] appears, balanced ever so perfectly on its hilt. This isn't ominous at all.") - -/obj/item/melee/supermatter_sword/process() - if(balanced || throwing || ismob(src.loc) || isnull(src.loc)) - return - if(!isturf(src.loc)) - var/atom/target = src.loc - forceMove(target.loc) - consume_everything(target) - else - var/turf/T = get_turf(src) - if(!isspaceturf(T)) - consume_turf(T) - -/obj/item/melee/supermatter_sword/afterattack(target, mob/user, proximity_flag) - . = ..() - if(user && target == user) - user.dropItemToGround(src) - if(proximity_flag) - consume_everything(target) - -/obj/item/melee/supermatter_sword/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - ..() - if(ismob(hit_atom)) - var/mob/M = hit_atom - if(src.loc == M) - M.dropItemToGround(src) - consume_everything(hit_atom) - -/obj/item/melee/supermatter_sword/pickup(user) - ..() - balanced = 0 - -/obj/item/melee/supermatter_sword/ex_act(severity, target) - visible_message("The blast wave smacks into [src] and rapidly flashes to ash.",\ - "You hear a loud crack as you are washed with a wave of heat.") - consume_everything() - -/obj/item/melee/supermatter_sword/acid_act() - visible_message("The acid smacks into [src] and rapidly flashes to ash.",\ - "You hear a loud crack as you are washed with a wave of heat.") - consume_everything() - -/obj/item/melee/supermatter_sword/bullet_act(obj/projectile/P) - visible_message("[P] smacks into [src] and rapidly flashes to ash.",\ - "You hear a loud crack as you are washed with a wave of heat.") - consume_everything(P) - return BULLET_ACT_HIT - - -/obj/item/melee/supermatter_sword/proc/consume_everything(target) - if(isnull(target)) - shard.Consume() - else if(!isturf(target)) - shard.Bumped(target) - else - consume_turf(target) - -/obj/item/melee/supermatter_sword/proc/consume_turf(turf/T) - var/oldtype = T.type - var/turf/newT = T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) - if(newT.type == oldtype) - return - playsound(T, 'sound/effects/supermatter.ogg', 50, TRUE) - T.visible_message("[T] smacks into [src] and rapidly flashes to ash.",\ - "You hear a loud crack as you are washed with a wave of heat.") - shard.Consume() - -/obj/item/melee/supermatter_sword/add_blood_DNA(list/blood_dna) - return FALSE /obj/item/melee/curator_whip name = "curator's whip" @@ -301,55 +93,6 @@ overlay.appearance_flags = RESET_COLOR add_overlay(overlay) -/obj/item/melee/greykingsword - name = "blade of the grey-king" - desc = "A legendary sword made with 3 replica katanas nailed together and dipped in heavy narcotics." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "grey_sword" - item_state = "swordoff" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BACK - force = 15 - throwforce = 8 - w_class = WEIGHT_CLASS_NORMAL - block_chance = 30 - attack_verb = list("struck", "slashed", "mall-ninjad", "tided", "multi-shanked", "shredded") - custom_materials = list(/datum/material/iron = 1420) - sharpness = IS_SHARP - - var/prick_chance = 50 - var/prick_chems = list( - /datum/reagent/toxin = 10, - /datum/reagent/toxin/mindbreaker = 10, - /datum/reagent/drug/space_drugs = 10, - /datum/reagent/drug/crank = 5, - /datum/reagent/drug/methamphetamine = 5, - /datum/reagent/drug/bath_salts = 5, - /datum/reagent/drug/aranesp = 5, - /datum/reagent/drug/pumpup = 10, - /datum/reagent/medicine/omnizine = 10, - /datum/reagent/medicine/earthsblood = 15, - /datum/reagent/medicine/omnizine/protozine = 15 - ) - -/obj/item/melee/greykingsword/afterattack(atom/target, mob/user, proximity_flag, click_parameters) - if (iscarbon(target) && prob(prick_chance)) - var/mob/living/carbon/C = target - var/datum/reagent/R = pick(prick_chems) - C.reagents.add_reagent(R, prick_chems[R]) - C.visible_message("[user] is pricked!", \ - "You've been pricked by the [src]!") - log_combat(user, C, "pricked", src.name, "with [prick_chems[R]]u of [R]") - return ..() - - -/obj/item/melee/greykingsword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text, final_block_chance, damage, attack_type) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = 1 //Still not like your Japaniese animes though. - return ..() - /obj/item/kitchen/knife/letter_opener name = "letter opener" icon = 'icons/obj/items_and_weapons.dmi' diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm new file mode 100644 index 000000000000..9fd3b816faac --- /dev/null +++ b/code/game/objects/items/melee/sword.dm @@ -0,0 +1,297 @@ +/obj/item/melee/sword + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + pickup_sound = 'sound/items/unsheath.ogg' + drop_sound = 'sound/items/handling/metal_drop.ogg' + hitsound = 'sound/weapons/bladeslice.ogg' + flags_1 = CONDUCT_1 + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK + w_class = WEIGHT_CLASS_NORMAL + obj_flags = UNIQUE_RENAME + block_chance = 25 + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + sharpness = IS_SHARP + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) + resistance_flags = FIRE_PROOF + +/obj/item/melee/sword/claymore + name = "claymore" + desc = "What are you standing around staring at this for? Get to killing!" + icon_state = "claymore" + item_state = "claymore" + force = 30 + throwforce = 10 + block_chance = 40 + max_integrity = 200 + +/obj/item/melee/sword/claymore/Initialize() + . = ..() + AddComponent(/datum/component/butchering, 40, 105) + +/obj/item/melee/sword/bone + name = "Bone Sword" + desc = "Jagged pieces of bone are tied to what looks like a goliaths femur." + icon_state = "bone_sword" + item_state = "bone_sword" + force = 15 + throwforce = 10 + armour_penetration = 15 + +/obj/item/sword/katana + name = "katana" + desc = "Woefully underpowered in D20." + icon_state = "katana" + item_state = "katana" + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK + force = 30 + throwforce = 10 + w_class = WEIGHT_CLASS_HUGE + block_chance = 10 + max_integrity = 200 + +/obj/item/melee/sword/chainsaw + icon_state = "chainswordon" + item_state = "chainswordon" + name = "sacred chainsaw sword" + desc = "Suffer not a heretic to live." + slot_flags = ITEM_SLOT_BELT + attack_verb = list("sawed", "torn", "cut", "chopped", "diced") + hitsound = 'sound/weapons/chainsawhit.ogg' + tool_behaviour = TOOL_SAW + toolspeed = 1.5 //slower than a real saw + +/obj/item/melee/sword/sabre + name = "officer's sabre" + desc = "An elegant weapon, its monomolecular edge is capable of cutting through flesh and bone with ease." + icon_state = "sabre" + item_state = "sabre" + force = 15 + throwforce = 10 + w_class = WEIGHT_CLASS_BULKY + block_chance = 60 + armour_penetration = 75 + attack_verb = list("slashed", "cut") + hitsound = 'sound/weapons/rapierhit.ogg' + custom_materials = list(/datum/material/iron = 1000) + +/obj/item/melee/sword/sabre/Initialize() + . = ..() + AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results. + +/obj/item/melee/sword/sabre/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(attack_type == PROJECTILE_ATTACK) + final_block_chance = 0 //Don't bring a sword to a gunfight + return ..() + +/obj/item/melee/sword/sabre/on_enter_storage(datum/component/storage/concrete/S) + var/obj/item/storage/belt/sabre/B = S.real_location() + if(istype(B)) + playsound(B, 'sound/items/sheath.ogg', 25, TRUE) + +/obj/item/melee/sword/sabre/solgov + name = "solarian sabre" + desc = "A refined ceremonial blade often given to soldiers and high ranking officials of SolGov." + icon_state = "sabresolgov" + item_state = "sabresolgov" + +/obj/item/melee/sword/sabre/suns + name = "SUNS sabre" + desc = "A blade of Solarian origin given to SUNS followers." + icon_state = "suns-sabre" + item_state = "suns-sabre" + +/obj/item/melee/sword/sabre/suns/captain + name = "SUNS captain sabre" + desc = "An elegant blade awarded to SUNS captains. Despite its higher craftmanship, it appears to be just as effective as a normal sabre." + icon_state = "suns-capsabre" + item_state = "suns-capsabre" + +/obj/item/melee/sword/sabre/suns/cmo + name = "SUNS stick sabre" + desc = "A thin blade used by SUNS medical instructors." + icon_state = "suns-swordstick" + item_state = "suns-swordstick" + +/obj/item/melee/sword/sabre/suns/telescopic + name = "telescopic sabre" + desc = "A telescopic and retractable blade given to SUNS peacekeepers for easy concealment and carry. It's design makes it slightly less effective than normal sabres sadly, however it is still excelent at piercing armor." + icon_state = "suns-tsword" + item_state = "suns-tsword" + force = 0 + throwforce = 0 + block_chance = 0 + + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("smacked", "prodded") + + var/extended = FALSE + var/extend_sound = 'sound/weapons/batonextend.ogg' + + var/on_icon_state = "suns-tsword_ext" + var/on_item_state = "suns-tsword_ext" + var/off_icon_state = "suns-tsword" + var/off_item_state = "suns-tsword" + + var/force_on = 10 + var/on_throwforce = 10 + var/on_blockchance = 40 + + var/force_off = 0 + var/off_throwforce = 0 + var/off_blockchance = 0 + + var/weight_class_on = WEIGHT_CLASS_BULKY + +/obj/item/melee/sword/sabre/suns/telescopic/attack_self(mob/user) + extended = !extended + + if(extended) + to_chat(user, "You extend the [src].") + icon_state = on_icon_state + item_state = on_item_state + slot_flags = 0 + w_class = weight_class_on + force = force_on + throwforce = on_throwforce + block_chance = on_blockchance + attack_verb = list("slashed", "cut") + else + to_chat(user, "You collapse the [src].") + icon_state = off_icon_state + item_state = off_item_state + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + force = force_off + throwforce = off_throwforce + block_chance = off_blockchance + attack_verb = list("smacked", "prodded") + + playsound(get_turf(src), extend_sound, 50, TRUE) + add_fingerprint(user) + +/obj/item/melee/sword/supermatter + name = "supermatter sword" + desc = "In a universe full of bad ideas, this might just be the worst." + icon_state = "supermatter_sword" + item_state = "supermatter_sword" + slot_flags = null + w_class = WEIGHT_CLASS_BULKY + force = 0.001 + armour_penetration = 1000 + var/obj/machinery/power/supermatter_crystal/shard + var/balanced = 1 + force_string = "INFINITE" + +/obj/item/melee/sword/supermatter/Initialize() + . = ..() + shard = new /obj/machinery/power/supermatter_crystal(src) + qdel(shard.countdown) + shard.countdown = null + START_PROCESSING(SSobj, src) + visible_message("[src] appears, balanced ever so perfectly on its hilt. This isn't ominous at all.") + +/obj/item/melee/sword/supermatter/process() + if(balanced || throwing || ismob(src.loc) || isnull(src.loc)) + return + if(!isturf(src.loc)) + var/atom/target = src.loc + forceMove(target.loc) + consume_everything(target) + else + var/turf/T = get_turf(src) + if(!isspaceturf(T)) + consume_turf(T) + +/obj/item/melee/sword/supermatter/afterattack(target, mob/user, proximity_flag) + . = ..() + if(user && target == user) + user.dropItemToGround(src) + if(proximity_flag) + consume_everything(target) + +/obj/item/melee/sword/supermatter/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + ..() + if(ismob(hit_atom)) + var/mob/M = hit_atom + if(src.loc == M) + M.dropItemToGround(src) + consume_everything(hit_atom) + +/obj/item/melee/sword/supermatter/pickup(user) + ..() + balanced = 0 + +/obj/item/melee/sword/supermatter/ex_act(severity, target) + visible_message("The blast wave smacks into [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + consume_everything() + +/obj/item/melee/sword/supermatter/acid_act() + visible_message("The acid smacks into [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + consume_everything() + +/obj/item/melee/sword/supermatter/bullet_act(obj/projectile/P) + visible_message("[P] smacks into [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + consume_everything(P) + return BULLET_ACT_HIT + + +/obj/item/melee/sword/supermatter/proc/consume_everything(target) + if(isnull(target)) + shard.Consume() + else if(!isturf(target)) + shard.Bumped(target) + else + consume_turf(target) + +/obj/item/melee/sword/supermatter/proc/consume_turf(turf/T) + var/oldtype = T.type + var/turf/newT = T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + if(newT.type == oldtype) + return + playsound(T, 'sound/effects/supermatter.ogg', 50, TRUE) + T.visible_message("[T] smacks into [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + shard.Consume() + +/obj/item/melee/sword/supermatter/add_blood_DNA(list/blood_dna) + return FALSE + +/obj/item/melee/sword/greyking + name = "blade of the grey-king" + desc = "A legendary sword made with 3 replica katanas nailed together and dipped in heavy narcotics." + icon_state = "grey_sword" + item_state = "swordoff" + slot_flags = ITEM_SLOT_BACK + force = 15 + throwforce = 8 + block_chance = 30 + attack_verb = list("struck", "slashed", "mall-ninjad", "tided", "multi-shanked", "shredded") + + var/prick_chance = 50 + var/prick_chems = list( + /datum/reagent/toxin = 10, + /datum/reagent/toxin/mindbreaker = 10, + /datum/reagent/drug/space_drugs = 10, + /datum/reagent/drug/crank = 5, + /datum/reagent/drug/methamphetamine = 5, + /datum/reagent/drug/bath_salts = 5, + /datum/reagent/drug/aranesp = 5, + /datum/reagent/drug/pumpup = 10, + /datum/reagent/medicine/omnizine = 10, + /datum/reagent/medicine/earthsblood = 15, + /datum/reagent/medicine/omnizine/protozine = 15 + ) + +/obj/item/melee/sword/greyking/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if (iscarbon(target) && prob(prick_chance)) + var/mob/living/carbon/C = target + var/datum/reagent/R = pick(prick_chems) + C.reagents.add_reagent(R, prick_chems[R]) + C.visible_message("[user] is pricked!", \ + "You've been pricked by the [src]!") + log_combat(user, C, "pricked", src.name, "with [prick_chems[R]]u of [R]") + return ..() diff --git a/code/game/objects/items/melee/weaponry.dm b/code/game/objects/items/melee/weaponry.dm index 97665cfb47b6..725941595e34 100644 --- a/code/game/objects/items/melee/weaponry.dm +++ b/code/game/objects/items/melee/weaponry.dm @@ -1,64 +1,4 @@ -/obj/item/claymore - name = "claymore" - desc = "What are you standing around staring at this for? Get to killing!" - icon_state = "claymore" - item_state = "claymore" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - pickup_sound = 'sound/items/handling/knife2_pickup.ogg' - drop_sound = 'sound/items/handling/metal_drop.ogg' - hitsound = 'sound/weapons/bladeslice.ogg' - flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK - force = 40 - throwforce = 10 - w_class = WEIGHT_CLASS_NORMAL - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - block_chance = 40 - sharpness = IS_SHARP - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/item/claymore/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 40, 105) - -/obj/item/claymore/bone - name = "Bone Sword" - desc = "Jagged pieces of bone are tied to what looks like a goliaths femur." - icon_state = "bone_sword" - item_state = "bone_sword" - icon = 'icons/obj/items_and_weapons.dmi' - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - mob_overlay_icon = 'icons/mob/clothing/back.dmi' - force = 15 - throwforce = 10 - armour_penetration = 15 -/obj/item/katana - name = "katana" - desc = "Woefully underpowered in D20." - icon_state = "katana" - item_state = "katana" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - pickup_sound = 'sound/items/handling/knife2_pickup.ogg' - drop_sound = 'sound/items/handling/metal_drop.ogg' - flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK - force = 40 - throwforce = 10 - w_class = WEIGHT_CLASS_HUGE - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - block_chance = 10 - sharpness = IS_SHARP - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - supports_variations = VOX_VARIATION /obj/item/wirerod name = "wired rod" diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 0e7f29dbff2d..58989a84a69c 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -105,7 +105,7 @@ /obj/item/storage/box/hero/scottish/PopulateContents() new /obj/item/clothing/under/costume/kilt(src) - new /obj/item/claymore/weak/ceremonial(src) + new /obj/item/melee/sword/claymore(src) new /obj/item/toy/crayon/spraycan(src) new /obj/item/clothing/shoes/sandal(src) diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index e2507dfb911b..d21f9c479fc1 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -281,15 +281,3 @@ new /obj/item/clothing/head/helmet/plate/crusader/red(src) new /obj/item/clothing/gloves/plate/red(src) new /obj/item/clothing/shoes/plate/red(src) - - -/obj/item/claymore/weak - desc = "This one is rusted." - force = 30 - armour_penetration = 15 - -/obj/item/claymore/weak/ceremonial - desc = "A rusted claymore, once at the heart of a powerful scottish clan struck down and oppressed by tyrants, it has been passed down the ages as a symbol of defiance." - force = 15 - block_chance = 30 - armour_penetration = 5 diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index d6ef29b86233..afe31de507e5 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -362,7 +362,7 @@ /obj/item/storage/bag/plants, /obj/item/stack/marker_beacon, /obj/item/restraints/legcuffs/bola/watcher, - /obj/item/claymore/bone, + /obj/item/melee/sword/bone, /obj/item/key/lasso )) @@ -789,7 +789,7 @@ STR.use_sound = null //if youre wondering why this is null, its so you can look in your sheath to prepare to draw, without letting anyone know youre preparing to draw it STR.max_w_class = WEIGHT_CLASS_BULKY STR.set_holdable(list( - /obj/item/melee/sabre + /obj/item/melee/sword/sabre )) /obj/item/storage/belt/sabre/examine(mob/user) @@ -817,7 +817,7 @@ return ..() /obj/item/storage/belt/sabre/PopulateContents() - new /obj/item/melee/sabre(src) + new /obj/item/melee/sword/sabre(src) update_appearance() /obj/item/storage/belt/sabre/solgov @@ -836,11 +836,11 @@ STR.use_sound = null STR.max_w_class = WEIGHT_CLASS_BULKY STR.set_holdable(list( - /obj/item/melee/sabre/solgov + /obj/item/melee/sword/sabre/solgov )) /obj/item/storage/belt/sabre/solgov/PopulateContents() - new /obj/item/melee/sabre/solgov(src) + new /obj/item/melee/sword/sabre/solgov(src) update_appearance() /obj/item/storage/belt/sabre/suns @@ -865,11 +865,11 @@ STR.use_sound = null STR.max_w_class = WEIGHT_CLASS_BULKY STR.set_holdable(list( - /obj/item/melee/sabre/suns + /obj/item/melee/sword/sabre/suns )) /obj/item/storage/belt/sabre/suns/PopulateContents() - new /obj/item/melee/sabre/suns(src) + new /obj/item/melee/sword/sabre/suns(src) update_appearance() @@ -890,11 +890,11 @@ STR.use_sound = null STR.max_w_class = WEIGHT_CLASS_BULKY STR.set_holdable(list( - /obj/item/melee/sabre/suns/captain + /obj/item/melee/sword/sabre/suns/captain )) /obj/item/storage/belt/sabre/suns/captain/PopulateContents() - new /obj/item/melee/sabre/suns/captain(src) + new /obj/item/melee/sword/sabre/suns/captain(src) update_appearance() /obj/item/storage/belt/sabre/suns/cmo @@ -920,11 +920,11 @@ STR.use_sound = null STR.max_w_class = WEIGHT_CLASS_BULKY STR.set_holdable(list( - /obj/item/melee/sabre/suns/cmo + /obj/item/melee/sword/sabre/suns/cmo )) /obj/item/storage/belt/sabre/suns/cmo/PopulateContents() - new /obj/item/melee/sabre/suns/cmo(src) + new /obj/item/melee/sword/sabre/suns/cmo(src) update_appearance() /obj/item/storage/belt/security/webbing/inteq diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 45fee1d67660..4c7202231a8c 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -202,7 +202,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", EX.name = "Purified [EX.name]" SS.release_shades(user) qdel(SS) - new /obj/item/nullrod/claymore(get_turf(sword)) + new /obj/item/melee/sword/claymore(get_turf(sword)) user.visible_message("[user] purifies [sword]!") qdel(sword) else if(istype(A, /obj/item/soulstone) && !iscultist(user)) diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm index 07ecef04afac..cc8737e5630e 100644 --- a/code/game/objects/structures/icemoon/cave_entrance.dm +++ b/code/game/objects/structures/icemoon/cave_entrance.dm @@ -322,7 +322,7 @@ GLOBAL_LIST_INIT(ore_probability, list( new /mob/living/simple_animal/hostile/skeleton/templar(loc) new /mob/living/simple_animal/hostile/skeleton/templar(loc) if(prob(40)) - new /obj/item/claymore(loc) + new /obj/item/melee/sword/claymore(loc) new /mob/living/simple_animal/hostile/skeleton/templar(loc) if(prob(45)) new /obj/item/gun/ballistic/bow(loc) diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index a95ef0d1b579..5ea04d760b4c 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -267,7 +267,7 @@ H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) - H.put_in_hands(new /obj/item/claymore(H), TRUE) + H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE) H.equip_to_slot_or_del(new /obj/item/spear(H), ITEM_SLOT_BACK) diff --git a/code/modules/clothing/outfits/factions/syndicate.dm b/code/modules/clothing/outfits/factions/syndicate.dm index 44199ac361a3..11f822c4b96c 100644 --- a/code/modules/clothing/outfits/factions/syndicate.dm +++ b/code/modules/clothing/outfits/factions/syndicate.dm @@ -577,7 +577,7 @@ uniform = /obj/item/clothing/under/syndicate/suns/pkuniform suit = /obj/item/clothing/suit/armor/vest/bulletproof/suns/hos - belt = /obj/item/melee/sabre/suns/telescopic + belt = /obj/item/melee/sword/sabre/suns/telescopic gloves = /obj/item/clothing/gloves/tackler/dolphin/suns shoes = /obj/item/clothing/shoes/combat/suns head = /obj/item/clothing/head/welding/suns/hos @@ -883,7 +883,7 @@ uniform = /obj/item/clothing/under/syndicate/suns/pkuniform suit = /obj/item/clothing/suit/armor/vest/bulletproof/suns alt_suit = /obj/item/clothing/suit/toggle/suns/pkcoat - belt = /obj/item/melee/sabre/suns/telescopic + belt = /obj/item/melee/sword/sabre/suns/telescopic gloves = /obj/item/clothing/gloves/tackler/dolphin/suns shoes = /obj/item/clothing/shoes/jackboots/suns/long head = /obj/item/clothing/head/welding/suns diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 953899ca40ce..7b9ee2547567 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -300,7 +300,7 @@ desc = "A classic suit of plate armour, highly effective at stopping melee attacks." icon_state = "riot_knight_green" item_state = "riot_knight_green" - allowed = list(/obj/item/nullrod, /obj/item/claymore, /obj/item/banner, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/nullrod, /obj/item/melee/sword/claymore, /obj/item/banner, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/plasmaman) /obj/item/clothing/suit/armor/riot/knight/yellow icon_state = "riot_knight_yellow" diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm index 1bb3d250a9ae..edcf7c1d1b86 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm @@ -265,7 +265,7 @@ /datum/reagent/consumable/milk = 1, /datum/reagent/consumable/cherryjelly = 5, /obj/item/stock_parts/cell/super =1, - /obj/item/melee/sabre = 1 + /obj/item/melee/sword/sabre = 1 ) result = /obj/item/reagent_containers/food/snacks/powercrepe subcategory = CAT_MISCFOOD diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index f95385f4beaa..56705a71d659 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -306,7 +306,7 @@ var/possible = list(/obj/item/ship_in_a_bottle, /obj/item/gun/energy/pulse, /obj/item/book/granter/martial/carp, - /obj/item/melee/supermatter_sword, + /obj/item/melee/sword/supermatter, /obj/item/shield/changeling, /obj/item/lava_staff, /obj/item/energy_katana, diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index f601b137302f..67729938f6bc 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -827,7 +827,7 @@ H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) - H.put_in_hands(new /obj/item/claymore(H), TRUE) + H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE) H.equip_to_slot_or_del(new /obj/item/spear(H), ITEM_SLOT_BACK) //ice cube @@ -1277,91 +1277,6 @@ ..() new /obj/item/crusher_trophy/ash_spike(src) -/obj/item/melee/ghost_sword - name = "\improper spectral blade" - desc = "A rusted and dulled blade. It doesn't look like it'd do much damage. It glows weakly." - icon_state = "spectral" - item_state = "spectral" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 - sharpness = IS_SHARP - w_class = WEIGHT_CLASS_BULKY - force = 1 - throwforce = 1 - hitsound = 'sound/effects/ghost2.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "rended") - var/summon_cooldown = 0 - var/list/mob/dead/observer/spirits - -/obj/item/melee/ghost_sword/Initialize() - . = ..() - spirits = list() - START_PROCESSING(SSobj, src) - GLOB.poi_list |= src - AddComponent(/datum/component/butchering, 150, 90) - -/obj/item/melee/ghost_sword/Destroy() - for(var/mob/dead/observer/G in spirits) - G.invisibility = GLOB.observer_default_invisibility - spirits.Cut() - STOP_PROCESSING(SSobj, src) - GLOB.poi_list -= src - . = ..() - -/obj/item/melee/ghost_sword/attack_self(mob/user) - if(summon_cooldown > world.time) - to_chat(user, "You just recently called out for aid. You don't want to annoy the spirits!") - return - to_chat(user, "You call out for aid, attempting to summon spirits to your side.") - - notify_ghosts("[user] is raising [user.p_their()] [src], calling for your help!", - enter_link="
(Click to help)", - source = user, action=NOTIFY_ORBIT, ignore_key = POLL_IGNORE_SPECTRAL_BLADE, header = "Spectral blade") - - summon_cooldown = world.time + 300 - -/obj/item/melee/ghost_sword/process() - ghost_check() - -/obj/item/melee/ghost_sword/proc/ghost_check() - var/ghost_counter = 0 - var/turf/T = get_turf(src) - var/list/contents = T.GetAllContents() - var/mob/dead/observer/current_spirits = list() - for(var/thing in contents) - var/atom/A = thing - A.transfer_observers_to(src) - - for(var/i in orbiters?.orbiters) - if(!isobserver(i)) - continue - var/mob/dead/observer/G = i - ghost_counter++ - G.invisibility = 0 - current_spirits |= G - - for(var/mob/dead/observer/G in spirits - current_spirits) - G.invisibility = GLOB.observer_default_invisibility - - spirits = current_spirits - - return ghost_counter - -/obj/item/melee/ghost_sword/attack(mob/living/target, mob/living/carbon/human/user) - force = 0 - var/ghost_counter = ghost_check() - - force = clamp((ghost_counter * 4), 0, 75) - user.visible_message("[user] strikes with the force of [ghost_counter] vengeful spirits!") - ..() - -/obj/item/melee/ghost_sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - var/ghost_counter = ghost_check() - final_block_chance += clamp((ghost_counter * 5), 0, 75) - owner.visible_message("[owner] is protected by a ring of [ghost_counter] ghosts!") - return ..() - //Blood /obj/item/dragons_blood diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm index 96fbc8b5c4ec..3b569ab9e848 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm @@ -23,8 +23,8 @@ ranged_cooldown_time = 20 vision_range = 10 damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 0.5, CLONE = 0.5, STAMINA = 0, OXY = 0.5) - loot = list(/obj/item/claymore/cursed, /obj/item/clothing/suit/space/hardsuit/cult/enchanted) - crusher_loot = list(/obj/item/claymore/cursed, /obj/item/clothing/suit/space/hardsuit/cult/enchanted, /obj/item/upgradescroll) + loot = list(/obj/item/melee/sword/claymore, /obj/item/clothing/suit/space/hardsuit/cult/enchanted) + crusher_loot = list(/obj/item/melee/sword/claymore, /obj/item/clothing/suit/space/hardsuit/cult/enchanted, /obj/item/upgradescroll) wander = FALSE del_on_death = TRUE blood_volume = BLOOD_VOLUME_NORMAL @@ -40,7 +40,7 @@ /datum/action/innate/megafauna_attack/rapid_fire) move_force = MOVE_FORCE_NORMAL var/turf/starting - var/obj/item/claymore/cursed/mob/weapon + var/obj/item/melee/sword/claymore/weapon var/charging = FALSE var/dash_cooldown = 6 SECONDS var/runic_blast_cooldown = 14 SECONDS @@ -50,23 +50,6 @@ var/dash_num = 3 var/newcolor = rgb(149, 10, 10) -/obj/item/claymore/cursed - name = "cursed longsword" - desc = "For those who overcame a great challenge. It glows with a dim red light." - icon_state = "cultblade" - item_state = "cultblade" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - w_class = WEIGHT_CLASS_BULKY - throwforce = 25 - block_chance = 65 - armour_penetration = 50 - sharpness = IS_SHARP - -/obj/item/claymore/cursed/mob - block_chance = 0 - force = 16 - /mob/living/simple_animal/hostile/megafauna/cult_templar/Initialize() . = ..() starting = get_turf(src) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 3137933fa124..a7534452f76b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -807,7 +807,7 @@ head = /obj/item/clothing/head/helmet/knight suit = /obj/item/clothing/suit/armor/riot/knight back = /obj/item/shield/riot/buckler - belt = /obj/item/nullrod/claymore + belt = /obj/item/melee/sword/claymore r_pocket = /obj/item/tank/internals/emergency_oxygen mask = /obj/item/clothing/mask/breath if("Operative") diff --git a/code/modules/mob/living/simple_animal/hostile/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/skeleton.dm index 477233566f35..4b82c013ffe5 100644 --- a/code/modules/mob/living/simple_animal/hostile/skeleton.dm +++ b/code/modules/mob/living/simple_animal/hostile/skeleton.dm @@ -74,7 +74,7 @@ loot = list(/obj/effect/decal/remains/human, /obj/item/clothing/suit/armor/riot/chaplain, /obj/item/clothing/head/helmet/chaplain, - /obj/item/claymore/weak{name = "holy sword"}) + /obj/item/melee/sword/claymore{name = "holy sword"}) /mob/living/simple_animal/hostile/skeleton/ice name = "ice skeleton" diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm index e8f1683d21a1..6d7b1fc70424 100644 --- a/code/modules/projectiles/guns/magic/staff.dm +++ b/code/modules/projectiles/guns/magic/staff.dm @@ -72,31 +72,6 @@ max_charges = 4 recharge_rate = 8 -/obj/item/gun/magic/staff/spellblade - name = "spellblade" - desc = "A deadly combination of laziness and boodlust, this blade allows the user to dismember their enemies without all the hard work of actually swinging the sword." - fire_sound = 'sound/magic/fireball.ogg' - ammo_type = /obj/item/ammo_casing/magic/spellblade - icon_state = "spellblade" - item_state = "spellblade" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - hitsound = 'sound/weapons/rapierhit.ogg' - force = 20 - armour_penetration = 75 - block_chance = 50 - sharpness = IS_SHARP - max_charges = 4 - -/obj/item/gun/magic/staff/spellblade/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 15, 125, 0, hitsound) - -/obj/item/gun/magic/staff/spellblade/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = 0 - return ..() - /obj/item/gun/magic/staff/locker name = "staff of the locker" desc = "An artefact that expells encapsulating bolts, for incapacitating thy enemy." diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 48c79382444e..b95e259eee31 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1986,7 +1986,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/role_restricted/greykingsword name = "Blade of The Grey Tide" desc = "A weapon of legend, forged by the greatest crackheads of our generation." - item = /obj/item/melee/greykingsword + item = /obj/item/melee/sword/greyking cost = 2 restricted_roles = list("Assistant", "Chemist") diff --git a/tools/UpdatePaths/Scripts/2776_cultbegone.txt b/tools/UpdatePaths/Scripts/2776_cultbegone.txt index f2297a7003e7..eda49b0a539b 100644 --- a/tools/UpdatePaths/Scripts/2776_cultbegone.txt +++ b/tools/UpdatePaths/Scripts/2776_cultbegone.txt @@ -32,7 +32,7 @@ /obj/item/toy/plush/narplush : /obj/item/toy/plush/lizardplushie /obj/item/bedsheet/cult : /obj/item/bedsheet/dorms -/obj/item/melee/cultblade : /obj/item/claymore/weak +/obj/item/melee/cultblade : /obj/item/melee/sword/claymore/weak /obj/item/melee/cultblade/dagger : /obj/item/kitchen/knife/combat /obj/item/melee/cultblade/ghost : /obj/item/kitchen/knife/combat /obj/item/toy/toy_dagger : /obj/item/kitchen/knife From 4ff3443d72c40655a82343e76f0c1a9c59a43dd3 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sun, 14 Apr 2024 02:02:11 -0500 Subject: [PATCH 014/102] renove null rod --- .../icemoon_underground_drakelair.dmm | 2 +- .../lavaland_surface_SPOOKYCRASH.dmm | 2 +- _maps/map_files/generic/CentCom.dmm | 2 +- code/controllers/subsystem/traumas.dm | 6 ++--- .../components/storage/concrete/pockets.dm | 2 +- code/game/machinery/cryopod.dm | 1 - code/game/objects/items/melee/holy_weapons.dm | 24 +++++++++---------- code/game/objects/items/melee/sword.dm | 2 +- code/game/objects/items/storage/book.dm | 14 ----------- .../game/objects/items/storage/uplink_kits.dm | 3 +-- .../crates_lockers/closets/job_closets.dm | 1 - .../structures/icemoon/cave_entrance.dm | 3 +-- code/modules/antagonists/cult/runes.dm | 7 ------ code/modules/antagonists/revenant/revenant.dm | 11 --------- .../antagonists/wizard/equipment/artefact.dm | 8 ------- .../antagonists/wizard/equipment/spellbook.dm | 5 ---- code/modules/cargo/exports/lavaland.dm | 5 +--- code/modules/clothing/suits/armor.dm | 2 +- code/modules/clothing/suits/bio.dm | 2 +- code/modules/clothing/suits/chaplainsuits.dm | 4 ++-- code/modules/clothing/suits/jobs.dm | 2 +- code/modules/clothing/suits/miscellaneous.dm | 2 +- code/modules/holiday/halloween.dm | 11 --------- code/modules/jobs/job_types/chaplain.dm | 15 ------------ code/modules/mining/abandoned_crates.dm | 2 +- code/modules/mining/equipment/survival_pod.dm | 1 - .../mining/lavaland/necropolis_chests.dm | 8 +++---- .../carbon/human/species_types/vampire.dm | 5 ---- .../hostile/megafauna/codename_claw.dm | 2 +- .../hostile/megafauna/cult_templar.dm | 2 +- .../living/simple_animal/hostile/skeleton.dm | 4 +--- .../spells/spell_types/rightandwrong.dm | 4 +--- code/modules/vending/wardrobes.dm | 3 +-- shiptest.dme | 2 +- 34 files changed, 40 insertions(+), 129 deletions(-) diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm index 71433c34570d..e5feddc257b7 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm @@ -168,7 +168,7 @@ /turf/open/floor/mineral/gold, /area/ruin/powered) "kA" = ( -/obj/item/nullrod/scythe/talking/necro, +/obj/item/scythe, /turf/open/floor/mineral/gold, /area/ruin/powered) "kC" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm index 3c06ce3eb95b..c0438df5bbca 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm @@ -222,7 +222,7 @@ /obj/item/instrument/trombone, /obj/item/reagent_containers/food/snacks/grown/ghost_chili, /obj/item/clothing/head/hardhat/pumpkinhead, -/obj/item/nullrod/scythe/talking, +/obj/item/scythe, /obj/item/clothing/head/helmet/skull, /turf/open/floor/mineral/plastitanium/red, /area/overmap_encounter/planetoid/cave/explored) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index b9a10d57b14c..94fa3c52bed1 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -5522,7 +5522,7 @@ /area/wizard_station) "aVF" = ( /obj/structure/rack, -/obj/item/nullrod/scythe/vibro{ +/obj/item/scythe{ damtype = "stamina"; force = 30 }, diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 6d004524f30a..70007c3225ac 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -133,7 +133,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/clothing/suit/wizrobe, /obj/item/clothing/head/wizard, /obj/item/spellbook, /obj/item/staff, /obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/clothing/suit/space/hardsuit/wizard, /obj/item/gun/magic/staff, /obj/item/gun/magic/wand, - /obj/item/nullrod, /obj/item/clothing/under/rank/civilian/chaplain)), + /obj/item/clothing/under/rank/civilian/chaplain)), "aliens" = typecacheof(list( /obj/item/clothing/mask/facehugger_item, /obj/item/organ/body_egg/alien_embryo, @@ -153,12 +153,12 @@ SUBSYSTEM_DEF(traumas) /obj/item/clothing/head/helmet/space/freedom, /obj/item/clothing/suit/space/freedom)), "anime" = typecacheof(list( - /obj/item/clothing/under/costume/schoolgirl, /obj/item/katana, /obj/item/reagent_containers/food/snacks/sashimi, + /obj/item/clothing/under/costume/schoolgirl, /obj/item/reagent_containers/food/snacks/sashimi, /obj/item/reagent_containers/food/snacks/chawanmushi, /obj/item/reagent_containers/food/drinks/bottle/sake, /obj/item/throwing_star, /obj/item/clothing/suit/space/space_ninja, /obj/item/clothing/mask/gas/space_ninja, /obj/item/clothing/shoes/space_ninja, /obj/item/clothing/gloves/space_ninja, - /obj/item/vibro_weapon, /obj/item/nullrod/scythe/vibro, /obj/item/energy_katana, /obj/item/toy/katana, + /obj/item/vibro_weapon, /obj/item/energy_katana, /obj/item/toy/katana, /obj/item/melee/sword/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe)) ) diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index a9f38eb3f165..71333a83e752 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -35,7 +35,7 @@ /datum/component/storage/concrete/pockets/small/fedora/Initialize() . = ..() var/static/list/exception_cache = typecacheof(list( - /obj/item/katana, /obj/item/toy/katana, /obj/item/melee/sword/katana, + /obj/item/toy/katana, /obj/item/melee/sword/katana, /obj/item/energy_katana, /obj/item/gun/ballistic/automatic/smg/firestorm/pan )) exception_hold = exception_cache diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 6b63a3ae83b8..9bad37507a35 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -151,7 +151,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod/retro, 17) /obj/item/reagent_containers/hypospray/CMO, /obj/item/clothing/accessory/medal/gold/captain, /obj/item/clothing/gloves/krav_maga, - /obj/item/nullrod, /obj/item/tank/jetpack, /obj/item/documents, /obj/item/nuke_core_container diff --git a/code/game/objects/items/melee/holy_weapons.dm b/code/game/objects/items/melee/holy_weapons.dm index 428d872143c0..168c92e5f48d 100644 --- a/code/game/objects/items/melee/holy_weapons.dm +++ b/code/game/objects/items/melee/holy_weapons.dm @@ -300,7 +300,7 @@ item_state = "godstaff-blue" shield_icon = "shield-old" -/obj/item/nullrod/scythe +/obj/item/scythe icon_state = "scythe1" item_state = "scythe1" lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' @@ -313,11 +313,11 @@ sharpness = IS_SHARP attack_verb = list("chopped", "sliced", "cut", "reaped") -/obj/item/nullrod/scythe/Initialize() +/obj/item/scythe/Initialize() . = ..() AddComponent(/datum/component/butchering, 70, 110) //the harvest gives a high bonus chance -/obj/item/nullrod/scythe/vibro +/obj/item/scythe/vibro icon_state = "hfrequency0" item_state = "hfrequency1" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' @@ -327,7 +327,7 @@ attack_verb = list("chopped", "sliced", "cut", "zandatsu'd") hitsound = 'sound/weapons/rapierhit.ogg' -/obj/item/nullrod/scythe/spellblade +/obj/item/scythe/spellblade icon_state = "spellblade" item_state = "spellblade" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' @@ -337,7 +337,7 @@ desc = "The blade grants the wielder nearly limitless power...if they can figure out how to turn it on, that is." hitsound = 'sound/weapons/rapierhit.ogg' -/obj/item/nullrod/scythe/talking +/obj/item/scythe/talking icon_state = "talking_sword" item_state = "talking_sword" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' @@ -348,10 +348,10 @@ hitsound = 'sound/weapons/rapierhit.ogg' var/possessed = FALSE -/obj/item/nullrod/scythe/talking/relaymove(mob/living/user, direction) +/obj/item/scythe/talking/relaymove(mob/living/user, direction) return //stops buckled message spam for the ghost. -/obj/item/nullrod/scythe/talking/attack_self(mob/living/user) +/obj/item/scythe/talking/attack_self(mob/living/user) if(possessed) return @@ -379,13 +379,13 @@ to_chat(user, "The blade is dormant. Maybe you can try again later.") possessed = FALSE -/obj/item/nullrod/scythe/talking/Destroy() +/obj/item/scythe/talking/Destroy() for(var/mob/living/simple_animal/shade/S in contents) to_chat(S, "You were destroyed!") qdel(S) return ..() -/obj/item/nullrod/scythe/talking/chainsword +/obj/item/scythe/talking/chainsword icon_state = "chainswordon" item_state = "chainswordon" name = "possessed chainsaw sword" @@ -398,7 +398,7 @@ tool_behaviour = TOOL_SAW toolspeed = 0.5 //faster than normal saw -/obj/item/nullrod/scythe/talking/necro +/obj/item/scythe/talking/necro desc = "An ancient weapon flush with the souls of the fallen. The blood of the necropolis has suffused it over time immemorial, granting a toothy bite." force = 35 block_chance = 35 @@ -410,11 +410,11 @@ var/bleed_stacks_per_hit = 2 //this effect has rapid scaling and is an instant down pretty much, I'll crib it since it can trigger on non-fauna resistance_flags = FIRE_PROOF | ACID_PROOF -/obj/item/nullrod/scythe/talking/necro/examine(mob/user) +/obj/item/scythe/talking/necro/examine(mob/user) . = ..() . += "This weapon applies a growing blood curse on attack. Though it slowly fades, fully manifesting it causes your target's blood to violently explode, creating a lethal burst of damage." -/obj/item/nullrod/scythe/talking/necro/attack(mob/living/target) +/obj/item/scythe/talking/necro/attack(mob/living/target) ..() var/datum/status_effect/stacking/saw_bleed/B = target.has_status_effect(STATUS_EFFECT_SAWBLEED) if(!B) diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 9fd3b816faac..0aad281ddde8 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -37,7 +37,7 @@ throwforce = 10 armour_penetration = 15 -/obj/item/sword/katana +/obj/item/melee/sword/katana name = "katana" desc = "Woefully underpowered in D20." icon_state = "katana" diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 4c7202231a8c..e4da84563655 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -225,20 +225,6 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", EX.icon_state = "ghost1" EX.name = "Purified [initial(EX.name)]" user.visible_message("[user] purifies [SS]!") - else if(istype(A, /obj/item/nullrod/scythe/talking)) - var/obj/item/nullrod/scythe/talking/sword = A - to_chat(user, "You begin to exorcise [sword]...") - playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,TRUE) - if(do_after(user, 40, target = sword)) - playsound(src,'sound/effects/pray_chaplain.ogg',60,TRUE) - for(var/mob/living/simple_animal/shade/S in sword.contents) - to_chat(S, "You were destroyed by the exorcism!") - qdel(S) - sword.possessed = FALSE //allows the chaplain (or someone else) to reroll a new spirit for their sword - sword.name = initial(sword.name) - REMOVE_TRAIT(sword, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) //in case the "sword" is a possessed dummy - user.visible_message("[user] exorcises [sword]!", \ - "You successfully exorcise [sword]!") /obj/item/storage/book/bible/koran name = "Koran" diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 116ae0062809..0161e6ebaff4 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -129,7 +129,7 @@ new /obj/item/reagent_containers/glass/rag(src) if("ninja") - new /obj/item/katana(src) // Unique , hard to tell how much tc this is worth. 8 tc? + new /obj/item/melee/sword/katana(src) new /obj/item/implanter/adrenalin(src) // 8 tc for(var/i in 1 to 6) new /obj/item/throwing_star(src) // ~5 tc for all 6 @@ -140,7 +140,6 @@ if("darklord") new /obj/item/dualsaber(src) new /obj/item/dnainjector/telemut/darkbundle(src) - new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) new /obj/item/card/id/syndicate(src) new /obj/item/clothing/shoes/chameleon/noslip(src) //because slipping while being a dark lord sucks new /obj/item/book/granter/spell/summonitem(src) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 0e65a5aeb760..39f65ca53a5b 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -98,7 +98,6 @@ icon_door = "black" /obj/structure/closet/wardrobe/chaplain_black/PopulateContents() - new /obj/item/choice_beacon/holy(src) new /obj/item/clothing/accessory/pocketprotector/cosmetology(src) new /obj/item/clothing/under/rank/civilian/chaplain(src) new /obj/item/clothing/shoes/sneakers/black(src) diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm index cc8737e5630e..16c9e98681b8 100644 --- a/code/game/objects/structures/icemoon/cave_entrance.dm +++ b/code/game/objects/structures/icemoon/cave_entrance.dm @@ -283,7 +283,6 @@ GLOBAL_LIST_INIT(ore_probability, list( new /mob/living/simple_animal/hostile/netherworld/blankbody(loc) new /mob/living/simple_animal/hostile/netherworld/migo(loc) if(prob(45)) - new /obj/item/nullrod/staff(loc) new /mob/living/simple_animal/hostile/netherworld/migo(loc) if(prob(30)) new /obj/item/clothing/suit/space/hardsuit/quixote/dimensional(loc) @@ -852,7 +851,7 @@ GLOBAL_LIST_INIT(ore_probability, list( new /obj/item/gem/bloodstone(loc) new /mob/living/simple_animal/hostile/construct/proteon/hostile(loc) if(prob(35)) - new /obj/item/nullrod/scythe/talking/necro(loc) + new /obj/item/scythe(loc) new /mob/living/simple_animal/hostile/construct/proteon/hostile(loc) if(prob(35)) new /obj/item/clothing/suit/space/hardsuit/cult/(loc) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 7355880e6da1..5058dc73f081 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -61,10 +61,6 @@ Runes can either be invoked by one's self or with many different cultists. Each if(do_after(user, 15, target = src)) to_chat(user, "You carefully erase the [lowertext(cultist_name)] rune.") qdel(src) - else if(istype(I, /obj/item/nullrod)) - user.say("BEGONE FOUL MAGIKS!!", forced = "nullrod") - to_chat(user, "You disrupt the magic of [src] with [I].") - qdel(src) /obj/effect/rune/attack_hand(mob/living/user) . = ..() @@ -502,9 +498,6 @@ structure_check() searches for nearby cultist structures required for the invoca if(do_after(user, 50, target = src)) //Prevents accidental erasures. log_game("Summon Narsie rune erased by [key_name(user)] with [I.name]") message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with [I.name]") - else if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. - log_game("Summon Narsie rune erased by [key_name(user)] using a null rod") - message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with a null rod") else ..() diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index 76da8304df09..084176f4b8c4 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -190,17 +190,6 @@ return BULLET_ACT_FORCE_PIERCE return ..() -//damage, gibbing, and dying -/mob/living/simple_animal/revenant/attackby(obj/item/W, mob/living/user, params) - . = ..() - if(istype(W, /obj/item/nullrod)) - visible_message("[src] violently flinches!", \ - "As \the [W] passes through you, you feel your essence draining away!") - adjustBruteLoss(25) //hella effective - inhibited = TRUE - update_action_buttons_icon() - addtimer(CALLBACK(src, PROC_REF(reset_inhibit)), 30) - /mob/living/simple_animal/revenant/proc/reset_inhibit() inhibited = FALSE update_action_buttons_icon() diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 5ea04d760b4c..02f59e588fff 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -58,14 +58,6 @@ if(spawn_amt_left <= 0) qdel(src) -/obj/effect/rend/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/nullrod)) - user.visible_message("[user] seals \the [src] with \the [I].") - qdel(src) - return - else - return ..() - /obj/effect/rend/singularity_pull() return diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index 58e397a64d40..d3f85cc75d5d 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -307,11 +307,6 @@ desc = "A caprious tool that can fire all sorts of magic without any rhyme or reason. Using it on people you care about is not recommended." item_path = /obj/item/gun/magic/staff/chaos -/datum/spellbook_entry/item/spellblade - name = "Spellblade" - desc = "A sword capable of firing blasts of energy which rip targets limb from limb." - item_path = /obj/item/gun/magic/staff/spellblade - /datum/spellbook_entry/item/staffdoor name = "Staff of Door Creation" desc = "A particular staff that can mold solid walls into ornate doors. Useful for getting around in the absence of other transportation. Does not work on glass." diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm index 83f2425a86a7..e8d574b3d395 100644 --- a/code/modules/cargo/exports/lavaland.dm +++ b/code/modules/cargo/exports/lavaland.dm @@ -11,7 +11,6 @@ /obj/item/wisp_lantern, /obj/item/reagent_containers/glass/bottle/potion/flight, /obj/item/clothing/glasses/godeye, - /obj/item/melee/ghost_sword, /obj/item/clothing/suit/space/hardsuit/cult, /obj/item/voodoo, /obj/item/grenade/clusterbuster/inferno, @@ -26,7 +25,6 @@ /obj/item/kitchen/knife/envy, /obj/item/gun/ballistic/revolver/russian/soul, /obj/item/veilrender/vealrender, - /obj/item/nullrod/scythe/talking/necro, /obj/item/clothing/suit/armor/ascetic) /datum/export/lavaland/major //valuable chest/ruin loot and staff of storms @@ -54,8 +52,7 @@ /obj/machinery/anomalous_crystal, /obj/item/mayhem, /obj/item/blood_contract, - /obj/item/guardiancreator/miner/choose,//this is basically the most valulable mining loot so good luck getting a miner to part ways - /obj/item/gun/magic/staff/spellblade, + /obj/item/guardiancreator/miner/choose ) /datum/export/lavaland/trophycommon diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 7b9ee2547567..62bb2769f6b6 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -300,7 +300,7 @@ desc = "A classic suit of plate armour, highly effective at stopping melee attacks." icon_state = "riot_knight_green" item_state = "riot_knight_green" - allowed = list(/obj/item/nullrod, /obj/item/melee/sword/claymore, /obj/item/banner, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/melee/sword/claymore, /obj/item/banner, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/plasmaman) /obj/item/clothing/suit/armor/riot/knight/yellow icon_state = "riot_knight_yellow" diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 1131c4e9166c..9b067b0f9527 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -98,4 +98,4 @@ /obj/item/clothing/suit/bio_suit/plaguedoctorsuit/Initialize() . = ..() - allowed += list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/cane) + allowed += list(/obj/item/storage/book/bible, /obj/item/cane) diff --git a/code/modules/clothing/suits/chaplainsuits.dm b/code/modules/clothing/suits/chaplainsuits.dm index 58802e01b8a1..073966a5fc15 100644 --- a/code/modules/clothing/suits/chaplainsuits.dm +++ b/code/modules/clothing/suits/chaplainsuits.dm @@ -1,10 +1,10 @@ //Chaplain Suit Subtypes //If any new staple chaplain items get added, put them in these lists /obj/item/clothing/suit/chaplainsuit - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/storage/book/bible, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) /obj/item/clothing/suit/hooded/chaplainsuit - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/storage/book/bible, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) //Suits /obj/item/clothing/suit/chaplainsuit/holidaypriest diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 43c349d6e095..71f5f43da43a 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -274,7 +274,7 @@ hoodtype = /obj/item/clothing/head/hooded/enginseer body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDEGLOVES - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/gun, /obj/item/melee, /obj/item/nullrod, /obj/item/radio, /obj/item/storage/book) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/gun, /obj/item/melee, /obj/item/radio, /obj/item/storage/book) /obj/item/clothing/head/hooded/enginseer name = "enginseer's hood" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index ddd11a4e78e6..d1dbd05c4950 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -132,7 +132,7 @@ item_state = "imperium_monk" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDESHOES|HIDEJUMPSUIT - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/storage/book/bible, /obj/item/melee/sword, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen) /obj/item/clothing/suit/chickensuit diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm index e95bdb2063a8..d5b0c0ff6638 100644 --- a/code/modules/holiday/halloween.dm +++ b/code/modules/holiday/halloween.dm @@ -243,17 +243,6 @@ if(prob(5)) playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, TRUE) -/mob/living/simple_animal/hostile/clown_insane/attackby(obj/item/O, mob/user) - if(istype(O, /obj/item/nullrod)) - if(prob(5)) - visible_message("[src] finally found the peace it deserves. You hear honks echoing off into the distance.") - playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, TRUE) - qdel(src) - else - visible_message("[src] seems to be resisting the effect!") - return - return ..() - /mob/living/simple_animal/hostile/clown_insane/handle_temperature_damage() return diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index 870697476794..72f9aebfe8aa 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -15,21 +15,6 @@ var/obj/item/storage/book/bible/booze/B = new - if(GLOB.religion) - if(H.mind) - H.mind.holy_role = HOLY_ROLE_PRIEST - B.deity_name = GLOB.deity - B.name = GLOB.bible_name - B.icon_state = GLOB.bible_icon_state - B.item_state = GLOB.bible_item_state - to_chat(H, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.") - H.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK) - var/nrt = GLOB.holy_weapon_type || /obj/item/nullrod - var/obj/item/nullrod/N = new nrt(H) - H.put_in_hands(N) - if(GLOB.religious_sect) - GLOB.religious_sect.on_conversion(H) - return if(H.mind) H.mind.holy_role = HOLY_ROLE_HIGHPRIEST diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 9a898d30c3f4..1f4b14071fe6 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -211,7 +211,7 @@ for(var/i in 1 to 30) new /mob/living/simple_animal/hostile/cockroach(src) if(92) - new /obj/item/katana(src) + new /obj/item/melee/sword/katana(src) if(93) new /obj/item/dnainjector/xraymut(src) if(94) diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 56705a71d659..4be728891fba 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -314,7 +314,6 @@ /obj/item/gun/energy/minigun, /obj/item/gun/ballistic/automatic/hmg/l6_saw, /obj/item/gun/magic/staff/chaos, - /obj/item/gun/magic/staff/spellblade, /obj/item/gun/magic/wand/death, /obj/item/gun/magic/wand/fireball, /obj/item/stack/telecrystal/twenty, diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 67729938f6bc..78b527c58ca4 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -45,7 +45,7 @@ new /obj/item/borg/upgrade/modkit/lifesteal(src) new /obj/item/bedsheet/cult(src) if(14) - new /obj/item/nullrod/scythe/talking/necro(src) + new /obj/item/scythe(src) if(15) new /obj/item/book_of_babel(src) if(16) @@ -120,7 +120,7 @@ new /obj/item/borg/upgrade/modkit/lifesteal(src) new /obj/item/bedsheet/cult(src) if(14) - new /obj/item/nullrod/scythe/talking/necro(src) + new /obj/item/scythe(src) if(15) new /obj/item/book_of_babel(src) if(16) @@ -1261,7 +1261,7 @@ var/loot = rand(1,4) switch(loot) if(1) - new /obj/item/melee/ghost_sword(src) + new /obj/item/melee/sword/claymore(src) if(2) new /obj/item/lava_staff(src) if(3) @@ -1411,7 +1411,7 @@ if(2) new /obj/item/blood_contract(src) if(3) - new /obj/item/gun/magic/staff/spellblade(src) + new /obj/item/melee/sword/katana(src) /obj/structure/closet/crate/necropolis/bubblegum/crusher name = "bloody bubblegum chest" diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 070894a92bee..5caf871a7f23 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -53,11 +53,6 @@ C.adjust_fire_stacks(6) C.IgniteMob() -/datum/species/vampire/check_species_weakness(obj/item/weapon, mob/living/attacker) - if(istype(weapon, /obj/item/nullrod/whip)) - return 1 //Whips deal 2x damage to vampires. Vampire killer. - return 0 - /obj/item/organ/tongue/vampire name = "vampire tongue" actions_types = list(/datum/action/item_action/organ_action/vampire) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm index cca8a649353f..5278413e1394 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm @@ -77,7 +77,7 @@ qdel(src) /obj/effect/spawner/clawloot/crusher/spawn_loot() - new /obj/item/nullrod/armblade/tentacle(get_turf(src)) //idk what to put here, memed is the loot person + new /obj/item/gun/energy/pulse/pistol(get_turf(src)) //idk what to put here, memed is the loot person return ..() ///LOOT END diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm index 3b569ab9e848..ca121a082282 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm @@ -404,7 +404,7 @@ /obj/item/clothing/suit/space/hardsuit/cult/enchanted name = "\improper Cursed Nar'Sien hardened armor" desc = "A heavily-armored exosuit worn by warriors of the Nar'Sien cult. This one is cursed, screaming voices into the mind of the wearer." - allowed = list(/obj/item/gun, /obj/item/nullrod, /obj/item/tank/internals) + allowed = list(/obj/item/gun, /obj/item/tank/internals) armor = list("melee" = 75, "bullet" = 50, "laser" = 30, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 80, "fire" = 100, "acid" = 100) max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | LAVA_PROOF diff --git a/code/modules/mob/living/simple_animal/hostile/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/skeleton.dm index 4b82c013ffe5..2245ee823c29 100644 --- a/code/modules/mob/living/simple_animal/hostile/skeleton.dm +++ b/code/modules/mob/living/simple_animal/hostile/skeleton.dm @@ -72,9 +72,7 @@ melee_damage_upper = 30 deathmessage = "collapses into a pile of bones, its gear clanging as it hits the ground!" loot = list(/obj/effect/decal/remains/human, - /obj/item/clothing/suit/armor/riot/chaplain, - /obj/item/clothing/head/helmet/chaplain, - /obj/item/melee/sword/claymore{name = "holy sword"}) + /obj/item/melee/sword/claymore) /mob/living/simple_animal/hostile/skeleton/ice name = "ice skeleton" diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm index aae206d6fb0a..2eb5b3f96fa4 100644 --- a/code/modules/spells/spell_types/rightandwrong.dm +++ b/code/modules/spells/spell_types/rightandwrong.dm @@ -73,8 +73,7 @@ GLOBAL_LIST_INIT(summoned_magic, list( /obj/item/voodoo, /obj/item/warpwhistle, /obj/item/clothing/suit/space/hardsuit/shielded/wizard, - /obj/item/immortality_talisman, - /obj/item/melee/ghost_sword)) + /obj/item/immortality_talisman)) GLOBAL_LIST_INIT(summoned_special_magic, list( /obj/item/gun/magic/staff/change, @@ -92,7 +91,6 @@ GLOBAL_LIST_INIT(summoned_magic_objectives, list( /obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/gun/magic, /obj/item/immortality_talisman, - /obj/item/melee/ghost_sword, /obj/item/necromantic_stone, /obj/item/scrying, /obj/item/spellbook, diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 933c54f64602..d7fa9265b6b0 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -375,8 +375,7 @@ icon_state = "chapdrobe" product_ads = "Are you being bothered by cultists or pesky revenants? Then come and dress like the holy man!;Clothes for men of the cloth!" vend_reply = "Thank you for using the ChapDrobe!" - products = list(/obj/item/choice_beacon/holy = 1, - /obj/item/storage/backpack/cultpack = 1, + products = list(/obj/item/storage/backpack/cultpack = 1, /obj/item/clothing/head/beret/service = 1, //WS edit - berets /obj/item/clothing/accessory/pocketprotector/cosmetology = 1, /obj/item/clothing/under/rank/civilian/chaplain = 1, diff --git a/shiptest.dme b/shiptest.dme index 3dfad0c9d723..8e844f44c002 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1257,12 +1257,12 @@ #include "code\game\objects\items\melee\chainsaw.dm" #include "code\game\objects\items\melee\energy.dm" #include "code\game\objects\items\melee\energyhalberd.dm" -#include "code\game\objects\items\melee\holy_weapons.dm" #include "code\game\objects\items\melee\misc.dm" #include "code\game\objects\items\melee\dualsaber.dm" #include "code\game\objects\items\melee\powerfist.dm" #include "code\game\objects\items\melee\singularityhammer.dm" #include "code\game\objects\items\melee\stunbaton.dm" +#include "code\game\objects\items\melee\sword.dm" #include "code\game\objects\items\melee\teleprod.dm" #include "code\game\objects\items\melee\transforming.dm" #include "code\game\objects\items\melee\fireaxe.dm" From 11bfe91f9421e51a0f88ff7c2715962c64659a3a Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sun, 14 Apr 2024 02:05:45 -0500 Subject: [PATCH 015/102] yuh --- .../BeachRuins/beach_fishing_hut.dmm | 1 - .../BeachRuins/beach_float_resort.dmm | 1 - .../icemoon_underground_brazillianlab.dmm | 11 - _maps/RandomRuins/ReebeRuins/reebe_arena.dmm | 3 - .../ReebeRuins/reebe_decayed_sm.dmm | 1 - .../WasteRuins/wasteplanet_clowncrash.dmm | 1 - .../wasteplanet_fortress_of_solitide.dmm | 1 - .../WasteRuins/wasteplanet_pandora.dmm | 1 - .../independent/independent_lagoon.dmm | 1 - code/game/objects/items/melee/holy_weapons.dm | 630 ------------------ 10 files changed, 651 deletions(-) delete mode 100644 code/game/objects/items/melee/holy_weapons.dm diff --git a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm index 3b801c086ff3..0c9cea88ecc2 100644 --- a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm @@ -1271,7 +1271,6 @@ /turf/open/water/beach/deep, /area/overmap_encounter/planetoid/beachplanet/explored) "Vt" = ( -/obj/item/nullrod/carp, /obj/structure/bed/dogbed, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood/walnut, diff --git a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm index d393dadb3b64..b7a24dbebcfb 100644 --- a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm @@ -242,7 +242,6 @@ "gr" = ( /obj/structure/table/wood, /obj/structure/curtain/cloth, -/obj/item/nullrod/tribal_knife, /turf/open/floor/wood{ light_range = 2 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm index dcd6daaca1ed..720ed5d0b1e7 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm @@ -369,17 +369,6 @@ /area/ruin/unpowered) "sf" = ( /obj/structure/table/wood, -/obj/item/nullrod{ - block_chance = 50; - desc = "This massive chart appears to be the layout of a SolGov outpost. It's covered in marks, scribbles in a language you don't recognize, and several stains. It's unusually sturdy."; - icon_state = "blueprints"; - item_state = "blueprints"; - lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'; - name = "facility blueprints"; - pixel_y = 10; - righthand_file = 'icons/mob/inhands/items_righthand.dmi'; - w_class = 5 - }, /turf/open/floor/wood{ initial_gas_mix = "ICEMOON_ATMOS" }, diff --git a/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm b/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm index 448690c0e77a..fa06a7953bfd 100644 --- a/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm +++ b/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm @@ -46,7 +46,6 @@ /turf/open/floor/bronze, /area/ruin/reebe) "pW" = ( -/obj/item/nullrod/spear, /turf/open/floor/bronze, /area/ruin/reebe) "qj" = ( @@ -56,7 +55,6 @@ /area/ruin/reebe) "qC" = ( /obj/structure/chair/comfy/shuttle/bronze, -/obj/item/nullrod/spear, /turf/open/floor/bronze, /area/ruin/reebe) "vz" = ( @@ -91,7 +89,6 @@ /area/ruin/reebe) "Ag" = ( /obj/structure/table/bronze, -/obj/item/nullrod/spear, /turf/open/floor/bronze, /area/ruin/reebe) "AT" = ( diff --git a/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm b/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm index c768b54fe0ab..1520a36aa799 100644 --- a/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm +++ b/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm @@ -7,7 +7,6 @@ /turf/open/floor/bronze, /area/ruin/reebe) "d" = ( -/obj/item/nullrod/spear, /turf/open/floor/bronze, /area/ruin/reebe) "e" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_clowncrash.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_clowncrash.dmm index ae2434a3ca45..aca48a00c011 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_clowncrash.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_clowncrash.dmm @@ -84,7 +84,6 @@ "o" = ( /obj/structure/table/reinforced, /obj/item/bikehorn/airhorn, -/obj/item/nullrod/clown, /turf/open/floor/plating/asteroid/wasteplanet, /area/overmap_encounter/planetoid/cave/explored) "q" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm index 3c8546773491..9a6bf06eef2f 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm @@ -2554,7 +2554,6 @@ /turf/open/floor/plating/rust, /area/ruin/powered) "yb" = ( -/obj/item/nullrod/hypertool, /obj/effect/decal/cleanable/blood/old, /obj/effect/decal/cleanable/generic, /obj/effect/spawner/lootdrop/maintenance, diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index e7a5fc12dc71..33144dbafe8d 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -35,7 +35,6 @@ /area/ruin/wasteplanet) "bL" = ( /obj/structure/fluff/divine/convertaltar, -/obj/item/nullrod/tribal_knife, /obj/item/clothing/accessory/pandora_hope, /turf/open/indestructible/hierophant/two/waste, /area/ruin/wasteplanet) diff --git a/_maps/shuttles/independent/independent_lagoon.dmm b/_maps/shuttles/independent/independent_lagoon.dmm index 56c3cda4bc2d..290586293bc3 100644 --- a/_maps/shuttles/independent/independent_lagoon.dmm +++ b/_maps/shuttles/independent/independent_lagoon.dmm @@ -5680,7 +5680,6 @@ /area/ship/hallway/starboard) "Mz" = ( /obj/structure/table/wood, -/obj/item/nullrod, /turf/open/floor/wood, /area/ship/crew/chapel) "MD" = ( diff --git a/code/game/objects/items/melee/holy_weapons.dm b/code/game/objects/items/melee/holy_weapons.dm deleted file mode 100644 index 168c92e5f48d..000000000000 --- a/code/game/objects/items/melee/holy_weapons.dm +++ /dev/null @@ -1,630 +0,0 @@ -// CHAPLAIN CUSTOM ARMORS // - -/obj/item/clothing/head/helmet/chaplain - name = "crusader helmet" - desc = "Deus Vult." - icon_state = "knight_templar" - item_state = "knight_templar" - armor = list("melee" = 50, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) - flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR - flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - strip_delay = 80 - dog_fashion = null - -/obj/item/clothing/suit/armor/riot/chaplain - name = "crusader armour" - desc = "God wills it!" - icon_state = "chaplain_templar" - item_state = "knight_templar" - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - slowdown = 0 - clothing_flags = NONE - -/obj/item/choice_beacon/holy - name = "armaments beacon" - desc = "Contains a set of armaments for the chaplain." - -/obj/item/choice_beacon/holy/canUseBeacon(mob/living/user) - if(user.mind && user.mind.holy_role) - return ..() - else - playsound(src, 'sound/machines/buzz-sigh.ogg', 40, TRUE) - return FALSE - -/obj/item/choice_beacon/holy/generate_display_names() - var/static/list/holy_item_list - if(!holy_item_list) - holy_item_list = list() - var/list/templist = typesof(/obj/item/storage/box/holy) - for(var/V in templist) - var/atom/A = V - holy_item_list[initial(A.name)] = A - return holy_item_list - -/obj/item/choice_beacon/holy/spawn_option(obj/choice,mob/living/M) - if(!GLOB.holy_armor_type) - ..() - playsound(src, 'sound/effects/pray_chaplain.ogg', 40, TRUE) - SSblackbox.record_feedback("tally", "chaplain_armor", 1, "[choice]") - GLOB.holy_armor_type = choice - else - to_chat(M, "A selection has already been made. Self-Destructing...") - return - - -/obj/item/storage/box/holy - name = "Templar Kit" - -/obj/item/storage/box/holy/PopulateContents() - new /obj/item/clothing/head/helmet/chaplain(src) - new /obj/item/clothing/suit/armor/riot/chaplain(src) - -/obj/item/storage/box/holy/student - name = "Profane Scholar Kit" - -/obj/item/storage/box/holy/student/PopulateContents() - new /obj/item/clothing/suit/armor/riot/chaplain/studentuni(src) - new /obj/item/clothing/head/helmet/chaplain/cage(src) - -/obj/item/clothing/suit/armor/riot/chaplain/studentuni - name = "student robe" - desc = "The uniform of a bygone institute of learning." - icon_state = "chaplain_studentuni" - item_state = "studentuni" - body_parts_covered = ARMS|CHEST - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - -/obj/item/clothing/head/helmet/chaplain/cage - name = "cage" - desc = "A cage that restrains the will of the self, allowing one to see the profane world for what it is." - flags_inv = HIDEHAIR //bald - mob_overlay_icon = 'icons/mob/large-worn-icons/64x64/head.dmi' - icon_state = "cage" - item_state = "cage" - worn_x_dimension = 64 - worn_y_dimension = 64 - -/obj/item/storage/box/holy/sentinel - name = "Stone Sentinel Kit" - -/obj/item/storage/box/holy/sentinel/PopulateContents() - new /obj/item/clothing/suit/armor/riot/chaplain/ancient(src) - new /obj/item/clothing/head/helmet/chaplain/ancient(src) - -/obj/item/clothing/head/helmet/chaplain/ancient - name = "ancient helmet" - desc = "None may pass!" - icon_state = "knight_ancient" - item_state = "knight_ancient" - -/obj/item/clothing/suit/armor/riot/chaplain/ancient - name = "ancient armour" - desc = "Defend the treasure..." - icon_state = "chaplain_ancient" - item_state = "knight_ancient" - -/obj/item/storage/box/holy/witchhunter - name = "Witchhunter Kit" - -/obj/item/storage/box/holy/witchhunter/PopulateContents() - new /obj/item/clothing/suit/armor/riot/chaplain/witchhunter(src) - new /obj/item/clothing/head/helmet/chaplain/witchunter_hat(src) - -/obj/item/clothing/suit/armor/riot/chaplain/witchhunter - name = "witchunter garb" - desc = "This worn outfit saw much use back in the day." - icon_state = "chaplain_witchhunter" - item_state = "witchhunter" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - -/obj/item/clothing/head/helmet/chaplain/witchunter_hat - name = "witchunter hat" - desc = "This hat saw much use back in the day." - icon_state = "witchhunterhat" - item_state = "witchhunterhat" - flags_cover = HEADCOVERSEYES - flags_inv = HIDEEYES|HIDEHAIR - -/obj/item/storage/box/holy/adept - name = "Divine Adept Kit" - -/obj/item/storage/box/holy/adept/PopulateContents() - new /obj/item/clothing/suit/armor/riot/chaplain/adept(src) - new /obj/item/clothing/head/helmet/chaplain/adept(src) - -/obj/item/clothing/head/helmet/chaplain/adept - name = "adept hood" - desc = "Its only heretical when others do it." - icon_state = "crusader" - item_state = "crusader" - flags_cover = HEADCOVERSEYES - flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS - -/obj/item/clothing/suit/armor/riot/chaplain/adept - name = "adept robes" - desc = "The ideal outfit for burning the unfaithful." - icon_state = "chaplain_crusader" - item_state = "crusader" - -/obj/item/storage/box/holy/follower - name = "Followers of the Chaplain Kit" - -/obj/item/storage/box/holy/follower/PopulateContents() - new /obj/item/clothing/suit/hooded/chaplain_hoodie/leader(src) - new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) - new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) - new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) - new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) - -/obj/item/clothing/suit/hooded/chaplain_hoodie - name = "follower hoodie" - desc = "Hoodie made for acolytes of the chaplain." - icon_state = "chaplain_hoodie" - item_state = "chaplain_hoodie" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - hoodtype = /obj/item/clothing/head/hooded/chaplain_hood - -/obj/item/clothing/head/hooded/chaplain_hood - name = "follower hood" - desc = "Hood made for acolytes of the chaplain." - icon_state = "chaplain_hood" - body_parts_covered = HEAD - flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS - -/obj/item/clothing/suit/hooded/chaplain_hoodie/leader - name = "leader hoodie" - desc = "Now you're ready for some 50 dollar bling water." - icon_state = "chaplain_hoodie_leader" - item_state = "chaplain_hoodie_leader" - hoodtype = /obj/item/clothing/head/hooded/chaplain_hood/leader - -/obj/item/clothing/head/hooded/chaplain_hood/leader - name = "leader hood" - desc = "I mean, you don't /have/ to seek bling water. I just think you should." - icon_state = "chaplain_hood_leader" - - -// CHAPLAIN NULLROD AND CUSTOM WEAPONS // - -/obj/item/nullrod - name = "null rod" - desc = "A rod of pure obsidian; its very presence disrupts and dampens the powers of Nar'Sie's followers." - icon_state = "nullrod" - item_state = "nullrod" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 18 - throw_speed = 3 - throw_range = 4 - throwforce = 10 - w_class = WEIGHT_CLASS_TINY - obj_flags = UNIQUE_RENAME - var/reskinned = FALSE - var/chaplain_spawnable = TRUE - -/obj/item/nullrod/Initialize() - . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) - -/obj/item/nullrod/attack_self(mob/user) - if(user.mind && (user.mind.holy_role) && !reskinned) - reskin_holy_weapon(user) - -/** - * reskin_holy_weapon: Shows a user a list of all available nullrod reskins and based on his choice replaces the nullrod with the reskinned version - * - * Arguments: - * * M The mob choosing a nullrod reskin - */ -/obj/item/nullrod/proc/reskin_holy_weapon(mob/M) - if(GLOB.holy_weapon_type) - return - var/list/display_names = list() - var/list/nullrod_icons = list() - for(var/V in typesof(/obj/item/nullrod)) - var/obj/item/nullrod/rodtype = V - if(initial(rodtype.chaplain_spawnable)) - display_names[initial(rodtype.name)] = rodtype - nullrod_icons += list(initial(rodtype.name) = image(icon = initial(rodtype.icon), icon_state = initial(rodtype.icon_state))) - - nullrod_icons = sortList(nullrod_icons) - var/choice = show_radial_menu(M, src , nullrod_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), M), radius = 42, require_near = TRUE) - if(!choice || !check_menu(M)) - return - - var/A = display_names[choice] // This needs to be on a separate var as list member access is not allowed for new - var/obj/item/nullrod/holy_weapon = new A - GLOB.holy_weapon_type = holy_weapon.type - - SSblackbox.record_feedback("tally", "chaplain_weapon", 1, "[choice]") - - if(holy_weapon) - holy_weapon.reskinned = TRUE - qdel(src) - M.put_in_active_hand(holy_weapon) - -/** - * check_menu: Checks if we are allowed to interact with a radial menu - * - * Arguments: - * * user The mob interacting with a menu - */ -/obj/item/nullrod/proc/check_menu(mob/user) - if(!istype(user)) - return FALSE - if(QDELETED(src) || reskinned) - return FALSE - if(user.incapacitated() || !user.is_holding(src)) - return FALSE - return TRUE - -/obj/item/nullrod/godhand - icon_state = "disintegrate" - item_state = "disintegrate" - lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' - name = "god hand" - desc = "This hand of yours glows with an awesome power!" - item_flags = ABSTRACT | DROPDEL - w_class = WEIGHT_CLASS_HUGE - hitsound = 'sound/weapons/sear.ogg' - damtype = BURN - attack_verb = list("punched", "cross countered", "pummeled") - -/obj/item/nullrod/godhand/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) - -/obj/item/nullrod/staff - icon_state = "godstaff-red" - item_state = "godstaff-red" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - name = "red holy staff" - desc = "It has a mysterious, protective aura." - w_class = WEIGHT_CLASS_HUGE - force = 5 - slot_flags = ITEM_SLOT_BACK - block_chance = 40 - var/shield_icon = "shield-red" - -/obj/item/nullrod/staff/worn_overlays(isinhands) - . = list() - if(isinhands) - . += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_LAYER + 0.01) - -/obj/item/nullrod/staff/blue - name = "blue holy staff" - icon_state = "godstaff-blue" - item_state = "godstaff-blue" - shield_icon = "shield-old" - -/obj/item/scythe - icon_state = "scythe1" - item_state = "scythe1" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "reaper scythe" - desc = "Ask not for whom the bell tolls..." - w_class = WEIGHT_CLASS_BULKY - armour_penetration = 35 - slot_flags = ITEM_SLOT_BACK - sharpness = IS_SHARP - attack_verb = list("chopped", "sliced", "cut", "reaped") - -/obj/item/scythe/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 70, 110) //the harvest gives a high bonus chance - -/obj/item/scythe/vibro - icon_state = "hfrequency0" - item_state = "hfrequency1" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - name = "high frequency blade" - desc = "Bad references are the DNA of the soul." - attack_verb = list("chopped", "sliced", "cut", "zandatsu'd") - hitsound = 'sound/weapons/rapierhit.ogg' - -/obj/item/scythe/spellblade - icon_state = "spellblade" - item_state = "spellblade" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - icon = 'icons/obj/guns/magic.dmi' - name = "dormant spellblade" - desc = "The blade grants the wielder nearly limitless power...if they can figure out how to turn it on, that is." - hitsound = 'sound/weapons/rapierhit.ogg' - -/obj/item/scythe/talking - icon_state = "talking_sword" - item_state = "talking_sword" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - name = "possessed blade" - desc = "When the world falls into chaos, it's nice to have a friend by your side." - attack_verb = list("chopped", "sliced", "cut") - hitsound = 'sound/weapons/rapierhit.ogg' - var/possessed = FALSE - -/obj/item/scythe/talking/relaymove(mob/living/user, direction) - return //stops buckled message spam for the ghost. - -/obj/item/scythe/talking/attack_self(mob/living/user) - if(possessed) - return - - to_chat(user, "You attempt to wake the spirit of the blade...") - - possessed = TRUE - - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_POSSESSED_BLADE) - - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - var/mob/living/simple_animal/shade/S = new(src) - S.ckey = C.ckey - S.fully_replace_character_name(null, "The spirit of [name]") - S.status_flags |= GODMODE - S.copy_languages(user, LANGUAGE_MASTER) //Make sure the sword can understand and communicate with the user. - S.update_atom_languages() - grant_all_languages(FALSE, FALSE, TRUE) //Grants omnitongue - var/input = sanitize_name(stripped_input(S,"What are you named?", ,"", MAX_NAME_LEN)) - - if(src && input) - name = input - S.fully_replace_character_name(null, "The spirit of [input]") - else - to_chat(user, "The blade is dormant. Maybe you can try again later.") - possessed = FALSE - -/obj/item/scythe/talking/Destroy() - for(var/mob/living/simple_animal/shade/S in contents) - to_chat(S, "You were destroyed!") - qdel(S) - return ..() - -/obj/item/scythe/talking/chainsword - icon_state = "chainswordon" - item_state = "chainswordon" - name = "possessed chainsaw sword" - desc = "Suffer not a heretic to live." - chaplain_spawnable = FALSE - force = 30 - slot_flags = ITEM_SLOT_BELT - attack_verb = list("sawed", "torn", "cut", "chopped", "diced") - hitsound = 'sound/weapons/chainsawhit.ogg' - tool_behaviour = TOOL_SAW - toolspeed = 0.5 //faster than normal saw - -/obj/item/scythe/talking/necro - desc = "An ancient weapon flush with the souls of the fallen. The blood of the necropolis has suffused it over time immemorial, granting a toothy bite." - force = 35 - block_chance = 35 - hitsound = 'sound/weapons/pierce_slow.ogg' - armour_penetration = 20// lower ap than the original possessed sword, go figure. The justification is that this has a serrated blade - chaplain_spawnable = FALSE - attack_verb = list("gnawed", "munched on", "chewed", "rended", "chomped") - name = "possessed greatsword" - var/bleed_stacks_per_hit = 2 //this effect has rapid scaling and is an instant down pretty much, I'll crib it since it can trigger on non-fauna - resistance_flags = FIRE_PROOF | ACID_PROOF - -/obj/item/scythe/talking/necro/examine(mob/user) - . = ..() - . += "This weapon applies a growing blood curse on attack. Though it slowly fades, fully manifesting it causes your target's blood to violently explode, creating a lethal burst of damage." - -/obj/item/scythe/talking/necro/attack(mob/living/target) - ..() - var/datum/status_effect/stacking/saw_bleed/B = target.has_status_effect(STATUS_EFFECT_SAWBLEED) - if(!B) - target.apply_status_effect(STATUS_EFFECT_SAWBLEED,bleed_stacks_per_hit) - else - B.add_stacks(bleed_stacks_per_hit) - -/obj/item/nullrod/hammmer - icon_state = "hammeron" - item_state = "hammeron" - lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' - name = "relic war hammer" - desc = "This war hammer cost the chaplain forty thousand space dollars." - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_HUGE - attack_verb = list("smashed", "bashed", "hammered", "crunched") - -/obj/item/nullrod/chainsaw - name = "chainsaw hand" - desc = "Good? Bad? You're the guy with the chainsaw hand." - icon_state = "chainsaw_on" - item_state = "mounted_chainsaw" - lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' - w_class = WEIGHT_CLASS_HUGE - item_flags = ABSTRACT - sharpness = IS_SHARP - attack_verb = list("sawed", "torn", "cut", "chopped", "diced") - hitsound = 'sound/weapons/chainsawhit.ogg' - tool_behaviour = TOOL_SAW - toolspeed = 2 //slower than a real saw - -/obj/item/nullrod/chainsaw/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) - AddComponent(/datum/component/butchering, 30, 100, 0, hitsound) - -/obj/item/nullrod/clown - icon = 'icons/obj/wizard.dmi' - icon_state = "clownrender" - item_state = "render" - name = "clown dagger" - desc = "Used for absolutely hilarious sacrifices." - hitsound = 'sound/items/bikehorn.ogg' - sharpness = IS_SHARP - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - -/obj/item/nullrod/pride_hammer - icon_state = "pride" - name = "Pride-struck Hammer" - desc = "It resonates an aura of Pride." - force = 16 - throwforce = 15 - w_class = 4 - slot_flags = ITEM_SLOT_BACK - attack_verb = list("attacked", "smashed", "crushed", "splattered", "cracked") - hitsound = 'sound/weapons/blade1.ogg' - -/obj/item/nullrod/pride_hammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) - . = ..() - if(!proximity) - return - if(prob(30) && ishuman(A)) - var/mob/living/carbon/human/H = A - user.reagents.trans_to(H, user.reagents.total_volume, 1, 1, 0, transfered_by = user) - to_chat(user, "Your pride reflects on [H].") - to_chat(H, "You feel insecure, taking on [user]'s burden.") - -/obj/item/nullrod/whip - name = "holy whip" - desc = "What a terrible night to be on Space Station 13."//very classic, it stays - icon_state = "chain" - item_state = "chain" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - attack_verb = list("whipped", "lashed") - hitsound = 'sound/weapons/chainhit.ogg' - -/obj/item/nullrod/fedora - name = "atheist's fedora" - desc = "The brim of the hat is as sharp as your wit. The edge would hurt almost as much as disproving the existence of God." - icon_state = "fedora" - item_state = "fedora" - slot_flags = ITEM_SLOT_HEAD - icon = 'icons/obj/clothing/hats.dmi' - force = 0 - throw_speed = 4 - throw_range = 7 - throwforce = 30 - sharpness = IS_SHARP - attack_verb = list("enlightened", "redpilled") - -/obj/item/nullrod/armblade - name = "dark blessing" - desc = "Particularly twisted deities grant gifts of dubious value." - icon = 'icons/obj/changeling_items.dmi' - icon_state = "arm_blade" - item_state = "arm_blade" - lefthand_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi' - righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi' - item_flags = ABSTRACT - w_class = WEIGHT_CLASS_HUGE - sharpness = IS_SHARP - -/obj/item/nullrod/armblade/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) - AddComponent(/datum/component/butchering, 80, 70) - -/obj/item/nullrod/armblade/tentacle - name = "unholy blessing" - icon_state = "tentacle" - item_state = "tentacle" - -/obj/item/nullrod/carp - name = "carp-sie plushie" - desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp. Activate it to receive the blessing of Carp-Sie." - icon = 'icons/obj/plushes.dmi' - icon_state = "carpplush" - item_state = "carp_plushie" - lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' - righthand_file = 'icons/mob/inhands/items_righthand.dmi' - force = 15 - attack_verb = list("bitten", "eaten", "fin slapped") - hitsound = 'sound/weapons/bite.ogg' - var/used_blessing = FALSE - -/obj/item/nullrod/carp/attack_self(mob/living/user) - if(used_blessing) - else if(user.mind && (user.mind.holy_role)) - to_chat(user, "You are blessed by Carp-Sie. Wild space carp will no longer attack you.") - user.faction |= "carp" - used_blessing = TRUE - -/obj/item/nullrod/tribal_knife - icon_state = "crysknife" - item_state = "crysknife" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - name = "arrhythmic knife" - w_class = WEIGHT_CLASS_HUGE - desc = "They say fear is the true mind killer, but stabbing them in the head works too. Honour compels you to not sheathe it once drawn." - sharpness = IS_SHARP - slot_flags = null - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - item_flags = SLOWS_WHILE_IN_HAND - -/obj/item/nullrod/tribal_knife/Initialize(mapload) - . = ..() - START_PROCESSING(SSobj, src) - AddComponent(/datum/component/butchering, 50, 100) - -/obj/item/nullrod/tribal_knife/Destroy() - STOP_PROCESSING(SSobj, src) - . = ..() - -/obj/item/nullrod/tribal_knife/process() - slowdown = rand(-2, 2) - - -/obj/item/nullrod/pitchfork - icon_state = "pitchfork0" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "unholy pitchfork" - w_class = WEIGHT_CLASS_NORMAL - desc = "Holding this makes you look absolutely devilish." - attack_verb = list("poked", "impaled", "pierced", "jabbed") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - -/obj/item/nullrod/egyptian - name = "egyptian staff" - desc = "A tutorial in mummification is carved into the staff. You could probably craft the wraps if you had some cloth." - icon = 'icons/obj/guns/magic.dmi' - icon_state = "pharoah_sceptre" - item_state = "pharoah_sceptre" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - w_class = WEIGHT_CLASS_NORMAL - attack_verb = list("bashes", "smacks", "whacks") - -/obj/item/nullrod/hypertool - icon = 'icons/obj/device.dmi' - icon_state = "hypertool" - item_state = "hypertool" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - name = "hypertool" - desc = "A tool so powerful even you cannot perfectly use it." - armour_penetration = 35 - damtype = BRAIN - attack_verb = list("pulsed", "mended", "cut") - hitsound = 'sound/effects/sparks4.ogg' - -/obj/item/nullrod/spear - name = "ancient spear" - desc = "An ancient spear made of brass, I mean gold, I mean bronze." - icon_state = "ratvarian_spear" - item_state = "ratvarian_spear" - lefthand_file = 'icons/mob/inhands/antag/clockwork_lefthand.dmi' - righthand_file = 'icons/mob/inhands/antag/clockwork_righthand.dmi' - icon = 'icons/obj/clockwork_objects.dmi' - slot_flags = ITEM_SLOT_BELT - armour_penetration = 10 - sharpness = IS_SHARP_ACCURATE - w_class = WEIGHT_CLASS_BULKY - attack_verb = list("stabbed", "poked", "slashed", "clocked") - hitsound = 'sound/weapons/bladeslice.ogg' From ac1b4a2706ffedb9d6965c5d4becfd66059ddff6 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sun, 14 Apr 2024 02:09:22 -0500 Subject: [PATCH 016/102] bad type --- _maps/RandomRuins/JungleRuins/jungle_surface_ninjashrine.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_maps/RandomRuins/JungleRuins/jungle_surface_ninjashrine.dmm b/_maps/RandomRuins/JungleRuins/jungle_surface_ninjashrine.dmm index 03072f2d6aac..502b96f14732 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_surface_ninjashrine.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_surface_ninjashrine.dmm @@ -131,10 +131,10 @@ /area/overmap_encounter/planetoid/jungle/explored) "M" = ( /obj/structure/rack, -/obj/item/katana{ +/obj/item/melee/sword/katana{ pixel_x = -3 }, -/obj/item/katana{ +/obj/item/melee/sword/katana{ pixel_x = 8 }, /turf/open/floor/plating/dirt/jungle/dark/lit, From 7f316d68e2c8679ea5d62d1dd5a5bb8a2efa1d64 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sun, 14 Apr 2024 02:25:33 -0500 Subject: [PATCH 017/102] remaps chappy armor --- .../LavaRuins/lavaland_surface_SPOOKYCRASH.dmm | 2 +- .../LavaRuins/lavaland_surface_lava_canyon.dmm | 2 +- _maps/RandomRuins/SpaceRuins/spacemall.dmm | 3 +-- _maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm | 6 +++--- _maps/shuttles/roumain/srm_elder.dmm | 2 +- code/modules/clothing/head/jobs.dm | 9 +++++++++ code/modules/clothing/suits/jobs.dm | 7 +++++++ 7 files changed, 23 insertions(+), 8 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm index c0438df5bbca..4e98b8b9cc27 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm @@ -237,7 +237,7 @@ }, /obj/effect/mob_spawn/human/corpse/damaged, /obj/item/clothing/under/rank/civilian/chaplain, -/obj/item/clothing/head/helmet/chaplain/witchunter_hat, +/obj/item/clothing/head/witchunter_hat, /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/glass, /turf/open/floor/mineral/titanium/blue, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index 13f2cf4efe6f..4fdcd50925b6 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -153,7 +153,7 @@ /obj/item/melee/cleric_mace{ pixel_x = 5 }, -/obj/item/clothing/head/helmet/chaplain/ancient{ +/obj/item/clothing/head/witchunter_hat{ pixel_y = 13; pixel_x = -5 }, diff --git a/_maps/RandomRuins/SpaceRuins/spacemall.dmm b/_maps/RandomRuins/SpaceRuins/spacemall.dmm index aba1424544be..8e6dd2b1c23b 100644 --- a/_maps/RandomRuins/SpaceRuins/spacemall.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacemall.dmm @@ -2818,10 +2818,9 @@ /obj/item/clothing/head/collectable/chef, /obj/item/clothing/head/collectable/HoP, /obj/item/clothing/head/collectable/rabbitears, -/obj/item/clothing/head/helmet/chaplain, +/obj/item/clothing/head/witchunter_hat, /obj/item/clothing/neck/cloak/trans, /obj/item/clothing/neck/cloak/cap, -/obj/item/clothing/head/helmet/chaplain/witchunter_hat, /obj/item/clothing/neck/beads, /obj/item/clothing/neck/necklace/dope, /obj/item/clothing/neck/stripedredscarf, diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index 33144dbafe8d..42c46fed3aa1 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -424,7 +424,7 @@ "qo" = ( /obj/structure/closet/cabinet, /obj/item/spear/bonespear, -/obj/item/clothing/suit/armor/riot/chaplain/studentuni, +/obj/item/clothing/suit/armor/witchhunter, /obj/item/reagent_containers/food/snacks/grown/berries/death, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) @@ -461,7 +461,7 @@ /area/ruin/wasteplanet) "qU" = ( /obj/structure/closet/cabinet, -/obj/item/clothing/suit/armor/riot/chaplain/studentuni, +/obj/item/clothing/suit/armor/witchhunter, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) "rh" = ( @@ -492,7 +492,7 @@ "sV" = ( /obj/structure/closet/cabinet, /obj/item/melee/sword/bone, -/obj/item/clothing/suit/armor/riot/chaplain/studentuni, +/obj/item/clothing/suit/armor/witchhunter, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) "tB" = ( diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index e5f06babb733..caa4b5eb3477 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -2647,7 +2647,7 @@ /obj/item/clothing/under/suit/roumain, /obj/item/clothing/suit/armor/roumain, /obj/item/clothing/head/cowboy/sec/roumain, -/obj/item/clothing/suit/armor/riot/chaplain/witchhunter, +/obj/item/clothing/suit/armor/witchhunter, /obj/item/flashlight/lantern, /obj/structure/closet/secure_closet/hunter, /obj/item/lighter, diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 663af5e6f758..4ca5fc16a308 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -285,3 +285,12 @@ #undef DRILL_SHOUTING #undef DRILL_YELLING #undef DRILL_CANADIAN + +/obj/item/clothing/head/witchunter_hat + name = "witchunter hat" + desc = "This hat saw much use back in the day." + icon_state = "witchhunterhat" + item_state = "witchhunterhat" + flags_cover = HEADCOVERSEYES + flags_inv = HIDEEYES|HIDEHAIR + armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 71f5f43da43a..0b13b9d65d26 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -284,3 +284,10 @@ body_parts_covered = HEAD flags_inv = HIDEHAIR|HIDEEARS|HIDEFACE|HIDEFACIALHAIR +/obj/item/clothing/suit/armor/witchhunter + name = "witchunter garb" + desc = "This worn outfit saw much use back in the day." + icon_state = "chaplain_witchhunter" + item_state = "witchhunter" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + allowed = list(/obj/item/storage/book/bible, /obj/item/melee/sword, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) From f3ded5123c78eb740c2ae85568f8a600e295f74e Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sun, 14 Apr 2024 02:32:58 -0500 Subject: [PATCH 018/102] ytea --- code/game/objects/items/melee/stunbaton.dm | 2 +- code/game/objects/items/melee/sword.dm | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index 59821ea78d43..3798b3df29ec 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -1,7 +1,7 @@ /obj/item/melee/baton name = "stun baton" desc = "A stun baton for incapacitating people with." - + icon = 'icons/obj/weapon/baton.dmi' icon_state = "stunbaton" item_state = "baton" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 0aad281ddde8..4d4979aa8f8f 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -1,4 +1,5 @@ /obj/item/melee/sword + icon = 'icons/obj/weapon/sword.dmi' lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' pickup_sound = 'sound/items/unsheath.ogg' From dc8d07f12900bfff15aef544947fda01df3ba124 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sun, 14 Apr 2024 17:16:23 -0500 Subject: [PATCH 019/102] axe parent type, removes magic hammers --- _maps/RandomRuins/BeachRuins/beach_colony.dmm | 4 +- .../BeachRuins/beach_crashed_engineer.dmm | 2 +- .../BeachRuins/beach_float_resort.dmm | 2 +- .../BeachRuins/beach_ocean_town.dmm | 4 +- .../icemoon_surface_corporate_rejects.dmm | 2 +- .../lavaland_surface_dwarffortress.dmm | 2 +- _maps/RandomRuins/SpaceRuins/dark_glade.dmm | 2 +- .../WasteRuins/wasteplanet_pandora.dmm | 2 +- _maps/shuttles/pirate/pirate_ember.dmm | 2 +- code/controllers/subsystem/traumas.dm | 2 +- .../components/crafting/recipes/tribal.dm | 2 +- code/game/machinery/doors/airlock.dm | 4 +- code/game/machinery/doors/door.dm | 2 +- code/game/objects/items/melee/fireaxe.dm | 40 ++--- .../objects/items/melee/singularityhammer.dm | 145 ------------------ code/game/objects/items/melee/spear.dm | 17 +- code/game/objects/items/melee/sword.dm | 60 ++++++++ code/game/objects/items/melee/weaponry.dm | 67 +------- code/game/objects/items/miscellaneous.dm | 22 +-- code/game/objects/structures/fireaxe.dm | 6 +- code/game/turfs/closed/wall/mineral_walls.dm | 2 +- .../antagonists/wizard/equipment/spellbook.dm | 10 -- .../awaymissions/mission_code/snowdin.dm | 4 +- code/modules/cargo/bounties/mining.dm | 2 +- .../clothing/outfits/ert/frontiersmen_ert.dm | 2 +- .../modules/clothing/outfits/ert/indie_ert.dm | 2 +- .../hostile/mining_mobs/hivelord.dm | 4 +- code/modules/power/supermatter/supermatter.dm | 2 +- code/modules/research/designs/misc_designs.dm | 2 +- code/modules/surgery/amputation.dm | 2 +- code/modules/surgery/organic_steps.dm | 4 +- shiptest.dme | 1 - 32 files changed, 121 insertions(+), 305 deletions(-) delete mode 100644 code/game/objects/items/melee/singularityhammer.dm diff --git a/_maps/RandomRuins/BeachRuins/beach_colony.dmm b/_maps/RandomRuins/BeachRuins/beach_colony.dmm index 9e73439acba4..6fab2d2bf55d 100644 --- a/_maps/RandomRuins/BeachRuins/beach_colony.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_colony.dmm @@ -79,7 +79,7 @@ /obj/structure/railing{ dir = 1 }, -/obj/item/melee/roastingstick, +/obj/item/roastingstick, /turf/open/floor/plating/grass/beach/lit, /area/overmap_encounter/planetoid/beachplanet/explored) "kd" = ( @@ -522,7 +522,7 @@ /turf/open/floor/plating/grass/beach/lit, /area/overmap_encounter/planetoid/beachplanet/explored) "Ww" = ( -/obj/item/melee/roastingstick, +/obj/item/roastingstick, /turf/open/floor/plating/grass/beach/lit, /area/overmap_encounter/planetoid/beachplanet/explored) "Xd" = ( diff --git a/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm b/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm index 998e43b9085a..971fde63cb03 100644 --- a/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm @@ -1232,7 +1232,7 @@ /obj/machinery/atmospherics/components/unary/passive_vent{ dir = 1 }, -/obj/item/fireaxe{ +/obj/item/melee/axe/fire{ name = "rusty fire axe" }, /turf/open/floor/engine/airless, diff --git a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm index b7a24dbebcfb..e2a98dea11f8 100644 --- a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm @@ -195,7 +195,7 @@ /turf/open/water/beach, /area/overmap_encounter/planetoid/beachplanet/explored) "eZ" = ( -/obj/item/melee/roastingstick, +/obj/item/roastingstick, /turf/open/floor/wood{ light_range = 2 }, diff --git a/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm b/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm index 583c196e3dc3..96ad0476821b 100644 --- a/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm @@ -1642,7 +1642,7 @@ /obj/effect/turf_decal/weather/sand{ dir = 5 }, -/obj/item/melee/roastingstick, +/obj/item/roastingstick, /obj/item/reagent_containers/food/snacks/sausage, /turf/open/floor/plating/dirt{ light_range = 2 @@ -2325,7 +2325,7 @@ /obj/effect/turf_decal/weather/sand{ dir = 8 }, -/obj/item/melee/roastingstick, +/obj/item/roastingstick, /turf/open/floor/plating/dirt{ light_range = 2 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm index 3b21c3271764..0a3bf6ba13db 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm @@ -1694,7 +1694,7 @@ /area/ruin/unpowered/corprejectrooms) "Mc" = ( /obj/structure/table/glass, -/obj/item/fireaxe, +/obj/item/melee/axe/fire, /turf/open/floor/vault, /area/ruin/unpowered/corprejectvault) "Md" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm index 52a302920d24..646255905ac4 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm @@ -152,7 +152,7 @@ /area/overmap_encounter/planetoid/cave/explored) "Cf" = ( /obj/structure/table/wood, -/obj/item/fireaxe/boneaxe, +/obj/item/melee/axe/bone, /turf/open/floor/plating/asteroid/basalt, /area/overmap_encounter/planetoid/cave/explored) "CI" = ( diff --git a/_maps/RandomRuins/SpaceRuins/dark_glade.dmm b/_maps/RandomRuins/SpaceRuins/dark_glade.dmm index f17b4a9fd89b..999cb43a8fbb 100644 --- a/_maps/RandomRuins/SpaceRuins/dark_glade.dmm +++ b/_maps/RandomRuins/SpaceRuins/dark_glade.dmm @@ -62,7 +62,7 @@ /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/glade) "F" = ( -/obj/item/melee/roastingstick, +/obj/item/roastingstick, /turf/open/floor/grass, /area/ruin/space/has_grav/glade) "J" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index 42c46fed3aa1..6504fdba00c5 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -960,7 +960,7 @@ "Li" = ( /obj/structure/closet/cabinet, /obj/item/clothing/suit/armor/bone, -/obj/item/fireaxe/boneaxe, +/obj/item/melee/axe/bone, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) "Lj" = ( diff --git a/_maps/shuttles/pirate/pirate_ember.dmm b/_maps/shuttles/pirate/pirate_ember.dmm index 2694926c67ae..112e2695638f 100644 --- a/_maps/shuttles/pirate/pirate_ember.dmm +++ b/_maps/shuttles/pirate/pirate_ember.dmm @@ -9840,7 +9840,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/item/vibro_weapon, +/obj/item/sword/vibro, /turf/open/floor/plasteel/tech, /area/ship/crew/office) "Uk" = ( diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 70007c3225ac..176920dcd968 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -158,7 +158,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/reagent_containers/food/drinks/bottle/sake, /obj/item/throwing_star, /obj/item/clothing/suit/space/space_ninja, /obj/item/clothing/mask/gas/space_ninja, /obj/item/clothing/shoes/space_ninja, /obj/item/clothing/gloves/space_ninja, - /obj/item/vibro_weapon, /obj/item/energy_katana, /obj/item/toy/katana, + /obj/item/sword/vibro, /obj/item/energy_katana, /obj/item/toy/katana, /obj/item/melee/sword/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe)) ) diff --git a/code/datums/components/crafting/recipes/tribal.dm b/code/datums/components/crafting/recipes/tribal.dm index 370bb8febbd0..fcff655296ab 100644 --- a/code/datums/components/crafting/recipes/tribal.dm +++ b/code/datums/components/crafting/recipes/tribal.dm @@ -69,7 +69,7 @@ /datum/crafting_recipe/boneaxe name = "Bone Axe" - result = /obj/item/fireaxe/boneaxe + result = /obj/item/melee/axe/bone time = 50 reqs = list(/obj/item/stack/sheet/bone = 6, /obj/item/stack/sheet/sinew = 3) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 6bb5a4bab561..81b0728a810b 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1236,8 +1236,8 @@ return if(!operating) - if(istype(I, /obj/item/fireaxe)) //being fireaxe'd - var/obj/item/fireaxe/axe = I + if(istype(I, /obj/item/melee/axe/fire)) //being fireaxe'd + var/obj/item/melee/axe/fire/axe = I if(axe && !axe.wielded) to_chat(user, "You need to be wielding \the [axe] to do that!") return diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index eb23f1060be3..737bacbb650f 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -253,7 +253,7 @@ return max_moles - min_moles > 20 /obj/machinery/door/attackby(obj/item/I, mob/user, params) - if(user.a_intent != INTENT_HARM && (I.tool_behaviour == TOOL_CROWBAR || istype(I, /obj/item/fireaxe))) + if(user.a_intent != INTENT_HARM && (I.tool_behaviour == TOOL_CROWBAR || istype(I, /obj/item/melee/axe/fire))) var/forced_open = FALSE if(istype(I, /obj/item/crowbar)) var/obj/item/crowbar/C = I diff --git a/code/game/objects/items/melee/fireaxe.dm b/code/game/objects/items/melee/fireaxe.dm index 88988ae61cc2..705b563a3aff 100644 --- a/code/game/objects/items/melee/fireaxe.dm +++ b/code/game/objects/items/melee/fireaxe.dm @@ -1,14 +1,7 @@ -/* - * Fireaxe - */ -/obj/item/fireaxe // DEM AXES MAN, marker -Agouri - icon_state = "fireaxe0" - base_icon_state = "fireaxe" +/obj/item/melee/axe icon = 'icons/obj/weapon/axe.dmi' lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi' - name = "fire axe" - desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" force = 5 throwforce = 15 w_class = WEIGHT_CLASS_BULKY @@ -22,52 +15,49 @@ species_exception = list(/datum/species/kepori) var/wielded = FALSE // track wielded status on item -/obj/item/fireaxe/Initialize() +/obj/item/melee/axe/Initialize() . = ..() RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) -/obj/item/fireaxe/ComponentInitialize() +/obj/item/melee/axe/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=24, icon_wielded="[base_icon_state]1") /// triggered on wield of two handed item -/obj/item/fireaxe/proc/on_wield(obj/item/source, mob/user) +/obj/item/melee/axe/proc/on_wield(obj/item/source, mob/user) SIGNAL_HANDLER wielded = TRUE /// triggered on unwield of two handed item -/obj/item/fireaxe/proc/on_unwield(obj/item/source, mob/user) +/obj/item/melee/axe/proc/on_unwield(obj/item/source, mob/user) SIGNAL_HANDLER wielded = FALSE -/obj/item/fireaxe/update_icon_state() +/obj/item/melee/axe/update_icon_state() icon_state = "[base_icon_state]0" return ..() -/obj/item/fireaxe/afterattack(atom/A, mob/user, proximity) +/obj/item/melee/axe/afterattack(atom/A, mob/user, proximity) . = ..() if(!proximity) return if(wielded) //destroys windows and grilles in one hit if(istype(A, /obj/structure/window) || istype(A, /obj/structure/grille)) var/obj/structure/W = A - W.obj_destruction("fireaxe") + W.obj_destruction("axe") + +/obj/item/melee/axe/fire // DEM AXES MAN, marker -Agouri + icon_state = "fireaxe0" + base_icon_state = "fireaxe" + name = "fire axe" + desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" -/* - * Bone Axe - */ -/obj/item/fireaxe/boneaxe // Blatant imitation of the fireaxe, but made out of bone. +/obj/item/melee/axe/bone // Blatant imitation of the fireaxe, but made out of bone. icon_state = "bone_axe0" base_icon_state = "bone_axe" name = "bone axe" desc = "A large, vicious axe crafted out of several sharpened bone plates and crudely tied together. Made of monsters, by killing monsters, for killing monsters." - icon = 'icons/obj/items_and_weapons.dmi' - -/obj/item/fireaxe/boneaxe/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=23, icon_wielded="[base_icon_state]1") - diff --git a/code/game/objects/items/melee/singularityhammer.dm b/code/game/objects/items/melee/singularityhammer.dm deleted file mode 100644 index 04d7629623b5..000000000000 --- a/code/game/objects/items/melee/singularityhammer.dm +++ /dev/null @@ -1,145 +0,0 @@ -/obj/item/singularityhammer - name = "singularity hammer" - desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows." - icon_state = "singularity0" - base_icon_state = "singularity_hammer" - lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BACK - force = 5 - throwforce = 15 - throw_range = 1 - w_class = WEIGHT_CLASS_HUGE - armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - resistance_flags = FIRE_PROOF | ACID_PROOF - force_string = "LORD SINGULOTH HIMSELF" - var/charged = 5 - var/wielded = FALSE // track wielded status on item - -/obj/item/singularityhammer/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - START_PROCESSING(SSobj, src) - -/obj/item/singularityhammer/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_multiplier=4, icon_wielded="[base_icon_state]1") - -/// triggered on wield of two handed item -/obj/item/singularityhammer/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/singularityhammer/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/singularityhammer/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/singularityhammer/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/singularityhammer/process() - if(charged < 5) - charged++ - -/obj/item/singularityhammer/proc/vortex(turf/pull, mob/wielder) - for(var/atom/X in orange(5,pull)) - if(ismovable(X)) - var/atom/movable/A = X - if(A == wielder) - continue - if(A && !A.anchored && !ishuman(X) && !isobserver(X)) - step_towards(A,pull) - step_towards(A,pull) - step_towards(A,pull) - else if(ishuman(X)) - var/mob/living/carbon/human/H = X - if(istype(H.shoes, /obj/item/clothing/shoes/magboots)) - var/obj/item/clothing/shoes/magboots/M = H.shoes - if(M.magpulse) - continue - H.apply_effect(20, EFFECT_PARALYZE, 0) - step_towards(H,pull) - step_towards(H,pull) - step_towards(H,pull) - -/obj/item/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) - . = ..() - if(!proximity) - return - if(wielded) - if(charged == 5) - charged = 0 - if(istype(A, /mob/living/)) - var/mob/living/Z = A - Z.take_bodypart_damage(20,0) - playsound(user, 'sound/weapons/marauder.ogg', 50, TRUE) - var/turf/target = get_turf(A) - vortex(target,user) - -/obj/item/mjollnir - name = "Mjolnir" - desc = "A weapon worthy of a god, able to strike with the force of a lightning bolt. It crackles with barely contained energy." - icon_state = "mjollnir0" - base_icon_state = "mjollnir" - lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BACK - force = 5 - throwforce = 30 - throw_range = 7 - w_class = WEIGHT_CLASS_HUGE - var/wielded = FALSE // track wielded status on item - -/obj/item/mjollnir/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - -/obj/item/mjollnir/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_multiplier=5, icon_wielded="[base_icon_state]1", attacksound="sparks") - -/// triggered on wield of two handed item -/obj/item/mjollnir/proc/on_wield(obj/item/source, mob/user) - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/mjollnir/proc/on_unwield(obj/item/source, mob/user) - wielded = FALSE - -/obj/item/mjollnir/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/mjollnir/proc/shock(mob/living/target) - target.Stun(60) - var/datum/effect_system/lightning_spread/s = new /datum/effect_system/lightning_spread - s.set_up(5, 1, target.loc) - s.start() - target.visible_message("[target.name] is shocked by [src]!", \ - "You feel a powerful shock course through your body sending you flying!", \ - "You hear a heavy electrical crack!") - var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src))) - target.throw_at(throw_target, 200, 4) - return - -/obj/item/mjollnir/attack(mob/living/M, mob/user) - ..() - if(wielded) - shock(M) - -/obj/item/mjollnir/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - . = ..() - if(isliving(hit_atom)) - shock(hit_atom) diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index 20261b0f5a2c..e3212657abab 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -154,10 +154,6 @@ base_icon_state = "bone_spear0" icon_prefix = "bone_spear" desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." - icon = 'icons/obj/items_and_weapons.dmi' - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - mob_overlay_icon = 'icons/mob/clothing/back.dmi' force = 12 throwforce = 22 armour_penetration = 15 //Enhanced armor piercing @@ -165,13 +161,10 @@ /obj/item/spear/bonespear/ComponentInitialize() . = ..() AddComponent(/datum/component/two_handed, force_unwielded=12, force_wielded=20, icon_wielded="[icon_prefix]1") -/obj/item/spear/dragonspear//version of the bone spear crafted from the trophy dropped by the Ash Drake. High damage, high ap, burns. + +//version of the bone spear crafted from the trophy dropped by the Ash Drake. High damage, high ap, burns. +/obj/item/spear/dragonspear name = "dragonslayer's spear" - desc = "A bone spear crafted from the leading spine of a fully-grown drake, razor-sharp and hotter then magma. Wielded by the deranged, pyromaniacs, and champions of lavaland." - icon = 'icons/obj/items_and_weapons.dmi' - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - mob_overlay_icon = 'icons/mob/clothing/back.dmi' force = 20 throwforce = 25 block_chance = 15//lol,lmao @@ -227,12 +220,8 @@ icon_state = "crystal_spear0" name = "crystal spear" desc = "While more 'sharp stick' than spear, this thing is extremely dangerous neverless. Crafted out of the mysterous crystals, it can hit for very high damage, although it will break with repeated use." - icon = 'icons/obj/items_and_weapons.dmi' base_icon_state = "crystal_spear" icon_prefix = "crystal_spear" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - mob_overlay_icon = 'icons/mob/clothing/back.dmi' force = 12 throwforce = 40 armour_penetration = 20 diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 4d4979aa8f8f..6e02111ab3f1 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -296,3 +296,63 @@ "You've been pricked by the [src]!") log_combat(user, C, "pricked", src.name, "with [prick_chems[R]]u of [R]") return ..() + +//HF blade +/obj/item/sword/vibro + icon_state = "hfrequency0" + base_icon_state = "hfrequency" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + name = "vibro sword" + desc = "A potent weapon capable of cutting through nearly anything. Wielding it in two hands will allow you to deflect gunfire." + armour_penetration = 100 + block_chance = 30 + force = 20 + throwforce = 20 + throw_speed = 4 + sharpness = IS_SHARP + attack_verb = list("cut", "sliced", "diced") + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK + hitsound = 'sound/weapons/bladeslice.ogg' + var/wielded = FALSE // track wielded status on item + +/obj/item/sword/vibro/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) + +/obj/item/sword/vibro/ComponentInitialize() + . = ..() + AddComponent(/datum/component/butchering, 20, 105) + AddComponent(/datum/component/two_handed, force_multiplier=2, icon_wielded="[base_icon_state]1") + +/// triggered on wield of two handed item +/obj/item/sword/vibro/proc/on_wield(obj/item/source, mob/user) + SIGNAL_HANDLER + + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/sword/vibro/proc/on_unwield(obj/item/source, mob/user) + SIGNAL_HANDLER + + wielded = FALSE + +/obj/item/sword/vibro/update_icon_state() + icon_state = "[base_icon_state]0" + return ..() + +/obj/item/sword/vibro/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(wielded) + final_block_chance *= 2 + if(wielded || attack_type != PROJECTILE_ATTACK) + if(prob(final_block_chance)) + if(attack_type == PROJECTILE_ATTACK) + owner.visible_message("[owner] deflects [attack_text] with [src]!") + playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE) + return 1 + else + owner.visible_message("[owner] parries [attack_text] with [src]!") + return 1 + return 0 diff --git a/code/game/objects/items/melee/weaponry.dm b/code/game/objects/items/melee/weaponry.dm index 725941595e34..8f09ad7e07c0 100644 --- a/code/game/objects/items/melee/weaponry.dm +++ b/code/game/objects/items/melee/weaponry.dm @@ -3,6 +3,7 @@ /obj/item/wirerod name = "wired rod" desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit." + icon = 'icons/obj/weapon/spear.dmi' icon_state = "wiredrod" item_state = "rods" flags_1 = CONDUCT_1 @@ -154,69 +155,3 @@ . = ..() if(part) part.drop_limb() - -//HF blade -/obj/item/vibro_weapon - icon_state = "hfrequency0" - base_icon_state = "hfrequency" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - name = "vibro sword" - desc = "A potent weapon capable of cutting through nearly anything. Wielding it in two hands will allow you to deflect gunfire." - armour_penetration = 100 - block_chance = 30 - force = 20 - throwforce = 20 - throw_speed = 4 - sharpness = IS_SHARP - attack_verb = list("cut", "sliced", "diced") - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - hitsound = 'sound/weapons/bladeslice.ogg' - var/wielded = FALSE // track wielded status on item - -/obj/item/vibro_weapon/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - -/obj/item/vibro_weapon/ComponentInitialize() - . = ..() - AddComponent(/datum/component/butchering, 20, 105) - AddComponent(/datum/component/two_handed, force_multiplier=2, icon_wielded="[base_icon_state]1") - -/// triggered on wield of two handed item -/obj/item/vibro_weapon/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/vibro_weapon/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/vibro_weapon/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/vibro_weapon/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) - final_block_chance *= 2 - if(wielded || attack_type != PROJECTILE_ATTACK) - if(prob(final_block_chance)) - if(attack_type == PROJECTILE_ATTACK) - owner.visible_message("[owner] deflects [attack_text] with [src]!") - playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE) - return 1 - else - owner.visible_message("[owner] parries [attack_text] with [src]!") - return 1 - return 0 - -/obj/item/vibro_weapon/weak - armour_penetration = 10 - block_chance = 10 - force = 15 - throwforce = 20 diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 58989a84a69c..56ca4f95c8e9 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -298,7 +298,7 @@ attack_verb = list("called", "rang") hitsound = 'sound/weapons/ring.ogg' -/obj/item/melee/roastingstick +/obj/item/roastingstick name = "advanced roasting stick" desc = "A telescopic roasting stick with a miniature shield generator designed to ensure entry into various high-tech shielded cooking ovens and firepits." icon_state = "roastingstick_0" @@ -313,12 +313,12 @@ var/on = FALSE var/datum/beam/beam -/obj/item/melee/roastingstick/Initialize() +/obj/item/roastingstick/Initialize() . = ..() if (!ovens) ovens = typecacheof(list(/obj/singularity, /obj/machinery/power/supermatter_crystal, /obj/structure/bonfire)) -/obj/item/melee/roastingstick/attack_self(mob/user) +/obj/item/roastingstick/attack_self(mob/user) on = !on if(on) extend(user) @@ -331,7 +331,7 @@ playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) add_fingerprint(user) -/obj/item/melee/roastingstick/attackby(atom/target, mob/user) +/obj/item/roastingstick/attackby(atom/target, mob/user) ..() if (istype(target, /obj/item/reagent_containers/food/snacks/sausage)) if (!on) @@ -346,36 +346,36 @@ to_chat(user, "[target] doesn't seem to want to get on [src]!") update_appearance() -/obj/item/melee/roastingstick/attack_hand(mob/user) +/obj/item/roastingstick/attack_hand(mob/user) ..() if (held_sausage) user.put_in_hands(held_sausage) held_sausage = null update_appearance() -/obj/item/melee/roastingstick/update_overlays() +/obj/item/roastingstick/update_overlays() . = ..() if (held_sausage) . += mutable_appearance(icon, "roastingstick_sausage") -/obj/item/melee/roastingstick/proc/extend(user) +/obj/item/roastingstick/proc/extend(user) to_chat(user, "You extend [src].") icon_state = "roastingstick_1" item_state = "nullrod" w_class = WEIGHT_CLASS_BULKY -/obj/item/melee/roastingstick/proc/retract(user) +/obj/item/roastingstick/proc/retract(user) to_chat(user, "You collapse [src].") icon_state = "roastingstick_0" item_state = null w_class = WEIGHT_CLASS_SMALL -/obj/item/melee/roastingstick/handle_atom_del(atom/target) +/obj/item/roastingstick/handle_atom_del(atom/target) if (target == held_sausage) held_sausage = null update_appearance() -/obj/item/melee/roastingstick/afterattack(atom/target, mob/user, proximity) +/obj/item/roastingstick/afterattack(atom/target, mob/user, proximity) . = ..() if (!on) return @@ -398,7 +398,7 @@ QDEL_NULL(beam) playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE) -/obj/item/melee/roastingstick/proc/finish_roasting(user, atom/target) +/obj/item/roastingstick/proc/finish_roasting(user, atom/target) to_chat(user, "You finish roasting [held_sausage].") playsound(src,'sound/items/welder2.ogg',50,TRUE) held_sausage.add_atom_colour(rgb(103,63,24), FIXED_COLOUR_PRIORITY) diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index f6de885caf77..c2351e93bdf0 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -10,7 +10,7 @@ integrity_failure = 0.33 var/locked = TRUE var/open = FALSE - var/obj/item/fireaxe/fireaxe + var/obj/item/melee/axe/fire/fireaxe /obj/structure/fireaxecabinet/Initialize() . = ..() @@ -49,8 +49,8 @@ obj_integrity = max_integrity update_appearance() else if(open || broken) - if(istype(I, /obj/item/fireaxe) && !fireaxe) - var/obj/item/fireaxe/F = I + if(istype(I, /obj/item/melee/axe/fire) && !fireaxe) + var/obj/item/melee/axe/fire/F = I if(F && F.wielded) to_chat(user, "Unwield the [F.name] first.") return diff --git a/code/game/turfs/closed/wall/mineral_walls.dm b/code/game/turfs/closed/wall/mineral_walls.dm index 720a95afd0e1..e16df07668c6 100644 --- a/code/game/turfs/closed/wall/mineral_walls.dm +++ b/code/game/turfs/closed/wall/mineral_walls.dm @@ -250,7 +250,7 @@ /turf/closed/wall/mineral/wood/attackby(obj/item/W, mob/user) if(W.get_sharpness() && W.force) var/duration = (48/W.force) * 2 //In seconds, for now. - if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/fireaxe)) + if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/melee/axe/fire)) duration /= 4 //Much better with hatchets and axes. if(do_after(user, duration*10, target=src)) //Into deciseconds. dismantle_wall(devastated = FALSE) diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index d3f85cc75d5d..e95670fdab90 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -409,16 +409,6 @@ limit = 3 category = "Assistance" -/datum/spellbook_entry/item/mjolnir - name = "Mjolnir" - desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power." - item_path = /obj/item/mjollnir - -/datum/spellbook_entry/item/singularity_hammer - name = "Singularity Hammer" - desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everything nearby to the point of impact." - item_path = /obj/item/singularityhammer - /datum/spellbook_entry/item/battlemage name = "Battlemage Armour" desc = "An ensorceled suit of armour, protected by a powerful shield. The shield can completely negate sixteen attacks before being permanently depleted." diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index dec456b8ef2f..4fc5a16bed19 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -508,9 +508,7 @@ /obj/effect/spawner/lootdrop/snowdin/dungeonheavy name = "dungeon heavy" - loot = list(/obj/item/singularityhammer = 25, - /obj/item/mjollnir = 10, - /obj/item/fireaxe = 25, + loot = list(/obj/item/melee/axe/fire = 25, /obj/item/organ/brain/alien = 17, /obj/item/dualsaber = 15, /obj/item/organ/heart/demon = 7, diff --git a/code/modules/cargo/bounties/mining.dm b/code/modules/cargo/bounties/mining.dm index b2df34d8f964..36425edc2e72 100644 --- a/code/modules/cargo/bounties/mining.dm +++ b/code/modules/cargo/bounties/mining.dm @@ -22,7 +22,7 @@ name = "Bone Axe" description = "Station 12 has had their fire axes stolen by marauding clowns. Ship them a bone axe as a replacement." reward = 7500 - wanted_types = list(/obj/item/fireaxe/boneaxe) + wanted_types = list(/obj/item/melee/axe/bone) /datum/bounty/item/mining/bone_armor name = "Bone Armor" diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm index f0fd3bb81eb2..1ea6ab79f9b5 100644 --- a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm +++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm @@ -110,7 +110,7 @@ /obj/item/kitchen/knife = 15, /obj/item/melee/baseball_bat = 10, /obj/item/melee/cleric_mace = 7, - /obj/item/melee/roastingstick = 2, + /obj/item/roastingstick = 2, /obj/item/kitchen/fork = 1, /obj/item/melee/flyswatter = 1, )) diff --git a/code/modules/clothing/outfits/ert/indie_ert.dm b/code/modules/clothing/outfits/ert/indie_ert.dm index e45f0895d0f4..236f9ee75c57 100644 --- a/code/modules/clothing/outfits/ert/indie_ert.dm +++ b/code/modules/clothing/outfits/ert/indie_ert.dm @@ -75,7 +75,7 @@ jobtype = /datum/job/chief_engineer job_icon = "chiefengineer" - back = /obj/item/fireaxe + back = /obj/item/melee/axe/fire suit = /obj/item/clothing/suit/space/hardsuit/engine suit_store = /obj/item/tank/internals/oxygen/red head = null diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index a7534452f76b..418faac20fb8 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -658,7 +658,7 @@ if(prob(45)) back = pickweight(list( /obj/item/spear/bonespear = 3, - /obj/item/fireaxe/boneaxe = 2 + /obj/item/melee/axe/bone = 2 ) ) if(prob(10)) @@ -790,7 +790,7 @@ if(prob(5)) back = pickweight(list( /obj/item/spear/bonespear = 3, - /obj/item/fireaxe/boneaxe = 2 + /obj/item/melee/axe/bone = 2 ) ) if(prob(10)) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 5593744219d0..3b4df24bb369 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -817,7 +817,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) /obj/machinery/power/supermatter_crystal/attackby(obj/item/W, mob/living/user, params) if(!istype(W) || (W.item_flags & ABSTRACT) || !istype(user)) return - if(istype(W, /obj/item/melee/roastingstick)) + if(istype(W, /obj/item/roastingstick)) return ..() if(istype(W, /obj/item/clothing/mask/cigarette)) var/obj/item/clothing/mask/cigarette/cig = W diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index eeca189ef2dc..417f075c42c6 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -229,7 +229,7 @@ id = "roastingstick" build_type = PROTOLATHE materials = list(/datum/material/iron=1000, /datum/material/glass = 500, /datum/material/bluespace = 250) - build_path = /obj/item/melee/roastingstick + build_path = /obj/item/roastingstick category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index 91cd1dce07e4..a657d7180a5a 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -14,7 +14,7 @@ TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/arm_blade = 80, - /obj/item/fireaxe = 50, + /obj/item/melee/axe/fire = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25) time = 6.4 SECONDS diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm index 5167bb3a4517..341a94d36909 100644 --- a/code/modules/surgery/organic_steps.dm +++ b/code/modules/surgery/organic_steps.dm @@ -145,7 +145,7 @@ name = "saw bone" implements = list( TOOL_SAW = 100, - /obj/item/fireaxe = 50, + /obj/item/melee/axe/fire = 50, /obj/item/melee/arm_blade = 40, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 33, @@ -154,7 +154,7 @@ preop_sound = list( /obj/item/circular_saw = 'sound/surgery/saw.ogg', /obj/item/melee/arm_blade = 'sound/surgery/scalpel1.ogg', - /obj/item/fireaxe = 'sound/surgery/scalpel1.ogg', + /obj/item/melee/axe/fire = 'sound/surgery/scalpel1.ogg', /obj/item/hatchet = 'sound/surgery/scalpel1.ogg', /obj/item/kitchen/knife/butcher = 'sound/surgery/scalpel1.ogg', /obj/item = 'sound/surgery/scalpel1.ogg', diff --git a/shiptest.dme b/shiptest.dme index 8e844f44c002..4522e5d7b088 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1260,7 +1260,6 @@ #include "code\game\objects\items\melee\misc.dm" #include "code\game\objects\items\melee\dualsaber.dm" #include "code\game\objects\items\melee\powerfist.dm" -#include "code\game\objects\items\melee\singularityhammer.dm" #include "code\game\objects\items\melee\stunbaton.dm" #include "code\game\objects\items\melee\sword.dm" #include "code\game\objects\items\melee\teleprod.dm" From e4d9d660d50490a769dfbea504ba10127fd8a567 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sun, 14 Apr 2024 17:28:24 -0500 Subject: [PATCH 020/102] stuff --- _maps/shuttles/pirate/pirate_ember.dmm | 2 +- code/controllers/subsystem/traumas.dm | 2 +- code/game/objects/items/melee/misc.dm | 7 +------ code/game/objects/items/melee/stunbaton.dm | 2 +- code/game/objects/items/melee/sword.dm | 14 +++++++------- icons/obj/items_and_weapons.dmi | Bin 71268 -> 68824 bytes icons/obj/weapon/baton.dmi | Bin 2370 -> 4570 bytes icons/obj/weapon/energy.dmi | Bin 12888 -> 13302 bytes icons/obj/weapon/misc.dmi | Bin 189 -> 1818 bytes icons/obj/weapon/sword.dmi | Bin 15445 -> 14471 bytes 10 files changed, 11 insertions(+), 16 deletions(-) diff --git a/_maps/shuttles/pirate/pirate_ember.dmm b/_maps/shuttles/pirate/pirate_ember.dmm index 112e2695638f..95f5fee143b0 100644 --- a/_maps/shuttles/pirate/pirate_ember.dmm +++ b/_maps/shuttles/pirate/pirate_ember.dmm @@ -9840,7 +9840,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/item/sword/vibro, +/obj/item/melee/sword/vibro, /turf/open/floor/plasteel/tech, /area/ship/crew/office) "Uk" = ( diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 176920dcd968..85513bf3797a 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -158,7 +158,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/reagent_containers/food/drinks/bottle/sake, /obj/item/throwing_star, /obj/item/clothing/suit/space/space_ninja, /obj/item/clothing/mask/gas/space_ninja, /obj/item/clothing/shoes/space_ninja, /obj/item/clothing/gloves/space_ninja, - /obj/item/sword/vibro, /obj/item/energy_katana, /obj/item/toy/katana, + /obj/item/melee/sword/vibro, /obj/item/energy_katana, /obj/item/toy/katana, /obj/item/melee/sword/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe)) ) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index ecf2328fec99..27ce38d87994 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -282,11 +282,9 @@ /obj/item/melee/baseball_bat name = "baseball bat" desc = "There ain't a skull in the league that can withstand a swatter." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/weapon/blunt.dmi' icon_state = "baseball_bat" item_state = "baseball_bat" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' force = 12 throwforce = 12 attack_verb = list("beat", "smacked") @@ -354,11 +352,8 @@ /obj/item/melee/flyswatter name = "flyswatter" desc = "Useful for killing insects of all sizes." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "flyswatter" item_state = "flyswatter" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' force = 1 throwforce = 1 attack_verb = list("swatted", "smacked") diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index 3798b3df29ec..5b3ad433cdff 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -337,7 +337,7 @@ /obj/item/melee/classic_baton name = "police baton" desc = "A wooden truncheon for beating criminal scum." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/weapon/baton.dmi' icon_state = "classic_baton" item_state = "classic_baton" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 6e02111ab3f1..cd05f1de5912 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -298,7 +298,7 @@ return ..() //HF blade -/obj/item/sword/vibro +/obj/item/melee/sword/vibro icon_state = "hfrequency0" base_icon_state = "hfrequency" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' @@ -317,33 +317,33 @@ hitsound = 'sound/weapons/bladeslice.ogg' var/wielded = FALSE // track wielded status on item -/obj/item/sword/vibro/Initialize() +/obj/item/melee/sword/vibro/Initialize() . = ..() RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) -/obj/item/sword/vibro/ComponentInitialize() +/obj/item/melee/sword/vibro/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 20, 105) AddComponent(/datum/component/two_handed, force_multiplier=2, icon_wielded="[base_icon_state]1") /// triggered on wield of two handed item -/obj/item/sword/vibro/proc/on_wield(obj/item/source, mob/user) +/obj/item/melee/sword/vibro/proc/on_wield(obj/item/source, mob/user) SIGNAL_HANDLER wielded = TRUE /// triggered on unwield of two handed item -/obj/item/sword/vibro/proc/on_unwield(obj/item/source, mob/user) +/obj/item/melee/sword/vibro/proc/on_unwield(obj/item/source, mob/user) SIGNAL_HANDLER wielded = FALSE -/obj/item/sword/vibro/update_icon_state() +/obj/item/melee/sword/vibro/update_icon_state() icon_state = "[base_icon_state]0" return ..() -/obj/item/sword/vibro/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) +/obj/item/melee/sword/vibro/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(wielded) final_block_chance *= 2 if(wielded || attack_type != PROJECTILE_ATTACK) diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index 989c207e4e23dc26141fd96d32b4d6c5e9b9444d..b04ba67511d936a8ede47b3e3995512b1bce7d41 100644 GIT binary patch literal 68824 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ΜFoT)UXe@_S@%CGXkoi5&N22ns!I26TkYle{H;_ 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 z�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 X#k35c?2Jo^LW0ZL!NtDb&OiBoA8v(` diff --git a/icons/obj/weapon/baton.dmi b/icons/obj/weapon/baton.dmi index 4612e2b405f5dddefa9c80daf2fae421eb1c122d..eea5ca3631aafb514810ed21a7057b7f3d754bf5 100644 GIT binary patch literal 4570 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 Ef;0Ut*8l(j literal 2370 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 C(`z08 literal 12888 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 S%l_T~0000Z(w8i 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 literal 15445 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 Date: Sun, 14 Apr 2024 17:36:36 -0500 Subject: [PATCH 021/102] removing cult weapons --- code/controllers/subsystem/traumas.dm | 3 +- code/datums/action.dm | 38 --- .../components/storage/concrete/pockets.dm | 2 +- code/game/objects/items/storage/book.dm | 17 -- code/game/objects/structures/girders.dm | 5 - .../structures/icemoon/cave_entrance.dm | 3 - code/modules/antagonists/cult/blood_magic.dm | 29 -- code/modules/antagonists/cult/cult.dm | 3 +- code/modules/antagonists/cult/cult_items.dm | 250 +----------------- .../antagonists/cult/cult_structures.dm | 7 - code/modules/antagonists/cult/ritual.dm | 155 ----------- code/modules/antagonists/cult/runes.dm | 17 -- code/modules/clothing/outfits/standard.dm | 1 - code/modules/hydroponics/hydroitemdefines.dm | 2 +- code/modules/library/lib_machines.dm | 1 - code/modules/mining/equipment/survival_pod.dm | 2 +- code/modules/ninja/energy_katana.dm | 25 +- code/modules/ninja/outfit.dm | 2 +- code/modules/ninja/suit/suit.dm | 2 +- shiptest.dme | 1 - 20 files changed, 20 insertions(+), 545 deletions(-) delete mode 100644 code/modules/antagonists/cult/ritual.dm diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 85513bf3797a..a58c60dd4543 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -125,7 +125,6 @@ SUBSYSTEM_DEF(traumas) "the supernatural" = typecacheof(list( /obj/structure/destructible/cult, /obj/item/tome, - /obj/item/melee/cultblade, /obj/item/cult_bastard, /obj/item/restraints/legcuffs/bola/cult, /obj/item/clothing/suit/space/hardsuit/cult, /obj/item/clothing/suit/hooded/cultrobes, /obj/item/clothing/head/hooded/cult_hoodie, /obj/effect/rune, /obj/item/stack/sheet/runed_metal, /obj/machinery/door/airlock/cult, /obj/singularity/narsie, @@ -158,7 +157,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/reagent_containers/food/drinks/bottle/sake, /obj/item/throwing_star, /obj/item/clothing/suit/space/space_ninja, /obj/item/clothing/mask/gas/space_ninja, /obj/item/clothing/shoes/space_ninja, /obj/item/clothing/gloves/space_ninja, - /obj/item/melee/sword/vibro, /obj/item/energy_katana, /obj/item/toy/katana, + /obj/item/melee/sword/vibro, /obj/item/melee/sword/energy_katana, /obj/item/toy/katana, /obj/item/melee/sword/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe)) ) diff --git a/code/datums/action.dm b/code/datums/action.dm index ff03b689085d..71c6a746f7d2 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -473,44 +473,6 @@ name = "Use [target.name]" button.name = name -/datum/action/item_action/cult_dagger - name = "Draw Blood Rune" - desc = "Use the ritual dagger to create a powerful blood rune" - icon_icon = 'icons/mob/actions/actions_cult.dmi' - button_icon_state = "draw" - buttontooltipstyle = "cult" - background_icon_state = "bg_demon" - -/datum/action/item_action/cult_dagger/Grant(mob/M) - if(iscultist(M)) - ..() - button.screen_loc = "6:157,4:-2" - button.moved = "6:157,4:-2" - else - Remove(owner) - - -/datum/action/item_action/cult_dagger/Trigger() - for(var/obj/item/H in owner.held_items) //In case we were already holding another dagger - if(istype(H, /obj/item/melee/cultblade/dagger)) - H.attack_self(owner) - return - var/obj/item/I = target - if(owner.can_equip(I, ITEM_SLOT_HANDS)) - owner.temporarilyRemoveItemFromInventory(I) - owner.put_in_hands(I) - I.attack_self(owner) - return - if(!isliving(owner)) - to_chat(owner, "You lack the necessary living force for this action.") - return - var/mob/living/living_owner = owner - if (living_owner.usable_hands <= 0) - to_chat(living_owner, "You dont have any usable hands!") - else - to_chat(living_owner, "Your hands are full!") - - ///MGS BOX! /datum/action/item_action/agent_box name = "Deploy Box" diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index 71333a83e752..d6045a329d1a 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -36,7 +36,7 @@ . = ..() var/static/list/exception_cache = typecacheof(list( /obj/item/toy/katana, /obj/item/melee/sword/katana, - /obj/item/energy_katana, /obj/item/gun/ballistic/automatic/smg/firestorm/pan + /obj/item/melee/sword/energy_katana, /obj/item/gun/ballistic/automatic/smg/firestorm/pan )) exception_hold = exception_cache diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index e4da84563655..5a2fde281614 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -188,23 +188,6 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", B.name = name B.icon_state = icon_state B.item_state = item_state - if(istype(A, /obj/item/cult_bastard) && !iscultist(user)) - var/obj/item/cult_bastard/sword = A - to_chat(user, "You begin to exorcise [sword].") - playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,TRUE) - if(do_after(user, 40, target = sword)) - playsound(src,'sound/effects/pray_chaplain.ogg',60,TRUE) - for(var/obj/item/soulstone/SS in sword.contents) - SS.usability = TRUE - for(var/mob/living/simple_animal/shade/EX in SS) - SSticker.mode.remove_cultist(EX.mind, 1, 0) - EX.icon_state = "ghost1" - EX.name = "Purified [EX.name]" - SS.release_shades(user) - qdel(SS) - new /obj/item/melee/sword/claymore(get_turf(sword)) - user.visible_message("[user] purifies [sword]!") - qdel(sword) else if(istype(A, /obj/item/soulstone) && !iscultist(user)) var/obj/item/soulstone/SS = A if(SS.purified) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 25822d69ff00..4b7bde2c79a0 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -362,11 +362,6 @@ /obj/structure/girder/cult/attackby(obj/item/W, mob/user, params) add_fingerprint(user) - if(istype(W, /obj/item/melee/cultblade/dagger) && iscultist(user)) //Cultists can demolish cult girders instantly with their tomes - user.visible_message("[user] strikes [src] with [W]!", "You demolish [src].") - new /obj/item/stack/sheet/runed_metal(drop_location(), 1) - qdel(src) - else if(W.tool_behaviour == TOOL_WELDER) if(!W.tool_start_check(user, amount=0)) return diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm index 16c9e98681b8..080ca04a11e2 100644 --- a/code/game/objects/structures/icemoon/cave_entrance.dm +++ b/code/game/objects/structures/icemoon/cave_entrance.dm @@ -841,9 +841,6 @@ GLOBAL_LIST_INIT(ore_probability, list( if(prob(35)) new /obj/item/sharpener/cult(loc) new /mob/living/simple_animal/hostile/construct/artificer/hostile(loc) - if(prob(15)) - new /obj/item/cult_bastard(loc) - new /mob/living/simple_animal/hostile/construct/juggernaut/hostile(loc) if(prob(35)) new /obj/item/cult_shift(loc) new /mob/living/simple_animal/hostile/construct/proteon/hostile(loc) diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 003abfd42991..dd52db6a7ff3 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -182,34 +182,6 @@ magic_path = "/obj/item/melee/blood_magic/construction" health_cost = 12 -/datum/action/innate/cult/blood_spell/equipment - name = "Summon Equipment" - desc = "Allows you to summon a ritual dagger, or empowers your hand to summon combat gear onto a cultist you touch, including cult armor, a cult bola, and a cult sword." - button_icon_state = "equip" - magic_path = "/obj/item/melee/blood_magic/armor" - -/datum/action/innate/cult/blood_spell/equipment/Activate() - var/choice = alert(owner,"Choose your equipment type",,"Combat Equipment","Ritual Dagger","Cancel") - if(choice == "Ritual Dagger") - var/turf/T = get_turf(owner) - owner.visible_message("[owner]'s hand glows red for a moment.", \ - "Red light begins to shimmer and take form within your hand!") - var/obj/O = new /obj/item/melee/cultblade/dagger(T) - if(owner.put_in_hands(O)) - to_chat(owner, "A ritual dagger appears in your hand!") - else - owner.visible_message( - "A ritual dagger appears at [owner]'s feet!", \ - "A ritual dagger materializes at your feet.") - SEND_SOUND(owner, sound('sound/effects/magic.ogg',0,1,25)) - charges-- - desc = base_desc - desc += "
Has [charges] use\s remaining." - if(charges<=0) - qdel(src) - else if(choice == "Combat Equipment") - ..() - /datum/action/innate/cult/blood_spell/horror name = "Hallucinations" desc = "Gives hallucinations to a target at range. A silent and invisible spell." @@ -695,7 +667,6 @@ C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), ITEM_SLOT_BACK) if(C == user) qdel(src) //Clears the hands - C.put_in_hands(new /obj/item/melee/cultblade(user)) C.put_in_hands(new /obj/item/restraints/legcuffs/bola/cult(user)) ..() diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index e7f37d37f4a6..6fc3253cbf51 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -73,7 +73,6 @@ var/mob/living/carbon/H = owner.current if(!istype(H)) return - . += cult_give_item(/obj/item/melee/cultblade/dagger, H) if(metal) . += cult_give_item(/obj/item/stack/sheet/runed_metal/ten, H) to_chat(owner, "These will help you jumpstart a cult of your own in this sector. Use them well, and remember - you are not the only one.") @@ -177,7 +176,7 @@ /datum/antagonist/cult/proc/admin_take_all(mob/admin) var/mob/living/current = owner.current for(var/o in current.GetAllContents()) - if(istype(o, /obj/item/melee/cultblade/dagger) || istype(o, /obj/item/stack/sheet/runed_metal)) + if(istype(o, istype(o, /obj/item/stack/sheet/runed_metal)) qdel(o) /datum/antagonist/cult/master diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 6eed283b02f1..0124ec2b9a49 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -6,209 +6,6 @@ throw_range = 5 w_class = WEIGHT_CLASS_SMALL -/obj/item/melee/cultblade/dagger - name = "ritual dagger" - desc = "A strange dagger said to be used by sinister groups for \"preparing\" a corpse before sacrificing it to their dark gods." - icon = 'icons/obj/wizard.dmi' - icon_state = "render" - item_state = "cultdagger" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - inhand_x_dimension = 32 - inhand_y_dimension = 32 - w_class = WEIGHT_CLASS_SMALL - force = 15 - throwforce = 25 - armour_penetration = 35 - actions_types = list(/datum/action/item_action/cult_dagger) - var/drawing_rune = FALSE - -/obj/item/melee/cultblade/dagger/Initialize() - . = ..() - var/image/I = image(icon = 'icons/effects/blood.dmi' , icon_state = null, loc = src) - I.override = TRUE - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_dagger", I) - -/obj/item/melee/cultblade - name = "eldritch longsword" - desc = "A sword humming with unholy energy. It glows with a dim red light." - icon_state = "cultblade" - item_state = "cultblade" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 - sharpness = IS_SHARP - w_class = WEIGHT_CLASS_BULKY - force = 30 - throwforce = 10 - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "rended") - -/obj/item/melee/cultblade/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 40, 100) - -/obj/item/melee/cultblade/attack(mob/living/target, mob/living/carbon/human/user) - if(!iscultist(user)) - user.Paralyze(100) - user.dropItemToGround(src, TRUE) - user.visible_message( - "A powerful force shoves [user] away from [target]!", \ - "\"You shouldn't play with sharp things. You'll poke someone's eye out.\"") - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.apply_damage(rand(force/2, force), BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - else - user.adjustBruteLoss(rand(force/2,force)) - return - ..() - -/obj/item/melee/cultblade/ghost - name = "eldritch sword" - force = 19 //can't break normal airlocks - item_flags = NEEDS_PERMIT | DROPDEL - flags_1 = NONE - -/obj/item/melee/cultblade/ghost/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT) - -/obj/item/melee/cultblade/pickup(mob/living/user) - ..() - if(!iscultist(user)) - to_chat(user, "\"I wouldn't advise that.\"") - -/obj/item/cult_bastard - name = "geometric bastard sword" - desc = "An enormous sword, once used by Nar'Sien cultists to rapidly harvest the souls of non-believers. It still yet hungers to taste inpure blood." - w_class = WEIGHT_CLASS_HUGE - block_chance = 50 - throwforce = 20 - force = 30 - armour_penetration = 45 - throw_speed = 1 - throw_range = 3 - sharpness = IS_SHARP - light_system = MOVABLE_LIGHT - light_range = 4 - light_color = COLOR_RED - attack_verb = list("cleaved", "bisected", "tore", "brutalized", "smashed", "ripped", "diced", "carved") - icon_state = "cultbastard" - item_state = "cultbastard" - hitsound = 'sound/weapons/bladeslice.ogg' - lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' - righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' - inhand_x_dimension = 64 - inhand_y_dimension = 64 - actions_types = list() - item_flags = SLOWS_WHILE_IN_HAND - var/datum/action/innate/dash/cult/jaunt - var/datum/action/innate/cult/spin2win/linked_action - var/spinning = FALSE - var/spin_cooldown = 250 - var/dash_toggled = TRUE - var/list/nemesis_factions = list("mining", "boss") - var/faction_bonus_force = 25 - -/obj/item/cult_bastard/Initialize() - . = ..() - jaunt = new(src) - linked_action = new(src) - AddComponent(/datum/component/butchering, 50, 120) - AddComponent(/datum/component/two_handed, require_twohands=TRUE) - -/obj/item/cult_bastard/attack(mob/living/target, mob/living/carbon/human/user) - var/nemesis_faction = FALSE - if(LAZYLEN(nemesis_factions)) - for(var/F in target.faction) - if(F in nemesis_factions) - nemesis_faction = TRUE - force += faction_bonus_force - throwforce += faction_bonus_force - nemesis_effects(user, target) - break - . = ..() - if(nemesis_faction) - force -= faction_bonus_force - throwforce -= faction_bonus_force - -/obj/item/cult_bastard/proc/nemesis_effects(mob/living/user, mob/living/target) - return - -/obj/item/cult_bastard/Destroy() - QDEL_NULL(jaunt) - QDEL_NULL(linked_action) - return ..() - -/obj/item/cult_bastard/examine(mob/user) - . = ..() - . += "This weapon will absorb the souls of unconscious human foes." - if(contents.len) - . += "There are [contents.len] souls trapped within the sword's core." - else - . += "The sword appears to be quite lifeless." - -/obj/item/cult_bastard/can_be_pulled(user) - return FALSE - -/obj/item/cult_bastard/attack_self(mob/user) - dash_toggled = !dash_toggled - if(dash_toggled) - to_chat(loc, "You raise [src] and prepare to jaunt with it.") - else - to_chat(loc, "You lower [src] and prepare to swing it normally.") - -/obj/item/cult_bastard/pickup(mob/living/user) - . = ..() - force = initial(force) - jaunt.Grant(user, src) - linked_action.Grant(user, src) - user.update_icons() - -/obj/item/cult_bastard/dropped(mob/user) - . = ..() - linked_action.Remove(user) - jaunt.Remove(user) - user.update_icons() - -/obj/item/cult_bastard/IsReflect() - if(spinning) - playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE) - return TRUE - else - ..() - -/obj/item/cult_bastard/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(prob(final_block_chance)) - if(attack_type == PROJECTILE_ATTACK) - owner.visible_message("[owner] deflects [attack_text] with [src]!") - playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE) - return TRUE - else - playsound(src, 'sound/weapons/parry.ogg', 75, TRUE) - owner.visible_message("[owner] parries [attack_text] with [src]!") - return TRUE - return FALSE - -/obj/item/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters) - . = ..() - if(dash_toggled && !proximity) - jaunt.Teleport(user, target) - return - if(proximity) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if(H.stat != CONSCIOUS) - var/obj/item/soulstone/anybody/SS = new /obj/item/soulstone/anybody(src) - SS.attack(H, user) - if(!LAZYLEN(SS.contents)) - qdel(SS) - if(istype(target, /obj/structure/constructshell) && contents.len) - var/obj/item/soulstone/anybody/SS = contents[1] - if(istype(SS)) - SS.transfer_soul("CONSTRUCT",target,user) - qdel(SS) - /datum/action/innate/dash/cult name = "Rend the Veil" desc = "Use the sword to shear open the flimsy fabric of this reality and teleport to your target." @@ -226,45 +23,6 @@ else return FALSE - - -/datum/action/innate/cult/spin2win - name = "Geometer's Fury" - desc = "You draw on the power of the sword's ancient runes, spinning it wildly around you as you become immune to most attacks." - background_icon_state = "bg_demon" - button_icon_state = "sintouch" - var/cooldown = 0 - var/mob/living/carbon/human/holder - var/obj/item/cult_bastard/sword - -/datum/action/innate/cult/spin2win/Grant(mob/user, obj/bastard) - . = ..() - sword = bastard - holder = user - -/datum/action/innate/cult/spin2win/IsAvailable() - if(cooldown <= world.time) - return TRUE - else - return FALSE - -/datum/action/innate/cult/spin2win/Activate() - cooldown = world.time + sword.spin_cooldown - holder.changeNext_move(50) - holder.apply_status_effect(/datum/status_effect/sword_spin) - sword.spinning = TRUE - sword.block_chance = 100 - sword.slowdown += 1.5 - addtimer(CALLBACK(src, PROC_REF(stop_spinning)), 50) - holder.update_action_buttons_icon() - -/datum/action/innate/cult/spin2win/proc/stop_spinning() - sword.spinning = FALSE - sword.block_chance = 50 - sword.slowdown -= 1.5 - sleep(sword.spin_cooldown) - holder.update_action_buttons_icon() - /obj/item/restraints/legcuffs/bola/cult name = "\improper Nar'Sien bola" desc = "A strong bola, bound with dark magic that allows it to pass harmlessly through Nar'Sien cultists. Throw it to trip and slow your victim." @@ -303,7 +61,7 @@ icon_state = "cultrobes" item_state = "cultrobes" body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/tome, /obj/item/melee/cultblade, /obj/item/tank) + allowed = list(/obj/item/tome, /obj/item/tank) armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 40, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) flags_inv = HIDEJUMPSUIT cold_protection = CHEST|GROIN|LEGS|ARMS @@ -349,7 +107,7 @@ icon_state = "magusred" item_state = "magusred" body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/tome, /obj/item/melee/cultblade) + allowed = list(/obj/item/tome) armor = list("melee" = 50, "bullet" = 30, "laser" = 50,"energy" = 50, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT @@ -369,7 +127,7 @@ item_state = "cult_armor" desc = "A heavily-armored exosuit worn by warriors of the Nar'Sien cult. It can withstand hard vacuum." w_class = WEIGHT_CLASS_BULKY - allowed = list(/obj/item/tome, /obj/item/melee/cultblade, /obj/item/tank/internals/) + allowed = list(/obj/item/tome, /obj/item/tank/internals/) armor = list("melee" = 70, "bullet" = 50, "laser" = 30,"energy" = 40, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult @@ -430,7 +188,7 @@ /obj/item/clothing/suit/hooded/cultrobes/berserker name = "flagellant's robes" desc = "Blood-soaked robes infused with dark magic; allows the user to move at inhuman speeds, but at the cost of increased damage." - allowed = list(/obj/item/tome, /obj/item/melee/cultblade) + allowed = list(/obj/item/tome) armor = list("melee" = -45, "bullet" = -45, "laser" = -45,"energy" = -55, "bomb" = -45, "bio" = -45, "rad" = -45, "fire" = 0, "acid" = 0) slowdown = -0.6 hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/berserkerhood diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index 66526d96a34f..158b22b99c4a 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -64,13 +64,6 @@ icon_state = "[initial(icon_state)][anchored ? null : "_off"]" return ..() -/obj/structure/destructible/cult/attackby(obj/I, mob/user, params) - if(istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user)) - set_anchored(!anchored) - to_chat(user, "You [anchored ? "":"un"]secure \the [src] [anchored ? "to":"from"] the floor.") - else - return ..() - /obj/structure/destructible/cult/proc/check_menu(mob/user) if(!istype(user)) return FALSE diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm deleted file mode 100644 index 1ea84bd83a1f..000000000000 --- a/code/modules/antagonists/cult/ritual.dm +++ /dev/null @@ -1,155 +0,0 @@ -/* - -This file contains the cult dagger and rune list code - -*/ - - -/obj/item/melee/cultblade/dagger/Initialize() - . = ..() - if(!LAZYLEN(GLOB.rune_types)) - GLOB.rune_types = list() - var/static/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) - for(var/i_can_do_loops_now_thanks_remie in non_revealed_runes) - var/obj/effect/rune/R = i_can_do_loops_now_thanks_remie - GLOB.rune_types[initial(R.cultist_name)] = R //Uses the cultist name for displaying purposes - -/obj/item/melee/cultblade/dagger/examine(mob/user) - . = ..() - if(iscultist(user) || isobserver(user)) - . += {"The scriptures of the Geometer. Allows the scribing of runes and access to the knowledge archives of the cult of Nar'Sie.\n - Striking a cult structure will unanchor or reanchor it.\n - Striking another cultist with it will purge holy water from them.\n - Striking a noncultist, however, will tear their flesh."} - -/obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user) - if(iscultist(M)) - if(M.reagents && M.reagents.has_reagent(/datum/reagent/water/holywater)) //allows cultists to be rescued from the clutches of ordained religion - to_chat(user, "You remove the taint from [M]." ) - var/holy2unholy = M.reagents.get_reagent_amount(/datum/reagent/water/holywater) - M.reagents.del_reagent(/datum/reagent/water/holywater) - M.reagents.add_reagent(/datum/reagent/fuel/unholywater,holy2unholy) - log_combat(user, M, "smacked", src, " removing the holy water from them") - return FALSE - . = ..() - -/obj/item/melee/cultblade/dagger/attack_self(mob/user) - if(!iscultist(user)) - to_chat(user, "[src] is covered in unintelligible shapes and markings.") - return - scribe_rune(user) - -/obj/item/melee/cultblade/dagger/proc/scribe_rune(mob/living/user) - if(drawing_rune) - return - drawing_rune = TRUE - scribe_rune_attempt(user) - drawing_rune = FALSE - -/obj/item/melee/cultblade/dagger/proc/scribe_rune_attempt(mob/living/user) - var/turf/Turf = get_turf(user) - var/chosen_keyword - var/obj/effect/rune/rune_to_scribe - var/entered_rune_name - var/list/shields = list() - var/area/A = get_area(src) - var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(!user_antag) - return - if(!check_rune_turf(Turf, user)) - return - entered_rune_name = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in GLOB.rune_types - if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user)) - return - rune_to_scribe = GLOB.rune_types[entered_rune_name] - if(!rune_to_scribe) - return - if(initial(rune_to_scribe.req_keyword)) - chosen_keyword = stripped_input(user, "Enter a keyword for the new rune.", "Words of Power") - if(!chosen_keyword) - drawing_rune = FALSE - scribe_rune(user) //Go back a menu! - return - Turf = get_turf(user) //we may have moved. adjust as needed... - A = get_area(src) - if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user)) - return - if(ispath(rune_to_scribe, /obj/effect/rune/summon) && initial(A.name) == "Space") - to_chat(user, "The veil is not weak enough here to summon a cultist!") - return - if(ispath(rune_to_scribe, /obj/effect/rune/apocalypse)) - if((world.time - SSticker.round_start_time) <= 6000) - var/wait = 6000 - (world.time - SSticker.round_start_time) - to_chat(user, "The veil is not yet weak enough for this rune - it will be available in [DisplayTimeText(wait)].") - return - var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives - if(!(A in summon_objective.summon_spots)) - to_chat(user, "The Apocalypse rune will remove a ritual site (where Nar'Sie can be summoned), it can only be scribed in [english_list(summon_objective.summon_spots)]!") - return - if(summon_objective.summon_spots.len < 2) - to_chat(user, "Only one ritual site remains - it must be reserved for the final summoning!") - return - if(ispath(rune_to_scribe, /obj/effect/rune/narsie)) - var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives - var/datum/objective/sacrifice/sac_objective = locate() in user_antag.cult_team.objectives - if(!summon_objective) - to_chat(user, "Nar'Sie does not wish to be summoned!") - return - if(sac_objective && !sac_objective.check_completion()) - to_chat(user, "The sacrifice is not complete. The portal would lack the power to open if you tried!") - return - if(summon_objective.check_completion()) - to_chat(user, "\"I am already here. There is no need to try to summon me now.\"") - return - if(!(A in summon_objective.summon_spots)) - to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") - return - var/confirm_final = alert(user, "This is the FINAL step to summon Nar'Sie; it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for Nar'Sie!", "No") - if(confirm_final == "No") - to_chat(user, "You decide to prepare further before scribing the rune.") - return - Turf = get_turf(user) - A = get_area(src) - if(!(A in summon_objective.summon_spots)) // Check again to make sure they didn't move - to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") - return - priority_announce("Figments from an eldritch god are being summoned by [user] into [initial(A.name)] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/ai/spanomalies.ogg') - for(var/B in spiral_range_turfs(1, user, 1)) - var/obj/structure/emergency_shield/sanguine/N = new(B) - shields += N - user.visible_message( - "[user] [user.blood_volume ? "cuts open [user.p_their()] arm and begins writing in [user.p_their()] own blood":"begins sketching out a strange design"]!", \ - "You [user.blood_volume ? "slice open your arm and ":""]begin drawing a sigil of the Geometer.") - if(user.blood_volume) - user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - var/scribe_mod = initial(rune_to_scribe.scribe_delay) - if(istype(get_turf(user), /turf/open/floor/engine/cult) && !(ispath(rune_to_scribe, /obj/effect/rune/narsie))) - scribe_mod *= 0.5 - if(!do_after(user, scribe_mod, target = get_turf(user))) - for(var/V in shields) - var/obj/structure/emergency_shield/sanguine/S = V - if(S && !QDELETED(S)) - qdel(S) - return - if(!check_rune_turf(Turf, user)) - return - user.visible_message( - "[user] creates a strange circle[user.blood_volume ? " in [user.p_their()] own blood":""].", \ - "You finish drawing the arcane markings of the Geometer.") - for(var/V in shields) - var/obj/structure/emergency_shield/S = V - if(S && !QDELETED(S)) - qdel(S) - var/obj/effect/rune/R = new rune_to_scribe(Turf, chosen_keyword) - R.add_mob_blood(user) - to_chat(user, "The [lowertext(R.cultist_name)] rune [R.cultist_desc]") - SSblackbox.record_feedback("tally", "cult_runes_scribed", 1, R.cultist_name) - -/obj/item/melee/cultblade/dagger/proc/check_rune_turf(turf/T, mob/user) - if(isspaceturf(T)) - to_chat(user, "You cannot scribe runes in space!") - return FALSE - if(locate(/obj/effect/rune) in T) - to_chat(user, "There is already a rune here.") - return FALSE - return TRUE diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 5058dc73f081..b0fb446405c2 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -55,13 +55,6 @@ Runes can either be invoked by one's self or with many different cultists. Each if(req_keyword && keyword) . += "Keyword: [keyword]" -/obj/effect/rune/attackby(obj/I, mob/user, params) - if(istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user)) - SEND_SOUND(user,'sound/items/sheath.ogg') - if(do_after(user, 15, target = src)) - to_chat(user, "You carefully erase the [lowertext(cultist_name)] rune.") - qdel(src) - /obj/effect/rune/attack_hand(mob/living/user) . = ..() if(.) @@ -241,7 +234,6 @@ structure_check() searches for nearby cultist structures required for the invoca "[convertee] writhes in pain [brutedamage || burndamage ? "even as [convertee.p_their()] wounds heal and close" : "as the markings below [convertee.p_them()] glow a bloody red"]!", // Hello there buddy! Come here often? I hope you were wondering wtf this string was "AAAAAAAAAAAAAA-") SSticker.mode.add_cultist(convertee.mind, 1) - new /obj/item/melee/cultblade/dagger(get_turf(src)) convertee.mind.special_role = ROLE_CULTIST to_chat(convertee, "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ and something evil takes root.") @@ -492,15 +484,6 @@ structure_check() searches for nearby cultist structures required for the invoca color = RUNE_COLOR_RED new /obj/singularity/narsie/large/cult(T) //Causes Nar'Sie to spawn even if the rune has been removed -/obj/effect/rune/narsie/attackby(obj/I, mob/user, params) //Since the narsie rune takes a long time to make, add logging to removal. - if((istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user))) - user.visible_message("[user.name] begins erasing [src]...", "You begin erasing [src]...") - if(do_after(user, 50, target = src)) //Prevents accidental erasures. - log_game("Summon Narsie rune erased by [key_name(user)] with [I.name]") - message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with [I.name]") - else - ..() - //Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every three sacrifices your cult has carried out. /obj/effect/rune/raise_dead cultist_name = "Revive" diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 7a848b9ca330..f02390eaac2b 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -102,7 +102,6 @@ uniform = /obj/item/clothing/under/color/black/ghost suit = /obj/item/clothing/suit/hooded/cultrobes/alt/ghost shoes = /obj/item/clothing/shoes/cult/alt/ghost - r_hand = /obj/item/melee/cultblade/ghost /datum/outfit/wizard name = "Blue Wizard" diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 74d004849a2a..715cc972cda1 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -106,7 +106,7 @@ /obj/item/hatchet name = "hatchet" desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/weapon/axe.dmi' icon_state = "hatchet" item_state = "hatchet" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 71de02b3ca1c..38b3728651ce 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -358,7 +358,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums return null /obj/machinery/computer/bookmanagement/proc/print_forbidden_lore(mob/user) - new /obj/item/melee/cultblade/dagger(get_turf(src)) to_chat(user, "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a sinister dagger sitting on the desk. You don't even remember where it came from...") user.visible_message("[user] stares at the blank screen for a few moments, [user.p_their()] expression frozen in fear. When [user.p_they()] finally awaken[user.p_s()] from it, [user.p_they()] look[user.p_s()] a lot older.", 2) diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 4be728891fba..9652ae74474d 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -309,7 +309,7 @@ /obj/item/melee/sword/supermatter, /obj/item/shield/changeling, /obj/item/lava_staff, - /obj/item/energy_katana, + /obj/item/melee/sword/energy_katana, /obj/item/hierophant_club, /obj/item/gun/energy/minigun, /obj/item/gun/ballistic/automatic/hmg/l6_saw, diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm index c00d32d25809..14392e1c0874 100644 --- a/code/modules/ninja/energy_katana.dm +++ b/code/modules/ninja/energy_katana.dm @@ -1,37 +1,30 @@ -/obj/item/energy_katana +/obj/item/melee/sword/energy_katana name = "energy katana" desc = "A katana infused with strong energy." icon_state = "energy_katana" item_state = "energy_katana" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' force = 40 throwforce = 20 block_chance = 50 armour_penetration = 50 - w_class = WEIGHT_CLASS_NORMAL - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT - sharpness = IS_SHARP max_integrity = 200 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/datum/effect_system/spark_spread/spark_system var/datum/action/innate/dash/ninja/jaunt var/dash_toggled = TRUE -/obj/item/energy_katana/Initialize() +/obj/item/melee/sword/energy_katana/Initialize() . = ..() jaunt = new(src) spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) -/obj/item/energy_katana/attack_self(mob/user) +/obj/item/melee/sword/energy_katana/attack_self(mob/user) dash_toggled = !dash_toggled to_chat(user, "You [dash_toggled ? "enable" : "disable"] the dash function on [src].") -/obj/item/energy_katana/afterattack(atom/target, mob/user, proximity_flag, click_parameters) +/obj/item/melee/sword/energy_katana/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() if(dash_toggled) jaunt.Teleport(user, target) @@ -41,13 +34,13 @@ playsound(user, 'sound/weapons/blade1.ogg', 50, TRUE) target.emag_act(user) -/obj/item/energy_katana/pickup(mob/living/user) +/obj/item/melee/sword/energy_katana/pickup(mob/living/user) . = ..() jaunt.Grant(user, src) user.update_icons() playsound(src, 'sound/items/unsheath.ogg', 25, TRUE) -/obj/item/energy_katana/dropped(mob/user) +/obj/item/melee/sword/energy_katana/dropped(mob/user) . = ..() jaunt?.Remove(user) user.update_icons() @@ -55,7 +48,7 @@ //If we hit the Ninja who owns this Katana, they catch it. //Works for if the Ninja throws it or it throws itself or someone tries //To throw it at the ninja -/obj/item/energy_katana/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) +/obj/item/melee/sword/energy_katana/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(ishuman(hit_atom)) var/mob/living/carbon/human/H = hit_atom if(istype(H.wear_suit, /obj/item/clothing/suit/space/space_ninja)) @@ -66,7 +59,7 @@ ..() -/obj/item/energy_katana/proc/returnToOwner(mob/living/carbon/human/user, doSpark = 1, caught = 0) +/obj/item/melee/sword/energy_katana/proc/returnToOwner(mob/living/carbon/human/user, doSpark = 1, caught = 0) if(!istype(user)) return forceMove(get_turf(user)) @@ -94,7 +87,7 @@ to_chat(user, "[msg]") -/obj/item/energy_katana/Destroy() +/obj/item/melee/sword/energy_katana/Destroy() QDEL_NULL(spark_system) QDEL_NULL(jaunt) return ..() diff --git a/code/modules/ninja/outfit.dm b/code/modules/ninja/outfit.dm index 2b5976db4d59..1c3c24927bfd 100644 --- a/code/modules/ninja/outfit.dm +++ b/code/modules/ninja/outfit.dm @@ -12,7 +12,7 @@ l_pocket = /obj/item/grenade/c4/x4 r_pocket = /obj/item/tank/internals/emergency_oxygen internals_slot = ITEM_SLOT_RPOCKET - belt = /obj/item/energy_katana + belt = /obj/item/melee/sword/energy_katana implants = list(/obj/item/implant/explosive) diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index cb355014d4e7..4f368b630496 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -26,7 +26,7 @@ Contents: var/datum/effect_system/spark_spread/spark_system var/datum/techweb/stored_research var/obj/item/disk/tech_disk/t_disk//To copy design onto disk. - var/obj/item/energy_katana/energyKatana //For teleporting the katana back to the ninja (It's an ability) + var/obj/item/melee/sword/energy_katana/energyKatana //For teleporting the katana back to the ninja (It's an ability) //Other articles of ninja gear worn together, used to easily reference them after initializing. var/obj/item/clothing/head/helmet/space/space_ninja/n_hood diff --git a/shiptest.dme b/shiptest.dme index 4522e5d7b088..3c963f860f96 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1668,7 +1668,6 @@ #include "code\modules\antagonists\cult\cult_items.dm" #include "code\modules\antagonists\cult\cult_structures.dm" #include "code\modules\antagonists\cult\cult_turf_overlay.dm" -#include "code\modules\antagonists\cult\ritual.dm" #include "code\modules\antagonists\cult\rune_spawn_action.dm" #include "code\modules\antagonists\cult\runes.dm" #include "code\modules\antagonists\devil\devil.dm" From 3fb28b7516b08f29ebe23bd676d39fa069d23a7f Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sun, 14 Apr 2024 17:39:22 -0500 Subject: [PATCH 022/102] oops --- code/modules/antagonists/cult/cult.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 6fc3253cbf51..ee36ad0d6d1b 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -176,7 +176,7 @@ /datum/antagonist/cult/proc/admin_take_all(mob/admin) var/mob/living/current = owner.current for(var/o in current.GetAllContents()) - if(istype(o, istype(o, /obj/item/stack/sheet/runed_metal)) + if(istype(o, /obj/item/stack/sheet/runed_metal)) qdel(o) /datum/antagonist/cult/master From e2fccf8ce009b672cc84d7e672b2ead170c7090d Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sun, 14 Apr 2024 17:44:03 -0500 Subject: [PATCH 023/102] oops --- code/game/objects/structures/girders.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 4b7bde2c79a0..449dd76aec2a 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -362,7 +362,7 @@ /obj/structure/girder/cult/attackby(obj/item/W, mob/user, params) add_fingerprint(user) - else if(W.tool_behaviour == TOOL_WELDER) + if(W.tool_behaviour == TOOL_WELDER) if(!W.tool_start_check(user, amount=0)) return From d26bf9f0fd838c5a1d578816eeb023f10ac7535b Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 10:27:05 -0500 Subject: [PATCH 024/102] what if i just deleted the cult file haha so silly --- code/game/objects/items/melee/stunbaton.dm | 4 - code/modules/antagonists/cult/blood_magic.dm | 832 ------------- code/modules/antagonists/cult/cult.dm | 407 ------- code/modules/antagonists/cult/cult_comms.dm | 461 -------- code/modules/antagonists/cult/cult_items.dm | 709 ------------ .../antagonists/cult/cult_structures.dm | 288 ----- .../antagonists/cult/cult_turf_overlay.dm | 32 - .../antagonists/cult/rune_spawn_action.dm | 115 -- code/modules/antagonists/cult/runes.dm | 1029 ----------------- shiptest.dme | 8 - 10 files changed, 3885 deletions(-) delete mode 100644 code/modules/antagonists/cult/blood_magic.dm delete mode 100644 code/modules/antagonists/cult/cult.dm delete mode 100644 code/modules/antagonists/cult/cult_comms.dm delete mode 100644 code/modules/antagonists/cult/cult_items.dm delete mode 100644 code/modules/antagonists/cult/cult_structures.dm delete mode 100644 code/modules/antagonists/cult/cult_turf_overlay.dm delete mode 100644 code/modules/antagonists/cult/rune_spawn_action.dm delete mode 100644 code/modules/antagonists/cult/runes.dm diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index 5b3ad433cdff..b1c40f95f3e1 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -493,7 +493,6 @@ /obj/item/melee/classic_baton/telescopic name = "telescopic baton" desc = "A compact yet robust personal defense weapon. Can be concealed when folded." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "telebaton_0" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' @@ -538,10 +537,7 @@ /obj/item/melee/classic_baton/telescopic/contractor_baton name = "contractor baton" desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "contractor_baton_0" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' item_state = null slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm deleted file mode 100644 index dd52db6a7ff3..000000000000 --- a/code/modules/antagonists/cult/blood_magic.dm +++ /dev/null @@ -1,832 +0,0 @@ -/datum/action/innate/cult/blood_magic //Blood magic handles the creation of blood spells (formerly talismans) - name = "Prepare Blood Magic" - button_icon_state = "carve" - desc = "Prepare blood magic by carving runes into your flesh. This is easier with an empowering rune." - var/list/spells = list() - var/channeling = FALSE - -/datum/action/innate/cult/blood_magic/Grant() - ..() - button.screen_loc = DEFAULT_BLOODSPELLS - button.moved = DEFAULT_BLOODSPELLS - button.ordered = FALSE - -/datum/action/innate/cult/blood_magic/Remove() - for(var/X in spells) - qdel(X) - ..() - -/datum/action/innate/cult/blood_magic/IsAvailable() - if(!iscultist(owner)) - return FALSE - return ..() - -/datum/action/innate/cult/blood_magic/proc/Positioning() - var/list/screen_loc_split = splittext(button.screen_loc,",") - var/list/screen_loc_X = splittext(screen_loc_split[1],":") - var/list/screen_loc_Y = splittext(screen_loc_split[2],":") - var/pix_X = text2num(screen_loc_X[2]) - for(var/datum/action/innate/cult/blood_spell/B in spells) - if(B.button.locked) - var/order = pix_X+spells.Find(B)*31 - B.button.screen_loc = "[screen_loc_X[1]]:[order],[screen_loc_Y[1]]:[screen_loc_Y[2]]" - B.button.moved = B.button.screen_loc - -/datum/action/innate/cult/blood_magic/Activate() - var/rune = FALSE - var/limit = RUNELESS_MAX_BLOODCHARGE - for(var/obj/effect/rune/empower/R in range(1, owner)) - rune = TRUE - break - if(rune) - limit = MAX_BLOODCHARGE - if(spells.len >= limit) - if(rune) - to_chat(owner, "You cannot store more than [MAX_BLOODCHARGE] spells. Pick a spell to remove.") - else - to_chat(owner, "You cannot store more than [RUNELESS_MAX_BLOODCHARGE] spells without an empowering rune! Pick a spell to remove.") - var/nullify_spell = input(owner, "Choose a spell to remove.", "Current Spells") as null|anything in spells - if(nullify_spell) - qdel(nullify_spell) - return - var/entered_spell_name - var/datum/action/innate/cult/blood_spell/BS - var/list/possible_spells = list() - for(var/I in subtypesof(/datum/action/innate/cult/blood_spell)) - var/datum/action/innate/cult/blood_spell/J = I - var/cult_name = initial(J.name) - possible_spells[cult_name] = J - possible_spells += "(REMOVE SPELL)" - entered_spell_name = input(owner, "Pick a blood spell to prepare...", "Spell Choices") as null|anything in possible_spells - if(entered_spell_name == "(REMOVE SPELL)") - var/nullify_spell = input(owner, "Choose a spell to remove.", "Current Spells") as null|anything in spells - if(nullify_spell) - qdel(nullify_spell) - return - BS = possible_spells[entered_spell_name] - if(QDELETED(src) || owner.incapacitated() || !BS || (rune && !(locate(/obj/effect/rune/empower) in range(1, owner))) || (spells.len >= limit)) - return - to_chat(owner,"You begin to carve unnatural symbols into your flesh!") - SEND_SOUND(owner, sound('sound/weapons/slice.ogg',0,1,10)) - if(!channeling) - channeling = TRUE - else - to_chat(owner, "You are already invoking blood magic!") - return - if(do_after(owner, 100 - rune*60, target = owner)) - if(ishuman(owner)) - var/mob/living/carbon/human/H = owner - H.bleed(40 - rune*32) - var/datum/action/innate/cult/blood_spell/new_spell = new BS(owner) - new_spell.Grant(owner, src) - spells += new_spell - Positioning() - to_chat(owner, "Your wounds glow with power, you have prepared a [new_spell.name] invocation!") - channeling = FALSE - -/datum/action/innate/cult/blood_spell //The next generation of talismans, handles storage/creation of blood magic - name = "Blood Magic" - button_icon_state = "telerune" - desc = "Fear the Old Blood." - var/charges = 1 - var/magic_path = null - var/obj/item/melee/blood_magic/hand_magic - var/datum/action/innate/cult/blood_magic/all_magic - var/base_desc //To allow for updating tooltips - var/invocation - var/health_cost = 0 - -/datum/action/innate/cult/blood_spell/Grant(mob/living/owner, datum/action/innate/cult/blood_magic/BM) - if(health_cost) - desc += "
Deals [health_cost] damage to your arm per use." - base_desc = desc - desc += "
Has [charges] use\s remaining." - all_magic = BM - ..() - button.locked = TRUE - button.ordered = FALSE - -/datum/action/innate/cult/blood_spell/Remove() - if(all_magic) - all_magic.spells -= src - if(hand_magic) - qdel(hand_magic) - hand_magic = null - ..() - -/datum/action/innate/cult/blood_spell/IsAvailable() - if(!iscultist(owner) || owner.incapacitated() || !charges) - return FALSE - return ..() - -/datum/action/innate/cult/blood_spell/Activate() - if(magic_path) //If this spell flows from the hand - if(!hand_magic) - hand_magic = new magic_path(owner, src) - if(!owner.put_in_hands(hand_magic)) - qdel(hand_magic) - hand_magic = null - to_chat(owner, "You have no empty hand for invoking blood magic!") - return - to_chat(owner, "Your wounds glow as you invoke the [name].") - return - if(hand_magic) - qdel(hand_magic) - hand_magic = null - to_chat(owner, "You snuff out the spell, saving it for later.") - - -//Cult Blood Spells -/datum/action/innate/cult/blood_spell/stun - name = "Stun" - desc = "Empowers your hand to stun and mute a victim on contact." - button_icon_state = "hand" - magic_path = "/obj/item/melee/blood_magic/stun" - health_cost = 10 - -/datum/action/innate/cult/blood_spell/teleport - name = "Teleport" - desc = "Empowers your hand to teleport yourself or another cultist to a teleport rune on contact." - button_icon_state = "tele" - magic_path = "/obj/item/melee/blood_magic/teleport" - health_cost = 7 - -/datum/action/innate/cult/blood_spell/emp - name = "Electromagnetic Pulse" - desc = "Emits a large electromagnetic pulse." - button_icon_state = "emp" - health_cost = 10 - invocation = "Ta'gh fara'qha fel d'amar det!" - -/datum/action/innate/cult/blood_spell/emp/Activate() - owner.visible_message( - "[owner]'s hand flashes a bright blue!", \ - "You speak the cursed words, emitting an EMP blast from your hand.") - empulse(owner, 2, 5) - owner.whisper(invocation, language = /datum/language/common) - charges-- - if(charges<=0) - qdel(src) - -/datum/action/innate/cult/blood_spell/shackles - name = "Shadow Shackles" - desc = "Empowers your hand to start handcuffing victim on contact, and mute them if successful." - button_icon_state = "cuff" - charges = 4 - magic_path = "/obj/item/melee/blood_magic/shackles" - -/datum/action/innate/cult/blood_spell/construction - name = "Twisted Construction" - desc = "Empowers your hand to corrupt certain metalic objects.
Converts:
Plasteel into runed metal
50 metal into a construct shell
Living cyborgs into constructs after a delay
Cyborg shells into construct shells
Airlocks into brittle runed airlocks after a delay (harm intent)" - button_icon_state = "transmute" - magic_path = "/obj/item/melee/blood_magic/construction" - health_cost = 12 - -/datum/action/innate/cult/blood_spell/horror - name = "Hallucinations" - desc = "Gives hallucinations to a target at range. A silent and invisible spell." - button_icon_state = "horror" - var/obj/effect/proc_holder/horror/PH - charges = 4 - -/datum/action/innate/cult/blood_spell/horror/New() - PH = new() - PH.attached_action = src - ..() - -/datum/action/innate/cult/blood_spell/horror/Destroy() - var/obj/effect/proc_holder/horror/destroy = PH - . = ..() - if(destroy && !QDELETED(destroy)) - QDEL_NULL(destroy) - -/datum/action/innate/cult/blood_spell/horror/Activate() - PH.toggle(owner) //the important bit - return TRUE - -/obj/effect/proc_holder/horror - active = FALSE - ranged_mousepointer = 'icons/effects/mouse_pointers/cult_target.dmi' - var/datum/action/innate/cult/blood_spell/attached_action - -/obj/effect/proc_holder/horror/Destroy() - var/datum/action/innate/cult/blood_spell/AA = attached_action - . = ..() - if(AA && !QDELETED(AA)) - QDEL_NULL(AA) - -/obj/effect/proc_holder/horror/proc/toggle(mob/user) - if(active) - remove_ranged_ability("You dispel the magic...") - else - add_ranged_ability(user, "You prepare to horrify a target...") - -/obj/effect/proc_holder/horror/InterceptClickOn(mob/living/caller, params, atom/target) - if(..()) - return - if(ranged_ability_user.incapacitated() || !iscultist(caller)) - remove_ranged_ability() - return - var/turf/T = get_turf(ranged_ability_user) - if(!isturf(T)) - return FALSE - if(target in view(7, get_turf(ranged_ability_user))) - if(!ishuman(target) || iscultist(target)) - return - var/mob/living/carbon/human/H = target - H.hallucination = max(H.hallucination, 120) - SEND_SOUND(ranged_ability_user, sound('sound/effects/ghost.ogg',0,1,50)) - var/image/C = image('icons/effects/cult_effects.dmi',H,"bloodsparkles", ABOVE_MOB_LAYER) - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, NONE) - addtimer(CALLBACK(H, TYPE_PROC_REF(/atom, remove_alt_appearance),"cult_apoc",TRUE), 2400, TIMER_OVERRIDE|TIMER_UNIQUE) - to_chat(ranged_ability_user,"[H] has been cursed with living nightmares!") - attached_action.charges-- - attached_action.desc = attached_action.base_desc - attached_action.desc += "
Has [attached_action.charges] use\s remaining." - attached_action.UpdateButtonIcon() - if(attached_action.charges <= 0) - remove_ranged_ability("You have exhausted the spell's power!") - qdel(src) - -/datum/action/innate/cult/blood_spell/veiling - name = "Conceal Presence" - desc = "Alternates between hiding and revealing nearby cult structures and runes." - invocation = "Kla'atu barada nikt'o!" - button_icon_state = "gone" - charges = 10 - var/revealing = FALSE //if it reveals or not - -/datum/action/innate/cult/blood_spell/veiling/Activate() - if(!revealing) - owner.visible_message("Thin grey dust falls from [owner]'s hand!", \ - "You invoke the veiling spell, hiding nearby runes.") - charges-- - SEND_SOUND(owner, sound('sound/magic/smoke.ogg',0,1,25)) - owner.whisper(invocation, language = /datum/language/common) - for(var/obj/effect/rune/R in range(5,owner)) - R.conceal() - for(var/obj/structure/destructible/cult/S in range(5,owner)) - S.conceal() - for(var/turf/open/floor/engine/cult/T in range(5,owner)) - T.realappearance.alpha = 0 - for(var/obj/machinery/door/airlock/cult/AL in range(5, owner)) - AL.conceal() - revealing = TRUE - name = "Reveal Runes" - button_icon_state = "back" - else - owner.visible_message( - "A flash of light shines from [owner]'s hand!", \ - "You invoke the counterspell, revealing nearby runes.") - charges-- - owner.whisper(invocation, language = /datum/language/common) - SEND_SOUND(owner, sound('sound/magic/enter_blood.ogg',0,1,25)) - for(var/obj/effect/rune/R in range(7,owner)) //More range in case you weren't standing in exactly the same spot - R.reveal() - for(var/obj/structure/destructible/cult/S in range(6,owner)) - S.reveal() - for(var/turf/open/floor/engine/cult/T in range(6,owner)) - T.realappearance.alpha = initial(T.realappearance.alpha) - for(var/obj/machinery/door/airlock/cult/AL in range(6, owner)) - AL.reveal() - revealing = FALSE - name = "Conceal Runes" - button_icon_state = "gone" - if(charges<= 0) - qdel(src) - desc = base_desc - desc += "
Has [charges] use\s remaining." - UpdateButtonIcon() - -/datum/action/innate/cult/blood_spell/manipulation - name = "Blood Rites" - desc = "Empowers your hand to absorb blood to be used for advanced rites, or heal a cultist on contact. Use the spell in-hand to cast advanced rites." - invocation = "Fel'th Dol Ab'orod!" - button_icon_state = "manip" - charges = 5 - magic_path = "/obj/item/melee/blood_magic/manipulator" - - -// The "magic hand" items -/obj/item/melee/blood_magic - name = "\improper magical aura" - desc = "A sinister looking aura that distorts the flow of reality around it." - icon = 'icons/obj/items_and_weapons.dmi' - lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' - icon_state = "disintegrate" - item_state = "disintegrate" - item_flags = NEEDS_PERMIT | ABSTRACT | DROPDEL - - w_class = WEIGHT_CLASS_HUGE - throwforce = 0 - throw_range = 0 - throw_speed = 0 - var/invocation - var/uses = 1 - var/health_cost = 0 //The amount of health taken from the user when invoking the spell - var/datum/action/innate/cult/blood_spell/source - -/obj/item/melee/blood_magic/New(loc, spell) - if(spell) - source = spell - uses = source.charges - health_cost = source.health_cost - ..() - -/obj/item/melee/blood_magic/Destroy() - if(!QDELETED(source)) - if(uses <= 0) - source.hand_magic = null - qdel(source) - source = null - else - source.hand_magic = null - source.charges = uses - source.desc = source.base_desc - source.desc += "
Has [uses] use\s remaining." - source.UpdateButtonIcon() - return ..() - -/obj/item/melee/blood_magic/attack_self(mob/living/user) - afterattack(user, user, TRUE) - -/obj/item/melee/blood_magic/attack(mob/living/M, mob/living/carbon/user) - if(!iscarbon(user) || !iscultist(user)) - uses = 0 - qdel(src) - return - log_combat(user, M, "used a cult spell on", source.name, "") - M.lastattacker = user.real_name - M.lastattackerckey = user.ckey - -/obj/item/melee/blood_magic/afterattack(atom/target, mob/living/carbon/user, proximity) - . = ..() - if(invocation) - user.whisper(invocation, language = /datum/language/common) - if(health_cost) - if(user.active_hand_index == 1) - user.apply_damage(health_cost, BRUTE, BODY_ZONE_L_ARM) - else - user.apply_damage(health_cost, BRUTE, BODY_ZONE_R_ARM) - if(uses <= 0) - qdel(src) - else if(source) - source.desc = source.base_desc - source.desc += "
Has [uses] use\s remaining." - source.UpdateButtonIcon() - -//Stun -/obj/item/melee/blood_magic/stun - name = "Stunning Aura" - desc = "Will stun and mute a weak-minded victim on contact." - color = RUNE_COLOR_RED - invocation = "Fuu ma'jin!" - -/obj/item/melee/blood_magic/stun/afterattack(atom/target, mob/living/carbon/user, proximity) - if(!isliving(target) || !proximity) - return - var/mob/living/L = target - if(iscultist(target)) - return - if(iscultist(user)) - user.visible_message("[user] holds up [user.p_their()] hand, which explodes in a flash of red light!", \ - "You attempt to stun [L] with the spell!") - - user.mob_light(_range = 3, _color = LIGHT_COLOR_BLOOD_MAGIC, _duration = 0.2 SECONDS) - - var/anti_magic_source = L.anti_magic_check() - if(anti_magic_source) - - L.mob_light(_range = 2, _color = LIGHT_COLOR_HOLY_MAGIC, _duration = 10 SECONDS) - var/mutable_appearance/forbearance = mutable_appearance('icons/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER) - L.add_overlay(forbearance) - addtimer(CALLBACK(L, TYPE_PROC_REF(/atom, cut_overlay), forbearance), 100) - - if(istype(anti_magic_source, /obj/item)) - var/obj/item/ams_object = anti_magic_source - target.visible_message( - "[L] starts to glow in a halo of light!", \ - "Your [ams_object.name] begins to glow, emitting a blanket of holy light which surrounds you and protects you from the flash of light!") - else - target.visible_message( - "[L] starts to glow in a halo of light!", \ - "A feeling of warmth washes over you, rays of holy light surround your body and protect you from the flash of light!") - - else - if(HAS_TRAIT(target, TRAIT_MINDSHIELD)) - var/mob/living/carbon/C = L - to_chat(user, "Their mind was stronger than expected, but you still managed to do some damage!") - C.stuttering += 8 - C.dizziness += 30 - C.Jitter(8) - C.drop_all_held_items() - C.bleed(40) - C.apply_damage(60, STAMINA, BODY_ZONE_CHEST) - else - to_chat(user, "In a brilliant flash of red, [L] falls to the ground!") - L.Paralyze(160) - L.flash_act(1,1) - if(issilicon(target)) - var/mob/living/silicon/S = L - S.emp_act(EMP_HEAVY) - else if(iscarbon(target)) - var/mob/living/carbon/C = L - C.silent += 6 - C.stuttering += 15 - C.cultslurring += 15 - C.Jitter(15) - uses-- - ..() - -//Teleportation -/obj/item/melee/blood_magic/teleport - name = "Teleporting Aura" - color = RUNE_COLOR_TELEPORT - desc = "Will teleport a cultist to a teleport rune on contact." - invocation = "Sas'so c'arta forbici!" - -/obj/item/melee/blood_magic/teleport/afterattack(atom/target, mob/living/carbon/user, proximity) - if(!iscultist(target) || !proximity) - to_chat(user, "You can only teleport adjacent cultists with this spell!") - return - if(iscultist(user)) - var/list/potential_runes = list() - var/list/teleportnames = list() - for(var/R in GLOB.teleport_runes) - var/obj/effect/rune/teleport/T = R - potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T - - if(!potential_runes.len) - to_chat(user, "There are no valid runes to teleport to!") - log_game("Teleport talisman failed - no other teleport runes") - return - - var/turf/T = get_turf(src) - if(is_away_level(T)) - to_chat(user, "You are not in the right dimension!") - log_game("Teleport spell failed - user in away mission") - return - - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked - var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? - if(QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !actual_selected_rune || !proximity) - return - var/turf/dest = get_turf(actual_selected_rune) - if(dest.is_blocked_turf(TRUE)) - to_chat(user, "The target rune is blocked. You cannot teleport there.") - return - uses-- - var/turf/origin = get_turf(user) - var/mob/living/L = target - if(do_teleport(L, dest, channel = TELEPORT_CHANNEL_CULT)) - origin.visible_message("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] with a sharp crack!", \ - "You speak the words of the talisman and find yourself somewhere else!", "You hear a sharp crack.") - dest.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") - ..() - -//Shackles -/obj/item/melee/blood_magic/shackles - name = "Shackling Aura" - desc = "Will start handcuffing a victim on contact, and mute them if successful." - invocation = "In'totum Lig'abis!" - color = "#000000" // black - -/obj/item/melee/blood_magic/shackles/afterattack(atom/target, mob/living/carbon/user, proximity) - if(iscultist(user) && iscarbon(target) && proximity) - var/mob/living/carbon/C = target - if(C.canBeHandcuffed()) - CuffAttack(C, user) - else - user.visible_message("This victim doesn't have enough arms to complete the restraint!") - return - ..() - -/obj/item/melee/blood_magic/shackles/proc/CuffAttack(mob/living/carbon/C, mob/living/user) - if(!C.handcuffed) - playsound(loc, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2) - C.visible_message("[user] begins restraining [C] with dark magic!", \ - "[user] begins shaping dark magic shackles around your wrists!") - if(do_mob(user, C, 30)) - if(!C.handcuffed) - C.set_handcuffed(new /obj/item/restraints/handcuffs/energy/cult/used(C)) - C.update_handcuffed() - C.silent += 5 - to_chat(user, "You shackle [C].") - log_combat(user, C, "shackled") - uses-- - else - to_chat(user, "[C] is already bound.") - else - to_chat(user, "You fail to shackle [C].") - else - to_chat(user, "[C] is already bound.") - - -/obj/item/restraints/handcuffs/energy/cult //For the shackling spell - name = "shadow shackles" - desc = "Shackles that bind the wrists with sinister magic." - trashtype = /obj/item/restraints/handcuffs/energy/used - item_flags = DROPDEL - -/obj/item/restraints/handcuffs/energy/cult/used/dropped(mob/user) - user.visible_message("[user]'s shackles shatter in a discharge of dark magic!", \ - "Your [src] shatters in a discharge of dark magic!") - . = ..() - - -//Construction: Converts 50 metal to a construct shell, plasteel to runed metal, airlock to brittle runed airlock, a borg to a construct, or borg shell to a construct shell -/obj/item/melee/blood_magic/construction - name = "Twisting Aura" - desc = "Corrupts certain metalic objects on contact." - invocation = "Ethra p'ni dedol!" - color = "#000000" // black - var/channeling = FALSE - -/obj/item/melee/blood_magic/construction/examine(mob/user) - . = ..() - . += {"A sinister spell used to convert:\n - Plasteel into runed metal\n - [METAL_TO_CONSTRUCT_SHELL_CONVERSION] metal into a construct shell\n - Living cyborgs into constructs after a delay\n - Cyborg shells into construct shells\n - Airlocks into brittle runed airlocks after a delay (harm intent)"} - -/obj/item/melee/blood_magic/construction/afterattack(atom/target, mob/user, proximity_flag, click_parameters) - if(proximity_flag && iscultist(user)) - if(channeling) - to_chat(user, "You are already invoking twisted construction!") - return - var/turf/T = get_turf(target) - if(istype(target, /obj/item/stack/sheet/metal)) - var/obj/item/stack/sheet/candidate = target - if(candidate.use(METAL_TO_CONSTRUCT_SHELL_CONVERSION)) - uses-- - to_chat(user, "A dark cloud emanates from your hand and swirls around the metal, twisting it into a construct shell!") - new /obj/structure/constructshell(T) - SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) - else - to_chat(user, "You need [METAL_TO_CONSTRUCT_SHELL_CONVERSION] metal to produce a construct shell!") - return - else if(istype(target, /obj/item/stack/sheet/plasteel)) - var/obj/item/stack/sheet/plasteel/candidate = target - var/quantity = candidate.amount - if(candidate.use(quantity)) - uses -- - new /obj/item/stack/sheet/runed_metal(T,quantity) - to_chat(user, "A dark cloud emanates from you hand and swirls around the plasteel, transforming it into runed metal!") - SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) - else if(istype(target,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/candidate = target - if(candidate.mmi) - channeling = TRUE - user.visible_message("A dark cloud emanates from [user]'s hand and swirls around [candidate]!") - playsound(T, 'sound/machines/creaking.ogg', 80, TRUE) - var/prev_color = candidate.color - candidate.color = "black" - if(do_after(user, 90, target = candidate)) - candidate.emp_act(EMP_HEAVY) - var/list/constructs = list( - "Juggernaut" = image(icon = 'icons/mob/cult.dmi', icon_state = "juggernaut"), - "Wraith" = image(icon = 'icons/mob/cult.dmi', icon_state = "wraith"), - "Artificer" = image(icon = 'icons/mob/cult.dmi', icon_state = "artificer") - ) - var/construct_class = show_radial_menu(user, src, constructs, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) - if(!check_menu(user)) - return - if(QDELETED(candidate)) - channeling = FALSE - return - user.visible_message("The dark cloud recedes from what was formerly [candidate], revealing a\n [construct_class]!") - switch(construct_class) - if("Juggernaut") - makeNewConstruct(/mob/living/simple_animal/hostile/construct/juggernaut, candidate, user, 0, T) - if("Wraith") - makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith, candidate, user, 0, T) - if("Artificer") - makeNewConstruct(/mob/living/simple_animal/hostile/construct/artificer, candidate, user, 0, T) - else - return - uses-- - candidate.mmi = null - qdel(candidate) - channeling = FALSE - else - channeling = FALSE - candidate.color = prev_color - return - else - uses-- - to_chat(user, "A dark cloud emanates from you hand and swirls around [candidate] - twisting it into a construct shell!") - new /obj/structure/constructshell(T) - SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) - qdel(candidate) - else if(istype(target,/obj/machinery/door/airlock)) - channeling = TRUE - playsound(T, 'sound/machines/airlockforced.ogg', 50, TRUE) - do_sparks(5, TRUE, target) - if(do_after(user, 50, target = user)) - if(QDELETED(target)) - channeling = FALSE - return - target.narsie_act() - uses-- - user.visible_message("Black ribbons suddenly emanate from [user]'s hand and cling to the airlock - twisting and corrupting it!") - SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) - channeling = FALSE - else - channeling = FALSE - return - else - to_chat(user, "The spell will not work on [target]!") - return - ..() - -/obj/item/melee/blood_magic/construction/proc/check_menu(mob/user) - if(!istype(user)) - return FALSE - if(user.incapacitated() || !user.Adjacent(src)) - return FALSE - return TRUE - - -//Armor: Gives the target a basic cultist combat loadout -/obj/item/melee/blood_magic/armor - name = "Arming Aura" - desc = "Will equipt cult combat gear onto a cultist on contact." - color = "#33cc33" // green - -/obj/item/melee/blood_magic/armor/afterattack(atom/target, mob/living/carbon/user, proximity) - if(iscarbon(target) && proximity) - uses-- - var/mob/living/carbon/C = target - C.visible_message("Otherworldly armor suddenly appears on [C]!") - C.equip_to_slot_or_del(new /obj/item/clothing/under/color/black,ITEM_SLOT_ICLOTHING) - C.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/cultrobes/alt(user), ITEM_SLOT_OCLOTHING) - C.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), ITEM_SLOT_FEET) - C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), ITEM_SLOT_BACK) - if(C == user) - qdel(src) //Clears the hands - C.put_in_hands(new /obj/item/restraints/legcuffs/bola/cult(user)) - ..() - -/obj/item/melee/blood_magic/manipulator - name = "Blood Rite Aura" - desc = "Absorbs blood from anything you touch. Touching cultists and constructs can heal them. Use in-hand to cast an advanced rite." - color = "#7D1717" - -/obj/item/melee/blood_magic/manipulator/examine(mob/user) - . = ..() - . += "Blood spear, blood bolt barrage, and blood beam cost [BLOOD_SPEAR_COST], [BLOOD_BARRAGE_COST], and [BLOOD_BEAM_COST] charges respectively." - -/obj/item/melee/blood_magic/manipulator/afterattack(atom/target, mob/living/carbon/human/user, proximity) - if(proximity) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if(NOBLOOD in H.dna.species.species_traits) - to_chat(user,"Blood rites do not work on species with no blood!") - return - if(iscultist(H)) - if(H.stat == DEAD) - to_chat(user,"Only a revive rune can bring back the dead!") - return - if(H.blood_volume < BLOOD_VOLUME_SAFE) - var/restore_blood = BLOOD_VOLUME_SAFE - H.blood_volume - if(uses*2 < restore_blood) - H.blood_volume += uses*2 - to_chat(user,"You use the last of your blood rites to restore what blood you could!") - uses = 0 - return ..() - else - H.blood_volume = BLOOD_VOLUME_SAFE - uses -= round(restore_blood/2) - to_chat(user,"Your blood rites have restored [H == user ? "your" : "[H.p_their()]"] blood to safe levels!") - var/overall_damage = H.getBruteLoss() + H.getFireLoss() + H.getToxLoss() + H.getOxyLoss() - if(overall_damage == 0) - to_chat(user,"That cultist doesn't require healing!") - else - var/ratio = uses/overall_damage - if(H == user) - to_chat(user,"Your blood healing is far less efficient when used on yourself!") - ratio *= 0.35 // Healing is half as effective if you can't perform a full heal - uses -= round(overall_damage) // Healing is 65% more "expensive" even if you can still perform the full heal - if(ratio>1) - ratio = 1 - uses -= round(overall_damage) - H.visible_message("[H] is fully healed by [H==user ? "[H.p_their()]":"[H]'s"]'s blood magic!") - else - H.visible_message("[H] is partially healed by [H==user ? "[H.p_their()]":"[H]'s"] blood magic.") - uses = 0 - ratio *= -1 - H.adjustOxyLoss((overall_damage*ratio) * (H.getOxyLoss() / overall_damage), 0) - H.adjustToxLoss((overall_damage*ratio) * (H.getToxLoss() / overall_damage), 0) - H.adjustFireLoss((overall_damage*ratio) * (H.getFireLoss() / overall_damage), 0) - H.adjustBruteLoss((overall_damage*ratio) * (H.getBruteLoss() / overall_damage), 0) - H.updatehealth() - playsound(get_turf(H), 'sound/magic/staff_healing.ogg', 25) - new /obj/effect/temp_visual/cult/sparks(get_turf(H)) - user.Beam(H,icon_state="sendbeam",time=15) - else - if(H.stat == DEAD) - to_chat(user,"[H.p_their(TRUE)] blood has stopped flowing, you'll have to find another way to extract it.") - return - if(H.cultslurring) - to_chat(user,"[H.p_their(TRUE)] blood has been tainted by an even stronger form of blood magic, it's no use to us like this!") - return - if(H.blood_volume > BLOOD_VOLUME_SAFE) - H.blood_volume -= 100 - uses += 50 - user.Beam(H,icon_state="drainbeam",time=10) - playsound(get_turf(H), 'sound/magic/enter_blood.ogg', 50) - H.visible_message("[user] drains some of [H]'s blood!") - to_chat(user,"Your blood rite gains 50 charges from draining [H]'s blood.") - new /obj/effect/temp_visual/cult/sparks(get_turf(H)) - else - to_chat(user,"[H.p_theyre(TRUE)] missing too much blood - you cannot drain [H.p_them()] further!") - return - if(isconstruct(target)) - var/mob/living/simple_animal/M = target - var/missing = M.maxHealth - M.health - if(missing) - if(uses > missing) - M.adjustHealth(-missing) - M.visible_message("[M] is fully healed by [user]'s blood magic!") - uses -= missing - else - M.adjustHealth(-uses) - M.visible_message("[M] is partially healed by [user]'s blood magic!") - uses = 0 - playsound(get_turf(M), 'sound/magic/staff_healing.ogg', 25) - user.Beam(M,icon_state="sendbeam",time=10) - if(istype(target, /obj/effect/decal/cleanable/blood)) - blood_draw(target, user) - ..() - -/obj/item/melee/blood_magic/manipulator/proc/blood_draw(atom/target, mob/living/carbon/human/user) - var/temp = 0 - var/turf/T = get_turf(target) - if(T) - for(var/obj/effect/decal/cleanable/blood/B in view(T, 2)) - if(B.blood_state == BLOOD_STATE_HUMAN) - if(B.bloodiness == 100) //Bonus for "pristine" bloodpools, also to prevent cheese with footprint spam - temp += 30 - else - temp += max((B.bloodiness**2)/800,1) - new /obj/effect/temp_visual/cult/turf/floor(get_turf(B)) - qdel(B) - if(temp) - user.Beam(T,icon_state="drainbeam",time=15) - new /obj/effect/temp_visual/cult/sparks(get_turf(user)) - playsound(T, 'sound/magic/enter_blood.ogg', 50) - to_chat(user, "Your blood rite has gained [round(temp)] charge\s from blood sources around you!") - uses += max(1, round(temp)) - -/obj/item/melee/blood_magic/manipulator/attack_self(mob/living/user) - if(iscultist(user)) - var/list/options = list("Blood Spear (150)", "Blood Bolt Barrage (300)", "Blood Beam (500)") - var/choice = input(user, "Choose a greater blood rite...", "Greater Blood Rites") as null|anything in options - if(!choice) - to_chat(user, "You decide against conducting a greater blood rite.") - return - switch(choice) - if("Blood Spear (150)") - if(uses < BLOOD_SPEAR_COST) - to_chat(user, "You need [BLOOD_SPEAR_COST] charges to perform this rite.") - else - uses -= BLOOD_SPEAR_COST - var/turf/T = get_turf(user) - qdel(src) - var/datum/action/innate/cult/spear/S = new(user) - var/obj/item/cult_spear/rite = new(T) - S.Grant(user, rite) - rite.spear_act = S - if(user.put_in_hands(rite)) - to_chat(user, "A [rite.name] appears in your hand!") - else - user.visible_message( - "A [rite.name] appears at [user]'s feet!", \ - "A [rite.name] materializes at your feet.") - if("Blood Bolt Barrage (300)") - if(uses < BLOOD_BARRAGE_COST) - to_chat(user, "You need [BLOOD_BARRAGE_COST] charges to perform this rite.") - else - var/obj/rite = new /obj/item/gun/ballistic/rifle/illestren/enchanted/arcane_barrage/blood() - uses -= BLOOD_BARRAGE_COST - qdel(src) - if(user.put_in_hands(rite)) - to_chat(user, "Your hands glow with power!") - else - to_chat(user, "You need a free hand for this rite!") - qdel(rite) - if("Blood Beam (500)") - if(uses < BLOOD_BEAM_COST) - to_chat(user, "You need [BLOOD_BEAM_COST] charges to perform this rite.") - else - var/obj/rite = new /obj/item/blood_beam() - uses -= BLOOD_BEAM_COST - qdel(src) - if(user.put_in_hands(rite)) - to_chat(user, "Your hands glow with POWER OVERWHELMING!!!") - else - to_chat(user, "You need a free hand for this rite!") - qdel(rite) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm deleted file mode 100644 index ee36ad0d6d1b..000000000000 --- a/code/modules/antagonists/cult/cult.dm +++ /dev/null @@ -1,407 +0,0 @@ -#define SUMMON_POSSIBILITIES 3 -#define CULT_VICTORY 1 -#define CULT_LOSS 0 -#define CULT_NARSIE_KILLED -1 - -/datum/antagonist/cult - name = "Cultist" - roundend_category = "cultists" - antagpanel_category = "Cult" - antag_moodlet = /datum/mood_event/cult - var/datum/action/innate/cult/comm/communion = new - var/datum/action/innate/cult/mastervote/vote = new - var/datum/action/innate/cult/blood_magic/magic = new - job_rank = ROLE_CULTIST - antag_hud_type = ANTAG_HUD_CULT - antag_hud_name = "cult" - var/ignore_implant = FALSE - var/give_equipment = FALSE - var/datum/team/cult/cult_team - - -/datum/antagonist/cult/get_team() - return cult_team - -/datum/antagonist/cult/create_team(datum/team/cult/new_team) - if(!new_team) - //todo remove this and allow admin buttons to create more than one cult - for(var/datum/antagonist/cult/H in GLOB.antagonists) - if(!H.owner) - continue - if(H.cult_team) - cult_team = H.cult_team - return - cult_team = new /datum/team/cult - cult_team.setup_objectives() - return - if(!istype(new_team)) - stack_trace("Wrong team type passed to [type] initialization.") - cult_team = new_team - -/datum/antagonist/cult/proc/add_objectives() - objectives |= cult_team.objectives - -/datum/antagonist/cult/Destroy() - QDEL_NULL(communion) - QDEL_NULL(vote) - return ..() - -/datum/antagonist/cult/can_be_owned(datum/mind/new_owner) - . = ..() - if(. && !ignore_implant) - . = is_convertable_to_cult(new_owner.current,cult_team) - -/datum/antagonist/cult/greet() - to_chat(owner, "You are a member of the cult!") - owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/bloodcult.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE)//subject to change - owner.announce_objectives() - -/datum/antagonist/cult/on_gain() - . = ..() - var/mob/living/current = owner.current - add_objectives() - if(give_equipment) - equip_cultist(TRUE) - SSticker.mode.cult += owner // Only add after they've been given objectives - current.log_message("has been converted to the cult of Nar'Sie!", LOG_ATTACK, color="#960000") - - if(cult_team.blood_target && cult_team.blood_target_image && current.client) - current.client.images += cult_team.blood_target_image - - -/datum/antagonist/cult/proc/equip_cultist(metal=TRUE) - var/mob/living/carbon/H = owner.current - if(!istype(H)) - return - if(metal) - . += cult_give_item(/obj/item/stack/sheet/runed_metal/ten, H) - to_chat(owner, "These will help you jumpstart a cult of your own in this sector. Use them well, and remember - you are not the only one.") - - -/datum/antagonist/cult/proc/cult_give_item(obj/item/item_path, mob/living/carbon/human/mob) - var/list/slots = list( - "backpack" = ITEM_SLOT_BACKPACK, - "left pocket" = ITEM_SLOT_LPOCKET, - "right pocket" = ITEM_SLOT_RPOCKET - ) - - var/T = new item_path(mob) - var/item_name = initial(item_path.name) - var/where = mob.equip_in_one_of_slots(T, slots) - if(!where) - to_chat(mob, "Unfortunately, you weren't able to get a [item_name]. This is very bad and you should adminhelp immediately (press F1).") - return 0 - else - to_chat(mob, "You have a [item_name] in your [where].") - if(where == "backpack") - SEND_SIGNAL(mob.back, COMSIG_TRY_STORAGE_SHOW, mob) - return TRUE - -/datum/antagonist/cult/apply_innate_effects(mob/living/mob_override) - . = ..() - var/mob/living/current = owner.current - if(mob_override) - current = mob_override - add_antag_hud(antag_hud_type, antag_hud_name, current) - handle_clown_mutation(current, mob_override ? null : "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") - current.faction |= "cult" - current.grant_language(/datum/language/narsie, TRUE, TRUE, LANGUAGE_CULTIST) - if(!cult_team.cult_master) - vote.Grant(current) - communion.Grant(current) - if(ishuman(current)) - magic.Grant(current) - current.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense) - if(cult_team.cult_risen) - cult_team.rise(current) - if(cult_team.cult_ascendent) - cult_team.ascend(current) - -/datum/antagonist/cult/remove_innate_effects(mob/living/mob_override) - . = ..() - var/mob/living/current = owner.current - if(mob_override) - current = mob_override - remove_antag_hud(antag_hud_type, current) - handle_clown_mutation(current, removing = FALSE) - current.faction -= "cult" - current.remove_language(/datum/language/narsie, TRUE, TRUE, LANGUAGE_CULTIST) - vote.Remove(current) - communion.Remove(current) - magic.Remove(current) - current.clear_alert("bloodsense") - if(ishuman(current)) - var/mob/living/carbon/human/H = current - H.eye_color = initial(H.eye_color) - H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) - REMOVE_TRAIT(H, CULT_EYES, null) - H.remove_overlay(HALO_LAYER) - H.update_body() - -/datum/antagonist/cult/on_removal() - SSticker.mode.cult -= owner - if(!silent) - owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just reverted to [owner.current.p_their()] old faith!", null, null, null, owner.current) - to_chat(owner.current, "An unfamiliar white light flashes through your mind, cleansing the taint of the Geometer and all your memories as her servant.") - owner.current.log_message("has renounced the cult of Nar'Sie!", LOG_ATTACK, color="#960000") - if(cult_team.blood_target && cult_team.blood_target_image && owner.current.client) - owner.current.client.images -= cult_team.blood_target_image - . = ..() - -/datum/antagonist/cult/admin_add(datum/mind/new_owner,mob/admin) - give_equipment = FALSE - new_owner.add_antag_datum(src) - message_admins("[key_name_admin(admin)] has cult'ed [key_name_admin(new_owner)].") - log_admin("[key_name(admin)] has cult'ed [key_name(new_owner)].") - -/datum/antagonist/cult/admin_remove(mob/user) - message_admins("[key_name_admin(user)] has decult'ed [key_name_admin(owner)].") - log_admin("[key_name(user)] has decult'ed [key_name(owner)].") - SSticker.mode.remove_cultist(owner,silent=TRUE) //disgusting - -/datum/antagonist/cult/get_admin_commands() - . = ..() - .["Dagger"] = CALLBACK(src, PROC_REF(admin_give_dagger)) - .["Dagger and Metal"] = CALLBACK(src, PROC_REF(admin_give_metal)) - .["Remove Dagger and Metal"] = CALLBACK(src, PROC_REF(admin_take_all)) - -/datum/antagonist/cult/proc/admin_give_dagger(mob/admin) - if(!equip_cultist(metal=FALSE)) - to_chat(admin, "Spawning dagger failed!") - -/datum/antagonist/cult/proc/admin_give_metal(mob/admin) - if (!equip_cultist(metal=TRUE)) - to_chat(admin, "Spawning runed metal failed!") - -/datum/antagonist/cult/proc/admin_take_all(mob/admin) - var/mob/living/current = owner.current - for(var/o in current.GetAllContents()) - if(istype(o, /obj/item/stack/sheet/runed_metal)) - qdel(o) - -/datum/antagonist/cult/master - ignore_implant = TRUE - show_in_antagpanel = FALSE //Feel free to add this later - var/datum/action/innate/cult/master/finalreck/reckoning = new - var/datum/action/innate/cult/master/cultmark/bloodmark = new - var/datum/action/innate/cult/master/pulse/throwing = new - -/datum/antagonist/cult/master/Destroy() - QDEL_NULL(reckoning) - QDEL_NULL(bloodmark) - QDEL_NULL(throwing) - return ..() - -/datum/antagonist/cult/master/on_gain() - . = ..() - var/mob/living/current = owner.current - set_antag_hud(current, "cultmaster") - -/datum/antagonist/cult/master/greet() - to_chat(owner.current, "You are the cult's Master. As the cult's Master, you have a unique title and loud voice when communicating, are capable of marking \ - targets, such as a location or a noncultist, to direct the cult to them, and, finally, you are capable of summoning the entire living cult to your location once.") - to_chat(owner.current, "Use these abilities to direct the cult to victory at any cost.") - -/datum/antagonist/cult/master/apply_innate_effects(mob/living/mob_override) - . = ..() - var/mob/living/current = owner.current - if(mob_override) - current = mob_override - if(!cult_team.reckoning_complete) - reckoning.Grant(current) - bloodmark.Grant(current) - throwing.Grant(current) - current.update_action_buttons_icon() - current.apply_status_effect(/datum/status_effect/cult_master) - if(cult_team.cult_risen) - cult_team.rise(current) - if(cult_team.cult_ascendent) - cult_team.ascend(current) - -/datum/antagonist/cult/master/remove_innate_effects(mob/living/mob_override) - . = ..() - var/mob/living/current = owner.current - if(mob_override) - current = mob_override - reckoning.Remove(current) - bloodmark.Remove(current) - throwing.Remove(current) - current.update_action_buttons_icon() - current.remove_status_effect(/datum/status_effect/cult_master) - - if(ishuman(current)) - var/mob/living/carbon/human/H = current - H.eye_color = initial(H.eye_color) - H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) - REMOVE_TRAIT(H, CULT_EYES, null) - H.remove_overlay(HALO_LAYER) - H.update_body() - -/datum/team/cult - name = "Cult" - - var/blood_target - var/image/blood_target_image - var/blood_target_reset_timer - - var/cult_vote_called = FALSE - var/mob/living/cult_master - var/reckoning_complete = FALSE - var/cult_risen = FALSE - var/cult_ascendent = FALSE - -/datum/team/cult/proc/check_size() - if(cult_ascendent) - return - var/alive = 0 - var/cultplayers = 0 - for(var/I in GLOB.player_list) - var/mob/M = I - if(M.stat != DEAD) - if(iscultist(M)) - ++cultplayers - else - ++alive - var/ratio = cultplayers/alive - if(ratio > CULT_RISEN && !cult_risen) - for(var/datum/mind/B in members) - if(B.current) - SEND_SOUND(B.current, 'sound/hallucinations/i_see_you2.ogg') - to_chat(B.current, "The veil weakens as your cult grows, your eyes begin to glow...") - addtimer(CALLBACK(src, PROC_REF(rise), B.current), 200) - cult_risen = TRUE - - if(ratio > CULT_ASCENDENT && !cult_ascendent) - for(var/datum/mind/B in members) - if(B.current) - SEND_SOUND(B.current, 'sound/hallucinations/im_here1.ogg') - to_chat(B.current, "Your cult is ascendent and the red harvest approaches - you cannot hide your true nature for much longer!!") - addtimer(CALLBACK(src, PROC_REF(ascend), B.current), 200) - cult_ascendent = TRUE - - -/datum/team/cult/proc/rise(cultist) - if(ishuman(cultist)) - var/mob/living/carbon/human/H = cultist - H.eye_color = "f00" - H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) - ADD_TRAIT(H, CULT_EYES, CULT_TRAIT) - H.update_body() - -/datum/team/cult/proc/ascend(cultist) - if(ishuman(cultist)) - var/mob/living/carbon/human/H = cultist - new /obj/effect/temp_visual/cult/sparks(get_turf(H), H.dir) - var/istate = pick("halo1","halo2","halo3","halo4","halo5","halo6") - var/mutable_appearance/new_halo_overlay = mutable_appearance('icons/effects/32x64.dmi', istate, -HALO_LAYER) - H.overlays_standing[HALO_LAYER] = new_halo_overlay - H.apply_overlay(HALO_LAYER) - -/datum/objective/sacrifice/find_target(dupe_search_range) - if(!istype(team, /datum/team/cult)) - return - var/datum/team/cult/C = team - var/list/target_candidates = list() - for(var/mob/living/carbon/human/player in GLOB.player_list) - if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && !is_convertable_to_cult(player) && player.stat != DEAD) - target_candidates += player.mind - if(target_candidates.len == 0) - message_admins("Cult Sacrifice: Could not find unconvertible target, checking for convertible target.") - for(var/mob/living/carbon/human/player in GLOB.player_list) - if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && player.stat != DEAD) - target_candidates += player.mind - listclearnulls(target_candidates) - if(LAZYLEN(target_candidates)) - target = pick(target_candidates) - update_explanation_text() - else - message_admins("Cult Sacrifice: Could not find unconvertible or convertible target. WELP!") - for(var/datum/mind/M in C.members) - if(M.current) - M.current.clear_alert("bloodsense") - M.current.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense) - -/datum/team/cult/proc/setup_objectives() - var/datum/objective/sacrifice/sac_objective = new - sac_objective.team = src - sac_objective.find_target() - objectives += sac_objective - - var/datum/objective/eldergod/summon_objective = new - summon_objective.team = src - objectives += summon_objective - - -/datum/objective/sacrifice - var/sacced = FALSE - var/sac_image - -/datum/objective/sacrifice/check_completion() - return sacced || completed - -/datum/objective/sacrifice/update_explanation_text() - if(target) - explanation_text = "Sacrifice [target], the [target.assigned_role] via invoking an Offer rune with [target.p_them()] on it and three acolytes around it." - else - explanation_text = "The veil has already been weakened here, proceed to the final objective." - -/datum/objective/eldergod - var/summoned = FALSE - var/killed = FALSE - var/list/summon_spots = list() - -/datum/objective/eldergod/New() - ..() - var/sanity = 0 - while(summon_spots.len < SUMMON_POSSIBILITIES && sanity < 100) - var/area/summon_area = pick(GLOB.sortedAreas - summon_spots) - if(summon_area && (summon_area.area_flags & VALID_TERRITORY)) - summon_spots += summon_area - sanity++ - update_explanation_text() - -/datum/objective/eldergod/update_explanation_text() - explanation_text = "Summon Nar'Sie by invoking the rune 'Summon Nar'Sie'. The summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin." - -/datum/objective/eldergod/check_completion() - if(killed) - return CULT_NARSIE_KILLED // You failed so hard that even the code went backwards. - return summoned || completed - -/datum/team/cult/proc/check_cult_victory() - for(var/datum/objective/O in objectives) - if(O.check_completion() == CULT_NARSIE_KILLED) - return CULT_NARSIE_KILLED - else if(!O.check_completion()) - return CULT_LOSS - return CULT_VICTORY - -/datum/team/cult/roundend_report() - var/list/parts = list() - var/victory = check_cult_victory() - - if(victory == CULT_NARSIE_KILLED) // Epic failure, you summoned your god and then someone killed it. - parts += "Nar'sie has been killed! The cult will haunt the universe no longer!" - else if(victory) - parts += "The cult has succeeded! Nar'Sie has snuffed out another torch in the void!" - else - parts += "The staff managed to stop the cult! Dark words and heresy are no match for Nanotrasen's finest!" - - if(objectives.len) - parts += "The cultists' objectives were:" - var/count = 1 - for(var/datum/objective/objective in objectives) - if(objective.check_completion()) - parts += "Objective #[count]: [objective.explanation_text] Success!" - else - parts += "Objective #[count]: [objective.explanation_text] Fail." - count++ - - if(members.len) - parts += "The cultists were:" - parts += printplayerlist(members) - - return "

[parts.Join("
")]
" - -/datum/team/cult/is_gamemode_hero() - return SSticker.mode.name == "cult" diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm deleted file mode 100644 index 0c070e8e423f..000000000000 --- a/code/modules/antagonists/cult/cult_comms.dm +++ /dev/null @@ -1,461 +0,0 @@ -// Contains cult communion, guide, and cult master abilities - -/datum/action/innate/cult - icon_icon = 'icons/mob/actions/actions_cult.dmi' - background_icon_state = "bg_demon" - buttontooltipstyle = "cult" - check_flags = AB_CHECK_HANDS_BLOCKED|AB_CHECK_IMMOBILE|AB_CHECK_CONSCIOUS - -/datum/action/innate/cult/IsAvailable() - if(!iscultist(owner)) - return FALSE - return ..() - -/datum/action/innate/cult/comm - name = "Communion" - desc = "Whispered words that all cultists can hear.
Warning:Nearby non-cultists can still hear you." - button_icon_state = "cult_comms" - -/datum/action/innate/cult/comm/Activate() - var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "") - if(!input || !IsAvailable()) - return - if(CHAT_FILTER_CHECK(input)) - to_chat(usr, "You cannot send a message that contains a word prohibited in IC chat!") - return - cultist_commune(usr, input) - -/datum/action/innate/cult/comm/proc/cultist_commune(mob/living/user, message) - var/my_message - if(!message) - return - user.whisper("O bidai nabora se[pick("'","`")]sma!", language = /datum/language/common) - user.whisper(html_decode(message)) - var/title = "Acolyte" - var/span = "cult italic" - if(user.mind && user.mind.has_antag_datum(/datum/antagonist/cult/master)) - span = "cultlarge" - title = "Master" - else if(!ishuman(user)) - title = "Construct" - my_message = "[title] [findtextEx(user.name, user.real_name) ? user.name : "[user.real_name] (as [user.name])"]: [message]" - for(var/i in GLOB.player_list) - var/mob/M = i - if(iscultist(M)) - to_chat(M, my_message) - else if(M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, user) - to_chat(M, "[link] [my_message]") - - user.log_talk(message, LOG_SAY, tag="cult") - -/datum/action/innate/cult/comm/spirit - name = "Spiritual Communion" - desc = "Conveys a message from the spirit realm that all cultists can hear." - -/datum/action/innate/cult/comm/spirit/IsAvailable() - if(iscultist(owner.mind.current)) - return TRUE - -/datum/action/innate/cult/comm/spirit/cultist_commune(mob/living/user, message) - var/my_message - if(!message) - return - my_message = "The [user.name]: [message]" - for(var/i in GLOB.player_list) - var/mob/M = i - if(iscultist(M)) - to_chat(M, my_message) - else if(M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, user) - to_chat(M, "[link] [my_message]") - -/datum/action/innate/cult/mastervote - name = "Assert Leadership" - button_icon_state = "cultvote" - -/datum/action/innate/cult/mastervote/IsAvailable() - var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(!C || C.cult_team.cult_vote_called || !ishuman(owner)) - return FALSE - return ..() - -/datum/action/innate/cult/mastervote/Activate() - var/choice = alert(owner, "The mantle of leadership is heavy. Success in this role requires an expert level of communication and experience. Are you sure?",, "Yes", "No") - if(choice == "Yes" && IsAvailable()) - var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - pollCultists(owner,C.cult_team) - -/proc/pollCultists(mob/living/Nominee,datum/team/cult/team) //Cult Master Poll - if(world.time < CULT_POLL_WAIT) - to_chat(Nominee, "It would be premature to select a leader while everyone is still settling in, try again in [DisplayTimeText(CULT_POLL_WAIT-world.time)].") - return - team.cult_vote_called = TRUE //somebody's trying to be a master, make sure we don't let anyone else try - for(var/datum/mind/B in team.members) - if(B.current) - B.current.update_action_buttons_icon() - if(!B.current.incapacitated()) - SEND_SOUND(B.current, 'sound/hallucinations/im_here1.ogg') - to_chat(B.current, "Acolyte [Nominee] has asserted that [Nominee.p_theyre()] worthy of leading the cult. A vote will be called shortly.") - sleep(100) - var/list/asked_cultists = list() - for(var/datum/mind/B in team.members) - if(B.current && B.current != Nominee && !B.current.incapacitated()) - SEND_SOUND(B.current, 'sound/magic/exit_blood.ogg') - asked_cultists += B.current - var/list/yes_voters = pollCandidates("[Nominee] seeks to lead your cult, do you support [Nominee.p_them()]?", poll_time = 300, group = asked_cultists) - if(QDELETED(Nominee) || Nominee.incapacitated()) - team.cult_vote_called = FALSE - for(var/datum/mind/B in team.members) - if(B.current) - B.current.update_action_buttons_icon() - if(!B.current.incapacitated()) - to_chat(B.current,"[Nominee] has died in the process of attempting to win the cult's support!") - return FALSE - if(!Nominee.mind) - team.cult_vote_called = FALSE - for(var/datum/mind/B in team.members) - if(B.current) - B.current.update_action_buttons_icon() - if(!B.current.incapacitated()) - to_chat(B.current,"[Nominee] has gone catatonic in the process of attempting to win the cult's support!") - return FALSE - if(LAZYLEN(yes_voters) <= LAZYLEN(asked_cultists) * 0.5) - team.cult_vote_called = FALSE - for(var/datum/mind/B in team.members) - if(B.current) - B.current.update_action_buttons_icon() - if(!B.current.incapacitated()) - to_chat(B.current, "[Nominee] could not win the cult's support and shall continue to serve as an acolyte.") - return FALSE - team.cult_master = Nominee - SSticker.mode.remove_cultist(Nominee.mind, TRUE) - Nominee.mind.add_antag_datum(/datum/antagonist/cult/master) - for(var/datum/mind/B in team.members) - if(B.current) - for(var/datum/action/innate/cult/mastervote/vote in B.current.actions) - vote.Remove(B.current) - if(!B.current.incapacitated()) - to_chat(B.current,"[Nominee] has won the cult's support and is now their master. Follow [Nominee.p_their()] orders to the best of your ability!") - return TRUE - -/datum/action/innate/cult/master/IsAvailable() - if(!owner.mind || !owner.mind.has_antag_datum(/datum/antagonist/cult/master) || GLOB.cult_narsie) - return 0 - return ..() - -/datum/action/innate/cult/master/finalreck - name = "Final Reckoning" - desc = "A single-use spell that brings the entire cult to the master's location." - button_icon_state = "sintouch" - -/datum/action/innate/cult/master/finalreck/Activate() - var/datum/antagonist/cult/antag = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(!antag) - return - for(var/i in 1 to 4) - chant(i) - var/list/destinations = list() - for(var/turf/T in orange(1, owner)) - if(!T.is_blocked_turf(TRUE)) - destinations += T - if(!LAZYLEN(destinations)) - to_chat(owner, "You need more space to summon your cult!") - return - if(do_after(owner, 30, target = owner)) - for(var/datum/mind/B in antag.cult_team.members) - if(B.current && B.current.stat != DEAD) - var/turf/mobloc = get_turf(B.current) - switch(i) - if(1) - new /obj/effect/temp_visual/cult/sparks(mobloc, B.current.dir) - playsound(mobloc, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - if(2) - new /obj/effect/temp_visual/dir_setting/cult/phase/out(mobloc, B.current.dir) - playsound(mobloc, "sparks", 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - if(3) - new /obj/effect/temp_visual/dir_setting/cult/phase(mobloc, B.current.dir) - playsound(mobloc, "sparks", 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - if(4) - playsound(mobloc, 'sound/magic/exit_blood.ogg', 100, TRUE) - if(B.current != owner) - var/turf/final = pick(destinations) - if(istype(B.current.loc, /obj/item/soulstone)) - var/obj/item/soulstone/S = B.current.loc - S.release_shades(owner) - B.current.setDir(SOUTH) - new /obj/effect/temp_visual/cult/blood(final) - addtimer(CALLBACK(B.current, TYPE_PROC_REF(/mob, reckon), final), 10) - else - return - antag.cult_team.reckoning_complete = TRUE - Remove(owner) - -/mob/proc/reckon(turf/final) - new /obj/effect/temp_visual/cult/blood/out(get_turf(src)) - forceMove(final) - -/datum/action/innate/cult/master/finalreck/proc/chant(chant_number) - switch(chant_number) - if(1) - owner.say("C'arta forbici!", language = /datum/language/common, forced = "cult invocation") - if(2) - owner.say("Pleggh e'ntrath!", language = /datum/language/common, forced = "cult invocation") - playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 50, TRUE) - if(3) - owner.say("Barhah hra zar'garis!", language = /datum/language/common, forced = "cult invocation") - playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 75, TRUE) - if(4) - owner.say("N'ath reth sh'yro eth d'rekkathnor!!!", language = /datum/language/common, forced = "cult invocation") - playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 100, TRUE) - -/datum/action/innate/cult/master/cultmark - name = "Mark Target" - desc = "Marks a target for the cult." - button_icon_state = "cult_mark" - var/obj/effect/proc_holder/cultmark/CM - var/cooldown = 0 - var/base_cooldown = 1200 - -/datum/action/innate/cult/master/cultmark/New(Target) - CM = new() - CM.attached_action = src - ..() - -/datum/action/innate/cult/master/cultmark/IsAvailable() - if(cooldown > world.time) - if(!CM.active) - to_chat(owner, "You need to wait [DisplayTimeText(cooldown - world.time)] before you can mark another target!") - return FALSE - return ..() - -/datum/action/innate/cult/master/cultmark/Destroy() - QDEL_NULL(CM) - return ..() - -/datum/action/innate/cult/master/cultmark/Activate() - CM.toggle(owner) //the important bit - return TRUE - -/obj/effect/proc_holder/cultmark - active = FALSE - ranged_mousepointer = 'icons/effects/mouse_pointers/cult_target.dmi' - var/datum/action/innate/cult/master/cultmark/attached_action - -/obj/effect/proc_holder/cultmark/Destroy() - attached_action = null - return ..() - -/obj/effect/proc_holder/cultmark/proc/toggle(mob/user) - if(active) - remove_ranged_ability("You cease the marking ritual.") - else - add_ranged_ability(user, "You prepare to mark a target for your cult...") - -/obj/effect/proc_holder/cultmark/InterceptClickOn(mob/living/caller, params, atom/target) - if(..()) - return - if(ranged_ability_user.incapacitated()) - remove_ranged_ability() - return - var/turf/T = get_turf(ranged_ability_user) - if(!isturf(T)) - return FALSE - - var/datum/antagonist/cult/C = caller.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - - if(target in view(7, get_turf(ranged_ability_user))) - if(C.cult_team.blood_target) - to_chat(ranged_ability_user, "The cult has already designated a target!") - return FALSE - C.cult_team.blood_target = target - var/area/A = get_area(target) - attached_action.cooldown = world.time + attached_action.base_cooldown - addtimer(CALLBACK(attached_action.owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), attached_action.base_cooldown) - C.cult_team.blood_target_image = image('icons/effects/mouse_pointers/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER) - C.cult_team.blood_target_image.appearance_flags = RESET_COLOR - C.cult_team.blood_target_image.pixel_x = -target.pixel_x - C.cult_team.blood_target_image.pixel_y = -target.pixel_y - for(var/datum/mind/B in SSticker.mode.cult) - if(B.current && B.current.stat != DEAD && B.current.client) - to_chat(B.current, "[ranged_ability_user] has marked [C.cult_team.blood_target] in the [A.name] as the cult's top priority, get there immediately!") - SEND_SOUND(B.current, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) - B.current.client.images += C.cult_team.blood_target_image - attached_action.owner.update_action_buttons_icon() - remove_ranged_ability("The marking rite is complete! It will last for 90 seconds.") - C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(reset_blood_target),C.cult_team), 900, TIMER_STOPPABLE) - return TRUE - return FALSE - -/proc/reset_blood_target(datum/team/cult/team) - for(var/datum/mind/B in team.members) - if(B.current && B.current.stat != DEAD && B.current.client) - if(team.blood_target) - to_chat(B.current,"The blood mark has expired!") - B.current.client.images -= team.blood_target_image - QDEL_NULL(team.blood_target_image) - team.blood_target = null - - -/datum/action/innate/cult/master/cultmark/ghost - name = "Mark a Blood Target for the Cult" - desc = "Marks a target for the entire cult to track." - -/datum/action/innate/cult/master/cultmark/ghost/IsAvailable() - if(istype(owner, /mob/dead/observer) && iscultist(owner.mind.current)) - return TRUE - else - qdel(src) - -/datum/action/innate/cult/ghostmark //Ghost version - name = "Blood Mark your Target" - desc = "Marks whatever you are orbitting - for the entire cult to track." - button_icon_state = "cult_mark" - var/tracking = FALSE - var/cooldown = 0 - var/base_cooldown = 600 - -/datum/action/innate/cult/ghostmark/IsAvailable() - if(istype(owner, /mob/dead/observer) && iscultist(owner.mind.current)) - return TRUE - else - qdel(src) - -/datum/action/innate/cult/ghostmark/proc/reset_button() - if(owner) - name = "Blood Mark your Target" - desc = "Marks whatever you are orbitting - for the entire cult to track." - button_icon_state = "cult_mark" - owner.update_action_buttons_icon() - SEND_SOUND(owner, 'sound/magic/enter_blood.ogg') - to_chat(owner,"Your previous mark is gone - you are now ready to create a new blood mark.") - -/datum/action/innate/cult/ghostmark/Activate() - var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(C.cult_team.blood_target) - if(cooldown>world.time) - reset_blood_target(C.cult_team) - to_chat(owner, "You have cleared the cult's blood target!") - deltimer(C.cult_team.blood_target_reset_timer) - return - else - to_chat(owner, "The cult has already designated a target!") - return - if(cooldown>world.time) - to_chat(owner, "You aren't ready to place another blood mark yet!") - return - target = owner.orbiting?.parent || get_turf(owner) - if(!target) - return - C.cult_team.blood_target = target - var/area/A = get_area(target) - cooldown = world.time + base_cooldown - addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), base_cooldown) - C.cult_team.blood_target_image = image('icons/effects/mouse_pointers/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER) - C.cult_team.blood_target_image.appearance_flags = RESET_COLOR - C.cult_team.blood_target_image.pixel_x = -target.pixel_x - C.cult_team.blood_target_image.pixel_y = -target.pixel_y - SEND_SOUND(owner, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) - owner.client.images += C.cult_team.blood_target_image - for(var/datum/mind/B in SSticker.mode.cult) - if(B.current && B.current.stat != DEAD && B.current.client) - to_chat(B.current, "[owner] has marked [C.cult_team.blood_target] in the [A.name] as the cult's top priority, get there immediately!") - SEND_SOUND(B.current, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) - B.current.client.images += C.cult_team.blood_target_image - to_chat(owner,"You have marked the [target] for the cult! It will last for [DisplayTimeText(base_cooldown)].") - name = "Clear the Blood Mark" - desc = "Remove the Blood Mark you previously set." - button_icon_state = "emp" - owner.update_action_buttons_icon() - C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(reset_blood_target),C.cult_team), base_cooldown, TIMER_STOPPABLE) - addtimer(CALLBACK(src, PROC_REF(reset_button)), base_cooldown) - - -//////// ELDRITCH PULSE ///////// - - - -/datum/action/innate/cult/master/pulse - name = "Eldritch Pulse" - desc = "Seize upon a fellow cultist or cult structure and teleport it to a nearby location." - icon_icon = 'icons/mob/actions/actions_spells.dmi' - button_icon_state = "arcane_barrage" - var/obj/effect/proc_holder/pulse/PM - var/cooldown = 0 - var/base_cooldown = 150 - var/throwing = FALSE - var/mob/living/throwee - -/datum/action/innate/cult/master/pulse/New() - PM = new() - PM.attached_action = src - ..() - -/datum/action/innate/cult/master/pulse/IsAvailable() - if(!owner.mind || !owner.mind.has_antag_datum(/datum/antagonist/cult/master)) - return FALSE - if(cooldown > world.time) - if(!PM.active) - to_chat(owner, "You need to wait [DisplayTimeText(cooldown - world.time)] before you can pulse again!") - return FALSE - return ..() - -/datum/action/innate/cult/master/pulse/Destroy() - PM.attached_action = null //What the fuck is even going on here. - QDEL_NULL(PM) - return ..() - - -/datum/action/innate/cult/master/pulse/Activate() - PM.toggle(owner) //the important bit - return TRUE - -/obj/effect/proc_holder/pulse - active = FALSE - ranged_mousepointer = 'icons/effects/mouse_pointers/throw_target.dmi' - var/datum/action/innate/cult/master/pulse/attached_action - -/obj/effect/proc_holder/pulse/Destroy() - attached_action = null - return ..() - - -/obj/effect/proc_holder/pulse/proc/toggle(mob/user) - if(active) - remove_ranged_ability("You cease your preparations...") - attached_action.throwing = FALSE - else - add_ranged_ability(user, "You prepare to tear through the fabric of reality...") - -/obj/effect/proc_holder/pulse/InterceptClickOn(mob/living/caller, params, atom/target) - if(..()) - return - if(ranged_ability_user.incapacitated()) - remove_ranged_ability() - return - var/turf/T = get_turf(ranged_ability_user) - if(!isturf(T)) - return FALSE - if(target in view(7, get_turf(ranged_ability_user))) - if((!(iscultist(target) || istype(target, /obj/structure/destructible/cult)) || target == caller) && !(attached_action.throwing)) - return - if(!attached_action.throwing) - attached_action.throwing = TRUE - attached_action.throwee = target - SEND_SOUND(ranged_ability_user, sound('sound/weapons/thudswoosh.ogg')) - to_chat(ranged_ability_user,"You reach through the veil with your mind's eye and seize [target]!") - return - else - new /obj/effect/temp_visual/cult/sparks(get_turf(attached_action.throwee), ranged_ability_user.dir) - var/distance = get_dist(attached_action.throwee, target) - if(distance >= 16) - return - playsound(target,'sound/magic/exit_blood.ogg') - attached_action.throwee.Beam(target,icon_state="sendbeam",time=4) - attached_action.throwee.forceMove(get_turf(target)) - new /obj/effect/temp_visual/cult/sparks(get_turf(target), ranged_ability_user.dir) - attached_action.throwing = FALSE - attached_action.cooldown = world.time + attached_action.base_cooldown - remove_ranged_ability("A pulse of blood magic surges through you as you shift [attached_action.throwee] through time and space.") - caller.update_action_buttons_icon() - addtimer(CALLBACK(caller, TYPE_PROC_REF(/mob, update_action_buttons_icon)), attached_action.base_cooldown) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm deleted file mode 100644 index 0124ec2b9a49..000000000000 --- a/code/modules/antagonists/cult/cult_items.dm +++ /dev/null @@ -1,709 +0,0 @@ -/obj/item/tome - name = "arcane tome" - desc = "An old, dusty tome with frayed edges and a sinister-looking cover." - icon_state ="tome" - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - -/datum/action/innate/dash/cult - name = "Rend the Veil" - desc = "Use the sword to shear open the flimsy fabric of this reality and teleport to your target." - icon_icon = 'icons/mob/actions/actions_cult.dmi' - button_icon_state = "phaseshift" - dash_sound = 'sound/magic/enter_blood.ogg' - recharge_sound = 'sound/magic/exit_blood.ogg' - beam_effect = "sendbeam" - phasein = /obj/effect/temp_visual/dir_setting/cult/phase - phaseout = /obj/effect/temp_visual/dir_setting/cult/phase/out - -/datum/action/innate/dash/cult/IsAvailable() - if(iscultist(owner) && current_charges) - return TRUE - else - return FALSE - -/obj/item/restraints/legcuffs/bola/cult - name = "\improper Nar'Sien bola" - desc = "A strong bola, bound with dark magic that allows it to pass harmlessly through Nar'Sien cultists. Throw it to trip and slow your victim." - icon_state = "bola_cult" - item_state = "bola_cult" - breakouttime = 60 - knockdown = 30 - -/obj/item/restraints/legcuffs/bola/cult/attack_hand(mob/living/user) - . = ..() - if(!iscultist(user)) - to_chat(user, "The bola seems to take on a life of its own!") - ensnare(user) - -/obj/item/restraints/legcuffs/bola/cult/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - if(iscultist(hit_atom)) - return - . = ..() - - -/obj/item/clothing/head/hooded/cult_hoodie - name = "ancient cultist hood" - icon_state = "culthood" - desc = "A torn, dust-caked hood. Strange letters line the inside." - flags_inv = HIDEFACE|HIDEHAIR|HIDEEARS - flags_cover = HEADCOVERSEYES - armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 40, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) - cold_protection = HEAD - min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT - heat_protection = HEAD - max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT - -/obj/item/clothing/suit/hooded/cultrobes - name = "ancient cultist robes" - desc = "A ragged, dusty set of robes. Strange letters line the inside." - icon_state = "cultrobes" - item_state = "cultrobes" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/tome, /obj/item/tank) - armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 40, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) - flags_inv = HIDEJUMPSUIT - cold_protection = CHEST|GROIN|LEGS|ARMS - min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT - heat_protection = CHEST|GROIN|LEGS|ARMS - max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT - hoodtype = /obj/item/clothing/head/hooded/cult_hoodie - - -/obj/item/clothing/head/hooded/cult_hoodie/alt - name = "cultist hood" - desc = "An armored hood worn by the followers of Nar'Sie." - icon_state = "cult_hoodalt" - item_state = "cult_hoodalt" - -/obj/item/clothing/suit/hooded/cultrobes/alt - name = "cultist robes" - desc = "An armored set of robes worn by the followers of Nar'Sie." - icon_state = "cultrobesalt" - item_state = "cultrobesalt" - hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/alt - -/obj/item/clothing/suit/hooded/cultrobes/alt/ghost - item_flags = DROPDEL - -/obj/item/clothing/suit/hooded/cultrobes/alt/ghost/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT) - - -/obj/item/clothing/head/magus - name = "magus helm" - icon_state = "magus" - item_state = "magus" - desc = "A helm worn by the followers of Nar'Sie." - flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES - armor = list("melee" = 50, "bullet" = 30, "laser" = 50,"energy" = 50, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) - flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - -/obj/item/clothing/suit/magusred - name = "magus robes" - desc = "A set of armored robes worn by the followers of Nar'Sie." - icon_state = "magusred" - item_state = "magusred" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/tome) - armor = list("melee" = 50, "bullet" = 30, "laser" = 50,"energy" = 50, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - -/obj/item/clothing/head/helmet/space/hardsuit/cult - name = "\improper Nar'Sien hardened helmet" - desc = "A heavily-armored helmet worn by warriors of the Nar'Sien cult. It can withstand hard vacuum." - icon_state = "cult_helmet" - item_state = "cult_helmet" - armor = list("melee" = 70, "bullet" = 50, "laser" = 30,"energy" = 40, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75) - light_system = NO_LIGHT_SUPPORT - light_range = 0 - actions_types = list() - -/obj/item/clothing/suit/space/hardsuit/cult - name = "\improper Nar'Sien hardened armor" - icon_state = "cult_armor" - item_state = "cult_armor" - desc = "A heavily-armored exosuit worn by warriors of the Nar'Sien cult. It can withstand hard vacuum." - w_class = WEIGHT_CLASS_BULKY - allowed = list(/obj/item/tome, /obj/item/tank/internals/) - armor = list("melee" = 70, "bullet" = 50, "laser" = 30,"energy" = 40, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75) - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult - -/obj/item/sharpener/cult - name = "eldritch whetstone" - desc = "A block, empowered by dark magic. Sharp weapons will be enhanced when used on the stone." - icon_state = "cult_sharpener" - used = 0 - increment = 5 - max = 40 - prefix = "darkened" - -/obj/item/sharpener/cult/update_icon_state() - icon_state = "cult_sharpener[used ? "_used" : ""]" - return ..() - -/obj/item/clothing/suit/hooded/cultrobes/cult_shield - name = "empowered cultist armor" - desc = "Empowered armor which creates a powerful shield around the user." - icon_state = "cult_armor" - item_state = "cult_armor" - w_class = WEIGHT_CLASS_BULKY - armor = list("melee" = 50, "bullet" = 40, "laser" = 50,"energy" = 50, "bomb" = 50, "bio" = 30, "rad" = 30, "fire" = 50, "acid" = 60) - var/current_charges = 3 - hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/cult_shield - -/obj/item/clothing/head/hooded/cult_hoodie/cult_shield - name = "empowered cultist helmet" - desc = "Empowered helmet which creates a powerful shield around the user." - icon_state = "cult_hoodalt" - armor = list("melee" = 50, "bullet" = 40, "laser" = 50,"energy" = 50, "bomb" = 50, "bio" = 30, "rad" = 30, "fire" = 50, "acid" = 60) - -/obj/item/clothing/suit/hooded/cultrobes/cult_shield/equipped(mob/living/user, slot) - ..() - if(!iscultist(user)) - to_chat(user, "\"I wouldn't advise that.\"") - to_chat(user, "An overwhelming sense of nausea overpowers you!") - user.dropItemToGround(src, TRUE) - user.Dizzy(30) - user.Paralyze(100) - -/obj/item/clothing/suit/hooded/cultrobes/cult_shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(current_charges) - owner.visible_message("\The [attack_text] is deflected in a burst of blood-red sparks!") - current_charges-- - new /obj/effect/temp_visual/cult/sparks(get_turf(owner)) - if(!current_charges) - owner.visible_message("The runed shield around [owner] suddenly disappears!") - owner.update_inv_wear_suit() - return 1 - return 0 - -/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands) - . = list() - if(!isinhands && current_charges) - . += mutable_appearance('icons/effects/cult_effects.dmi', "shield-cult", MOB_LAYER + 0.01) - -/obj/item/clothing/suit/hooded/cultrobes/berserker - name = "flagellant's robes" - desc = "Blood-soaked robes infused with dark magic; allows the user to move at inhuman speeds, but at the cost of increased damage." - allowed = list(/obj/item/tome) - armor = list("melee" = -45, "bullet" = -45, "laser" = -45,"energy" = -55, "bomb" = -45, "bio" = -45, "rad" = -45, "fire" = 0, "acid" = 0) - slowdown = -0.6 - hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/berserkerhood - -/obj/item/clothing/head/hooded/cult_hoodie/berserkerhood - name = "flagellant's hood" - desc = "Blood-soaked hood infused with dark magic." - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - -/obj/item/clothing/suit/hooded/cultrobes/berserker/equipped(mob/living/user, slot) - ..() - if(!iscultist(user)) - to_chat(user, "\"I wouldn't advise that.\"") - to_chat(user, "An overwhelming sense of nausea overpowers you!") - user.dropItemToGround(src, TRUE) - user.Dizzy(30) - user.Paralyze(100) - -/obj/item/clothing/glasses/hud/health/night/cultblind - desc = "may Nar'Sie guide you through the darkness and shield you from the light." - name = "zealot's blindfold" - icon_state = "blindfold" - item_state = "blindfold" - flash_protect = FLASH_PROTECTION_FLASH - -/obj/item/clothing/glasses/hud/health/night/cultblind/equipped(mob/living/user, slot) - ..() - if(prob(30)) - to_chat(user, "\"You want to be blind, do you?\"") - user.dropItemToGround(src, TRUE) - user.Dizzy(30) - user.Paralyze(100) - user.blind_eyes(30) - else - return - -/obj/item/reagent_containers/glass/beaker/unholywater - name = "flask of unholy water" - desc = "Toxic to nonbelievers; reinvigorating to the faithful - this flask may be sipped or thrown." - icon = 'icons/obj/drinks/drinks.dmi' - icon_state = "holyflask" - color = "#333333" - list_reagents = list(/datum/reagent/fuel/unholywater = 50) - can_have_cap = FALSE - cap_icon_state = null - cap_on = FALSE - -/obj/item/cult_shift - name = "veil shifter" - desc = "This relic instantly teleports you, and anything you're pulling, forward by a moderate distance." - icon = 'icons/obj/cult.dmi' - icon_state ="shifter" - var/uses = 4 - -/obj/item/cult_shift/examine(mob/user) - . = ..() - if(uses) - . += "It has [uses] use\s remaining." - else - . += "It seems drained." - -/obj/item/cult_shift/proc/handle_teleport_grab(turf/T, mob/user) - var/mob/living/carbon/C = user - if(C.pulling) - var/atom/movable/pulled = C.pulling - do_teleport(pulled, T, channel = TELEPORT_CHANNEL_CULT) - . = pulled - -/obj/item/cult_shift/attack_self(mob/user) - if(!uses || !iscarbon(user)) - to_chat(user, "\The [src] is dull and unmoving in your hands.") - return - - var/mob/living/carbon/C = user - var/turf/mobloc = get_turf(C) - var/turf/destination = get_teleport_loc(mobloc,C,9,1,3,1,0,1) - - if(destination) - uses-- - if(uses <= 0) - icon_state ="shifter_drained" - playsound(mobloc, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - new /obj/effect/temp_visual/dir_setting/cult/phase/out(mobloc, C.dir) - - var/atom/movable/pulled = handle_teleport_grab(destination, C) - if(do_teleport(C, destination, channel = TELEPORT_CHANNEL_CULT)) - if(pulled) - C.start_pulling(pulled) //forcemove resets pulls, so we need to re-pull - new /obj/effect/temp_visual/dir_setting/cult/phase(destination, C.dir) - playsound(destination, 'sound/effects/phasein.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - playsound(destination, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - - else - to_chat(C, "The veil cannot be torn here!") - -/obj/item/flashlight/flare/culttorch - name = "void torch" - desc = "Used by veteran cultists to instantly transport items to their needful brethren." - w_class = WEIGHT_CLASS_SMALL - light_range = 1 - icon_state = "torch" - item_state = "torch" - color = "#ff0000" - on_damage = 15 - slot_flags = null - on = TRUE - var/charges = 5 - -/obj/item/flashlight/flare/culttorch/afterattack(atom/movable/A, mob/user, proximity) - if(!proximity) - return - if(!iscultist(user)) - to_chat(user, "That doesn't seem to do anything useful.") - return - - if(istype(A, /obj/item)) - - var/list/cultists = list() - for(var/datum/mind/M in SSticker.mode.cult) - if(M.current && M.current.stat != DEAD) - cultists |= M.current - var/mob/living/cultist_to_receive = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in (cultists - user) - if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated()) - return - if(!cultist_to_receive) - to_chat(user, "You require a destination!") - log_game("Void torch failed - no target") - return - if(cultist_to_receive.stat == DEAD) - to_chat(user, "[cultist_to_receive] has died!") - log_game("Void torch failed - target died") - return - if(!iscultist(cultist_to_receive)) - to_chat(user, "[cultist_to_receive] is not a follower of the Geometer!") - log_game("Void torch failed - target was deconverted") - return - if(A in user.GetAllContents()) - to_chat(user, "[A] must be on a surface in order to teleport it!") - return - to_chat(user, "You ignite [A] with \the [src], turning it to ash, but through the torch's flames you see that [A] has reached [cultist_to_receive]!") - cultist_to_receive.put_in_hands(A) - charges-- - to_chat(user, "\The [src] now has [charges] charge\s.") - if(charges == 0) - qdel(src) - - else - ..() - to_chat(user, "\The [src] can only transport items!") - - -/obj/item/cult_spear - name = "blood halberd" - desc = "A sickening spear composed entirely of crystallized blood." - icon_state = "bloodspear0" - base_icon_state = "occultpoleaxe" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - slot_flags = 0 - force = 17 - throwforce = 40 - throw_speed = 2 - armour_penetration = 30 - block_chance = 30 - attack_verb = list("attacked", "impaled", "stabbed", "torn", "gored") - sharpness = IS_SHARP - hitsound = 'sound/weapons/bladeslice.ogg' - var/datum/action/innate/cult/spear/spear_act - var/wielded = FALSE // track wielded status on item - -/obj/item/cult_spear/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - -/obj/item/cult_spear/ComponentInitialize() - . = ..() - AddComponent(/datum/component/butchering, 100, 90) - AddComponent(/datum/component/two_handed, force_unwielded=17, force_wielded=24, icon_wielded="[base_icon_state]1") - -/// triggered on wield of two handed item -/obj/item/cult_spear/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/cult_spear/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/cult_spear/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/cult_spear/Destroy() - if(spear_act) - qdel(spear_act) - return ..() - -/obj/item/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - var/turf/T = get_turf(hit_atom) - if(isliving(hit_atom)) - var/mob/living/L = hit_atom - if(iscultist(L)) - playsound(src, 'sound/weapons/throwtap.ogg', 50) - if(L.put_in_active_hand(src)) - L.visible_message("[L] catches [src] out of the air!") - else - L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") - else if(!..()) - if(!L.anti_magic_check()) - L.Paralyze(50) - break_spear(T) - else - ..() - -/obj/item/cult_spear/proc/break_spear(turf/T) - if(src) - if(!T) - T = get_turf(src) - if(T) - T.visible_message("[src] shatters and melts back into blood!") - new /obj/effect/temp_visual/cult/sparks(T) - new /obj/effect/decal/cleanable/blood/splatter(T) - playsound(T, 'sound/effects/glassbr3.ogg', 100) - qdel(src) - -/obj/item/cult_spear/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) - final_block_chance *= 2 - if(prob(final_block_chance)) - if(attack_type == PROJECTILE_ATTACK) - owner.visible_message("[owner] deflects [attack_text] with [src]!") - playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE) - return TRUE - else - playsound(src, 'sound/weapons/parry.ogg', 100, TRUE) - owner.visible_message("[owner] parries [attack_text] with [src]!") - return TRUE - return FALSE - -/datum/action/innate/cult/spear - name = "Bloody Bond" - desc = "Call the blood spear back to your hand!" - background_icon_state = "bg_demon" - button_icon_state = "bloodspear" - var/obj/item/cult_spear/spear - var/cooldown = 0 - -/datum/action/innate/cult/spear/Grant(mob/user, obj/blood_spear) - . = ..() - spear = blood_spear - button.screen_loc = "6:157,4:-2" - button.moved = "6:157,4:-2" - -/datum/action/innate/cult/spear/Activate() - if(owner == spear.loc || cooldown > world.time) - return - var/ST = get_turf(spear) - var/OT = get_turf(owner) - if(get_dist(OT, ST) > 10) - to_chat(owner,"The spear is too far away!") - else - cooldown = world.time + 20 - if(isliving(spear.loc)) - var/mob/living/L = spear.loc - L.dropItemToGround(spear) - L.visible_message("An unseen force pulls the blood spear from [L]'s hands!") - spear.throw_at(owner, 10, 2, owner) - - -/obj/item/gun/ballistic/rifle/illestren/enchanted/arcane_barrage/blood - name = "blood bolt barrage" - desc = "Blood for blood." - color = "#ff0000" - guns_left = 24 - mag_type = /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage/blood - fire_sound = 'sound/magic/wand_teleport.ogg' - - -/obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage/blood - ammo_type = /obj/item/ammo_casing/magic/arcane_barrage/blood - -/obj/item/ammo_casing/magic/arcane_barrage/blood - projectile_type = /obj/projectile/magic/arcane_barrage/blood - firing_effect_type = /obj/effect/temp_visual/cult/sparks - -/obj/projectile/magic/arcane_barrage/blood - name = "blood bolt" - icon_state = "mini_leaper" - nondirectional_sprite = TRUE - damage_type = BRUTE - impact_effect_type = /obj/effect/temp_visual/dir_setting/bloodsplatter - -/obj/projectile/magic/arcane_barrage/blood/Bump(atom/target) - var/turf/T = get_turf(target) - playsound(T, 'sound/effects/splat.ogg', 50, TRUE) - if(iscultist(target)) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if(H.stat != DEAD) - H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 4) - if(isshade(target) || isconstruct(target)) - var/mob/living/simple_animal/M = target - if(M.health+5 < M.maxHealth) - M.adjustHealth(-5) - new /obj/effect/temp_visual/cult/sparks(T) - qdel(src) - else - ..() - -/obj/item/blood_beam - name = "\improper magical aura" - desc = "Sinister looking aura that distorts the flow of reality around it." - icon = 'icons/obj/items_and_weapons.dmi' - lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' - icon_state = "disintegrate" - item_state = "disintegrate" - item_flags = ABSTRACT | DROPDEL - w_class = WEIGHT_CLASS_HUGE - throwforce = 0 - throw_range = 0 - throw_speed = 0 - var/charging = FALSE - var/firing = FALSE - var/angle - -/obj/item/blood_beam/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT) - - -/obj/item/blood_beam/afterattack(atom/A, mob/living/user, flag, params) - . = ..() - if(firing || charging) - return - var/C = user.client - if(ishuman(user) && C) - angle = mouse_angle_from_client(C) - else - qdel(src) - return - charging = TRUE - INVOKE_ASYNC(src, PROC_REF(charge), user) - if(do_after(user, 90, target = user)) - firing = TRUE - INVOKE_ASYNC(src, PROC_REF(pewpew), user, params) - var/obj/structure/emergency_shield/invoker/N = new(user.loc) - if(do_after(user, 90, target = user)) - user.Paralyze(40) - to_chat(user, "You have exhausted the power of this spell!") - firing = FALSE - if(N) - qdel(N) - qdel(src) - charging = FALSE - -/obj/item/blood_beam/proc/charge(mob/user) - var/obj/O - playsound(src, 'sound/magic/lightning_chargeup.ogg', 100, TRUE) - for(var/i in 1 to 12) - if(!charging) - break - if(i > 1) - sleep(15) - if(i < 4) - O = new /obj/effect/temp_visual/cult/rune_spawn/rune1/inner(user.loc, 30, "#ff0000") - else - O = new /obj/effect/temp_visual/cult/rune_spawn/rune5(user.loc, 30, "#ff0000") - new /obj/effect/temp_visual/dir_setting/cult/phase/out(user.loc, user.dir) - if(O) - qdel(O) - -/obj/item/blood_beam/proc/pewpew(mob/user, params) - var/turf/targets_from = get_turf(src) - var/spread = 40 - var/second = FALSE - var/set_angle = angle - for(var/i in 1 to 12) - if(second) - set_angle = angle - spread - spread -= 8 - else - sleep(15) - set_angle = angle + spread - second = !second //Handles beam firing in pairs - if(!firing) - break - playsound(src, 'sound/magic/exit_blood.ogg', 75, TRUE) - new /obj/effect/temp_visual/dir_setting/cult/phase(user.loc, user.dir) - var/turf/temp_target = get_turf_in_angle(set_angle, targets_from, 40) - for(var/turf/T in getline(targets_from,temp_target)) - if (locate(/obj/effect/blessing, T)) - temp_target = T - playsound(T, 'sound/machines/clockcult/ark_damage.ogg', 50, TRUE) - new /obj/effect/temp_visual/at_shield(T, T) - break - T.narsie_act(TRUE, TRUE) - for(var/mob/living/target in T.contents) - if(iscultist(target)) - new /obj/effect/temp_visual/cult/sparks(T) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if(H.stat != DEAD) - H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 7) - if(isshade(target) || isconstruct(target)) - var/mob/living/simple_animal/M = target - if(M.health+15 < M.maxHealth) - M.adjustHealth(-15) - else - M.health = M.maxHealth - else - var/mob/living/L = target - if(L.density) - L.Paralyze(20) - L.adjustBruteLoss(45) - playsound(L, 'sound/hallucinations/wail.ogg', 50, TRUE) - L.emote("scream") - user.Beam(temp_target, icon_state="blood_beam", time = 7, beam_type = /obj/effect/ebeam/blood) - - -/obj/effect/ebeam/blood - name = "blood beam" - -/obj/item/shield/mirror - name = "mirror shield" - desc = "An infamous shield used by Nar'Sien sects to confuse and disorient their enemies. Its edges are weighted for use as a throwing weapon - capable of disabling multiple foes with preternatural accuracy." - icon_state = "mirror_shield" // eshield1 for expanded - lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - force = 5 - throwforce = 15 - throw_speed = 1 - throw_range = 4 - w_class = WEIGHT_CLASS_BULKY - attack_verb = list("bumped", "prodded") - hitsound = 'sound/weapons/smash.ogg' - var/illusions = 2 - -/obj/item/shield/mirror/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(iscultist(owner)) - if(istype(hitby, /obj/projectile)) - var/obj/projectile/P = hitby - if(P.damage_type == BRUTE || P.damage_type == BURN) - if(P.damage >= 30) - var/turf/T = get_turf(owner) - T.visible_message("The sheer force from [P] shatters the mirror shield!") - new /obj/effect/temp_visual/cult/sparks(T) - playsound(T, 'sound/effects/glassbr3.ogg', 100) - owner.Paralyze(25) - qdel(src) - return FALSE - if(P.reflectable & REFLECT_NORMAL) - return FALSE //To avoid reflection chance double-dipping with block chance - . = ..() - if(.) - playsound(src, 'sound/weapons/parry.ogg', 100, TRUE) - if(illusions > 0) - illusions-- - addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/shield/mirror, readd)), 450) - if(prob(60)) - var/mob/living/simple_animal/hostile/illusion/M = new(owner.loc) - M.faction = list("cult") - M.Copy_Parent(owner, 70, 10, 5) - M.move_to_delay = owner.cached_multiplicative_slowdown - else - var/mob/living/simple_animal/hostile/illusion/escape/E = new(owner.loc) - E.Copy_Parent(owner, 70, 10) - E.GiveTarget(owner) - E.Goto(owner, owner.cached_multiplicative_slowdown, E.minimum_distance) - return TRUE - else - if(prob(50)) - var/mob/living/simple_animal/hostile/illusion/H = new(owner.loc) - H.Copy_Parent(owner, 100, 20, 5) - H.faction = list("cult") - H.GiveTarget(owner) - H.move_to_delay = owner.cached_multiplicative_slowdown - to_chat(owner, "[src] betrays you!") - return FALSE - -/obj/item/shield/mirror/proc/readd() - illusions++ - if(illusions == initial(illusions) && isliving(loc)) - var/mob/living/holder = loc - to_chat(holder, "The shield's illusions are back at full strength!") - -/obj/item/shield/mirror/IsReflect() - if(prob(block_chance)) - return TRUE - return FALSE - -/obj/item/shield/mirror/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - var/turf/T = get_turf(hit_atom) - var/datum/thrownthing/D = throwingdatum - if(isliving(hit_atom)) - var/mob/living/L = hit_atom - if(iscultist(L)) - playsound(src, 'sound/weapons/throwtap.ogg', 50) - if(L.put_in_active_hand(src)) - L.visible_message("[L] catches [src] out of the air!") - else - L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") - else if(!..()) - if(!L.anti_magic_check()) - L.Paralyze(30) - if(D?.thrower) - for(var/mob/living/Next in orange(2, T)) - if(!Next.density || iscultist(Next)) - continue - throw_at(Next, 3, 1, D.thrower) - return - throw_at(D.thrower, 7, 1, null) - else - ..() diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm deleted file mode 100644 index 158b22b99c4a..000000000000 --- a/code/modules/antagonists/cult/cult_structures.dm +++ /dev/null @@ -1,288 +0,0 @@ -/obj/structure/destructible/cult - density = TRUE - anchored = TRUE - icon = 'icons/obj/cult.dmi' - light_power = 2 - var/cooldowntime = 0 - break_sound = 'sound/hallucinations/veryfar_noise.ogg' - debris = list(/obj/item/stack/sheet/runed_metal = 1) - -/obj/structure/destructible/cult/proc/conceal() //for spells that hide cult presence - density = FALSE - visible_message("[src] fades away.") - invisibility = INVISIBILITY_OBSERVER - alpha = 100 //To help ghosts distinguish hidden runes - light_range = 0 - light_power = 0 - update_light() - STOP_PROCESSING(SSfastprocess, src) - -/obj/structure/destructible/cult/proc/reveal() //for spells that reveal cult presence - density = initial(density) - invisibility = 0 - visible_message("[src] suddenly appears!") - alpha = initial(alpha) - light_range = initial(light_range) - light_power = initial(light_power) - update_light() - START_PROCESSING(SSfastprocess, src) - - -/obj/structure/destructible/cult/examine(mob/user) - . = ..() - . += "\The [src] is [anchored ? "":"not "]secured to the floor." - if((iscultist(user) || isobserver(user)) && cooldowntime > world.time) - . += "The magic in [src] is too weak, [p_they()] will be ready to use again in [DisplayTimeText(cooldowntime - world.time)]." - -/obj/structure/destructible/cult/examine_status(mob/user) - if(iscultist(user) || isobserver(user)) - var/t_It = p_they(TRUE) - var/t_is = p_are() - return "[t_It] [t_is] at [round(obj_integrity * 100 / max_integrity)]% stability." - return ..() - -/obj/structure/destructible/cult/attack_animal(mob/living/simple_animal/M) - if(istype(M, /mob/living/simple_animal/hostile/construct/artificer)) - if(obj_integrity < max_integrity) - M.changeNext_move(CLICK_CD_MELEE) - obj_integrity = min(max_integrity, obj_integrity + 5) - Beam(M, icon_state="sendbeam", time=4) - M.visible_message("[M] repairs \the [src].", \ - "You repair [src], leaving [p_they()] at [round(obj_integrity * 100 / max_integrity)]% stability.") - else - to_chat(M, "You cannot repair [src], as [p_theyre()] undamaged!") - else - ..() - -/obj/structure/destructible/cult/set_anchored(anchorvalue) - . = ..() - if(isnull(.)) - return - update_appearance() - -/obj/structure/destructible/cult/update_icon_state() - icon_state = "[initial(icon_state)][anchored ? null : "_off"]" - return ..() - -/obj/structure/destructible/cult/proc/check_menu(mob/user) - if(!istype(user)) - return FALSE - if(user.incapacitated() || !user.Adjacent(src)) - return FALSE - return TRUE - -/obj/structure/destructible/cult/talisman - name = "altar" - desc = "A bloodstained altar dedicated to Nar'Sie." - icon_state = "talismanaltar" - break_message = "The altar shatters, leaving only the wailing of the damned!" - -/obj/structure/destructible/cult/talisman/attack_hand(mob/living/user) - . = ..() - if(.) - return - if(!iscultist(user)) - to_chat(user, "You're pretty sure you know exactly what this is used for and you can't seem to touch it.") - return - if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with your dagger first.") - return - if(cooldowntime > world.time) - to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") - return - var/list/items = list( - "Eldritch Whetstone" = image(icon = 'icons/obj/kitchen.dmi', icon_state = "cult_sharpener"), - "Construct Shell" = image(icon = 'icons/obj/wizard.dmi', icon_state = "construct_cult"), - "Flask of Unholy Water" = image(icon = 'icons/obj/drinks/drinks.dmi', icon_state = "holyflask") - ) - var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) - var/list/pickedtype = list() - switch(choice) - if("Eldritch Whetstone") - pickedtype += /obj/item/sharpener/cult - if("Construct Shell") - pickedtype += /obj/structure/constructshell - if("Flask of Unholy Water") - pickedtype += /obj/item/reagent_containers/glass/beaker/unholywater - else - return - if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) - cooldowntime = world.time + 2400 - for(var/N in pickedtype) - new N(get_turf(src)) - to_chat(user, "You kneel before the altar and your faith is rewarded with the [choice]!") - -/obj/structure/destructible/cult/forge - name = "daemon forge" - desc = "A forge used in crafting the unholy weapons used by the armies of Nar'Sie." - icon_state = "forge" - light_range = 2 - light_color = LIGHT_COLOR_LAVA - break_message = "The force breaks apart into shards with a howling scream!" - -/obj/structure/destructible/cult/forge/attack_hand(mob/living/user) - . = ..() - if(.) - return - if(!iscultist(user)) - to_chat(user, "The heat radiating from [src] pushes you back.") - return - if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with your dagger first.") - return - if(cooldowntime > world.time) - to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") - return - var/list/items = list( - "Shielded Robe" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "cult_armor"), - "Flagellant's Robe" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "cultrobes"), - "Mirror Shield" = image(icon = 'icons/obj/shields.dmi', icon_state = "mirror_shield") - ) - var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) - var/list/pickedtype = list() - switch(choice) - if("Shielded Robe") - pickedtype += /obj/item/clothing/suit/hooded/cultrobes/cult_shield - if("Flagellant's Robe") - pickedtype += /obj/item/clothing/suit/hooded/cultrobes/berserker - if("Mirror Shield") - pickedtype += /obj/item/shield/mirror - else - return - if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) - cooldowntime = world.time + 2400 - for(var/N in pickedtype) - new N(get_turf(src)) - to_chat(user, "You work the forge as dark knowledge guides your hands, creating the [choice]!") - - - -/obj/structure/destructible/cult/pylon - name = "pylon" - desc = "A floating crystal that slowly heals those faithful to Nar'Sie." - icon_state = "pylon" - light_range = 1.5 - light_color = COLOR_SOFT_RED - break_sound = 'sound/effects/glassbr2.ogg' - break_message = "The blood-red crystal falls to the floor and shatters!" - var/heal_delay = 25 - var/last_heal = 0 - var/corrupt_delay = 50 - var/last_corrupt = 0 - -/obj/structure/destructible/cult/pylon/New() - START_PROCESSING(SSfastprocess, src) - ..() - -/obj/structure/destructible/cult/pylon/Destroy() - STOP_PROCESSING(SSfastprocess, src) - return ..() - -/obj/structure/destructible/cult/pylon/process() - if(!anchored) - return - if(last_heal <= world.time) - last_heal = world.time + heal_delay - for(var/mob/living/L in range(5, src)) - if(iscultist(L) || isshade(L) || isconstruct(L)) - if(L.health != L.maxHealth) - new /obj/effect/temp_visual/heal(get_turf(src), "#960000") - if(ishuman(L)) - L.adjustBruteLoss(-1, 0) - L.adjustFireLoss(-1, 0) - L.updatehealth() - if(isshade(L) || isconstruct(L)) - var/mob/living/simple_animal/M = L - if(M.health < M.maxHealth) - M.adjustHealth(-3) - if(ishuman(L) && L.blood_volume < BLOOD_VOLUME_NORMAL) - L.blood_volume += 1.0 - CHECK_TICK - if(last_corrupt <= world.time) - var/list/validturfs = list() - var/list/cultturfs = list() - for(var/T in circleviewturfs(src, 5)) - if(istype(T, /turf/open/floor/engine/cult)) - cultturfs |= T - continue - var/static/list/blacklisted_pylon_turfs = typecacheof(list( - /turf/closed, - /turf/open/floor/engine/cult, - /turf/open/space, - /turf/open/lava, - /turf/open/chasm)) - if(is_type_in_typecache(T, blacklisted_pylon_turfs)) - continue - else - validturfs |= T - - last_corrupt = world.time + corrupt_delay - - if(length(validturfs)) - var/turf/T = pick(validturfs) - if(istype(T, /turf/open/floor/plating)) - T.PlaceOnTop(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) - else - T.ChangeTurf(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) - else if (length(cultturfs)) - var/turf/open/floor/engine/cult/F = pick(cultturfs) - new /obj/effect/temp_visual/cult/turf/floor(F) - else - // Are we in space or something? No cult turfs or - // convertable turfs? - last_corrupt = world.time + corrupt_delay*2 - -/obj/structure/destructible/cult/tome - name = "archives" - desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl." - icon_state = "tomealtar" - light_range = 1.5 - light_color = LIGHT_COLOR_FIRE - break_message = "The books and tomes of the archives burn into ash as the desk shatters!" - -/obj/structure/destructible/cult/tome/attack_hand(mob/living/user) - . = ..() - if(.) - return - if(!iscultist(user)) - to_chat(user, "These books won't open and it hurts to even try and read the covers.") - return - if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with your dagger first.") - return - if(cooldowntime > world.time) - to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") - return - var/list/items = list( - "Zealot's Blindfold" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "blindfold"), - "Veil Walker Set" = image(icon = 'icons/obj/cult.dmi', icon_state = "shifter") - ) - var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) - var/list/pickedtype = list() - switch(choice) - if("Zealot's Blindfold") - pickedtype += /obj/item/clothing/glasses/hud/health/night/cultblind - if("Veil Walker Set") - pickedtype += /obj/item/cult_shift - pickedtype += /obj/item/flashlight/flare/culttorch - else - return - if(src && !QDELETED(src) && anchored && pickedtype.len && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) - cooldowntime = world.time + 2400 - for(var/N in pickedtype) - new N(get_turf(src)) - to_chat(user, "You summon the [choice] from the archives!") - -/obj/effect/gateway - name = "gateway" - desc = "You're pretty sure that abyss is staring back." - icon = 'icons/obj/cult.dmi' - icon_state = "hole" - density = TRUE - anchored = TRUE - -/obj/effect/gateway/singularity_act() - return - -/obj/effect/gateway/singularity_pull() - return diff --git a/code/modules/antagonists/cult/cult_turf_overlay.dm b/code/modules/antagonists/cult/cult_turf_overlay.dm deleted file mode 100644 index 2e950326bf8a..000000000000 --- a/code/modules/antagonists/cult/cult_turf_overlay.dm +++ /dev/null @@ -1,32 +0,0 @@ -//an "overlay" used by clockwork walls and floors to appear normal to mesons. -/obj/effect/cult_turf/overlay - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - var/atom/linked - -/obj/effect/cult_turf/overlay/examine(mob/user) - if(linked) - linked.examine(user) - -/obj/effect/cult_turf/overlay/ex_act() - return FALSE - -/obj/effect/cult_turf/overlay/singularity_act() - return -/obj/effect/cult_turf/overlay/singularity_pull() - return - -/obj/effect/cult_turf/overlay/singularity_pull(S, current_size) - return - -/obj/effect/cult_turf/overlay/Destroy() - if(linked) - linked = null - . = ..() - -/obj/effect/cult_turf/overlay/floor - icon = 'icons/turf/floors.dmi' - icon_state = "clockwork_floor" - layer = TURF_LAYER - -/obj/effect/cult_turf/overlay/floor/bloodcult - icon_state = "cult" diff --git a/code/modules/antagonists/cult/rune_spawn_action.dm b/code/modules/antagonists/cult/rune_spawn_action.dm deleted file mode 100644 index 2829141405dd..000000000000 --- a/code/modules/antagonists/cult/rune_spawn_action.dm +++ /dev/null @@ -1,115 +0,0 @@ -//after a delay, creates a rune below you. for constructs creating runes. -/datum/action/innate/cult/create_rune - name = "Summon Rune" - desc = "Summons a rune" - background_icon_state = "bg_demon" - var/obj/effect/rune/rune_type - var/cooldown = 0 - var/base_cooldown = 1800 - var/scribe_time = 60 - var/damage_interrupt = TRUE - var/action_interrupt = TRUE - var/obj/effect/temp_visual/cult/rune_spawn/rune_word_type - var/obj/effect/temp_visual/cult/rune_spawn/rune_innerring_type - var/obj/effect/temp_visual/cult/rune_spawn/rune_center_type - var/rune_color - -/datum/action/innate/cult/create_rune/IsAvailable() - if(!rune_type || cooldown > world.time) - return FALSE - return ..() - -/datum/action/innate/cult/create_rune/proc/turf_check(turf/T) - if(!T) - return FALSE - if(isspaceturf(T)) - to_chat(owner, "You cannot scribe runes in space!") - return FALSE - if(locate(/obj/effect/rune) in T) - to_chat(owner, "There is already a rune here.") - return FALSE - return TRUE - - -/datum/action/innate/cult/create_rune/Activate() - var/turf/T = get_turf(owner) - if(turf_check(T)) - var/chosen_keyword - if(initial(rune_type.req_keyword)) - chosen_keyword = stripped_input(owner, "Enter a keyword for the new rune.", "Words of Power") - if(!chosen_keyword) - return - //the outer ring is always the same across all runes - var/obj/effect/temp_visual/cult/rune_spawn/R1 = new(T, scribe_time, rune_color) - //the rest are not always the same, so we need types for em - var/obj/effect/temp_visual/cult/rune_spawn/R2 - if(rune_word_type) - R2 = new rune_word_type(T, scribe_time, rune_color) - var/obj/effect/temp_visual/cult/rune_spawn/R3 - if(rune_innerring_type) - R3 = new rune_innerring_type(T, scribe_time, rune_color) - var/obj/effect/temp_visual/cult/rune_spawn/R4 - if(rune_center_type) - R4 = new rune_center_type(T, scribe_time, rune_color) - - cooldown = base_cooldown + world.time - owner.update_action_buttons_icon() - addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), base_cooldown) - var/list/health - if(damage_interrupt && isliving(owner)) - var/mob/living/L = owner - health = list("health" = L.health) - var/scribe_mod = scribe_time - if(istype(T, /turf/open/floor/engine/cult)) - scribe_mod *= 0.5 - playsound(T, 'sound/magic/enter_blood.ogg', 100, FALSE) - if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, TYPE_PROC_REF(/mob, break_do_after_checks), health, action_interrupt))) - var/obj/effect/rune/new_rune = new rune_type(owner.loc) - new_rune.keyword = chosen_keyword - else - qdel(R1) - if(R2) - qdel(R2) - if(R3) - qdel(R3) - if(R4) - qdel(R4) - cooldown = 0 - owner.update_action_buttons_icon() - -//teleport rune -/datum/action/innate/cult/create_rune/tele - name = "Summon Teleport Rune" - desc = "Summons a teleport rune to your location, as though it has been there all along..." - button_icon_state = "telerune" - rune_type = /obj/effect/rune/teleport - rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune2 - rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune2/inner - rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune2/center - rune_color = RUNE_COLOR_TELEPORT - -/datum/action/innate/cult/create_rune/wall - name = "Summon Barrier Rune" - desc = "Summons an active barrier rune to your location, as though it has been there all along..." - button_icon_state = "barrier" - rune_type = /obj/effect/rune/wall - rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune4 - rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune4/inner - rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune4/center - rune_color = RUNE_COLOR_DARKRED - -/datum/action/innate/cult/create_rune/wall/Activate() - . = ..() - var/obj/effect/rune/wall/W = locate(/obj/effect/rune/wall) in owner.loc - if(W) - W.spread_density() - -/datum/action/innate/cult/create_rune/revive - name = "Summon Revive Rune" - desc = "Summons a revive rune to your location, as though it has been there all along..." - button_icon_state = "revive" - rune_type = /obj/effect/rune/raise_dead - rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune1 - rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune1/inner - rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune1/center - rune_color = RUNE_COLOR_MEDIUMRED diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm deleted file mode 100644 index b0fb446405c2..000000000000 --- a/code/modules/antagonists/cult/runes.dm +++ /dev/null @@ -1,1029 +0,0 @@ -GLOBAL_LIST_EMPTY(sacrificed) //a mixed list of minds and mobs -GLOBAL_LIST(rune_types) //Every rune that can be drawn by ritual daggers -GLOBAL_LIST_EMPTY(teleport_runes) -GLOBAL_LIST_EMPTY(wall_runes) -/* - -This file contains runes. -Runes are used by the cult to cause many different effects and are paramount to their success. -They are drawn with a ritual dagger in blood, and are distinguishable to cultists and normal crew by examining. -Fake runes can be drawn in crayon to fool people. -Runes can either be invoked by one's self or with many different cultists. Each rune has a specific incantation that the cultists will say when invoking it. - - -*/ - -/obj/effect/rune - name = "rune" - var/cultist_name = "basic rune" - desc = "An odd collection of symbols drawn in what seems to be blood." - var/cultist_desc = "a basic rune with no function." //This is shown to cultists who examine the rune in order to determine its true purpose. - anchored = TRUE - icon = 'icons/obj/rune.dmi' - icon_state = "1" - resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF - layer = SIGIL_LAYER - color = RUNE_COLOR_RED - - var/invocation = "Aiy ele-mayo!" //This is said by cultists when the rune is invoked. - var/req_cultists = 1 //The amount of cultists required around the rune to invoke it. If only 1, any cultist can invoke it. - var/req_cultists_text //if we have a description override for required cultists to invoke - var/rune_in_use = FALSE // Used for some runes, this is for when you want a rune to not be usable when in use. - - var/scribe_delay = 40 //how long the rune takes to create - var/scribe_damage = 0.1 //how much damage you take doing it - var/invoke_damage = 0 //how much damage invokers take when invoking it - var/construct_invoke = TRUE //if constructs can invoke it - - var/req_keyword = 0 //If the rune requires a keyword - go figure amirite - var/keyword //The actual keyword for the rune - -/obj/effect/rune/Initialize(mapload, set_keyword) - . = ..() - if(set_keyword) - keyword = set_keyword - var/image/I = image(icon = 'icons/effects/blood.dmi', icon_state = null, loc = src) - I.override = TRUE - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/silicons, "cult_runes", I) - -/obj/effect/rune/examine(mob/user) - . = ..() - if(iscultist(user) || user.stat == DEAD) //If they're a cultist or a ghost, tell them the effects - . += "Name: [cultist_name]\n"+\ - "Effects: [capitalize(cultist_desc)]\n"+\ - "Required Acolytes: [req_cultists_text ? "[req_cultists_text]":"[req_cultists]"]" - if(req_keyword && keyword) - . += "Keyword: [keyword]" - -/obj/effect/rune/attack_hand(mob/living/user) - . = ..() - if(.) - return - if(!iscultist(user)) - to_chat(user, "You aren't able to understand the words of [src].") - return - var/list/invokers = can_invoke(user) - if(invokers.len >= req_cultists) - invoke(invokers) - else - to_chat(user, "You need [req_cultists - invokers.len] more adjacent cultists to use this rune in such a manner.") - fail_invoke() - -/obj/effect/rune/attack_animal(mob/living/simple_animal/M) - if(istype(M, /mob/living/simple_animal/shade) || istype(M, /mob/living/simple_animal/hostile/construct)) - if(istype(M, /mob/living/simple_animal/hostile/construct/wraith/angelic) || istype(M, /mob/living/simple_animal/hostile/construct/juggernaut/angelic) || istype(M, /mob/living/simple_animal/hostile/construct/artificer/angelic)) - to_chat(M, "You purge the rune!") - qdel(src) - else if(construct_invoke || !iscultist(M)) //if you're not a cult construct we want the normal fail message - attack_hand(M) - else - to_chat(M, "You are unable to invoke the rune!") - -/obj/effect/rune/proc/conceal() //for talisman of revealing/hiding - visible_message("[src] fades away.") - invisibility = INVISIBILITY_OBSERVER - alpha = 100 //To help ghosts distinguish hidden runes - -/obj/effect/rune/proc/reveal() //for talisman of revealing/hiding - invisibility = 0 - visible_message("[src] suddenly appears!") - alpha = initial(alpha) - -/* - -There are a few different procs each rune runs through when a cultist activates it. -can_invoke() is called when a cultist activates the rune with an empty hand. If there are multiple cultists, this rune determines if the required amount is nearby. -invoke() is the rune's actual effects. -fail_invoke() is called when the rune fails, via not enough people around or otherwise. Typically this just has a generic 'fizzle' effect. -structure_check() searches for nearby cultist structures required for the invocation. Proper structures are pylons, forges, archives, and altars. - -*/ - -/obj/effect/rune/proc/can_invoke(mob/living/user=null) - //This proc determines if the rune can be invoked at the time. If there are multiple required cultists, it will find all nearby cultists. - var/list/invokers = list() //people eligible to invoke the rune - if(user) - invokers += user - if(req_cultists > 1 || istype(src, /obj/effect/rune/convert)) - var/list/things_in_range = range(1, src) - for(var/mob/living/L in things_in_range) - if(iscultist(L)) - if(L == user) - continue - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if((HAS_TRAIT(H, TRAIT_MUTE)) || H.silent) - continue - if(L.stat) - continue - invokers += L - return invokers - -/obj/effect/rune/proc/invoke(list/invokers) - //This proc contains the effects of the rune as well as things that happen afterwards. If you want it to spawn an object and then delete itself, have both here. - for(var/M in invokers) - if(isliving(M)) - var/mob/living/L = M - if(invocation) - L.say(invocation, language = /datum/language/common, ignore_spam = TRUE, forced = "cult invocation") - if(invoke_damage) - L.apply_damage(invoke_damage, BRUTE) - to_chat(L, "[src] saps your strength!") - else if(istype(M, /obj/item/toy/plush/narplush)) - var/obj/item/toy/plush/narplush/P = M - P.visible_message("[P] squeaks loudly!") - do_invoke_glow() - -/obj/effect/rune/proc/do_invoke_glow() - set waitfor = FALSE - animate(src, transform = matrix()*2, alpha = 0, time = 5, flags = ANIMATION_END_NOW) //fade out - sleep(5) - animate(src, transform = matrix(), alpha = 255, time = 0, flags = ANIMATION_END_NOW) - -/obj/effect/rune/proc/fail_invoke() - //This proc contains the effects of a rune if it is not invoked correctly, through either invalid wording or not enough cultists. By default, it's just a basic fizzle. - visible_message("The markings pulse with a small flash of red light, then fall dark.") - var/oldcolor = color - color = rgb(255, 0, 0) - animate(src, color = oldcolor, time = 5) - addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 5) - -//Malformed Rune: This forms if a rune is not drawn correctly. Invoking it does nothing but hurt the user. -/obj/effect/rune/malformed - cultist_name = "malformed rune" - cultist_desc = "a senseless rune written in gibberish. No good can come from invoking this." - invocation = "Ra'sha yoka!" - invoke_damage = 30 - -/obj/effect/rune/malformed/Initialize(mapload, set_keyword) - . = ..() - icon_state = "[rand(1,7)]" - color = rgb(rand(0,255), rand(0,255), rand(0,255)) - -/obj/effect/rune/malformed/invoke(list/invokers) - ..() - qdel(src) - -//Rite of Offering: Converts or sacrifices a target. -/obj/effect/rune/convert - cultist_name = "Offer" - cultist_desc = "offers a noncultist above it to Nar'Sie, either converting them or sacrificing them." - req_cultists_text = "2 for conversion, 3 for living sacrifices and sacrifice targets." - invocation = "Mah'weyh pleggh at e'ntrath!" - icon_state = "3" - color = RUNE_COLOR_OFFER - req_cultists = 1 - rune_in_use = FALSE - -/obj/effect/rune/convert/do_invoke_glow() - return - -/obj/effect/rune/convert/invoke(list/invokers) - if(rune_in_use) - return - var/list/myriad_targets = list() - var/turf/T = get_turf(src) - for(var/mob/living/M in T) - if(!iscultist(M)) - myriad_targets |= M - if(!myriad_targets.len) - fail_invoke() - log_game("Offer rune failed - no eligible targets") - return - rune_in_use = TRUE - visible_message("[src] pulses blood red!") - var/oldcolor = color - color = RUNE_COLOR_DARKRED - var/mob/living/L = pick(myriad_targets) - - var/mob/living/F = invokers[1] - var/datum/antagonist/cult/C = F.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - var/datum/team/cult/Cult_team = C.cult_team - var/is_convertable = is_convertable_to_cult(L,C.cult_team) - if(L.stat != DEAD && is_convertable) - invocation = "Mah'weyh pleggh at e'ntrath!" - ..() - if(is_convertable) - do_convert(L, invokers) - else - invocation = "Barhah hra zar'garis!" - ..() - do_sacrifice(L, invokers) - animate(src, color = oldcolor, time = 5) - addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 5) - Cult_team.check_size() // Triggers the eye glow or aura effects if the cult has grown large enough relative to the crew - rune_in_use = FALSE - -/obj/effect/rune/convert/proc/do_convert(mob/living/convertee, list/invokers) - if(invokers.len < 2) - for(var/M in invokers) - to_chat(M, "You need at least two invokers to convert [convertee]!") - log_game("Offer rune failed - tried conversion with one invoker") - return 0 - if(convertee.anti_magic_check(TRUE, TRUE, FALSE, 0)) //Not chargecost because it can be spammed - for(var/M in invokers) - to_chat(M, "Something is shielding [convertee]'s mind!") - log_game("Offer rune failed - convertee had anti-magic") - return 0 - var/brutedamage = convertee.getBruteLoss() - var/burndamage = convertee.getFireLoss() - if(brutedamage || burndamage) - convertee.adjustBruteLoss(-(brutedamage * 0.75)) - convertee.adjustFireLoss(-(burndamage * 0.75)) - convertee.visible_message( - "[convertee] writhes in pain [brutedamage || burndamage ? "even as [convertee.p_their()] wounds heal and close" : "as the markings below [convertee.p_them()] glow a bloody red"]!", // Hello there buddy! Come here often? I hope you were wondering wtf this string was - "AAAAAAAAAAAAAA-") - SSticker.mode.add_cultist(convertee.mind, 1) - convertee.mind.special_role = ROLE_CULTIST - to_chat(convertee, "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ - and something evil takes root.") - to_chat(convertee, "Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.\ - ") - if(ishuman(convertee)) - var/mob/living/carbon/human/H = convertee - H.uncuff() - H.stuttering = 0 - H.cultslurring = 0 - if(prob(1) || SSevents.holidays && SSevents.holidays[APRIL_FOOLS]) - H.say("You son of a bitch! I'm in.", forced = "That son of a bitch! They're in.") - return 1 - -/obj/effect/rune/convert/proc/do_sacrifice(mob/living/sacrificial, list/invokers) - var/mob/living/first_invoker = invokers[1] - if(!first_invoker) - return FALSE - var/datum/antagonist/cult/C = first_invoker.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(!C) - return - - - var/big_sac = FALSE - if((((ishuman(sacrificial) || iscyborg(sacrificial)) && sacrificial.stat != DEAD) || C.cult_team.is_sacrifice_target(sacrificial.mind)) && invokers.len < 3) - for(var/M in invokers) - to_chat(M, "[sacrificial] is too greatly linked to the world! You need three acolytes!") - log_game("Offer rune failed - not enough acolytes and target is living or sac target") - return FALSE - if(sacrificial.mind) - GLOB.sacrificed += sacrificial.mind - for(var/datum/objective/sacrifice/sac_objective in C.cult_team.objectives) - if(sac_objective.target == sacrificial.mind) - sac_objective.sacced = TRUE - sac_objective.update_explanation_text() - big_sac = TRUE - else - GLOB.sacrificed += sacrificial - - new /obj/effect/temp_visual/cult/sac(get_turf(src)) - for(var/M in invokers) - if(big_sac) - to_chat(M, "\"Yes! This is the one I desire! You have done well.\"") - else - if(ishuman(sacrificial) || iscyborg(sacrificial)) - to_chat(M, "\"I accept this sacrifice.\"") - else - to_chat(M, "\"I accept this meager sacrifice.\"") - - var/obj/item/soulstone/stone = new /obj/item/soulstone(get_turf(src)) - if(sacrificial.mind) - stone.invisibility = INVISIBILITY_MAXIMUM //so it's not picked up during transfer_soul() - stone.transfer_soul("FORCE", sacrificial, usr) - stone.invisibility = 0 - - if(sacrificial) - if(iscyborg(sacrificial)) - playsound(sacrificial, 'sound/magic/disable_tech.ogg', 100, TRUE) - sacrificial.dust() //To prevent the MMI from remaining - else - playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, TRUE) - sacrificial.gib() - return TRUE - - - -/obj/effect/rune/empower - cultist_name = "Empower" - cultist_desc = "allows cultists to prepare greater amounts of blood magic at far less of a cost." - invocation = "H'drak v'loso, mir'kanas verbot!" - icon_state = "3" - color = RUNE_COLOR_TALISMAN - construct_invoke = FALSE - -/obj/effect/rune/empower/invoke(list/invokers) - . = ..() - var/mob/living/user = invokers[1] //the first invoker is always the user - for(var/datum/action/innate/cult/blood_magic/BM in user.actions) - BM.Activate() - -/obj/effect/rune/teleport - cultist_name = "Teleport" - cultist_desc = "warps everything above it to another chosen teleport rune." - invocation = "Sas'so c'arta forbici!" - icon_state = "2" - color = RUNE_COLOR_TELEPORT - req_keyword = TRUE - light_power = 4 - var/obj/effect/temp_visual/cult/portal/inner_portal //The portal "hint" for off-station teleportations - var/obj/effect/temp_visual/cult/rune_spawn/rune2/outer_portal - var/listkey - - -/obj/effect/rune/teleport/Initialize(mapload, set_keyword) - . = ..() - var/area/A = get_area(src) - var/locname = initial(A.name) - listkey = set_keyword ? "[set_keyword] [locname]":"[locname]" - GLOB.teleport_runes += src - -/obj/effect/rune/teleport/Destroy() - GLOB.teleport_runes -= src - return ..() - -/obj/effect/rune/teleport/invoke(list/invokers) - var/mob/living/user = invokers[1] //the first invoker is always the user - var/list/potential_runes = list() - var/list/teleportnames = list() - for(var/R in GLOB.teleport_runes) - var/obj/effect/rune/teleport/T = R - if(T != src && !is_away_level(T)) - potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T - - if(!potential_runes.len) - to_chat(user, "There are no valid runes to teleport to!") - log_game("Teleport rune failed - no other teleport runes") - fail_invoke() - return - - var/turf/T = get_turf(src) - if(is_away_level(T)) - to_chat(user, "You are not in the right dimension!") - log_game("Teleport rune failed - user in away mission") - fail_invoke() - return - - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked - var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? - if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated() || !actual_selected_rune) - fail_invoke() - return - - var/turf/target = get_turf(actual_selected_rune) - if(target.is_blocked_turf(TRUE)) - to_chat(user, "The target rune is blocked. Attempting to teleport to it would be massively unwise.") - fail_invoke() - return - var/movedsomething = FALSE - var/moveuserlater = FALSE - var/movesuccess = FALSE - for(var/atom/movable/A in T) - if(istype(A, /obj/effect/dummy/phased_mob)) - continue - if(ismob(A)) - if(!isliving(A)) //Let's not teleport ghosts and AI eyes. - continue - if(ishuman(A)) - new /obj/effect/temp_visual/dir_setting/cult/phase/out(T, A.dir) - new /obj/effect/temp_visual/dir_setting/cult/phase(target, A.dir) - if(A == user) - moveuserlater = TRUE - movedsomething = TRUE - continue - if(!A.anchored) - movedsomething = TRUE - if(do_teleport(A, target, channel = TELEPORT_CHANNEL_CULT)) - movesuccess = TRUE - if(movedsomething) - ..() - if(moveuserlater) - if(do_teleport(user, target, channel = TELEPORT_CHANNEL_CULT)) - movesuccess = TRUE - if(movesuccess) - visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!", null, "You hear a sharp crack.") - to_chat(user, "You[moveuserlater ? "r vision blurs, and you suddenly appear somewhere else":" send everything above the rune away"].") - else - to_chat(user, "You[moveuserlater ? "r vision blurs briefly, but nothing happens":" try send everything above the rune away, but the teleportation fails"].") - var/area/A = get_area(T) - if(initial(A.name) == "Space") - actual_selected_rune.handle_portal("space", T) - if(movesuccess) - target.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") - else - fail_invoke() - -/obj/effect/rune/teleport/proc/handle_portal(portal_type, turf/origin) - var/turf/T = get_turf(src) - close_portal() // To avoid stacking descriptions/animations - playsound(T, pick('sound/effects/sparks1.ogg', 'sound/effects/sparks2.ogg', 'sound/effects/sparks3.ogg', 'sound/effects/sparks4.ogg'), 100, TRUE, 14) - inner_portal = new /obj/effect/temp_visual/cult/portal(T) - if(portal_type == "space") - set_light_color(color) - desc += "
A tear in reality reveals a black void interspersed with dots of light... something recently teleported here from space.
The void feels like it's trying to pull you to the [dir2text(get_dir(T, origin))]!
" - else - inner_portal.icon_state = "lava" - set_light_color(LIGHT_COLOR_FIRE) - desc += "
A tear in reality reveals a coursing river of lava... something recently teleported here from the Lavaland Mines!" - outer_portal = new(T, 600, color) - light_range = 4 - update_light() - addtimer(CALLBACK(src, PROC_REF(close_portal)), 600, TIMER_UNIQUE) - -/obj/effect/rune/teleport/proc/close_portal() - qdel(inner_portal) - qdel(outer_portal) - desc = initial(desc) - light_range = 0 - update_light() - -//Ritual of Dimensional Rending: Calls forth the avatar of Nar'Sie upon the station. -/obj/effect/rune/narsie - cultist_name = "Nar'Sie" - cultist_desc = "tears apart dimensional barriers, calling forth the Geometer. Requires 9 invokers." - invocation = "TOK-LYR RQA-NAP G'OLT-ULOFT!!" - req_cultists = 9 - icon = 'icons/effects/96x96.dmi' - color = RUNE_COLOR_DARKRED - icon_state = "rune_large" - pixel_x = -32 //So the big ol' 96x96 sprite shows up right - pixel_y = -32 - scribe_delay = 500 //how long the rune takes to create - scribe_damage = 40.1 //how much damage you take doing it - var/used = FALSE - -/obj/effect/rune/narsie/Initialize(mapload, set_keyword) - . = ..() - GLOB.poi_list |= src - -/obj/effect/rune/narsie/Destroy() - GLOB.poi_list -= src - . = ..() - -/obj/effect/rune/narsie/conceal() //can't hide this, and you wouldn't want to - return - -/obj/effect/rune/narsie/invoke(list/invokers) - if(used) - return - var/mob/living/user = invokers[1] - var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives - var/area/place = get_area(src) - if(!(place in summon_objective.summon_spots)) - to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") - return - if(locate(/obj/singularity/narsie) in GLOB.poi_list) - for(var/M in invokers) - to_chat(M, "Nar'Sie is already on this plane!") - log_game("Nar'Sie rune failed - already summoned") - return - //BEGIN THE SUMMONING - used = TRUE - ..() - sound_to_playing_players('sound/effects/dimensional_rend.ogg') - var/turf/T = get_turf(src) - sleep(40) - if(src) - color = RUNE_COLOR_RED - new /obj/singularity/narsie/large/cult(T) //Causes Nar'Sie to spawn even if the rune has been removed - -//Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every three sacrifices your cult has carried out. -/obj/effect/rune/raise_dead - cultist_name = "Revive" - cultist_desc = "requires a dead, mindless, or inactive cultist placed upon the rune. For each three bodies sacrificed to the dark patron, one body will be mended and their mind awoken" - invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below - icon_state = "1" - color = RUNE_COLOR_MEDIUMRED - var/static/sacrifices_used = -SOULS_TO_REVIVE // Cultists get one "free" revive - -/obj/effect/rune/raise_dead/examine(mob/user) - . = ..() - if(iscultist(user) || user.stat == DEAD) - . += "Sacrifices unrewarded: [LAZYLEN(GLOB.sacrificed) - sacrifices_used]" - -/obj/effect/rune/raise_dead/invoke(list/invokers) - var/turf/T = get_turf(src) - var/mob/living/mob_to_revive - var/list/potential_revive_mobs = list() - var/mob/living/user = invokers[1] - if(rune_in_use) - return - rune_in_use = TRUE - for(var/mob/living/M in T.contents) - if(iscultist(M) && (M.stat == DEAD || !M.client || M.client.is_afk())) - potential_revive_mobs |= M - if(!potential_revive_mobs.len) - to_chat(user, "There are no dead cultists on the rune!") - log_game("Raise Dead rune failed - no cultists to revive") - fail_invoke() - return - if(potential_revive_mobs.len > 1) - mob_to_revive = input(user, "Choose a cultist to revive.", "Cultist to Revive") as null|anything in potential_revive_mobs - else - mob_to_revive = potential_revive_mobs[1] - if(QDELETED(src) || !validness_checks(mob_to_revive, user)) - fail_invoke() - return - if(user.name == "Herbert West") - invocation = "To life, to life, I bring them!" - else - invocation = initial(invocation) - ..() - if(mob_to_revive.stat == DEAD) - var/diff = LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - sacrifices_used - if(diff < 0) - to_chat(user, "Your cult must carry out [abs(diff)] more sacrifice\s before it can revive another cultist!") - fail_invoke() - return - sacrifices_used += SOULS_TO_REVIVE - mob_to_revive.revive(full_heal = TRUE, admin_revive = TRUE) //This does remove traits and such, but the rune might actually see some use because of it! - mob_to_revive.grab_ghost() - if(!mob_to_revive.client || mob_to_revive.client.is_afk()) - set waitfor = FALSE - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [mob_to_revive.name], an inactive blood cultist?", ROLE_CULTIST, null, ROLE_CULTIST, 50, mob_to_revive) - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - to_chat(mob_to_revive.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.") - message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.") - mob_to_revive.ghostize(0) - mob_to_revive.key = C.key - else - fail_invoke() - return - SEND_SOUND(mob_to_revive, 'sound/ambience/antag/bloodcult.ogg') - to_chat(mob_to_revive, "\"PASNAR SAVRAE YAM'TOTH. Arise.\"") - mob_to_revive.visible_message( - "[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes.", \ - "You awaken suddenly from the void. You're alive!") - rune_in_use = FALSE - -/obj/effect/rune/raise_dead/proc/validness_checks(mob/living/target_mob, mob/living/user) - var/turf/T = get_turf(src) - if(QDELETED(user)) - return FALSE - if(!Adjacent(user) || user.incapacitated()) - return FALSE - if(QDELETED(target_mob)) - return FALSE - if(!(target_mob in T.contents)) - to_chat(user, "The cultist to revive has been moved!") - log_game("Raise Dead rune failed - revival target moved") - return FALSE - return TRUE - -/obj/effect/rune/raise_dead/fail_invoke() - ..() - rune_in_use = FALSE - for(var/mob/living/M in range(1,src)) - if(iscultist(M) && M.stat == DEAD) - M.visible_message("[M] twitches.") - -//Rite of the Corporeal Shield: When invoked, becomes solid and cannot be passed. Invoke again to undo. -/obj/effect/rune/wall - cultist_name = "Barrier" - cultist_desc = "when invoked, makes a temporary invisible wall to block passage. Can be invoked again to reverse this." - invocation = "Khari'd! Eske'te tannin!" - icon_state = "4" - color = RUNE_COLOR_DARKRED - CanAtmosPass = ATMOS_PASS_DENSITY - var/datum/timedevent/density_timer - var/recharging = FALSE - -/obj/effect/rune/wall/Initialize(mapload, set_keyword) - . = ..() - GLOB.wall_runes += src - -/obj/effect/rune/wall/examine(mob/user) - . = ..() - if(density && iscultist(user)) - if(density_timer) - . += "The air above this rune has hardened into a barrier that will last [DisplayTimeText(density_timer.timeToRun - world.time)]." - -/obj/effect/rune/wall/Destroy() - GLOB.wall_runes -= src - return ..() - -/obj/effect/rune/wall/BlockThermalConductivity() - return density - -/obj/effect/rune/wall/invoke(list/invokers) - if(recharging) - return - var/mob/living/user = invokers[1] - ..() - density = !density - update_state() - if(density) - spread_density() - var/carbon_user = iscarbon(user) - user.visible_message( - "[user] [carbon_user ? "places [user.p_their()] hands on":"stares intently at"] [src], and [density ? "the air above it begins to shimmer" : "the shimmer above it fades"].", \ - "You channel [carbon_user ? "your life ":""]energy into [src], [density ? "temporarily preventing" : "allowing"] passage above it.") - if(carbon_user) - var/mob/living/carbon/C = user - C.apply_damage(2, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - -/obj/effect/rune/wall/proc/spread_density() - for(var/R in GLOB.wall_runes) - var/obj/effect/rune/wall/W = R - if(W.virtual_z() == virtual_z() && get_dist(src, W) <= 2 && !W.density && !W.recharging) - W.density = TRUE - W.update_state() - W.spread_density() - density_timer = addtimer(CALLBACK(src, PROC_REF(lose_density)), 3000, TIMER_STOPPABLE) - -/obj/effect/rune/wall/proc/lose_density() - if(density) - recharging = TRUE - density = FALSE - update_state() - var/oldcolor = color - add_atom_colour("#696969", FIXED_COLOUR_PRIORITY) - animate(src, color = oldcolor, time = 50, easing = EASE_IN) - addtimer(CALLBACK(src, PROC_REF(recharge)), 50) - -/obj/effect/rune/wall/proc/recharge() - recharging = FALSE - add_atom_colour(RUNE_COLOR_MEDIUMRED, FIXED_COLOUR_PRIORITY) - -/obj/effect/rune/wall/proc/update_state() - deltimer(density_timer) - air_update_turf(TRUE) - if(density) - var/mutable_appearance/shimmer = mutable_appearance('icons/effects/effects.dmi', "barriershimmer", ABOVE_MOB_LAYER) - shimmer.appearance_flags |= RESET_COLOR - shimmer.alpha = 60 - shimmer.color = "#701414" - add_overlay(shimmer) - add_atom_colour(RUNE_COLOR_RED, FIXED_COLOUR_PRIORITY) - else - cut_overlays() - add_atom_colour(RUNE_COLOR_MEDIUMRED, FIXED_COLOUR_PRIORITY) - -//Rite of Joined Souls: Summons a single cultist. -/obj/effect/rune/summon - cultist_name = "Summon Cultist" - cultist_desc = "summons a single cultist to the rune. Requires 2 invokers." - invocation = "N'ath reth sh'yro eth d'rekkathnor!" - req_cultists = 2 - invoke_damage = 10 - icon_state = "3" - color = RUNE_COLOR_SUMMON - -/obj/effect/rune/summon/invoke(list/invokers) - var/mob/living/user = invokers[1] - var/list/cultists = list() - for(var/datum/mind/M in SSticker.mode.cult) - if(!(M.current in invokers) && M.current && M.current.stat != DEAD) - cultists |= M.current - var/mob/living/cultist_to_summon = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in cultists - if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated()) - return - if(!cultist_to_summon) - to_chat(user, "You require a summoning target!") - fail_invoke() - log_game("Summon Cultist rune failed - no target") - return - if(cultist_to_summon.stat == DEAD) - to_chat(user, "[cultist_to_summon] has died!") - fail_invoke() - log_game("Summon Cultist rune failed - target died") - return - if(cultist_to_summon.pulledby || cultist_to_summon.buckled) - to_chat(user, "[cultist_to_summon] is being held in place!") - fail_invoke() - log_game("Summon Cultist rune failed - target restrained") - return - if(!iscultist(cultist_to_summon)) - to_chat(user, "[cultist_to_summon] is not a follower of the Geometer!") - fail_invoke() - log_game("Summon Cultist rune failed - target was deconverted") - return - if(is_away_level(cultist_to_summon)) - to_chat(user, "[cultist_to_summon] is not in our dimension!") - fail_invoke() - log_game("Summon Cultist rune failed - target in away mission") - return - cultist_to_summon.visible_message( - "[cultist_to_summon] suddenly disappears in a flash of red light!", \ - "Overwhelming vertigo consumes you as you are hurled through the air!") - ..() - visible_message("A foggy shape materializes atop [src] and solidifes into [cultist_to_summon]!") - cultist_to_summon.forceMove(get_turf(src)) - qdel(src) - -//Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby -/obj/effect/rune/blood_boil - cultist_name = "Boil Blood" - cultist_desc = "boils the blood of non-believers who can see the rune, rapidly dealing extreme amounts of damage. Requires 3 invokers." - invocation = "Dedo ol'btoh!" - icon_state = "4" - color = RUNE_COLOR_BURNTORANGE - light_color = LIGHT_COLOR_LAVA - req_cultists = 3 - invoke_damage = 10 - construct_invoke = FALSE - var/tick_damage = 25 - rune_in_use = FALSE - -/obj/effect/rune/blood_boil/do_invoke_glow() - return - -/obj/effect/rune/blood_boil/invoke(list/invokers) - if(rune_in_use) - return - ..() - rune_in_use = TRUE - var/turf/T = get_turf(src) - visible_message("[src] turns a bright, glowing orange!") - color = "#FC9B54" - set_light(6, 1, color) - for(var/mob/living/L in viewers(T)) - if(!iscultist(L) && L.blood_volume) - var/atom/I = L.anti_magic_check(chargecost = 0) - if(I) - if(isitem(I)) - to_chat(L, "[I] suddenly burns hotly before returning to normal!") - continue - to_chat(L, "Your blood boils in your veins!") - animate(src, color = "#FCB56D", time = 4) - sleep(4) - if(QDELETED(src)) - return - do_area_burn(T, 0.5) - animate(src, color = "#FFDF80", time = 5) - sleep(5) - if(QDELETED(src)) - return - do_area_burn(T, 1) - animate(src, color = "#FFFDF4", time = 6) - sleep(6) - if(QDELETED(src)) - return - do_area_burn(T, 1.5) - new /obj/effect/hotspot(T) - qdel(src) - -/obj/effect/rune/blood_boil/proc/do_area_burn(turf/T, multiplier) - set_light(6, 1, color) - for(var/mob/living/L in viewers(T)) - if(!iscultist(L) && L.blood_volume) - if(L.anti_magic_check(chargecost = 0)) - continue - L.take_overall_damage(tick_damage*multiplier, tick_damage*multiplier) - -//Rite of Spectral Manifestation: Summons a ghost on top of the rune as a cultist human with no items. User must stand on the rune at all times, and takes damage for each summoned ghost. -/obj/effect/rune/manifest - cultist_name = "Spirit Realm" - cultist_desc = "manifests a spirit servant of the Geometer and allows you to ascend as a spirit yourself. The invoker must not move from atop the rune, and will take damage for each summoned spirit." - invocation = "Gal'h'rfikk harfrandid mud'gib!" //how the fuck do you pronounce this - icon_state = "7" - invoke_damage = 10 - construct_invoke = FALSE - color = RUNE_COLOR_DARKRED - var/mob/living/affecting = null - var/ghost_limit = 3 - var/ghosts = 0 - -/obj/effect/rune/manifest/Initialize() - . = ..() - - -/obj/effect/rune/manifest/can_invoke(mob/living/user) - if(!(user in get_turf(src))) - to_chat(user, "You must be standing on [src]!") - fail_invoke() - log_game("Manifest rune failed - user not standing on rune") - return list() - if(user.has_status_effect(STATUS_EFFECT_SUMMONEDGHOST)) - to_chat(user, "Ghosts can't summon more ghosts!") - fail_invoke() - log_game("Manifest rune failed - user is a ghost") - return list() - return ..() - -/obj/effect/rune/manifest/invoke(list/invokers) - . = ..() - var/mob/living/user = invokers[1] - var/turf/T = get_turf(src) - var/choice = alert(user,"You tear open a connection to the spirit realm...",,"Summon a Cult Ghost","Ascend as a Dark Spirit","Cancel") - if(choice == "Summon a Cult Ghost") - if(ghosts >= ghost_limit) - to_chat(user, "You are sustaining too many ghosts to summon more!") - fail_invoke() - log_game("Manifest rune failed - too many summoned ghosts") - return list() - notify_ghosts("Manifest rune invoked in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src, header = "Manifest rune") - var/list/ghosts_on_rune = list() - for(var/mob/dead/observer/O in T) - if(O.client && !is_banned_from(O.ckey, ROLE_CULTIST) && !QDELETED(src) && !(isAdminObserver(O) && (O.client.prefs.toggles & ADMIN_IGNORE_CULT_GHOST)) && !QDELETED(O)) - ghosts_on_rune += O - if(!ghosts_on_rune.len) - to_chat(user, "There are no spirits near [src]!") - fail_invoke() - log_game("Manifest rune failed - no nearby ghosts") - return list() - var/mob/dead/observer/ghost_to_spawn = pick(ghosts_on_rune) - var/mob/living/carbon/human/cult_ghost/new_human = new(T) - new_human.real_name = ghost_to_spawn.real_name - new_human.alpha = 150 //Makes them translucent - new_human.equipOutfit(/datum/outfit/ghost_cultist) //give them armor - new_human.apply_status_effect(STATUS_EFFECT_SUMMONEDGHOST) //ghosts can't summon more ghosts - new_human.see_invisible = SEE_INVISIBLE_OBSERVER - ghosts++ - playsound(src, 'sound/magic/exit_blood.ogg', 50, TRUE) - visible_message("A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man.") - to_chat(user, "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...") - var/obj/structure/emergency_shield/invoker/N = new(T) - new_human.key = ghost_to_spawn.key - SSticker.mode.add_cultist(new_human.mind, 0) - to_chat(new_human, "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar'Sie, and you are to serve them at all costs.") - - while(!QDELETED(src) && !QDELETED(user) && !QDELETED(new_human) && (user in T)) - if(user.stat != CONSCIOUS || HAS_TRAIT(new_human, TRAIT_CRITICAL_CONDITION)) - break - user.apply_damage(0.1, BRUTE) - sleep(1) - - qdel(N) - ghosts-- - if(new_human) - new_human.visible_message( - "[new_human] suddenly dissolves into bones and ashes.", \ - "Your link to the world fades. Your form breaks apart.") - for(var/obj/I in new_human) - new_human.dropItemToGround(I, TRUE) - new_human.dust() - else if(choice == "Ascend as a Dark Spirit") - affecting = user - affecting.add_atom_colour(RUNE_COLOR_DARKRED, ADMIN_COLOUR_PRIORITY) - affecting.visible_message( - "[affecting] freezes statue-still, glowing an unearthly red.", \ - "You see what lies beyond. All is revealed. In this form you find that your voice booms louder and you can mark targets for the entire cult") - var/mob/dead/observer/G = affecting.ghostize(1) - var/datum/action/innate/cult/comm/spirit/CM = new - var/datum/action/innate/cult/ghostmark/GM = new - G.name = "Dark Spirit of [G.name]" - G.color = "red" - CM.Grant(G) - GM.Grant(G) - while(!QDELETED(affecting)) - if(!(affecting in T)) - user.visible_message("A spectral tendril wraps around [affecting] and pulls [affecting.p_them()] back to the rune!") - Beam(affecting, icon_state="drainbeam", time=2) - affecting.forceMove(get_turf(src)) //NO ESCAPE :^) - if(affecting.key) - affecting.visible_message( - "[affecting] slowly relaxes, the glow around [affecting.p_them()] dimming.", \ - "You are re-united with your physical form. [src] releases its hold over you.") - affecting.Paralyze(40) - break - if(affecting.health <= 10) - to_chat(G, "Your body can no longer sustain the connection!") - break - sleep(5) - CM.Remove(G) - GM.Remove(G) - affecting.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED) - affecting.grab_ghost() - affecting = null - rune_in_use = FALSE - -/mob/living/carbon/human/cult_ghost/spill_organs(no_brain, no_organs, no_bodyparts) //cult ghosts never drop a brain - no_brain = TRUE - . = ..() - -/mob/living/carbon/human/cult_ghost/getorganszone(zone, subzones = 0) - . = ..() - for(var/obj/item/organ/brain/B in .) //they're not that smart, really - . -= B - - -/obj/effect/rune/apocalypse - cultist_name = "Apocalypse" - cultist_desc = "a harbinger of the end times. Grows in strength with the cult's desperation - but at the risk of... side effects." - invocation = "Ta'gh fara'qha fel d'amar det!" - icon = 'icons/effects/96x96.dmi' - icon_state = "apoc" - pixel_x = -32 - pixel_y = -32 - color = RUNE_COLOR_DARKRED - req_cultists = 3 - scribe_delay = 100 - -/obj/effect/rune/apocalypse/invoke(list/invokers) - if(rune_in_use) - return - . = ..() - var/area/place = get_area(src) - var/mob/living/user = invokers[1] - var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives - if(summon_objective.summon_spots.len <= 1) - to_chat(user, "Only one ritual site remains - it must be reserved for the final summoning!") - return - if(!(place in summon_objective.summon_spots)) - to_chat(user, "The Apocalypse rune will remove a ritual site, where Nar'Sie can be summoned, it can only be scribed in [english_list(summon_objective.summon_spots)]!") - return - summon_objective.summon_spots -= place - rune_in_use = TRUE - var/turf/T = get_turf(src) - new /obj/effect/temp_visual/dir_setting/curse/grasp_portal/fading(T) - var/intensity = 0 - for(var/mob/living/M in GLOB.player_list) - if(iscultist(M)) - intensity++ - intensity = max(60, 360 - (360*(intensity/GLOB.player_list.len + 0.3)**2)) //significantly lower intensity for "winning" cults - var/duration = intensity*10 - playsound(T, 'sound/magic/enter_blood.ogg', 100, TRUE) - visible_message("A colossal shockwave of energy bursts from the rune, disintegrating it in the process!") - for(var/mob/living/L in range(src, 3)) - L.Paralyze(30) - empulse(T, 0.42*(intensity), 1) - var/list/images = list() - var/zmatch = T.virtual_z() - var/datum/atom_hud/AH = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] - for(var/mob/living/M in GLOB.alive_mob_list) - if(M.virtual_z() != zmatch) - continue - if(ishuman(M)) - if(!iscultist(M)) - AH.remove_hud_from(M) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(hudFix), M), duration) - var/image/A = image('icons/mob/cult.dmi',M,"cultist", ABOVE_MOB_LAYER) - A.override = 1 - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "human_apoc", A, NONE) - addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"human_apoc",TRUE), duration) - images += A - SEND_SOUND(M, pick(sound('sound/ambience/antag/bloodcult.ogg'),sound('sound/spookoween/ghost_whisper.ogg'),sound('sound/spookoween/ghosty_wind.ogg'))) - else - var/construct = pick("floater","artificer","behemoth") - var/image/B = image('icons/mob/mob.dmi',M,construct, ABOVE_MOB_LAYER) - B.override = 1 - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "mob_apoc", B, NONE) - addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"mob_apoc",TRUE), duration) - images += B - if(!iscultist(M)) - if(M.client) - var/image/C = image('icons/effects/cult_effects.dmi',M,"bloodsparkles", ABOVE_MOB_LAYER) - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, NONE) - addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"cult_apoc",TRUE), duration) - images += C - else - to_chat(M, "An Apocalypse Rune was invoked in the [place.name], it is no longer available as a summoning site!") - SEND_SOUND(M, 'sound/effects/pope_entry.ogg') - image_handler(images, duration) - if(intensity>=285) // Based on the prior formula, this means the cult makes up <15% of current players - var/outcome = rand(1,80) - switch(outcome) - if(1 to 10) - var/datum/round_event_control/disease_outbreak/D = new() - // var/datum/round_event_control/mice_migration/M = new() - D.runEvent() - // M.runEvent() - if(11 to 20) - var/datum/round_event_control/radiation_storm/RS = new() - RS.runEvent() - if(21 to 30) - var/datum/round_event_control/brand_intelligence/BI = new() - BI.runEvent() - if(31 to 40) - var/datum/round_event_control/immovable_rod/R = new() - R.runEvent() - R.runEvent() - R.runEvent() - if(41 to 50) - var/datum/round_event_control/meteor_wave/MW = new() - MW.runEvent() - if(51 to 60) - var/datum/round_event_control/spider_infestation/SI = new() - SI.runEvent() - if(61 to 80) - var/datum/round_event_control/spacevine/SV = new() - var/datum/round_event_control/grey_tide/GT = new() - SV.runEvent() - GT.runEvent() - qdel(src) - -/obj/effect/rune/apocalypse/proc/image_handler(list/images, duration) - var/end = world.time + duration - set waitfor = 0 - while(end>world.time) - for(var/image/I in images) - I.override = FALSE - animate(I, alpha = 0, time = 25, flags = ANIMATION_PARALLEL) - sleep(35) - for(var/image/I in images) - animate(I, alpha = 255, time = 25, flags = ANIMATION_PARALLEL) - sleep(25) - for(var/image/I in images) - if(I.icon_state != "bloodsparkles") - I.override = TRUE - sleep(190) - - - -/proc/hudFix(mob/living/carbon/human/target) - if(!target || !target.client) - return - var/obj/O = target.get_item_by_slot(ITEM_SLOT_EYES) - if(istype(O, /obj/item/clothing/glasses/hud/security)) - var/datum/atom_hud/AH = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] - AH.add_hud_to(target) diff --git a/shiptest.dme b/shiptest.dme index 3c963f860f96..13b29628688c 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1662,14 +1662,6 @@ #include "code\modules\antagonists\changeling\powers\strained_muscles.dm" #include "code\modules\antagonists\changeling\powers\tiny_prick.dm" #include "code\modules\antagonists\changeling\powers\transform.dm" -#include "code\modules\antagonists\cult\blood_magic.dm" -#include "code\modules\antagonists\cult\cult.dm" -#include "code\modules\antagonists\cult\cult_comms.dm" -#include "code\modules\antagonists\cult\cult_items.dm" -#include "code\modules\antagonists\cult\cult_structures.dm" -#include "code\modules\antagonists\cult\cult_turf_overlay.dm" -#include "code\modules\antagonists\cult\rune_spawn_action.dm" -#include "code\modules\antagonists\cult\runes.dm" #include "code\modules\antagonists\devil\devil.dm" #include "code\modules\antagonists\devil\devil_helpers.dm" #include "code\modules\antagonists\devil\imp\imp.dm" From 2171f22d61c14fd95b0fe4feaf6cc0c5320b537b Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 10:33:30 -0500 Subject: [PATCH 025/102] Revert "what if i just deleted the cult file haha so silly" This reverts commit d26bf9f0fd838c5a1d578816eeb023f10ac7535b. --- code/game/objects/items/melee/stunbaton.dm | 4 + code/modules/antagonists/cult/blood_magic.dm | 832 +++++++++++++ code/modules/antagonists/cult/cult.dm | 407 +++++++ code/modules/antagonists/cult/cult_comms.dm | 461 ++++++++ code/modules/antagonists/cult/cult_items.dm | 709 ++++++++++++ .../antagonists/cult/cult_structures.dm | 288 +++++ .../antagonists/cult/cult_turf_overlay.dm | 32 + .../antagonists/cult/rune_spawn_action.dm | 115 ++ code/modules/antagonists/cult/runes.dm | 1029 +++++++++++++++++ shiptest.dme | 8 + 10 files changed, 3885 insertions(+) create mode 100644 code/modules/antagonists/cult/blood_magic.dm create mode 100644 code/modules/antagonists/cult/cult.dm create mode 100644 code/modules/antagonists/cult/cult_comms.dm create mode 100644 code/modules/antagonists/cult/cult_items.dm create mode 100644 code/modules/antagonists/cult/cult_structures.dm create mode 100644 code/modules/antagonists/cult/cult_turf_overlay.dm create mode 100644 code/modules/antagonists/cult/rune_spawn_action.dm create mode 100644 code/modules/antagonists/cult/runes.dm diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index b1c40f95f3e1..5b3ad433cdff 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -493,6 +493,7 @@ /obj/item/melee/classic_baton/telescopic name = "telescopic baton" desc = "A compact yet robust personal defense weapon. Can be concealed when folded." + icon = 'icons/obj/items_and_weapons.dmi' icon_state = "telebaton_0" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' @@ -537,7 +538,10 @@ /obj/item/melee/classic_baton/telescopic/contractor_baton name = "contractor baton" desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets." + icon = 'icons/obj/items_and_weapons.dmi' icon_state = "contractor_baton_0" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' item_state = null slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm new file mode 100644 index 000000000000..dd52db6a7ff3 --- /dev/null +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -0,0 +1,832 @@ +/datum/action/innate/cult/blood_magic //Blood magic handles the creation of blood spells (formerly talismans) + name = "Prepare Blood Magic" + button_icon_state = "carve" + desc = "Prepare blood magic by carving runes into your flesh. This is easier with an empowering rune." + var/list/spells = list() + var/channeling = FALSE + +/datum/action/innate/cult/blood_magic/Grant() + ..() + button.screen_loc = DEFAULT_BLOODSPELLS + button.moved = DEFAULT_BLOODSPELLS + button.ordered = FALSE + +/datum/action/innate/cult/blood_magic/Remove() + for(var/X in spells) + qdel(X) + ..() + +/datum/action/innate/cult/blood_magic/IsAvailable() + if(!iscultist(owner)) + return FALSE + return ..() + +/datum/action/innate/cult/blood_magic/proc/Positioning() + var/list/screen_loc_split = splittext(button.screen_loc,",") + var/list/screen_loc_X = splittext(screen_loc_split[1],":") + var/list/screen_loc_Y = splittext(screen_loc_split[2],":") + var/pix_X = text2num(screen_loc_X[2]) + for(var/datum/action/innate/cult/blood_spell/B in spells) + if(B.button.locked) + var/order = pix_X+spells.Find(B)*31 + B.button.screen_loc = "[screen_loc_X[1]]:[order],[screen_loc_Y[1]]:[screen_loc_Y[2]]" + B.button.moved = B.button.screen_loc + +/datum/action/innate/cult/blood_magic/Activate() + var/rune = FALSE + var/limit = RUNELESS_MAX_BLOODCHARGE + for(var/obj/effect/rune/empower/R in range(1, owner)) + rune = TRUE + break + if(rune) + limit = MAX_BLOODCHARGE + if(spells.len >= limit) + if(rune) + to_chat(owner, "You cannot store more than [MAX_BLOODCHARGE] spells. Pick a spell to remove.") + else + to_chat(owner, "You cannot store more than [RUNELESS_MAX_BLOODCHARGE] spells without an empowering rune! Pick a spell to remove.") + var/nullify_spell = input(owner, "Choose a spell to remove.", "Current Spells") as null|anything in spells + if(nullify_spell) + qdel(nullify_spell) + return + var/entered_spell_name + var/datum/action/innate/cult/blood_spell/BS + var/list/possible_spells = list() + for(var/I in subtypesof(/datum/action/innate/cult/blood_spell)) + var/datum/action/innate/cult/blood_spell/J = I + var/cult_name = initial(J.name) + possible_spells[cult_name] = J + possible_spells += "(REMOVE SPELL)" + entered_spell_name = input(owner, "Pick a blood spell to prepare...", "Spell Choices") as null|anything in possible_spells + if(entered_spell_name == "(REMOVE SPELL)") + var/nullify_spell = input(owner, "Choose a spell to remove.", "Current Spells") as null|anything in spells + if(nullify_spell) + qdel(nullify_spell) + return + BS = possible_spells[entered_spell_name] + if(QDELETED(src) || owner.incapacitated() || !BS || (rune && !(locate(/obj/effect/rune/empower) in range(1, owner))) || (spells.len >= limit)) + return + to_chat(owner,"You begin to carve unnatural symbols into your flesh!") + SEND_SOUND(owner, sound('sound/weapons/slice.ogg',0,1,10)) + if(!channeling) + channeling = TRUE + else + to_chat(owner, "You are already invoking blood magic!") + return + if(do_after(owner, 100 - rune*60, target = owner)) + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + H.bleed(40 - rune*32) + var/datum/action/innate/cult/blood_spell/new_spell = new BS(owner) + new_spell.Grant(owner, src) + spells += new_spell + Positioning() + to_chat(owner, "Your wounds glow with power, you have prepared a [new_spell.name] invocation!") + channeling = FALSE + +/datum/action/innate/cult/blood_spell //The next generation of talismans, handles storage/creation of blood magic + name = "Blood Magic" + button_icon_state = "telerune" + desc = "Fear the Old Blood." + var/charges = 1 + var/magic_path = null + var/obj/item/melee/blood_magic/hand_magic + var/datum/action/innate/cult/blood_magic/all_magic + var/base_desc //To allow for updating tooltips + var/invocation + var/health_cost = 0 + +/datum/action/innate/cult/blood_spell/Grant(mob/living/owner, datum/action/innate/cult/blood_magic/BM) + if(health_cost) + desc += "
Deals [health_cost] damage to your arm per use." + base_desc = desc + desc += "
Has [charges] use\s remaining." + all_magic = BM + ..() + button.locked = TRUE + button.ordered = FALSE + +/datum/action/innate/cult/blood_spell/Remove() + if(all_magic) + all_magic.spells -= src + if(hand_magic) + qdel(hand_magic) + hand_magic = null + ..() + +/datum/action/innate/cult/blood_spell/IsAvailable() + if(!iscultist(owner) || owner.incapacitated() || !charges) + return FALSE + return ..() + +/datum/action/innate/cult/blood_spell/Activate() + if(magic_path) //If this spell flows from the hand + if(!hand_magic) + hand_magic = new magic_path(owner, src) + if(!owner.put_in_hands(hand_magic)) + qdel(hand_magic) + hand_magic = null + to_chat(owner, "You have no empty hand for invoking blood magic!") + return + to_chat(owner, "Your wounds glow as you invoke the [name].") + return + if(hand_magic) + qdel(hand_magic) + hand_magic = null + to_chat(owner, "You snuff out the spell, saving it for later.") + + +//Cult Blood Spells +/datum/action/innate/cult/blood_spell/stun + name = "Stun" + desc = "Empowers your hand to stun and mute a victim on contact." + button_icon_state = "hand" + magic_path = "/obj/item/melee/blood_magic/stun" + health_cost = 10 + +/datum/action/innate/cult/blood_spell/teleport + name = "Teleport" + desc = "Empowers your hand to teleport yourself or another cultist to a teleport rune on contact." + button_icon_state = "tele" + magic_path = "/obj/item/melee/blood_magic/teleport" + health_cost = 7 + +/datum/action/innate/cult/blood_spell/emp + name = "Electromagnetic Pulse" + desc = "Emits a large electromagnetic pulse." + button_icon_state = "emp" + health_cost = 10 + invocation = "Ta'gh fara'qha fel d'amar det!" + +/datum/action/innate/cult/blood_spell/emp/Activate() + owner.visible_message( + "[owner]'s hand flashes a bright blue!", \ + "You speak the cursed words, emitting an EMP blast from your hand.") + empulse(owner, 2, 5) + owner.whisper(invocation, language = /datum/language/common) + charges-- + if(charges<=0) + qdel(src) + +/datum/action/innate/cult/blood_spell/shackles + name = "Shadow Shackles" + desc = "Empowers your hand to start handcuffing victim on contact, and mute them if successful." + button_icon_state = "cuff" + charges = 4 + magic_path = "/obj/item/melee/blood_magic/shackles" + +/datum/action/innate/cult/blood_spell/construction + name = "Twisted Construction" + desc = "Empowers your hand to corrupt certain metalic objects.
Converts:
Plasteel into runed metal
50 metal into a construct shell
Living cyborgs into constructs after a delay
Cyborg shells into construct shells
Airlocks into brittle runed airlocks after a delay (harm intent)" + button_icon_state = "transmute" + magic_path = "/obj/item/melee/blood_magic/construction" + health_cost = 12 + +/datum/action/innate/cult/blood_spell/horror + name = "Hallucinations" + desc = "Gives hallucinations to a target at range. A silent and invisible spell." + button_icon_state = "horror" + var/obj/effect/proc_holder/horror/PH + charges = 4 + +/datum/action/innate/cult/blood_spell/horror/New() + PH = new() + PH.attached_action = src + ..() + +/datum/action/innate/cult/blood_spell/horror/Destroy() + var/obj/effect/proc_holder/horror/destroy = PH + . = ..() + if(destroy && !QDELETED(destroy)) + QDEL_NULL(destroy) + +/datum/action/innate/cult/blood_spell/horror/Activate() + PH.toggle(owner) //the important bit + return TRUE + +/obj/effect/proc_holder/horror + active = FALSE + ranged_mousepointer = 'icons/effects/mouse_pointers/cult_target.dmi' + var/datum/action/innate/cult/blood_spell/attached_action + +/obj/effect/proc_holder/horror/Destroy() + var/datum/action/innate/cult/blood_spell/AA = attached_action + . = ..() + if(AA && !QDELETED(AA)) + QDEL_NULL(AA) + +/obj/effect/proc_holder/horror/proc/toggle(mob/user) + if(active) + remove_ranged_ability("You dispel the magic...") + else + add_ranged_ability(user, "You prepare to horrify a target...") + +/obj/effect/proc_holder/horror/InterceptClickOn(mob/living/caller, params, atom/target) + if(..()) + return + if(ranged_ability_user.incapacitated() || !iscultist(caller)) + remove_ranged_ability() + return + var/turf/T = get_turf(ranged_ability_user) + if(!isturf(T)) + return FALSE + if(target in view(7, get_turf(ranged_ability_user))) + if(!ishuman(target) || iscultist(target)) + return + var/mob/living/carbon/human/H = target + H.hallucination = max(H.hallucination, 120) + SEND_SOUND(ranged_ability_user, sound('sound/effects/ghost.ogg',0,1,50)) + var/image/C = image('icons/effects/cult_effects.dmi',H,"bloodsparkles", ABOVE_MOB_LAYER) + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, NONE) + addtimer(CALLBACK(H, TYPE_PROC_REF(/atom, remove_alt_appearance),"cult_apoc",TRUE), 2400, TIMER_OVERRIDE|TIMER_UNIQUE) + to_chat(ranged_ability_user,"[H] has been cursed with living nightmares!") + attached_action.charges-- + attached_action.desc = attached_action.base_desc + attached_action.desc += "
Has [attached_action.charges] use\s remaining." + attached_action.UpdateButtonIcon() + if(attached_action.charges <= 0) + remove_ranged_ability("You have exhausted the spell's power!") + qdel(src) + +/datum/action/innate/cult/blood_spell/veiling + name = "Conceal Presence" + desc = "Alternates between hiding and revealing nearby cult structures and runes." + invocation = "Kla'atu barada nikt'o!" + button_icon_state = "gone" + charges = 10 + var/revealing = FALSE //if it reveals or not + +/datum/action/innate/cult/blood_spell/veiling/Activate() + if(!revealing) + owner.visible_message("Thin grey dust falls from [owner]'s hand!", \ + "You invoke the veiling spell, hiding nearby runes.") + charges-- + SEND_SOUND(owner, sound('sound/magic/smoke.ogg',0,1,25)) + owner.whisper(invocation, language = /datum/language/common) + for(var/obj/effect/rune/R in range(5,owner)) + R.conceal() + for(var/obj/structure/destructible/cult/S in range(5,owner)) + S.conceal() + for(var/turf/open/floor/engine/cult/T in range(5,owner)) + T.realappearance.alpha = 0 + for(var/obj/machinery/door/airlock/cult/AL in range(5, owner)) + AL.conceal() + revealing = TRUE + name = "Reveal Runes" + button_icon_state = "back" + else + owner.visible_message( + "A flash of light shines from [owner]'s hand!", \ + "You invoke the counterspell, revealing nearby runes.") + charges-- + owner.whisper(invocation, language = /datum/language/common) + SEND_SOUND(owner, sound('sound/magic/enter_blood.ogg',0,1,25)) + for(var/obj/effect/rune/R in range(7,owner)) //More range in case you weren't standing in exactly the same spot + R.reveal() + for(var/obj/structure/destructible/cult/S in range(6,owner)) + S.reveal() + for(var/turf/open/floor/engine/cult/T in range(6,owner)) + T.realappearance.alpha = initial(T.realappearance.alpha) + for(var/obj/machinery/door/airlock/cult/AL in range(6, owner)) + AL.reveal() + revealing = FALSE + name = "Conceal Runes" + button_icon_state = "gone" + if(charges<= 0) + qdel(src) + desc = base_desc + desc += "
Has [charges] use\s remaining." + UpdateButtonIcon() + +/datum/action/innate/cult/blood_spell/manipulation + name = "Blood Rites" + desc = "Empowers your hand to absorb blood to be used for advanced rites, or heal a cultist on contact. Use the spell in-hand to cast advanced rites." + invocation = "Fel'th Dol Ab'orod!" + button_icon_state = "manip" + charges = 5 + magic_path = "/obj/item/melee/blood_magic/manipulator" + + +// The "magic hand" items +/obj/item/melee/blood_magic + name = "\improper magical aura" + desc = "A sinister looking aura that distorts the flow of reality around it." + icon = 'icons/obj/items_and_weapons.dmi' + lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' + icon_state = "disintegrate" + item_state = "disintegrate" + item_flags = NEEDS_PERMIT | ABSTRACT | DROPDEL + + w_class = WEIGHT_CLASS_HUGE + throwforce = 0 + throw_range = 0 + throw_speed = 0 + var/invocation + var/uses = 1 + var/health_cost = 0 //The amount of health taken from the user when invoking the spell + var/datum/action/innate/cult/blood_spell/source + +/obj/item/melee/blood_magic/New(loc, spell) + if(spell) + source = spell + uses = source.charges + health_cost = source.health_cost + ..() + +/obj/item/melee/blood_magic/Destroy() + if(!QDELETED(source)) + if(uses <= 0) + source.hand_magic = null + qdel(source) + source = null + else + source.hand_magic = null + source.charges = uses + source.desc = source.base_desc + source.desc += "
Has [uses] use\s remaining." + source.UpdateButtonIcon() + return ..() + +/obj/item/melee/blood_magic/attack_self(mob/living/user) + afterattack(user, user, TRUE) + +/obj/item/melee/blood_magic/attack(mob/living/M, mob/living/carbon/user) + if(!iscarbon(user) || !iscultist(user)) + uses = 0 + qdel(src) + return + log_combat(user, M, "used a cult spell on", source.name, "") + M.lastattacker = user.real_name + M.lastattackerckey = user.ckey + +/obj/item/melee/blood_magic/afterattack(atom/target, mob/living/carbon/user, proximity) + . = ..() + if(invocation) + user.whisper(invocation, language = /datum/language/common) + if(health_cost) + if(user.active_hand_index == 1) + user.apply_damage(health_cost, BRUTE, BODY_ZONE_L_ARM) + else + user.apply_damage(health_cost, BRUTE, BODY_ZONE_R_ARM) + if(uses <= 0) + qdel(src) + else if(source) + source.desc = source.base_desc + source.desc += "
Has [uses] use\s remaining." + source.UpdateButtonIcon() + +//Stun +/obj/item/melee/blood_magic/stun + name = "Stunning Aura" + desc = "Will stun and mute a weak-minded victim on contact." + color = RUNE_COLOR_RED + invocation = "Fuu ma'jin!" + +/obj/item/melee/blood_magic/stun/afterattack(atom/target, mob/living/carbon/user, proximity) + if(!isliving(target) || !proximity) + return + var/mob/living/L = target + if(iscultist(target)) + return + if(iscultist(user)) + user.visible_message("[user] holds up [user.p_their()] hand, which explodes in a flash of red light!", \ + "You attempt to stun [L] with the spell!") + + user.mob_light(_range = 3, _color = LIGHT_COLOR_BLOOD_MAGIC, _duration = 0.2 SECONDS) + + var/anti_magic_source = L.anti_magic_check() + if(anti_magic_source) + + L.mob_light(_range = 2, _color = LIGHT_COLOR_HOLY_MAGIC, _duration = 10 SECONDS) + var/mutable_appearance/forbearance = mutable_appearance('icons/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER) + L.add_overlay(forbearance) + addtimer(CALLBACK(L, TYPE_PROC_REF(/atom, cut_overlay), forbearance), 100) + + if(istype(anti_magic_source, /obj/item)) + var/obj/item/ams_object = anti_magic_source + target.visible_message( + "[L] starts to glow in a halo of light!", \ + "Your [ams_object.name] begins to glow, emitting a blanket of holy light which surrounds you and protects you from the flash of light!") + else + target.visible_message( + "[L] starts to glow in a halo of light!", \ + "A feeling of warmth washes over you, rays of holy light surround your body and protect you from the flash of light!") + + else + if(HAS_TRAIT(target, TRAIT_MINDSHIELD)) + var/mob/living/carbon/C = L + to_chat(user, "Their mind was stronger than expected, but you still managed to do some damage!") + C.stuttering += 8 + C.dizziness += 30 + C.Jitter(8) + C.drop_all_held_items() + C.bleed(40) + C.apply_damage(60, STAMINA, BODY_ZONE_CHEST) + else + to_chat(user, "In a brilliant flash of red, [L] falls to the ground!") + L.Paralyze(160) + L.flash_act(1,1) + if(issilicon(target)) + var/mob/living/silicon/S = L + S.emp_act(EMP_HEAVY) + else if(iscarbon(target)) + var/mob/living/carbon/C = L + C.silent += 6 + C.stuttering += 15 + C.cultslurring += 15 + C.Jitter(15) + uses-- + ..() + +//Teleportation +/obj/item/melee/blood_magic/teleport + name = "Teleporting Aura" + color = RUNE_COLOR_TELEPORT + desc = "Will teleport a cultist to a teleport rune on contact." + invocation = "Sas'so c'arta forbici!" + +/obj/item/melee/blood_magic/teleport/afterattack(atom/target, mob/living/carbon/user, proximity) + if(!iscultist(target) || !proximity) + to_chat(user, "You can only teleport adjacent cultists with this spell!") + return + if(iscultist(user)) + var/list/potential_runes = list() + var/list/teleportnames = list() + for(var/R in GLOB.teleport_runes) + var/obj/effect/rune/teleport/T = R + potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T + + if(!potential_runes.len) + to_chat(user, "There are no valid runes to teleport to!") + log_game("Teleport talisman failed - no other teleport runes") + return + + var/turf/T = get_turf(src) + if(is_away_level(T)) + to_chat(user, "You are not in the right dimension!") + log_game("Teleport spell failed - user in away mission") + return + + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? + if(QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !actual_selected_rune || !proximity) + return + var/turf/dest = get_turf(actual_selected_rune) + if(dest.is_blocked_turf(TRUE)) + to_chat(user, "The target rune is blocked. You cannot teleport there.") + return + uses-- + var/turf/origin = get_turf(user) + var/mob/living/L = target + if(do_teleport(L, dest, channel = TELEPORT_CHANNEL_CULT)) + origin.visible_message("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] with a sharp crack!", \ + "You speak the words of the talisman and find yourself somewhere else!", "You hear a sharp crack.") + dest.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") + ..() + +//Shackles +/obj/item/melee/blood_magic/shackles + name = "Shackling Aura" + desc = "Will start handcuffing a victim on contact, and mute them if successful." + invocation = "In'totum Lig'abis!" + color = "#000000" // black + +/obj/item/melee/blood_magic/shackles/afterattack(atom/target, mob/living/carbon/user, proximity) + if(iscultist(user) && iscarbon(target) && proximity) + var/mob/living/carbon/C = target + if(C.canBeHandcuffed()) + CuffAttack(C, user) + else + user.visible_message("This victim doesn't have enough arms to complete the restraint!") + return + ..() + +/obj/item/melee/blood_magic/shackles/proc/CuffAttack(mob/living/carbon/C, mob/living/user) + if(!C.handcuffed) + playsound(loc, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2) + C.visible_message("[user] begins restraining [C] with dark magic!", \ + "[user] begins shaping dark magic shackles around your wrists!") + if(do_mob(user, C, 30)) + if(!C.handcuffed) + C.set_handcuffed(new /obj/item/restraints/handcuffs/energy/cult/used(C)) + C.update_handcuffed() + C.silent += 5 + to_chat(user, "You shackle [C].") + log_combat(user, C, "shackled") + uses-- + else + to_chat(user, "[C] is already bound.") + else + to_chat(user, "You fail to shackle [C].") + else + to_chat(user, "[C] is already bound.") + + +/obj/item/restraints/handcuffs/energy/cult //For the shackling spell + name = "shadow shackles" + desc = "Shackles that bind the wrists with sinister magic." + trashtype = /obj/item/restraints/handcuffs/energy/used + item_flags = DROPDEL + +/obj/item/restraints/handcuffs/energy/cult/used/dropped(mob/user) + user.visible_message("[user]'s shackles shatter in a discharge of dark magic!", \ + "Your [src] shatters in a discharge of dark magic!") + . = ..() + + +//Construction: Converts 50 metal to a construct shell, plasteel to runed metal, airlock to brittle runed airlock, a borg to a construct, or borg shell to a construct shell +/obj/item/melee/blood_magic/construction + name = "Twisting Aura" + desc = "Corrupts certain metalic objects on contact." + invocation = "Ethra p'ni dedol!" + color = "#000000" // black + var/channeling = FALSE + +/obj/item/melee/blood_magic/construction/examine(mob/user) + . = ..() + . += {"A sinister spell used to convert:\n + Plasteel into runed metal\n + [METAL_TO_CONSTRUCT_SHELL_CONVERSION] metal into a construct shell\n + Living cyborgs into constructs after a delay\n + Cyborg shells into construct shells\n + Airlocks into brittle runed airlocks after a delay (harm intent)"} + +/obj/item/melee/blood_magic/construction/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(proximity_flag && iscultist(user)) + if(channeling) + to_chat(user, "You are already invoking twisted construction!") + return + var/turf/T = get_turf(target) + if(istype(target, /obj/item/stack/sheet/metal)) + var/obj/item/stack/sheet/candidate = target + if(candidate.use(METAL_TO_CONSTRUCT_SHELL_CONVERSION)) + uses-- + to_chat(user, "A dark cloud emanates from your hand and swirls around the metal, twisting it into a construct shell!") + new /obj/structure/constructshell(T) + SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) + else + to_chat(user, "You need [METAL_TO_CONSTRUCT_SHELL_CONVERSION] metal to produce a construct shell!") + return + else if(istype(target, /obj/item/stack/sheet/plasteel)) + var/obj/item/stack/sheet/plasteel/candidate = target + var/quantity = candidate.amount + if(candidate.use(quantity)) + uses -- + new /obj/item/stack/sheet/runed_metal(T,quantity) + to_chat(user, "A dark cloud emanates from you hand and swirls around the plasteel, transforming it into runed metal!") + SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) + else if(istype(target,/mob/living/silicon/robot)) + var/mob/living/silicon/robot/candidate = target + if(candidate.mmi) + channeling = TRUE + user.visible_message("A dark cloud emanates from [user]'s hand and swirls around [candidate]!") + playsound(T, 'sound/machines/creaking.ogg', 80, TRUE) + var/prev_color = candidate.color + candidate.color = "black" + if(do_after(user, 90, target = candidate)) + candidate.emp_act(EMP_HEAVY) + var/list/constructs = list( + "Juggernaut" = image(icon = 'icons/mob/cult.dmi', icon_state = "juggernaut"), + "Wraith" = image(icon = 'icons/mob/cult.dmi', icon_state = "wraith"), + "Artificer" = image(icon = 'icons/mob/cult.dmi', icon_state = "artificer") + ) + var/construct_class = show_radial_menu(user, src, constructs, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) + if(!check_menu(user)) + return + if(QDELETED(candidate)) + channeling = FALSE + return + user.visible_message("The dark cloud recedes from what was formerly [candidate], revealing a\n [construct_class]!") + switch(construct_class) + if("Juggernaut") + makeNewConstruct(/mob/living/simple_animal/hostile/construct/juggernaut, candidate, user, 0, T) + if("Wraith") + makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith, candidate, user, 0, T) + if("Artificer") + makeNewConstruct(/mob/living/simple_animal/hostile/construct/artificer, candidate, user, 0, T) + else + return + uses-- + candidate.mmi = null + qdel(candidate) + channeling = FALSE + else + channeling = FALSE + candidate.color = prev_color + return + else + uses-- + to_chat(user, "A dark cloud emanates from you hand and swirls around [candidate] - twisting it into a construct shell!") + new /obj/structure/constructshell(T) + SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) + qdel(candidate) + else if(istype(target,/obj/machinery/door/airlock)) + channeling = TRUE + playsound(T, 'sound/machines/airlockforced.ogg', 50, TRUE) + do_sparks(5, TRUE, target) + if(do_after(user, 50, target = user)) + if(QDELETED(target)) + channeling = FALSE + return + target.narsie_act() + uses-- + user.visible_message("Black ribbons suddenly emanate from [user]'s hand and cling to the airlock - twisting and corrupting it!") + SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) + channeling = FALSE + else + channeling = FALSE + return + else + to_chat(user, "The spell will not work on [target]!") + return + ..() + +/obj/item/melee/blood_magic/construction/proc/check_menu(mob/user) + if(!istype(user)) + return FALSE + if(user.incapacitated() || !user.Adjacent(src)) + return FALSE + return TRUE + + +//Armor: Gives the target a basic cultist combat loadout +/obj/item/melee/blood_magic/armor + name = "Arming Aura" + desc = "Will equipt cult combat gear onto a cultist on contact." + color = "#33cc33" // green + +/obj/item/melee/blood_magic/armor/afterattack(atom/target, mob/living/carbon/user, proximity) + if(iscarbon(target) && proximity) + uses-- + var/mob/living/carbon/C = target + C.visible_message("Otherworldly armor suddenly appears on [C]!") + C.equip_to_slot_or_del(new /obj/item/clothing/under/color/black,ITEM_SLOT_ICLOTHING) + C.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/cultrobes/alt(user), ITEM_SLOT_OCLOTHING) + C.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), ITEM_SLOT_FEET) + C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), ITEM_SLOT_BACK) + if(C == user) + qdel(src) //Clears the hands + C.put_in_hands(new /obj/item/restraints/legcuffs/bola/cult(user)) + ..() + +/obj/item/melee/blood_magic/manipulator + name = "Blood Rite Aura" + desc = "Absorbs blood from anything you touch. Touching cultists and constructs can heal them. Use in-hand to cast an advanced rite." + color = "#7D1717" + +/obj/item/melee/blood_magic/manipulator/examine(mob/user) + . = ..() + . += "Blood spear, blood bolt barrage, and blood beam cost [BLOOD_SPEAR_COST], [BLOOD_BARRAGE_COST], and [BLOOD_BEAM_COST] charges respectively." + +/obj/item/melee/blood_magic/manipulator/afterattack(atom/target, mob/living/carbon/human/user, proximity) + if(proximity) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(NOBLOOD in H.dna.species.species_traits) + to_chat(user,"Blood rites do not work on species with no blood!") + return + if(iscultist(H)) + if(H.stat == DEAD) + to_chat(user,"Only a revive rune can bring back the dead!") + return + if(H.blood_volume < BLOOD_VOLUME_SAFE) + var/restore_blood = BLOOD_VOLUME_SAFE - H.blood_volume + if(uses*2 < restore_blood) + H.blood_volume += uses*2 + to_chat(user,"You use the last of your blood rites to restore what blood you could!") + uses = 0 + return ..() + else + H.blood_volume = BLOOD_VOLUME_SAFE + uses -= round(restore_blood/2) + to_chat(user,"Your blood rites have restored [H == user ? "your" : "[H.p_their()]"] blood to safe levels!") + var/overall_damage = H.getBruteLoss() + H.getFireLoss() + H.getToxLoss() + H.getOxyLoss() + if(overall_damage == 0) + to_chat(user,"That cultist doesn't require healing!") + else + var/ratio = uses/overall_damage + if(H == user) + to_chat(user,"Your blood healing is far less efficient when used on yourself!") + ratio *= 0.35 // Healing is half as effective if you can't perform a full heal + uses -= round(overall_damage) // Healing is 65% more "expensive" even if you can still perform the full heal + if(ratio>1) + ratio = 1 + uses -= round(overall_damage) + H.visible_message("[H] is fully healed by [H==user ? "[H.p_their()]":"[H]'s"]'s blood magic!") + else + H.visible_message("[H] is partially healed by [H==user ? "[H.p_their()]":"[H]'s"] blood magic.") + uses = 0 + ratio *= -1 + H.adjustOxyLoss((overall_damage*ratio) * (H.getOxyLoss() / overall_damage), 0) + H.adjustToxLoss((overall_damage*ratio) * (H.getToxLoss() / overall_damage), 0) + H.adjustFireLoss((overall_damage*ratio) * (H.getFireLoss() / overall_damage), 0) + H.adjustBruteLoss((overall_damage*ratio) * (H.getBruteLoss() / overall_damage), 0) + H.updatehealth() + playsound(get_turf(H), 'sound/magic/staff_healing.ogg', 25) + new /obj/effect/temp_visual/cult/sparks(get_turf(H)) + user.Beam(H,icon_state="sendbeam",time=15) + else + if(H.stat == DEAD) + to_chat(user,"[H.p_their(TRUE)] blood has stopped flowing, you'll have to find another way to extract it.") + return + if(H.cultslurring) + to_chat(user,"[H.p_their(TRUE)] blood has been tainted by an even stronger form of blood magic, it's no use to us like this!") + return + if(H.blood_volume > BLOOD_VOLUME_SAFE) + H.blood_volume -= 100 + uses += 50 + user.Beam(H,icon_state="drainbeam",time=10) + playsound(get_turf(H), 'sound/magic/enter_blood.ogg', 50) + H.visible_message("[user] drains some of [H]'s blood!") + to_chat(user,"Your blood rite gains 50 charges from draining [H]'s blood.") + new /obj/effect/temp_visual/cult/sparks(get_turf(H)) + else + to_chat(user,"[H.p_theyre(TRUE)] missing too much blood - you cannot drain [H.p_them()] further!") + return + if(isconstruct(target)) + var/mob/living/simple_animal/M = target + var/missing = M.maxHealth - M.health + if(missing) + if(uses > missing) + M.adjustHealth(-missing) + M.visible_message("[M] is fully healed by [user]'s blood magic!") + uses -= missing + else + M.adjustHealth(-uses) + M.visible_message("[M] is partially healed by [user]'s blood magic!") + uses = 0 + playsound(get_turf(M), 'sound/magic/staff_healing.ogg', 25) + user.Beam(M,icon_state="sendbeam",time=10) + if(istype(target, /obj/effect/decal/cleanable/blood)) + blood_draw(target, user) + ..() + +/obj/item/melee/blood_magic/manipulator/proc/blood_draw(atom/target, mob/living/carbon/human/user) + var/temp = 0 + var/turf/T = get_turf(target) + if(T) + for(var/obj/effect/decal/cleanable/blood/B in view(T, 2)) + if(B.blood_state == BLOOD_STATE_HUMAN) + if(B.bloodiness == 100) //Bonus for "pristine" bloodpools, also to prevent cheese with footprint spam + temp += 30 + else + temp += max((B.bloodiness**2)/800,1) + new /obj/effect/temp_visual/cult/turf/floor(get_turf(B)) + qdel(B) + if(temp) + user.Beam(T,icon_state="drainbeam",time=15) + new /obj/effect/temp_visual/cult/sparks(get_turf(user)) + playsound(T, 'sound/magic/enter_blood.ogg', 50) + to_chat(user, "Your blood rite has gained [round(temp)] charge\s from blood sources around you!") + uses += max(1, round(temp)) + +/obj/item/melee/blood_magic/manipulator/attack_self(mob/living/user) + if(iscultist(user)) + var/list/options = list("Blood Spear (150)", "Blood Bolt Barrage (300)", "Blood Beam (500)") + var/choice = input(user, "Choose a greater blood rite...", "Greater Blood Rites") as null|anything in options + if(!choice) + to_chat(user, "You decide against conducting a greater blood rite.") + return + switch(choice) + if("Blood Spear (150)") + if(uses < BLOOD_SPEAR_COST) + to_chat(user, "You need [BLOOD_SPEAR_COST] charges to perform this rite.") + else + uses -= BLOOD_SPEAR_COST + var/turf/T = get_turf(user) + qdel(src) + var/datum/action/innate/cult/spear/S = new(user) + var/obj/item/cult_spear/rite = new(T) + S.Grant(user, rite) + rite.spear_act = S + if(user.put_in_hands(rite)) + to_chat(user, "A [rite.name] appears in your hand!") + else + user.visible_message( + "A [rite.name] appears at [user]'s feet!", \ + "A [rite.name] materializes at your feet.") + if("Blood Bolt Barrage (300)") + if(uses < BLOOD_BARRAGE_COST) + to_chat(user, "You need [BLOOD_BARRAGE_COST] charges to perform this rite.") + else + var/obj/rite = new /obj/item/gun/ballistic/rifle/illestren/enchanted/arcane_barrage/blood() + uses -= BLOOD_BARRAGE_COST + qdel(src) + if(user.put_in_hands(rite)) + to_chat(user, "Your hands glow with power!") + else + to_chat(user, "You need a free hand for this rite!") + qdel(rite) + if("Blood Beam (500)") + if(uses < BLOOD_BEAM_COST) + to_chat(user, "You need [BLOOD_BEAM_COST] charges to perform this rite.") + else + var/obj/rite = new /obj/item/blood_beam() + uses -= BLOOD_BEAM_COST + qdel(src) + if(user.put_in_hands(rite)) + to_chat(user, "Your hands glow with POWER OVERWHELMING!!!") + else + to_chat(user, "You need a free hand for this rite!") + qdel(rite) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm new file mode 100644 index 000000000000..ee36ad0d6d1b --- /dev/null +++ b/code/modules/antagonists/cult/cult.dm @@ -0,0 +1,407 @@ +#define SUMMON_POSSIBILITIES 3 +#define CULT_VICTORY 1 +#define CULT_LOSS 0 +#define CULT_NARSIE_KILLED -1 + +/datum/antagonist/cult + name = "Cultist" + roundend_category = "cultists" + antagpanel_category = "Cult" + antag_moodlet = /datum/mood_event/cult + var/datum/action/innate/cult/comm/communion = new + var/datum/action/innate/cult/mastervote/vote = new + var/datum/action/innate/cult/blood_magic/magic = new + job_rank = ROLE_CULTIST + antag_hud_type = ANTAG_HUD_CULT + antag_hud_name = "cult" + var/ignore_implant = FALSE + var/give_equipment = FALSE + var/datum/team/cult/cult_team + + +/datum/antagonist/cult/get_team() + return cult_team + +/datum/antagonist/cult/create_team(datum/team/cult/new_team) + if(!new_team) + //todo remove this and allow admin buttons to create more than one cult + for(var/datum/antagonist/cult/H in GLOB.antagonists) + if(!H.owner) + continue + if(H.cult_team) + cult_team = H.cult_team + return + cult_team = new /datum/team/cult + cult_team.setup_objectives() + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + cult_team = new_team + +/datum/antagonist/cult/proc/add_objectives() + objectives |= cult_team.objectives + +/datum/antagonist/cult/Destroy() + QDEL_NULL(communion) + QDEL_NULL(vote) + return ..() + +/datum/antagonist/cult/can_be_owned(datum/mind/new_owner) + . = ..() + if(. && !ignore_implant) + . = is_convertable_to_cult(new_owner.current,cult_team) + +/datum/antagonist/cult/greet() + to_chat(owner, "You are a member of the cult!") + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/bloodcult.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE)//subject to change + owner.announce_objectives() + +/datum/antagonist/cult/on_gain() + . = ..() + var/mob/living/current = owner.current + add_objectives() + if(give_equipment) + equip_cultist(TRUE) + SSticker.mode.cult += owner // Only add after they've been given objectives + current.log_message("has been converted to the cult of Nar'Sie!", LOG_ATTACK, color="#960000") + + if(cult_team.blood_target && cult_team.blood_target_image && current.client) + current.client.images += cult_team.blood_target_image + + +/datum/antagonist/cult/proc/equip_cultist(metal=TRUE) + var/mob/living/carbon/H = owner.current + if(!istype(H)) + return + if(metal) + . += cult_give_item(/obj/item/stack/sheet/runed_metal/ten, H) + to_chat(owner, "These will help you jumpstart a cult of your own in this sector. Use them well, and remember - you are not the only one.") + + +/datum/antagonist/cult/proc/cult_give_item(obj/item/item_path, mob/living/carbon/human/mob) + var/list/slots = list( + "backpack" = ITEM_SLOT_BACKPACK, + "left pocket" = ITEM_SLOT_LPOCKET, + "right pocket" = ITEM_SLOT_RPOCKET + ) + + var/T = new item_path(mob) + var/item_name = initial(item_path.name) + var/where = mob.equip_in_one_of_slots(T, slots) + if(!where) + to_chat(mob, "Unfortunately, you weren't able to get a [item_name]. This is very bad and you should adminhelp immediately (press F1).") + return 0 + else + to_chat(mob, "You have a [item_name] in your [where].") + if(where == "backpack") + SEND_SIGNAL(mob.back, COMSIG_TRY_STORAGE_SHOW, mob) + return TRUE + +/datum/antagonist/cult/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + add_antag_hud(antag_hud_type, antag_hud_name, current) + handle_clown_mutation(current, mob_override ? null : "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") + current.faction |= "cult" + current.grant_language(/datum/language/narsie, TRUE, TRUE, LANGUAGE_CULTIST) + if(!cult_team.cult_master) + vote.Grant(current) + communion.Grant(current) + if(ishuman(current)) + magic.Grant(current) + current.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense) + if(cult_team.cult_risen) + cult_team.rise(current) + if(cult_team.cult_ascendent) + cult_team.ascend(current) + +/datum/antagonist/cult/remove_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + remove_antag_hud(antag_hud_type, current) + handle_clown_mutation(current, removing = FALSE) + current.faction -= "cult" + current.remove_language(/datum/language/narsie, TRUE, TRUE, LANGUAGE_CULTIST) + vote.Remove(current) + communion.Remove(current) + magic.Remove(current) + current.clear_alert("bloodsense") + if(ishuman(current)) + var/mob/living/carbon/human/H = current + H.eye_color = initial(H.eye_color) + H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) + REMOVE_TRAIT(H, CULT_EYES, null) + H.remove_overlay(HALO_LAYER) + H.update_body() + +/datum/antagonist/cult/on_removal() + SSticker.mode.cult -= owner + if(!silent) + owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just reverted to [owner.current.p_their()] old faith!", null, null, null, owner.current) + to_chat(owner.current, "An unfamiliar white light flashes through your mind, cleansing the taint of the Geometer and all your memories as her servant.") + owner.current.log_message("has renounced the cult of Nar'Sie!", LOG_ATTACK, color="#960000") + if(cult_team.blood_target && cult_team.blood_target_image && owner.current.client) + owner.current.client.images -= cult_team.blood_target_image + . = ..() + +/datum/antagonist/cult/admin_add(datum/mind/new_owner,mob/admin) + give_equipment = FALSE + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has cult'ed [key_name_admin(new_owner)].") + log_admin("[key_name(admin)] has cult'ed [key_name(new_owner)].") + +/datum/antagonist/cult/admin_remove(mob/user) + message_admins("[key_name_admin(user)] has decult'ed [key_name_admin(owner)].") + log_admin("[key_name(user)] has decult'ed [key_name(owner)].") + SSticker.mode.remove_cultist(owner,silent=TRUE) //disgusting + +/datum/antagonist/cult/get_admin_commands() + . = ..() + .["Dagger"] = CALLBACK(src, PROC_REF(admin_give_dagger)) + .["Dagger and Metal"] = CALLBACK(src, PROC_REF(admin_give_metal)) + .["Remove Dagger and Metal"] = CALLBACK(src, PROC_REF(admin_take_all)) + +/datum/antagonist/cult/proc/admin_give_dagger(mob/admin) + if(!equip_cultist(metal=FALSE)) + to_chat(admin, "Spawning dagger failed!") + +/datum/antagonist/cult/proc/admin_give_metal(mob/admin) + if (!equip_cultist(metal=TRUE)) + to_chat(admin, "Spawning runed metal failed!") + +/datum/antagonist/cult/proc/admin_take_all(mob/admin) + var/mob/living/current = owner.current + for(var/o in current.GetAllContents()) + if(istype(o, /obj/item/stack/sheet/runed_metal)) + qdel(o) + +/datum/antagonist/cult/master + ignore_implant = TRUE + show_in_antagpanel = FALSE //Feel free to add this later + var/datum/action/innate/cult/master/finalreck/reckoning = new + var/datum/action/innate/cult/master/cultmark/bloodmark = new + var/datum/action/innate/cult/master/pulse/throwing = new + +/datum/antagonist/cult/master/Destroy() + QDEL_NULL(reckoning) + QDEL_NULL(bloodmark) + QDEL_NULL(throwing) + return ..() + +/datum/antagonist/cult/master/on_gain() + . = ..() + var/mob/living/current = owner.current + set_antag_hud(current, "cultmaster") + +/datum/antagonist/cult/master/greet() + to_chat(owner.current, "You are the cult's Master. As the cult's Master, you have a unique title and loud voice when communicating, are capable of marking \ + targets, such as a location or a noncultist, to direct the cult to them, and, finally, you are capable of summoning the entire living cult to your location once.") + to_chat(owner.current, "Use these abilities to direct the cult to victory at any cost.") + +/datum/antagonist/cult/master/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + if(!cult_team.reckoning_complete) + reckoning.Grant(current) + bloodmark.Grant(current) + throwing.Grant(current) + current.update_action_buttons_icon() + current.apply_status_effect(/datum/status_effect/cult_master) + if(cult_team.cult_risen) + cult_team.rise(current) + if(cult_team.cult_ascendent) + cult_team.ascend(current) + +/datum/antagonist/cult/master/remove_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + reckoning.Remove(current) + bloodmark.Remove(current) + throwing.Remove(current) + current.update_action_buttons_icon() + current.remove_status_effect(/datum/status_effect/cult_master) + + if(ishuman(current)) + var/mob/living/carbon/human/H = current + H.eye_color = initial(H.eye_color) + H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) + REMOVE_TRAIT(H, CULT_EYES, null) + H.remove_overlay(HALO_LAYER) + H.update_body() + +/datum/team/cult + name = "Cult" + + var/blood_target + var/image/blood_target_image + var/blood_target_reset_timer + + var/cult_vote_called = FALSE + var/mob/living/cult_master + var/reckoning_complete = FALSE + var/cult_risen = FALSE + var/cult_ascendent = FALSE + +/datum/team/cult/proc/check_size() + if(cult_ascendent) + return + var/alive = 0 + var/cultplayers = 0 + for(var/I in GLOB.player_list) + var/mob/M = I + if(M.stat != DEAD) + if(iscultist(M)) + ++cultplayers + else + ++alive + var/ratio = cultplayers/alive + if(ratio > CULT_RISEN && !cult_risen) + for(var/datum/mind/B in members) + if(B.current) + SEND_SOUND(B.current, 'sound/hallucinations/i_see_you2.ogg') + to_chat(B.current, "The veil weakens as your cult grows, your eyes begin to glow...") + addtimer(CALLBACK(src, PROC_REF(rise), B.current), 200) + cult_risen = TRUE + + if(ratio > CULT_ASCENDENT && !cult_ascendent) + for(var/datum/mind/B in members) + if(B.current) + SEND_SOUND(B.current, 'sound/hallucinations/im_here1.ogg') + to_chat(B.current, "Your cult is ascendent and the red harvest approaches - you cannot hide your true nature for much longer!!") + addtimer(CALLBACK(src, PROC_REF(ascend), B.current), 200) + cult_ascendent = TRUE + + +/datum/team/cult/proc/rise(cultist) + if(ishuman(cultist)) + var/mob/living/carbon/human/H = cultist + H.eye_color = "f00" + H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) + ADD_TRAIT(H, CULT_EYES, CULT_TRAIT) + H.update_body() + +/datum/team/cult/proc/ascend(cultist) + if(ishuman(cultist)) + var/mob/living/carbon/human/H = cultist + new /obj/effect/temp_visual/cult/sparks(get_turf(H), H.dir) + var/istate = pick("halo1","halo2","halo3","halo4","halo5","halo6") + var/mutable_appearance/new_halo_overlay = mutable_appearance('icons/effects/32x64.dmi', istate, -HALO_LAYER) + H.overlays_standing[HALO_LAYER] = new_halo_overlay + H.apply_overlay(HALO_LAYER) + +/datum/objective/sacrifice/find_target(dupe_search_range) + if(!istype(team, /datum/team/cult)) + return + var/datum/team/cult/C = team + var/list/target_candidates = list() + for(var/mob/living/carbon/human/player in GLOB.player_list) + if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && !is_convertable_to_cult(player) && player.stat != DEAD) + target_candidates += player.mind + if(target_candidates.len == 0) + message_admins("Cult Sacrifice: Could not find unconvertible target, checking for convertible target.") + for(var/mob/living/carbon/human/player in GLOB.player_list) + if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && player.stat != DEAD) + target_candidates += player.mind + listclearnulls(target_candidates) + if(LAZYLEN(target_candidates)) + target = pick(target_candidates) + update_explanation_text() + else + message_admins("Cult Sacrifice: Could not find unconvertible or convertible target. WELP!") + for(var/datum/mind/M in C.members) + if(M.current) + M.current.clear_alert("bloodsense") + M.current.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense) + +/datum/team/cult/proc/setup_objectives() + var/datum/objective/sacrifice/sac_objective = new + sac_objective.team = src + sac_objective.find_target() + objectives += sac_objective + + var/datum/objective/eldergod/summon_objective = new + summon_objective.team = src + objectives += summon_objective + + +/datum/objective/sacrifice + var/sacced = FALSE + var/sac_image + +/datum/objective/sacrifice/check_completion() + return sacced || completed + +/datum/objective/sacrifice/update_explanation_text() + if(target) + explanation_text = "Sacrifice [target], the [target.assigned_role] via invoking an Offer rune with [target.p_them()] on it and three acolytes around it." + else + explanation_text = "The veil has already been weakened here, proceed to the final objective." + +/datum/objective/eldergod + var/summoned = FALSE + var/killed = FALSE + var/list/summon_spots = list() + +/datum/objective/eldergod/New() + ..() + var/sanity = 0 + while(summon_spots.len < SUMMON_POSSIBILITIES && sanity < 100) + var/area/summon_area = pick(GLOB.sortedAreas - summon_spots) + if(summon_area && (summon_area.area_flags & VALID_TERRITORY)) + summon_spots += summon_area + sanity++ + update_explanation_text() + +/datum/objective/eldergod/update_explanation_text() + explanation_text = "Summon Nar'Sie by invoking the rune 'Summon Nar'Sie'. The summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin." + +/datum/objective/eldergod/check_completion() + if(killed) + return CULT_NARSIE_KILLED // You failed so hard that even the code went backwards. + return summoned || completed + +/datum/team/cult/proc/check_cult_victory() + for(var/datum/objective/O in objectives) + if(O.check_completion() == CULT_NARSIE_KILLED) + return CULT_NARSIE_KILLED + else if(!O.check_completion()) + return CULT_LOSS + return CULT_VICTORY + +/datum/team/cult/roundend_report() + var/list/parts = list() + var/victory = check_cult_victory() + + if(victory == CULT_NARSIE_KILLED) // Epic failure, you summoned your god and then someone killed it. + parts += "Nar'sie has been killed! The cult will haunt the universe no longer!" + else if(victory) + parts += "The cult has succeeded! Nar'Sie has snuffed out another torch in the void!" + else + parts += "The staff managed to stop the cult! Dark words and heresy are no match for Nanotrasen's finest!" + + if(objectives.len) + parts += "The cultists' objectives were:" + var/count = 1 + for(var/datum/objective/objective in objectives) + if(objective.check_completion()) + parts += "Objective #[count]: [objective.explanation_text] Success!" + else + parts += "Objective #[count]: [objective.explanation_text] Fail." + count++ + + if(members.len) + parts += "The cultists were:" + parts += printplayerlist(members) + + return "
[parts.Join("
")]
" + +/datum/team/cult/is_gamemode_hero() + return SSticker.mode.name == "cult" diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm new file mode 100644 index 000000000000..0c070e8e423f --- /dev/null +++ b/code/modules/antagonists/cult/cult_comms.dm @@ -0,0 +1,461 @@ +// Contains cult communion, guide, and cult master abilities + +/datum/action/innate/cult + icon_icon = 'icons/mob/actions/actions_cult.dmi' + background_icon_state = "bg_demon" + buttontooltipstyle = "cult" + check_flags = AB_CHECK_HANDS_BLOCKED|AB_CHECK_IMMOBILE|AB_CHECK_CONSCIOUS + +/datum/action/innate/cult/IsAvailable() + if(!iscultist(owner)) + return FALSE + return ..() + +/datum/action/innate/cult/comm + name = "Communion" + desc = "Whispered words that all cultists can hear.
Warning:Nearby non-cultists can still hear you." + button_icon_state = "cult_comms" + +/datum/action/innate/cult/comm/Activate() + var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "") + if(!input || !IsAvailable()) + return + if(CHAT_FILTER_CHECK(input)) + to_chat(usr, "You cannot send a message that contains a word prohibited in IC chat!") + return + cultist_commune(usr, input) + +/datum/action/innate/cult/comm/proc/cultist_commune(mob/living/user, message) + var/my_message + if(!message) + return + user.whisper("O bidai nabora se[pick("'","`")]sma!", language = /datum/language/common) + user.whisper(html_decode(message)) + var/title = "Acolyte" + var/span = "cult italic" + if(user.mind && user.mind.has_antag_datum(/datum/antagonist/cult/master)) + span = "cultlarge" + title = "Master" + else if(!ishuman(user)) + title = "Construct" + my_message = "[title] [findtextEx(user.name, user.real_name) ? user.name : "[user.real_name] (as [user.name])"]: [message]" + for(var/i in GLOB.player_list) + var/mob/M = i + if(iscultist(M)) + to_chat(M, my_message) + else if(M in GLOB.dead_mob_list) + var/link = FOLLOW_LINK(M, user) + to_chat(M, "[link] [my_message]") + + user.log_talk(message, LOG_SAY, tag="cult") + +/datum/action/innate/cult/comm/spirit + name = "Spiritual Communion" + desc = "Conveys a message from the spirit realm that all cultists can hear." + +/datum/action/innate/cult/comm/spirit/IsAvailable() + if(iscultist(owner.mind.current)) + return TRUE + +/datum/action/innate/cult/comm/spirit/cultist_commune(mob/living/user, message) + var/my_message + if(!message) + return + my_message = "The [user.name]: [message]" + for(var/i in GLOB.player_list) + var/mob/M = i + if(iscultist(M)) + to_chat(M, my_message) + else if(M in GLOB.dead_mob_list) + var/link = FOLLOW_LINK(M, user) + to_chat(M, "[link] [my_message]") + +/datum/action/innate/cult/mastervote + name = "Assert Leadership" + button_icon_state = "cultvote" + +/datum/action/innate/cult/mastervote/IsAvailable() + var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + if(!C || C.cult_team.cult_vote_called || !ishuman(owner)) + return FALSE + return ..() + +/datum/action/innate/cult/mastervote/Activate() + var/choice = alert(owner, "The mantle of leadership is heavy. Success in this role requires an expert level of communication and experience. Are you sure?",, "Yes", "No") + if(choice == "Yes" && IsAvailable()) + var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + pollCultists(owner,C.cult_team) + +/proc/pollCultists(mob/living/Nominee,datum/team/cult/team) //Cult Master Poll + if(world.time < CULT_POLL_WAIT) + to_chat(Nominee, "It would be premature to select a leader while everyone is still settling in, try again in [DisplayTimeText(CULT_POLL_WAIT-world.time)].") + return + team.cult_vote_called = TRUE //somebody's trying to be a master, make sure we don't let anyone else try + for(var/datum/mind/B in team.members) + if(B.current) + B.current.update_action_buttons_icon() + if(!B.current.incapacitated()) + SEND_SOUND(B.current, 'sound/hallucinations/im_here1.ogg') + to_chat(B.current, "Acolyte [Nominee] has asserted that [Nominee.p_theyre()] worthy of leading the cult. A vote will be called shortly.") + sleep(100) + var/list/asked_cultists = list() + for(var/datum/mind/B in team.members) + if(B.current && B.current != Nominee && !B.current.incapacitated()) + SEND_SOUND(B.current, 'sound/magic/exit_blood.ogg') + asked_cultists += B.current + var/list/yes_voters = pollCandidates("[Nominee] seeks to lead your cult, do you support [Nominee.p_them()]?", poll_time = 300, group = asked_cultists) + if(QDELETED(Nominee) || Nominee.incapacitated()) + team.cult_vote_called = FALSE + for(var/datum/mind/B in team.members) + if(B.current) + B.current.update_action_buttons_icon() + if(!B.current.incapacitated()) + to_chat(B.current,"[Nominee] has died in the process of attempting to win the cult's support!") + return FALSE + if(!Nominee.mind) + team.cult_vote_called = FALSE + for(var/datum/mind/B in team.members) + if(B.current) + B.current.update_action_buttons_icon() + if(!B.current.incapacitated()) + to_chat(B.current,"[Nominee] has gone catatonic in the process of attempting to win the cult's support!") + return FALSE + if(LAZYLEN(yes_voters) <= LAZYLEN(asked_cultists) * 0.5) + team.cult_vote_called = FALSE + for(var/datum/mind/B in team.members) + if(B.current) + B.current.update_action_buttons_icon() + if(!B.current.incapacitated()) + to_chat(B.current, "[Nominee] could not win the cult's support and shall continue to serve as an acolyte.") + return FALSE + team.cult_master = Nominee + SSticker.mode.remove_cultist(Nominee.mind, TRUE) + Nominee.mind.add_antag_datum(/datum/antagonist/cult/master) + for(var/datum/mind/B in team.members) + if(B.current) + for(var/datum/action/innate/cult/mastervote/vote in B.current.actions) + vote.Remove(B.current) + if(!B.current.incapacitated()) + to_chat(B.current,"[Nominee] has won the cult's support and is now their master. Follow [Nominee.p_their()] orders to the best of your ability!") + return TRUE + +/datum/action/innate/cult/master/IsAvailable() + if(!owner.mind || !owner.mind.has_antag_datum(/datum/antagonist/cult/master) || GLOB.cult_narsie) + return 0 + return ..() + +/datum/action/innate/cult/master/finalreck + name = "Final Reckoning" + desc = "A single-use spell that brings the entire cult to the master's location." + button_icon_state = "sintouch" + +/datum/action/innate/cult/master/finalreck/Activate() + var/datum/antagonist/cult/antag = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + if(!antag) + return + for(var/i in 1 to 4) + chant(i) + var/list/destinations = list() + for(var/turf/T in orange(1, owner)) + if(!T.is_blocked_turf(TRUE)) + destinations += T + if(!LAZYLEN(destinations)) + to_chat(owner, "You need more space to summon your cult!") + return + if(do_after(owner, 30, target = owner)) + for(var/datum/mind/B in antag.cult_team.members) + if(B.current && B.current.stat != DEAD) + var/turf/mobloc = get_turf(B.current) + switch(i) + if(1) + new /obj/effect/temp_visual/cult/sparks(mobloc, B.current.dir) + playsound(mobloc, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + if(2) + new /obj/effect/temp_visual/dir_setting/cult/phase/out(mobloc, B.current.dir) + playsound(mobloc, "sparks", 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + if(3) + new /obj/effect/temp_visual/dir_setting/cult/phase(mobloc, B.current.dir) + playsound(mobloc, "sparks", 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + if(4) + playsound(mobloc, 'sound/magic/exit_blood.ogg', 100, TRUE) + if(B.current != owner) + var/turf/final = pick(destinations) + if(istype(B.current.loc, /obj/item/soulstone)) + var/obj/item/soulstone/S = B.current.loc + S.release_shades(owner) + B.current.setDir(SOUTH) + new /obj/effect/temp_visual/cult/blood(final) + addtimer(CALLBACK(B.current, TYPE_PROC_REF(/mob, reckon), final), 10) + else + return + antag.cult_team.reckoning_complete = TRUE + Remove(owner) + +/mob/proc/reckon(turf/final) + new /obj/effect/temp_visual/cult/blood/out(get_turf(src)) + forceMove(final) + +/datum/action/innate/cult/master/finalreck/proc/chant(chant_number) + switch(chant_number) + if(1) + owner.say("C'arta forbici!", language = /datum/language/common, forced = "cult invocation") + if(2) + owner.say("Pleggh e'ntrath!", language = /datum/language/common, forced = "cult invocation") + playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 50, TRUE) + if(3) + owner.say("Barhah hra zar'garis!", language = /datum/language/common, forced = "cult invocation") + playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 75, TRUE) + if(4) + owner.say("N'ath reth sh'yro eth d'rekkathnor!!!", language = /datum/language/common, forced = "cult invocation") + playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 100, TRUE) + +/datum/action/innate/cult/master/cultmark + name = "Mark Target" + desc = "Marks a target for the cult." + button_icon_state = "cult_mark" + var/obj/effect/proc_holder/cultmark/CM + var/cooldown = 0 + var/base_cooldown = 1200 + +/datum/action/innate/cult/master/cultmark/New(Target) + CM = new() + CM.attached_action = src + ..() + +/datum/action/innate/cult/master/cultmark/IsAvailable() + if(cooldown > world.time) + if(!CM.active) + to_chat(owner, "You need to wait [DisplayTimeText(cooldown - world.time)] before you can mark another target!") + return FALSE + return ..() + +/datum/action/innate/cult/master/cultmark/Destroy() + QDEL_NULL(CM) + return ..() + +/datum/action/innate/cult/master/cultmark/Activate() + CM.toggle(owner) //the important bit + return TRUE + +/obj/effect/proc_holder/cultmark + active = FALSE + ranged_mousepointer = 'icons/effects/mouse_pointers/cult_target.dmi' + var/datum/action/innate/cult/master/cultmark/attached_action + +/obj/effect/proc_holder/cultmark/Destroy() + attached_action = null + return ..() + +/obj/effect/proc_holder/cultmark/proc/toggle(mob/user) + if(active) + remove_ranged_ability("You cease the marking ritual.") + else + add_ranged_ability(user, "You prepare to mark a target for your cult...") + +/obj/effect/proc_holder/cultmark/InterceptClickOn(mob/living/caller, params, atom/target) + if(..()) + return + if(ranged_ability_user.incapacitated()) + remove_ranged_ability() + return + var/turf/T = get_turf(ranged_ability_user) + if(!isturf(T)) + return FALSE + + var/datum/antagonist/cult/C = caller.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + + if(target in view(7, get_turf(ranged_ability_user))) + if(C.cult_team.blood_target) + to_chat(ranged_ability_user, "The cult has already designated a target!") + return FALSE + C.cult_team.blood_target = target + var/area/A = get_area(target) + attached_action.cooldown = world.time + attached_action.base_cooldown + addtimer(CALLBACK(attached_action.owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), attached_action.base_cooldown) + C.cult_team.blood_target_image = image('icons/effects/mouse_pointers/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER) + C.cult_team.blood_target_image.appearance_flags = RESET_COLOR + C.cult_team.blood_target_image.pixel_x = -target.pixel_x + C.cult_team.blood_target_image.pixel_y = -target.pixel_y + for(var/datum/mind/B in SSticker.mode.cult) + if(B.current && B.current.stat != DEAD && B.current.client) + to_chat(B.current, "[ranged_ability_user] has marked [C.cult_team.blood_target] in the [A.name] as the cult's top priority, get there immediately!") + SEND_SOUND(B.current, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) + B.current.client.images += C.cult_team.blood_target_image + attached_action.owner.update_action_buttons_icon() + remove_ranged_ability("The marking rite is complete! It will last for 90 seconds.") + C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(reset_blood_target),C.cult_team), 900, TIMER_STOPPABLE) + return TRUE + return FALSE + +/proc/reset_blood_target(datum/team/cult/team) + for(var/datum/mind/B in team.members) + if(B.current && B.current.stat != DEAD && B.current.client) + if(team.blood_target) + to_chat(B.current,"The blood mark has expired!") + B.current.client.images -= team.blood_target_image + QDEL_NULL(team.blood_target_image) + team.blood_target = null + + +/datum/action/innate/cult/master/cultmark/ghost + name = "Mark a Blood Target for the Cult" + desc = "Marks a target for the entire cult to track." + +/datum/action/innate/cult/master/cultmark/ghost/IsAvailable() + if(istype(owner, /mob/dead/observer) && iscultist(owner.mind.current)) + return TRUE + else + qdel(src) + +/datum/action/innate/cult/ghostmark //Ghost version + name = "Blood Mark your Target" + desc = "Marks whatever you are orbitting - for the entire cult to track." + button_icon_state = "cult_mark" + var/tracking = FALSE + var/cooldown = 0 + var/base_cooldown = 600 + +/datum/action/innate/cult/ghostmark/IsAvailable() + if(istype(owner, /mob/dead/observer) && iscultist(owner.mind.current)) + return TRUE + else + qdel(src) + +/datum/action/innate/cult/ghostmark/proc/reset_button() + if(owner) + name = "Blood Mark your Target" + desc = "Marks whatever you are orbitting - for the entire cult to track." + button_icon_state = "cult_mark" + owner.update_action_buttons_icon() + SEND_SOUND(owner, 'sound/magic/enter_blood.ogg') + to_chat(owner,"Your previous mark is gone - you are now ready to create a new blood mark.") + +/datum/action/innate/cult/ghostmark/Activate() + var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + if(C.cult_team.blood_target) + if(cooldown>world.time) + reset_blood_target(C.cult_team) + to_chat(owner, "You have cleared the cult's blood target!") + deltimer(C.cult_team.blood_target_reset_timer) + return + else + to_chat(owner, "The cult has already designated a target!") + return + if(cooldown>world.time) + to_chat(owner, "You aren't ready to place another blood mark yet!") + return + target = owner.orbiting?.parent || get_turf(owner) + if(!target) + return + C.cult_team.blood_target = target + var/area/A = get_area(target) + cooldown = world.time + base_cooldown + addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), base_cooldown) + C.cult_team.blood_target_image = image('icons/effects/mouse_pointers/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER) + C.cult_team.blood_target_image.appearance_flags = RESET_COLOR + C.cult_team.blood_target_image.pixel_x = -target.pixel_x + C.cult_team.blood_target_image.pixel_y = -target.pixel_y + SEND_SOUND(owner, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) + owner.client.images += C.cult_team.blood_target_image + for(var/datum/mind/B in SSticker.mode.cult) + if(B.current && B.current.stat != DEAD && B.current.client) + to_chat(B.current, "[owner] has marked [C.cult_team.blood_target] in the [A.name] as the cult's top priority, get there immediately!") + SEND_SOUND(B.current, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) + B.current.client.images += C.cult_team.blood_target_image + to_chat(owner,"You have marked the [target] for the cult! It will last for [DisplayTimeText(base_cooldown)].") + name = "Clear the Blood Mark" + desc = "Remove the Blood Mark you previously set." + button_icon_state = "emp" + owner.update_action_buttons_icon() + C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(reset_blood_target),C.cult_team), base_cooldown, TIMER_STOPPABLE) + addtimer(CALLBACK(src, PROC_REF(reset_button)), base_cooldown) + + +//////// ELDRITCH PULSE ///////// + + + +/datum/action/innate/cult/master/pulse + name = "Eldritch Pulse" + desc = "Seize upon a fellow cultist or cult structure and teleport it to a nearby location." + icon_icon = 'icons/mob/actions/actions_spells.dmi' + button_icon_state = "arcane_barrage" + var/obj/effect/proc_holder/pulse/PM + var/cooldown = 0 + var/base_cooldown = 150 + var/throwing = FALSE + var/mob/living/throwee + +/datum/action/innate/cult/master/pulse/New() + PM = new() + PM.attached_action = src + ..() + +/datum/action/innate/cult/master/pulse/IsAvailable() + if(!owner.mind || !owner.mind.has_antag_datum(/datum/antagonist/cult/master)) + return FALSE + if(cooldown > world.time) + if(!PM.active) + to_chat(owner, "You need to wait [DisplayTimeText(cooldown - world.time)] before you can pulse again!") + return FALSE + return ..() + +/datum/action/innate/cult/master/pulse/Destroy() + PM.attached_action = null //What the fuck is even going on here. + QDEL_NULL(PM) + return ..() + + +/datum/action/innate/cult/master/pulse/Activate() + PM.toggle(owner) //the important bit + return TRUE + +/obj/effect/proc_holder/pulse + active = FALSE + ranged_mousepointer = 'icons/effects/mouse_pointers/throw_target.dmi' + var/datum/action/innate/cult/master/pulse/attached_action + +/obj/effect/proc_holder/pulse/Destroy() + attached_action = null + return ..() + + +/obj/effect/proc_holder/pulse/proc/toggle(mob/user) + if(active) + remove_ranged_ability("You cease your preparations...") + attached_action.throwing = FALSE + else + add_ranged_ability(user, "You prepare to tear through the fabric of reality...") + +/obj/effect/proc_holder/pulse/InterceptClickOn(mob/living/caller, params, atom/target) + if(..()) + return + if(ranged_ability_user.incapacitated()) + remove_ranged_ability() + return + var/turf/T = get_turf(ranged_ability_user) + if(!isturf(T)) + return FALSE + if(target in view(7, get_turf(ranged_ability_user))) + if((!(iscultist(target) || istype(target, /obj/structure/destructible/cult)) || target == caller) && !(attached_action.throwing)) + return + if(!attached_action.throwing) + attached_action.throwing = TRUE + attached_action.throwee = target + SEND_SOUND(ranged_ability_user, sound('sound/weapons/thudswoosh.ogg')) + to_chat(ranged_ability_user,"You reach through the veil with your mind's eye and seize [target]!") + return + else + new /obj/effect/temp_visual/cult/sparks(get_turf(attached_action.throwee), ranged_ability_user.dir) + var/distance = get_dist(attached_action.throwee, target) + if(distance >= 16) + return + playsound(target,'sound/magic/exit_blood.ogg') + attached_action.throwee.Beam(target,icon_state="sendbeam",time=4) + attached_action.throwee.forceMove(get_turf(target)) + new /obj/effect/temp_visual/cult/sparks(get_turf(target), ranged_ability_user.dir) + attached_action.throwing = FALSE + attached_action.cooldown = world.time + attached_action.base_cooldown + remove_ranged_ability("A pulse of blood magic surges through you as you shift [attached_action.throwee] through time and space.") + caller.update_action_buttons_icon() + addtimer(CALLBACK(caller, TYPE_PROC_REF(/mob, update_action_buttons_icon)), attached_action.base_cooldown) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm new file mode 100644 index 000000000000..0124ec2b9a49 --- /dev/null +++ b/code/modules/antagonists/cult/cult_items.dm @@ -0,0 +1,709 @@ +/obj/item/tome + name = "arcane tome" + desc = "An old, dusty tome with frayed edges and a sinister-looking cover." + icon_state ="tome" + throw_speed = 2 + throw_range = 5 + w_class = WEIGHT_CLASS_SMALL + +/datum/action/innate/dash/cult + name = "Rend the Veil" + desc = "Use the sword to shear open the flimsy fabric of this reality and teleport to your target." + icon_icon = 'icons/mob/actions/actions_cult.dmi' + button_icon_state = "phaseshift" + dash_sound = 'sound/magic/enter_blood.ogg' + recharge_sound = 'sound/magic/exit_blood.ogg' + beam_effect = "sendbeam" + phasein = /obj/effect/temp_visual/dir_setting/cult/phase + phaseout = /obj/effect/temp_visual/dir_setting/cult/phase/out + +/datum/action/innate/dash/cult/IsAvailable() + if(iscultist(owner) && current_charges) + return TRUE + else + return FALSE + +/obj/item/restraints/legcuffs/bola/cult + name = "\improper Nar'Sien bola" + desc = "A strong bola, bound with dark magic that allows it to pass harmlessly through Nar'Sien cultists. Throw it to trip and slow your victim." + icon_state = "bola_cult" + item_state = "bola_cult" + breakouttime = 60 + knockdown = 30 + +/obj/item/restraints/legcuffs/bola/cult/attack_hand(mob/living/user) + . = ..() + if(!iscultist(user)) + to_chat(user, "The bola seems to take on a life of its own!") + ensnare(user) + +/obj/item/restraints/legcuffs/bola/cult/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + if(iscultist(hit_atom)) + return + . = ..() + + +/obj/item/clothing/head/hooded/cult_hoodie + name = "ancient cultist hood" + icon_state = "culthood" + desc = "A torn, dust-caked hood. Strange letters line the inside." + flags_inv = HIDEFACE|HIDEHAIR|HIDEEARS + flags_cover = HEADCOVERSEYES + armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 40, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) + cold_protection = HEAD + min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT + heat_protection = HEAD + max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT + +/obj/item/clothing/suit/hooded/cultrobes + name = "ancient cultist robes" + desc = "A ragged, dusty set of robes. Strange letters line the inside." + icon_state = "cultrobes" + item_state = "cultrobes" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + allowed = list(/obj/item/tome, /obj/item/tank) + armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 40, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) + flags_inv = HIDEJUMPSUIT + cold_protection = CHEST|GROIN|LEGS|ARMS + min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT + heat_protection = CHEST|GROIN|LEGS|ARMS + max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT + hoodtype = /obj/item/clothing/head/hooded/cult_hoodie + + +/obj/item/clothing/head/hooded/cult_hoodie/alt + name = "cultist hood" + desc = "An armored hood worn by the followers of Nar'Sie." + icon_state = "cult_hoodalt" + item_state = "cult_hoodalt" + +/obj/item/clothing/suit/hooded/cultrobes/alt + name = "cultist robes" + desc = "An armored set of robes worn by the followers of Nar'Sie." + icon_state = "cultrobesalt" + item_state = "cultrobesalt" + hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/alt + +/obj/item/clothing/suit/hooded/cultrobes/alt/ghost + item_flags = DROPDEL + +/obj/item/clothing/suit/hooded/cultrobes/alt/ghost/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT) + + +/obj/item/clothing/head/magus + name = "magus helm" + icon_state = "magus" + item_state = "magus" + desc = "A helm worn by the followers of Nar'Sie." + flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES + armor = list("melee" = 50, "bullet" = 30, "laser" = 50,"energy" = 50, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH + +/obj/item/clothing/suit/magusred + name = "magus robes" + desc = "A set of armored robes worn by the followers of Nar'Sie." + icon_state = "magusred" + item_state = "magusred" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + allowed = list(/obj/item/tome) + armor = list("melee" = 50, "bullet" = 30, "laser" = 50,"energy" = 50, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + +/obj/item/clothing/head/helmet/space/hardsuit/cult + name = "\improper Nar'Sien hardened helmet" + desc = "A heavily-armored helmet worn by warriors of the Nar'Sien cult. It can withstand hard vacuum." + icon_state = "cult_helmet" + item_state = "cult_helmet" + armor = list("melee" = 70, "bullet" = 50, "laser" = 30,"energy" = 40, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75) + light_system = NO_LIGHT_SUPPORT + light_range = 0 + actions_types = list() + +/obj/item/clothing/suit/space/hardsuit/cult + name = "\improper Nar'Sien hardened armor" + icon_state = "cult_armor" + item_state = "cult_armor" + desc = "A heavily-armored exosuit worn by warriors of the Nar'Sien cult. It can withstand hard vacuum." + w_class = WEIGHT_CLASS_BULKY + allowed = list(/obj/item/tome, /obj/item/tank/internals/) + armor = list("melee" = 70, "bullet" = 50, "laser" = 30,"energy" = 40, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75) + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult + +/obj/item/sharpener/cult + name = "eldritch whetstone" + desc = "A block, empowered by dark magic. Sharp weapons will be enhanced when used on the stone." + icon_state = "cult_sharpener" + used = 0 + increment = 5 + max = 40 + prefix = "darkened" + +/obj/item/sharpener/cult/update_icon_state() + icon_state = "cult_sharpener[used ? "_used" : ""]" + return ..() + +/obj/item/clothing/suit/hooded/cultrobes/cult_shield + name = "empowered cultist armor" + desc = "Empowered armor which creates a powerful shield around the user." + icon_state = "cult_armor" + item_state = "cult_armor" + w_class = WEIGHT_CLASS_BULKY + armor = list("melee" = 50, "bullet" = 40, "laser" = 50,"energy" = 50, "bomb" = 50, "bio" = 30, "rad" = 30, "fire" = 50, "acid" = 60) + var/current_charges = 3 + hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/cult_shield + +/obj/item/clothing/head/hooded/cult_hoodie/cult_shield + name = "empowered cultist helmet" + desc = "Empowered helmet which creates a powerful shield around the user." + icon_state = "cult_hoodalt" + armor = list("melee" = 50, "bullet" = 40, "laser" = 50,"energy" = 50, "bomb" = 50, "bio" = 30, "rad" = 30, "fire" = 50, "acid" = 60) + +/obj/item/clothing/suit/hooded/cultrobes/cult_shield/equipped(mob/living/user, slot) + ..() + if(!iscultist(user)) + to_chat(user, "\"I wouldn't advise that.\"") + to_chat(user, "An overwhelming sense of nausea overpowers you!") + user.dropItemToGround(src, TRUE) + user.Dizzy(30) + user.Paralyze(100) + +/obj/item/clothing/suit/hooded/cultrobes/cult_shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(current_charges) + owner.visible_message("\The [attack_text] is deflected in a burst of blood-red sparks!") + current_charges-- + new /obj/effect/temp_visual/cult/sparks(get_turf(owner)) + if(!current_charges) + owner.visible_message("The runed shield around [owner] suddenly disappears!") + owner.update_inv_wear_suit() + return 1 + return 0 + +/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands) + . = list() + if(!isinhands && current_charges) + . += mutable_appearance('icons/effects/cult_effects.dmi', "shield-cult", MOB_LAYER + 0.01) + +/obj/item/clothing/suit/hooded/cultrobes/berserker + name = "flagellant's robes" + desc = "Blood-soaked robes infused with dark magic; allows the user to move at inhuman speeds, but at the cost of increased damage." + allowed = list(/obj/item/tome) + armor = list("melee" = -45, "bullet" = -45, "laser" = -45,"energy" = -55, "bomb" = -45, "bio" = -45, "rad" = -45, "fire" = 0, "acid" = 0) + slowdown = -0.6 + hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/berserkerhood + +/obj/item/clothing/head/hooded/cult_hoodie/berserkerhood + name = "flagellant's hood" + desc = "Blood-soaked hood infused with dark magic." + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + +/obj/item/clothing/suit/hooded/cultrobes/berserker/equipped(mob/living/user, slot) + ..() + if(!iscultist(user)) + to_chat(user, "\"I wouldn't advise that.\"") + to_chat(user, "An overwhelming sense of nausea overpowers you!") + user.dropItemToGround(src, TRUE) + user.Dizzy(30) + user.Paralyze(100) + +/obj/item/clothing/glasses/hud/health/night/cultblind + desc = "may Nar'Sie guide you through the darkness and shield you from the light." + name = "zealot's blindfold" + icon_state = "blindfold" + item_state = "blindfold" + flash_protect = FLASH_PROTECTION_FLASH + +/obj/item/clothing/glasses/hud/health/night/cultblind/equipped(mob/living/user, slot) + ..() + if(prob(30)) + to_chat(user, "\"You want to be blind, do you?\"") + user.dropItemToGround(src, TRUE) + user.Dizzy(30) + user.Paralyze(100) + user.blind_eyes(30) + else + return + +/obj/item/reagent_containers/glass/beaker/unholywater + name = "flask of unholy water" + desc = "Toxic to nonbelievers; reinvigorating to the faithful - this flask may be sipped or thrown." + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "holyflask" + color = "#333333" + list_reagents = list(/datum/reagent/fuel/unholywater = 50) + can_have_cap = FALSE + cap_icon_state = null + cap_on = FALSE + +/obj/item/cult_shift + name = "veil shifter" + desc = "This relic instantly teleports you, and anything you're pulling, forward by a moderate distance." + icon = 'icons/obj/cult.dmi' + icon_state ="shifter" + var/uses = 4 + +/obj/item/cult_shift/examine(mob/user) + . = ..() + if(uses) + . += "It has [uses] use\s remaining." + else + . += "It seems drained." + +/obj/item/cult_shift/proc/handle_teleport_grab(turf/T, mob/user) + var/mob/living/carbon/C = user + if(C.pulling) + var/atom/movable/pulled = C.pulling + do_teleport(pulled, T, channel = TELEPORT_CHANNEL_CULT) + . = pulled + +/obj/item/cult_shift/attack_self(mob/user) + if(!uses || !iscarbon(user)) + to_chat(user, "\The [src] is dull and unmoving in your hands.") + return + + var/mob/living/carbon/C = user + var/turf/mobloc = get_turf(C) + var/turf/destination = get_teleport_loc(mobloc,C,9,1,3,1,0,1) + + if(destination) + uses-- + if(uses <= 0) + icon_state ="shifter_drained" + playsound(mobloc, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + new /obj/effect/temp_visual/dir_setting/cult/phase/out(mobloc, C.dir) + + var/atom/movable/pulled = handle_teleport_grab(destination, C) + if(do_teleport(C, destination, channel = TELEPORT_CHANNEL_CULT)) + if(pulled) + C.start_pulling(pulled) //forcemove resets pulls, so we need to re-pull + new /obj/effect/temp_visual/dir_setting/cult/phase(destination, C.dir) + playsound(destination, 'sound/effects/phasein.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + playsound(destination, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + + else + to_chat(C, "The veil cannot be torn here!") + +/obj/item/flashlight/flare/culttorch + name = "void torch" + desc = "Used by veteran cultists to instantly transport items to their needful brethren." + w_class = WEIGHT_CLASS_SMALL + light_range = 1 + icon_state = "torch" + item_state = "torch" + color = "#ff0000" + on_damage = 15 + slot_flags = null + on = TRUE + var/charges = 5 + +/obj/item/flashlight/flare/culttorch/afterattack(atom/movable/A, mob/user, proximity) + if(!proximity) + return + if(!iscultist(user)) + to_chat(user, "That doesn't seem to do anything useful.") + return + + if(istype(A, /obj/item)) + + var/list/cultists = list() + for(var/datum/mind/M in SSticker.mode.cult) + if(M.current && M.current.stat != DEAD) + cultists |= M.current + var/mob/living/cultist_to_receive = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in (cultists - user) + if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated()) + return + if(!cultist_to_receive) + to_chat(user, "You require a destination!") + log_game("Void torch failed - no target") + return + if(cultist_to_receive.stat == DEAD) + to_chat(user, "[cultist_to_receive] has died!") + log_game("Void torch failed - target died") + return + if(!iscultist(cultist_to_receive)) + to_chat(user, "[cultist_to_receive] is not a follower of the Geometer!") + log_game("Void torch failed - target was deconverted") + return + if(A in user.GetAllContents()) + to_chat(user, "[A] must be on a surface in order to teleport it!") + return + to_chat(user, "You ignite [A] with \the [src], turning it to ash, but through the torch's flames you see that [A] has reached [cultist_to_receive]!") + cultist_to_receive.put_in_hands(A) + charges-- + to_chat(user, "\The [src] now has [charges] charge\s.") + if(charges == 0) + qdel(src) + + else + ..() + to_chat(user, "\The [src] can only transport items!") + + +/obj/item/cult_spear + name = "blood halberd" + desc = "A sickening spear composed entirely of crystallized blood." + icon_state = "bloodspear0" + base_icon_state = "occultpoleaxe" + lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' + slot_flags = 0 + force = 17 + throwforce = 40 + throw_speed = 2 + armour_penetration = 30 + block_chance = 30 + attack_verb = list("attacked", "impaled", "stabbed", "torn", "gored") + sharpness = IS_SHARP + hitsound = 'sound/weapons/bladeslice.ogg' + var/datum/action/innate/cult/spear/spear_act + var/wielded = FALSE // track wielded status on item + +/obj/item/cult_spear/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) + +/obj/item/cult_spear/ComponentInitialize() + . = ..() + AddComponent(/datum/component/butchering, 100, 90) + AddComponent(/datum/component/two_handed, force_unwielded=17, force_wielded=24, icon_wielded="[base_icon_state]1") + +/// triggered on wield of two handed item +/obj/item/cult_spear/proc/on_wield(obj/item/source, mob/user) + SIGNAL_HANDLER + + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/cult_spear/proc/on_unwield(obj/item/source, mob/user) + SIGNAL_HANDLER + + wielded = FALSE + +/obj/item/cult_spear/update_icon_state() + icon_state = "[base_icon_state]0" + return ..() + +/obj/item/cult_spear/Destroy() + if(spear_act) + qdel(spear_act) + return ..() + +/obj/item/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + var/turf/T = get_turf(hit_atom) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom + if(iscultist(L)) + playsound(src, 'sound/weapons/throwtap.ogg', 50) + if(L.put_in_active_hand(src)) + L.visible_message("[L] catches [src] out of the air!") + else + L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") + else if(!..()) + if(!L.anti_magic_check()) + L.Paralyze(50) + break_spear(T) + else + ..() + +/obj/item/cult_spear/proc/break_spear(turf/T) + if(src) + if(!T) + T = get_turf(src) + if(T) + T.visible_message("[src] shatters and melts back into blood!") + new /obj/effect/temp_visual/cult/sparks(T) + new /obj/effect/decal/cleanable/blood/splatter(T) + playsound(T, 'sound/effects/glassbr3.ogg', 100) + qdel(src) + +/obj/item/cult_spear/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(wielded) + final_block_chance *= 2 + if(prob(final_block_chance)) + if(attack_type == PROJECTILE_ATTACK) + owner.visible_message("[owner] deflects [attack_text] with [src]!") + playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE) + return TRUE + else + playsound(src, 'sound/weapons/parry.ogg', 100, TRUE) + owner.visible_message("[owner] parries [attack_text] with [src]!") + return TRUE + return FALSE + +/datum/action/innate/cult/spear + name = "Bloody Bond" + desc = "Call the blood spear back to your hand!" + background_icon_state = "bg_demon" + button_icon_state = "bloodspear" + var/obj/item/cult_spear/spear + var/cooldown = 0 + +/datum/action/innate/cult/spear/Grant(mob/user, obj/blood_spear) + . = ..() + spear = blood_spear + button.screen_loc = "6:157,4:-2" + button.moved = "6:157,4:-2" + +/datum/action/innate/cult/spear/Activate() + if(owner == spear.loc || cooldown > world.time) + return + var/ST = get_turf(spear) + var/OT = get_turf(owner) + if(get_dist(OT, ST) > 10) + to_chat(owner,"The spear is too far away!") + else + cooldown = world.time + 20 + if(isliving(spear.loc)) + var/mob/living/L = spear.loc + L.dropItemToGround(spear) + L.visible_message("An unseen force pulls the blood spear from [L]'s hands!") + spear.throw_at(owner, 10, 2, owner) + + +/obj/item/gun/ballistic/rifle/illestren/enchanted/arcane_barrage/blood + name = "blood bolt barrage" + desc = "Blood for blood." + color = "#ff0000" + guns_left = 24 + mag_type = /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage/blood + fire_sound = 'sound/magic/wand_teleport.ogg' + + +/obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage/blood + ammo_type = /obj/item/ammo_casing/magic/arcane_barrage/blood + +/obj/item/ammo_casing/magic/arcane_barrage/blood + projectile_type = /obj/projectile/magic/arcane_barrage/blood + firing_effect_type = /obj/effect/temp_visual/cult/sparks + +/obj/projectile/magic/arcane_barrage/blood + name = "blood bolt" + icon_state = "mini_leaper" + nondirectional_sprite = TRUE + damage_type = BRUTE + impact_effect_type = /obj/effect/temp_visual/dir_setting/bloodsplatter + +/obj/projectile/magic/arcane_barrage/blood/Bump(atom/target) + var/turf/T = get_turf(target) + playsound(T, 'sound/effects/splat.ogg', 50, TRUE) + if(iscultist(target)) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(H.stat != DEAD) + H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 4) + if(isshade(target) || isconstruct(target)) + var/mob/living/simple_animal/M = target + if(M.health+5 < M.maxHealth) + M.adjustHealth(-5) + new /obj/effect/temp_visual/cult/sparks(T) + qdel(src) + else + ..() + +/obj/item/blood_beam + name = "\improper magical aura" + desc = "Sinister looking aura that distorts the flow of reality around it." + icon = 'icons/obj/items_and_weapons.dmi' + lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' + icon_state = "disintegrate" + item_state = "disintegrate" + item_flags = ABSTRACT | DROPDEL + w_class = WEIGHT_CLASS_HUGE + throwforce = 0 + throw_range = 0 + throw_speed = 0 + var/charging = FALSE + var/firing = FALSE + var/angle + +/obj/item/blood_beam/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT) + + +/obj/item/blood_beam/afterattack(atom/A, mob/living/user, flag, params) + . = ..() + if(firing || charging) + return + var/C = user.client + if(ishuman(user) && C) + angle = mouse_angle_from_client(C) + else + qdel(src) + return + charging = TRUE + INVOKE_ASYNC(src, PROC_REF(charge), user) + if(do_after(user, 90, target = user)) + firing = TRUE + INVOKE_ASYNC(src, PROC_REF(pewpew), user, params) + var/obj/structure/emergency_shield/invoker/N = new(user.loc) + if(do_after(user, 90, target = user)) + user.Paralyze(40) + to_chat(user, "You have exhausted the power of this spell!") + firing = FALSE + if(N) + qdel(N) + qdel(src) + charging = FALSE + +/obj/item/blood_beam/proc/charge(mob/user) + var/obj/O + playsound(src, 'sound/magic/lightning_chargeup.ogg', 100, TRUE) + for(var/i in 1 to 12) + if(!charging) + break + if(i > 1) + sleep(15) + if(i < 4) + O = new /obj/effect/temp_visual/cult/rune_spawn/rune1/inner(user.loc, 30, "#ff0000") + else + O = new /obj/effect/temp_visual/cult/rune_spawn/rune5(user.loc, 30, "#ff0000") + new /obj/effect/temp_visual/dir_setting/cult/phase/out(user.loc, user.dir) + if(O) + qdel(O) + +/obj/item/blood_beam/proc/pewpew(mob/user, params) + var/turf/targets_from = get_turf(src) + var/spread = 40 + var/second = FALSE + var/set_angle = angle + for(var/i in 1 to 12) + if(second) + set_angle = angle - spread + spread -= 8 + else + sleep(15) + set_angle = angle + spread + second = !second //Handles beam firing in pairs + if(!firing) + break + playsound(src, 'sound/magic/exit_blood.ogg', 75, TRUE) + new /obj/effect/temp_visual/dir_setting/cult/phase(user.loc, user.dir) + var/turf/temp_target = get_turf_in_angle(set_angle, targets_from, 40) + for(var/turf/T in getline(targets_from,temp_target)) + if (locate(/obj/effect/blessing, T)) + temp_target = T + playsound(T, 'sound/machines/clockcult/ark_damage.ogg', 50, TRUE) + new /obj/effect/temp_visual/at_shield(T, T) + break + T.narsie_act(TRUE, TRUE) + for(var/mob/living/target in T.contents) + if(iscultist(target)) + new /obj/effect/temp_visual/cult/sparks(T) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(H.stat != DEAD) + H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 7) + if(isshade(target) || isconstruct(target)) + var/mob/living/simple_animal/M = target + if(M.health+15 < M.maxHealth) + M.adjustHealth(-15) + else + M.health = M.maxHealth + else + var/mob/living/L = target + if(L.density) + L.Paralyze(20) + L.adjustBruteLoss(45) + playsound(L, 'sound/hallucinations/wail.ogg', 50, TRUE) + L.emote("scream") + user.Beam(temp_target, icon_state="blood_beam", time = 7, beam_type = /obj/effect/ebeam/blood) + + +/obj/effect/ebeam/blood + name = "blood beam" + +/obj/item/shield/mirror + name = "mirror shield" + desc = "An infamous shield used by Nar'Sien sects to confuse and disorient their enemies. Its edges are weighted for use as a throwing weapon - capable of disabling multiple foes with preternatural accuracy." + icon_state = "mirror_shield" // eshield1 for expanded + lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' + force = 5 + throwforce = 15 + throw_speed = 1 + throw_range = 4 + w_class = WEIGHT_CLASS_BULKY + attack_verb = list("bumped", "prodded") + hitsound = 'sound/weapons/smash.ogg' + var/illusions = 2 + +/obj/item/shield/mirror/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(iscultist(owner)) + if(istype(hitby, /obj/projectile)) + var/obj/projectile/P = hitby + if(P.damage_type == BRUTE || P.damage_type == BURN) + if(P.damage >= 30) + var/turf/T = get_turf(owner) + T.visible_message("The sheer force from [P] shatters the mirror shield!") + new /obj/effect/temp_visual/cult/sparks(T) + playsound(T, 'sound/effects/glassbr3.ogg', 100) + owner.Paralyze(25) + qdel(src) + return FALSE + if(P.reflectable & REFLECT_NORMAL) + return FALSE //To avoid reflection chance double-dipping with block chance + . = ..() + if(.) + playsound(src, 'sound/weapons/parry.ogg', 100, TRUE) + if(illusions > 0) + illusions-- + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/shield/mirror, readd)), 450) + if(prob(60)) + var/mob/living/simple_animal/hostile/illusion/M = new(owner.loc) + M.faction = list("cult") + M.Copy_Parent(owner, 70, 10, 5) + M.move_to_delay = owner.cached_multiplicative_slowdown + else + var/mob/living/simple_animal/hostile/illusion/escape/E = new(owner.loc) + E.Copy_Parent(owner, 70, 10) + E.GiveTarget(owner) + E.Goto(owner, owner.cached_multiplicative_slowdown, E.minimum_distance) + return TRUE + else + if(prob(50)) + var/mob/living/simple_animal/hostile/illusion/H = new(owner.loc) + H.Copy_Parent(owner, 100, 20, 5) + H.faction = list("cult") + H.GiveTarget(owner) + H.move_to_delay = owner.cached_multiplicative_slowdown + to_chat(owner, "[src] betrays you!") + return FALSE + +/obj/item/shield/mirror/proc/readd() + illusions++ + if(illusions == initial(illusions) && isliving(loc)) + var/mob/living/holder = loc + to_chat(holder, "The shield's illusions are back at full strength!") + +/obj/item/shield/mirror/IsReflect() + if(prob(block_chance)) + return TRUE + return FALSE + +/obj/item/shield/mirror/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + var/turf/T = get_turf(hit_atom) + var/datum/thrownthing/D = throwingdatum + if(isliving(hit_atom)) + var/mob/living/L = hit_atom + if(iscultist(L)) + playsound(src, 'sound/weapons/throwtap.ogg', 50) + if(L.put_in_active_hand(src)) + L.visible_message("[L] catches [src] out of the air!") + else + L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") + else if(!..()) + if(!L.anti_magic_check()) + L.Paralyze(30) + if(D?.thrower) + for(var/mob/living/Next in orange(2, T)) + if(!Next.density || iscultist(Next)) + continue + throw_at(Next, 3, 1, D.thrower) + return + throw_at(D.thrower, 7, 1, null) + else + ..() diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm new file mode 100644 index 000000000000..158b22b99c4a --- /dev/null +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -0,0 +1,288 @@ +/obj/structure/destructible/cult + density = TRUE + anchored = TRUE + icon = 'icons/obj/cult.dmi' + light_power = 2 + var/cooldowntime = 0 + break_sound = 'sound/hallucinations/veryfar_noise.ogg' + debris = list(/obj/item/stack/sheet/runed_metal = 1) + +/obj/structure/destructible/cult/proc/conceal() //for spells that hide cult presence + density = FALSE + visible_message("[src] fades away.") + invisibility = INVISIBILITY_OBSERVER + alpha = 100 //To help ghosts distinguish hidden runes + light_range = 0 + light_power = 0 + update_light() + STOP_PROCESSING(SSfastprocess, src) + +/obj/structure/destructible/cult/proc/reveal() //for spells that reveal cult presence + density = initial(density) + invisibility = 0 + visible_message("[src] suddenly appears!") + alpha = initial(alpha) + light_range = initial(light_range) + light_power = initial(light_power) + update_light() + START_PROCESSING(SSfastprocess, src) + + +/obj/structure/destructible/cult/examine(mob/user) + . = ..() + . += "\The [src] is [anchored ? "":"not "]secured to the floor." + if((iscultist(user) || isobserver(user)) && cooldowntime > world.time) + . += "The magic in [src] is too weak, [p_they()] will be ready to use again in [DisplayTimeText(cooldowntime - world.time)]." + +/obj/structure/destructible/cult/examine_status(mob/user) + if(iscultist(user) || isobserver(user)) + var/t_It = p_they(TRUE) + var/t_is = p_are() + return "[t_It] [t_is] at [round(obj_integrity * 100 / max_integrity)]% stability." + return ..() + +/obj/structure/destructible/cult/attack_animal(mob/living/simple_animal/M) + if(istype(M, /mob/living/simple_animal/hostile/construct/artificer)) + if(obj_integrity < max_integrity) + M.changeNext_move(CLICK_CD_MELEE) + obj_integrity = min(max_integrity, obj_integrity + 5) + Beam(M, icon_state="sendbeam", time=4) + M.visible_message("[M] repairs \the [src].", \ + "You repair [src], leaving [p_they()] at [round(obj_integrity * 100 / max_integrity)]% stability.") + else + to_chat(M, "You cannot repair [src], as [p_theyre()] undamaged!") + else + ..() + +/obj/structure/destructible/cult/set_anchored(anchorvalue) + . = ..() + if(isnull(.)) + return + update_appearance() + +/obj/structure/destructible/cult/update_icon_state() + icon_state = "[initial(icon_state)][anchored ? null : "_off"]" + return ..() + +/obj/structure/destructible/cult/proc/check_menu(mob/user) + if(!istype(user)) + return FALSE + if(user.incapacitated() || !user.Adjacent(src)) + return FALSE + return TRUE + +/obj/structure/destructible/cult/talisman + name = "altar" + desc = "A bloodstained altar dedicated to Nar'Sie." + icon_state = "talismanaltar" + break_message = "The altar shatters, leaving only the wailing of the damned!" + +/obj/structure/destructible/cult/talisman/attack_hand(mob/living/user) + . = ..() + if(.) + return + if(!iscultist(user)) + to_chat(user, "You're pretty sure you know exactly what this is used for and you can't seem to touch it.") + return + if(!anchored) + to_chat(user, "You need to anchor [src] to the floor with your dagger first.") + return + if(cooldowntime > world.time) + to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") + return + var/list/items = list( + "Eldritch Whetstone" = image(icon = 'icons/obj/kitchen.dmi', icon_state = "cult_sharpener"), + "Construct Shell" = image(icon = 'icons/obj/wizard.dmi', icon_state = "construct_cult"), + "Flask of Unholy Water" = image(icon = 'icons/obj/drinks/drinks.dmi', icon_state = "holyflask") + ) + var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) + var/list/pickedtype = list() + switch(choice) + if("Eldritch Whetstone") + pickedtype += /obj/item/sharpener/cult + if("Construct Shell") + pickedtype += /obj/structure/constructshell + if("Flask of Unholy Water") + pickedtype += /obj/item/reagent_containers/glass/beaker/unholywater + else + return + if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) + cooldowntime = world.time + 2400 + for(var/N in pickedtype) + new N(get_turf(src)) + to_chat(user, "You kneel before the altar and your faith is rewarded with the [choice]!") + +/obj/structure/destructible/cult/forge + name = "daemon forge" + desc = "A forge used in crafting the unholy weapons used by the armies of Nar'Sie." + icon_state = "forge" + light_range = 2 + light_color = LIGHT_COLOR_LAVA + break_message = "The force breaks apart into shards with a howling scream!" + +/obj/structure/destructible/cult/forge/attack_hand(mob/living/user) + . = ..() + if(.) + return + if(!iscultist(user)) + to_chat(user, "The heat radiating from [src] pushes you back.") + return + if(!anchored) + to_chat(user, "You need to anchor [src] to the floor with your dagger first.") + return + if(cooldowntime > world.time) + to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") + return + var/list/items = list( + "Shielded Robe" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "cult_armor"), + "Flagellant's Robe" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "cultrobes"), + "Mirror Shield" = image(icon = 'icons/obj/shields.dmi', icon_state = "mirror_shield") + ) + var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) + var/list/pickedtype = list() + switch(choice) + if("Shielded Robe") + pickedtype += /obj/item/clothing/suit/hooded/cultrobes/cult_shield + if("Flagellant's Robe") + pickedtype += /obj/item/clothing/suit/hooded/cultrobes/berserker + if("Mirror Shield") + pickedtype += /obj/item/shield/mirror + else + return + if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) + cooldowntime = world.time + 2400 + for(var/N in pickedtype) + new N(get_turf(src)) + to_chat(user, "You work the forge as dark knowledge guides your hands, creating the [choice]!") + + + +/obj/structure/destructible/cult/pylon + name = "pylon" + desc = "A floating crystal that slowly heals those faithful to Nar'Sie." + icon_state = "pylon" + light_range = 1.5 + light_color = COLOR_SOFT_RED + break_sound = 'sound/effects/glassbr2.ogg' + break_message = "The blood-red crystal falls to the floor and shatters!" + var/heal_delay = 25 + var/last_heal = 0 + var/corrupt_delay = 50 + var/last_corrupt = 0 + +/obj/structure/destructible/cult/pylon/New() + START_PROCESSING(SSfastprocess, src) + ..() + +/obj/structure/destructible/cult/pylon/Destroy() + STOP_PROCESSING(SSfastprocess, src) + return ..() + +/obj/structure/destructible/cult/pylon/process() + if(!anchored) + return + if(last_heal <= world.time) + last_heal = world.time + heal_delay + for(var/mob/living/L in range(5, src)) + if(iscultist(L) || isshade(L) || isconstruct(L)) + if(L.health != L.maxHealth) + new /obj/effect/temp_visual/heal(get_turf(src), "#960000") + if(ishuman(L)) + L.adjustBruteLoss(-1, 0) + L.adjustFireLoss(-1, 0) + L.updatehealth() + if(isshade(L) || isconstruct(L)) + var/mob/living/simple_animal/M = L + if(M.health < M.maxHealth) + M.adjustHealth(-3) + if(ishuman(L) && L.blood_volume < BLOOD_VOLUME_NORMAL) + L.blood_volume += 1.0 + CHECK_TICK + if(last_corrupt <= world.time) + var/list/validturfs = list() + var/list/cultturfs = list() + for(var/T in circleviewturfs(src, 5)) + if(istype(T, /turf/open/floor/engine/cult)) + cultturfs |= T + continue + var/static/list/blacklisted_pylon_turfs = typecacheof(list( + /turf/closed, + /turf/open/floor/engine/cult, + /turf/open/space, + /turf/open/lava, + /turf/open/chasm)) + if(is_type_in_typecache(T, blacklisted_pylon_turfs)) + continue + else + validturfs |= T + + last_corrupt = world.time + corrupt_delay + + if(length(validturfs)) + var/turf/T = pick(validturfs) + if(istype(T, /turf/open/floor/plating)) + T.PlaceOnTop(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) + else + T.ChangeTurf(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) + else if (length(cultturfs)) + var/turf/open/floor/engine/cult/F = pick(cultturfs) + new /obj/effect/temp_visual/cult/turf/floor(F) + else + // Are we in space or something? No cult turfs or + // convertable turfs? + last_corrupt = world.time + corrupt_delay*2 + +/obj/structure/destructible/cult/tome + name = "archives" + desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl." + icon_state = "tomealtar" + light_range = 1.5 + light_color = LIGHT_COLOR_FIRE + break_message = "The books and tomes of the archives burn into ash as the desk shatters!" + +/obj/structure/destructible/cult/tome/attack_hand(mob/living/user) + . = ..() + if(.) + return + if(!iscultist(user)) + to_chat(user, "These books won't open and it hurts to even try and read the covers.") + return + if(!anchored) + to_chat(user, "You need to anchor [src] to the floor with your dagger first.") + return + if(cooldowntime > world.time) + to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") + return + var/list/items = list( + "Zealot's Blindfold" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "blindfold"), + "Veil Walker Set" = image(icon = 'icons/obj/cult.dmi', icon_state = "shifter") + ) + var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) + var/list/pickedtype = list() + switch(choice) + if("Zealot's Blindfold") + pickedtype += /obj/item/clothing/glasses/hud/health/night/cultblind + if("Veil Walker Set") + pickedtype += /obj/item/cult_shift + pickedtype += /obj/item/flashlight/flare/culttorch + else + return + if(src && !QDELETED(src) && anchored && pickedtype.len && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) + cooldowntime = world.time + 2400 + for(var/N in pickedtype) + new N(get_turf(src)) + to_chat(user, "You summon the [choice] from the archives!") + +/obj/effect/gateway + name = "gateway" + desc = "You're pretty sure that abyss is staring back." + icon = 'icons/obj/cult.dmi' + icon_state = "hole" + density = TRUE + anchored = TRUE + +/obj/effect/gateway/singularity_act() + return + +/obj/effect/gateway/singularity_pull() + return diff --git a/code/modules/antagonists/cult/cult_turf_overlay.dm b/code/modules/antagonists/cult/cult_turf_overlay.dm new file mode 100644 index 000000000000..2e950326bf8a --- /dev/null +++ b/code/modules/antagonists/cult/cult_turf_overlay.dm @@ -0,0 +1,32 @@ +//an "overlay" used by clockwork walls and floors to appear normal to mesons. +/obj/effect/cult_turf/overlay + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + var/atom/linked + +/obj/effect/cult_turf/overlay/examine(mob/user) + if(linked) + linked.examine(user) + +/obj/effect/cult_turf/overlay/ex_act() + return FALSE + +/obj/effect/cult_turf/overlay/singularity_act() + return +/obj/effect/cult_turf/overlay/singularity_pull() + return + +/obj/effect/cult_turf/overlay/singularity_pull(S, current_size) + return + +/obj/effect/cult_turf/overlay/Destroy() + if(linked) + linked = null + . = ..() + +/obj/effect/cult_turf/overlay/floor + icon = 'icons/turf/floors.dmi' + icon_state = "clockwork_floor" + layer = TURF_LAYER + +/obj/effect/cult_turf/overlay/floor/bloodcult + icon_state = "cult" diff --git a/code/modules/antagonists/cult/rune_spawn_action.dm b/code/modules/antagonists/cult/rune_spawn_action.dm new file mode 100644 index 000000000000..2829141405dd --- /dev/null +++ b/code/modules/antagonists/cult/rune_spawn_action.dm @@ -0,0 +1,115 @@ +//after a delay, creates a rune below you. for constructs creating runes. +/datum/action/innate/cult/create_rune + name = "Summon Rune" + desc = "Summons a rune" + background_icon_state = "bg_demon" + var/obj/effect/rune/rune_type + var/cooldown = 0 + var/base_cooldown = 1800 + var/scribe_time = 60 + var/damage_interrupt = TRUE + var/action_interrupt = TRUE + var/obj/effect/temp_visual/cult/rune_spawn/rune_word_type + var/obj/effect/temp_visual/cult/rune_spawn/rune_innerring_type + var/obj/effect/temp_visual/cult/rune_spawn/rune_center_type + var/rune_color + +/datum/action/innate/cult/create_rune/IsAvailable() + if(!rune_type || cooldown > world.time) + return FALSE + return ..() + +/datum/action/innate/cult/create_rune/proc/turf_check(turf/T) + if(!T) + return FALSE + if(isspaceturf(T)) + to_chat(owner, "You cannot scribe runes in space!") + return FALSE + if(locate(/obj/effect/rune) in T) + to_chat(owner, "There is already a rune here.") + return FALSE + return TRUE + + +/datum/action/innate/cult/create_rune/Activate() + var/turf/T = get_turf(owner) + if(turf_check(T)) + var/chosen_keyword + if(initial(rune_type.req_keyword)) + chosen_keyword = stripped_input(owner, "Enter a keyword for the new rune.", "Words of Power") + if(!chosen_keyword) + return + //the outer ring is always the same across all runes + var/obj/effect/temp_visual/cult/rune_spawn/R1 = new(T, scribe_time, rune_color) + //the rest are not always the same, so we need types for em + var/obj/effect/temp_visual/cult/rune_spawn/R2 + if(rune_word_type) + R2 = new rune_word_type(T, scribe_time, rune_color) + var/obj/effect/temp_visual/cult/rune_spawn/R3 + if(rune_innerring_type) + R3 = new rune_innerring_type(T, scribe_time, rune_color) + var/obj/effect/temp_visual/cult/rune_spawn/R4 + if(rune_center_type) + R4 = new rune_center_type(T, scribe_time, rune_color) + + cooldown = base_cooldown + world.time + owner.update_action_buttons_icon() + addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), base_cooldown) + var/list/health + if(damage_interrupt && isliving(owner)) + var/mob/living/L = owner + health = list("health" = L.health) + var/scribe_mod = scribe_time + if(istype(T, /turf/open/floor/engine/cult)) + scribe_mod *= 0.5 + playsound(T, 'sound/magic/enter_blood.ogg', 100, FALSE) + if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, TYPE_PROC_REF(/mob, break_do_after_checks), health, action_interrupt))) + var/obj/effect/rune/new_rune = new rune_type(owner.loc) + new_rune.keyword = chosen_keyword + else + qdel(R1) + if(R2) + qdel(R2) + if(R3) + qdel(R3) + if(R4) + qdel(R4) + cooldown = 0 + owner.update_action_buttons_icon() + +//teleport rune +/datum/action/innate/cult/create_rune/tele + name = "Summon Teleport Rune" + desc = "Summons a teleport rune to your location, as though it has been there all along..." + button_icon_state = "telerune" + rune_type = /obj/effect/rune/teleport + rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune2 + rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune2/inner + rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune2/center + rune_color = RUNE_COLOR_TELEPORT + +/datum/action/innate/cult/create_rune/wall + name = "Summon Barrier Rune" + desc = "Summons an active barrier rune to your location, as though it has been there all along..." + button_icon_state = "barrier" + rune_type = /obj/effect/rune/wall + rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune4 + rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune4/inner + rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune4/center + rune_color = RUNE_COLOR_DARKRED + +/datum/action/innate/cult/create_rune/wall/Activate() + . = ..() + var/obj/effect/rune/wall/W = locate(/obj/effect/rune/wall) in owner.loc + if(W) + W.spread_density() + +/datum/action/innate/cult/create_rune/revive + name = "Summon Revive Rune" + desc = "Summons a revive rune to your location, as though it has been there all along..." + button_icon_state = "revive" + rune_type = /obj/effect/rune/raise_dead + rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune1 + rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune1/inner + rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune1/center + rune_color = RUNE_COLOR_MEDIUMRED diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm new file mode 100644 index 000000000000..b0fb446405c2 --- /dev/null +++ b/code/modules/antagonists/cult/runes.dm @@ -0,0 +1,1029 @@ +GLOBAL_LIST_EMPTY(sacrificed) //a mixed list of minds and mobs +GLOBAL_LIST(rune_types) //Every rune that can be drawn by ritual daggers +GLOBAL_LIST_EMPTY(teleport_runes) +GLOBAL_LIST_EMPTY(wall_runes) +/* + +This file contains runes. +Runes are used by the cult to cause many different effects and are paramount to their success. +They are drawn with a ritual dagger in blood, and are distinguishable to cultists and normal crew by examining. +Fake runes can be drawn in crayon to fool people. +Runes can either be invoked by one's self or with many different cultists. Each rune has a specific incantation that the cultists will say when invoking it. + + +*/ + +/obj/effect/rune + name = "rune" + var/cultist_name = "basic rune" + desc = "An odd collection of symbols drawn in what seems to be blood." + var/cultist_desc = "a basic rune with no function." //This is shown to cultists who examine the rune in order to determine its true purpose. + anchored = TRUE + icon = 'icons/obj/rune.dmi' + icon_state = "1" + resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF + layer = SIGIL_LAYER + color = RUNE_COLOR_RED + + var/invocation = "Aiy ele-mayo!" //This is said by cultists when the rune is invoked. + var/req_cultists = 1 //The amount of cultists required around the rune to invoke it. If only 1, any cultist can invoke it. + var/req_cultists_text //if we have a description override for required cultists to invoke + var/rune_in_use = FALSE // Used for some runes, this is for when you want a rune to not be usable when in use. + + var/scribe_delay = 40 //how long the rune takes to create + var/scribe_damage = 0.1 //how much damage you take doing it + var/invoke_damage = 0 //how much damage invokers take when invoking it + var/construct_invoke = TRUE //if constructs can invoke it + + var/req_keyword = 0 //If the rune requires a keyword - go figure amirite + var/keyword //The actual keyword for the rune + +/obj/effect/rune/Initialize(mapload, set_keyword) + . = ..() + if(set_keyword) + keyword = set_keyword + var/image/I = image(icon = 'icons/effects/blood.dmi', icon_state = null, loc = src) + I.override = TRUE + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/silicons, "cult_runes", I) + +/obj/effect/rune/examine(mob/user) + . = ..() + if(iscultist(user) || user.stat == DEAD) //If they're a cultist or a ghost, tell them the effects + . += "Name: [cultist_name]\n"+\ + "Effects: [capitalize(cultist_desc)]\n"+\ + "Required Acolytes: [req_cultists_text ? "[req_cultists_text]":"[req_cultists]"]" + if(req_keyword && keyword) + . += "Keyword: [keyword]" + +/obj/effect/rune/attack_hand(mob/living/user) + . = ..() + if(.) + return + if(!iscultist(user)) + to_chat(user, "You aren't able to understand the words of [src].") + return + var/list/invokers = can_invoke(user) + if(invokers.len >= req_cultists) + invoke(invokers) + else + to_chat(user, "You need [req_cultists - invokers.len] more adjacent cultists to use this rune in such a manner.") + fail_invoke() + +/obj/effect/rune/attack_animal(mob/living/simple_animal/M) + if(istype(M, /mob/living/simple_animal/shade) || istype(M, /mob/living/simple_animal/hostile/construct)) + if(istype(M, /mob/living/simple_animal/hostile/construct/wraith/angelic) || istype(M, /mob/living/simple_animal/hostile/construct/juggernaut/angelic) || istype(M, /mob/living/simple_animal/hostile/construct/artificer/angelic)) + to_chat(M, "You purge the rune!") + qdel(src) + else if(construct_invoke || !iscultist(M)) //if you're not a cult construct we want the normal fail message + attack_hand(M) + else + to_chat(M, "You are unable to invoke the rune!") + +/obj/effect/rune/proc/conceal() //for talisman of revealing/hiding + visible_message("[src] fades away.") + invisibility = INVISIBILITY_OBSERVER + alpha = 100 //To help ghosts distinguish hidden runes + +/obj/effect/rune/proc/reveal() //for talisman of revealing/hiding + invisibility = 0 + visible_message("[src] suddenly appears!") + alpha = initial(alpha) + +/* + +There are a few different procs each rune runs through when a cultist activates it. +can_invoke() is called when a cultist activates the rune with an empty hand. If there are multiple cultists, this rune determines if the required amount is nearby. +invoke() is the rune's actual effects. +fail_invoke() is called when the rune fails, via not enough people around or otherwise. Typically this just has a generic 'fizzle' effect. +structure_check() searches for nearby cultist structures required for the invocation. Proper structures are pylons, forges, archives, and altars. + +*/ + +/obj/effect/rune/proc/can_invoke(mob/living/user=null) + //This proc determines if the rune can be invoked at the time. If there are multiple required cultists, it will find all nearby cultists. + var/list/invokers = list() //people eligible to invoke the rune + if(user) + invokers += user + if(req_cultists > 1 || istype(src, /obj/effect/rune/convert)) + var/list/things_in_range = range(1, src) + for(var/mob/living/L in things_in_range) + if(iscultist(L)) + if(L == user) + continue + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if((HAS_TRAIT(H, TRAIT_MUTE)) || H.silent) + continue + if(L.stat) + continue + invokers += L + return invokers + +/obj/effect/rune/proc/invoke(list/invokers) + //This proc contains the effects of the rune as well as things that happen afterwards. If you want it to spawn an object and then delete itself, have both here. + for(var/M in invokers) + if(isliving(M)) + var/mob/living/L = M + if(invocation) + L.say(invocation, language = /datum/language/common, ignore_spam = TRUE, forced = "cult invocation") + if(invoke_damage) + L.apply_damage(invoke_damage, BRUTE) + to_chat(L, "[src] saps your strength!") + else if(istype(M, /obj/item/toy/plush/narplush)) + var/obj/item/toy/plush/narplush/P = M + P.visible_message("[P] squeaks loudly!") + do_invoke_glow() + +/obj/effect/rune/proc/do_invoke_glow() + set waitfor = FALSE + animate(src, transform = matrix()*2, alpha = 0, time = 5, flags = ANIMATION_END_NOW) //fade out + sleep(5) + animate(src, transform = matrix(), alpha = 255, time = 0, flags = ANIMATION_END_NOW) + +/obj/effect/rune/proc/fail_invoke() + //This proc contains the effects of a rune if it is not invoked correctly, through either invalid wording or not enough cultists. By default, it's just a basic fizzle. + visible_message("The markings pulse with a small flash of red light, then fall dark.") + var/oldcolor = color + color = rgb(255, 0, 0) + animate(src, color = oldcolor, time = 5) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 5) + +//Malformed Rune: This forms if a rune is not drawn correctly. Invoking it does nothing but hurt the user. +/obj/effect/rune/malformed + cultist_name = "malformed rune" + cultist_desc = "a senseless rune written in gibberish. No good can come from invoking this." + invocation = "Ra'sha yoka!" + invoke_damage = 30 + +/obj/effect/rune/malformed/Initialize(mapload, set_keyword) + . = ..() + icon_state = "[rand(1,7)]" + color = rgb(rand(0,255), rand(0,255), rand(0,255)) + +/obj/effect/rune/malformed/invoke(list/invokers) + ..() + qdel(src) + +//Rite of Offering: Converts or sacrifices a target. +/obj/effect/rune/convert + cultist_name = "Offer" + cultist_desc = "offers a noncultist above it to Nar'Sie, either converting them or sacrificing them." + req_cultists_text = "2 for conversion, 3 for living sacrifices and sacrifice targets." + invocation = "Mah'weyh pleggh at e'ntrath!" + icon_state = "3" + color = RUNE_COLOR_OFFER + req_cultists = 1 + rune_in_use = FALSE + +/obj/effect/rune/convert/do_invoke_glow() + return + +/obj/effect/rune/convert/invoke(list/invokers) + if(rune_in_use) + return + var/list/myriad_targets = list() + var/turf/T = get_turf(src) + for(var/mob/living/M in T) + if(!iscultist(M)) + myriad_targets |= M + if(!myriad_targets.len) + fail_invoke() + log_game("Offer rune failed - no eligible targets") + return + rune_in_use = TRUE + visible_message("[src] pulses blood red!") + var/oldcolor = color + color = RUNE_COLOR_DARKRED + var/mob/living/L = pick(myriad_targets) + + var/mob/living/F = invokers[1] + var/datum/antagonist/cult/C = F.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + var/datum/team/cult/Cult_team = C.cult_team + var/is_convertable = is_convertable_to_cult(L,C.cult_team) + if(L.stat != DEAD && is_convertable) + invocation = "Mah'weyh pleggh at e'ntrath!" + ..() + if(is_convertable) + do_convert(L, invokers) + else + invocation = "Barhah hra zar'garis!" + ..() + do_sacrifice(L, invokers) + animate(src, color = oldcolor, time = 5) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 5) + Cult_team.check_size() // Triggers the eye glow or aura effects if the cult has grown large enough relative to the crew + rune_in_use = FALSE + +/obj/effect/rune/convert/proc/do_convert(mob/living/convertee, list/invokers) + if(invokers.len < 2) + for(var/M in invokers) + to_chat(M, "You need at least two invokers to convert [convertee]!") + log_game("Offer rune failed - tried conversion with one invoker") + return 0 + if(convertee.anti_magic_check(TRUE, TRUE, FALSE, 0)) //Not chargecost because it can be spammed + for(var/M in invokers) + to_chat(M, "Something is shielding [convertee]'s mind!") + log_game("Offer rune failed - convertee had anti-magic") + return 0 + var/brutedamage = convertee.getBruteLoss() + var/burndamage = convertee.getFireLoss() + if(brutedamage || burndamage) + convertee.adjustBruteLoss(-(brutedamage * 0.75)) + convertee.adjustFireLoss(-(burndamage * 0.75)) + convertee.visible_message( + "[convertee] writhes in pain [brutedamage || burndamage ? "even as [convertee.p_their()] wounds heal and close" : "as the markings below [convertee.p_them()] glow a bloody red"]!", // Hello there buddy! Come here often? I hope you were wondering wtf this string was + "AAAAAAAAAAAAAA-") + SSticker.mode.add_cultist(convertee.mind, 1) + convertee.mind.special_role = ROLE_CULTIST + to_chat(convertee, "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ + and something evil takes root.") + to_chat(convertee, "Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.\ + ") + if(ishuman(convertee)) + var/mob/living/carbon/human/H = convertee + H.uncuff() + H.stuttering = 0 + H.cultslurring = 0 + if(prob(1) || SSevents.holidays && SSevents.holidays[APRIL_FOOLS]) + H.say("You son of a bitch! I'm in.", forced = "That son of a bitch! They're in.") + return 1 + +/obj/effect/rune/convert/proc/do_sacrifice(mob/living/sacrificial, list/invokers) + var/mob/living/first_invoker = invokers[1] + if(!first_invoker) + return FALSE + var/datum/antagonist/cult/C = first_invoker.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + if(!C) + return + + + var/big_sac = FALSE + if((((ishuman(sacrificial) || iscyborg(sacrificial)) && sacrificial.stat != DEAD) || C.cult_team.is_sacrifice_target(sacrificial.mind)) && invokers.len < 3) + for(var/M in invokers) + to_chat(M, "[sacrificial] is too greatly linked to the world! You need three acolytes!") + log_game("Offer rune failed - not enough acolytes and target is living or sac target") + return FALSE + if(sacrificial.mind) + GLOB.sacrificed += sacrificial.mind + for(var/datum/objective/sacrifice/sac_objective in C.cult_team.objectives) + if(sac_objective.target == sacrificial.mind) + sac_objective.sacced = TRUE + sac_objective.update_explanation_text() + big_sac = TRUE + else + GLOB.sacrificed += sacrificial + + new /obj/effect/temp_visual/cult/sac(get_turf(src)) + for(var/M in invokers) + if(big_sac) + to_chat(M, "\"Yes! This is the one I desire! You have done well.\"") + else + if(ishuman(sacrificial) || iscyborg(sacrificial)) + to_chat(M, "\"I accept this sacrifice.\"") + else + to_chat(M, "\"I accept this meager sacrifice.\"") + + var/obj/item/soulstone/stone = new /obj/item/soulstone(get_turf(src)) + if(sacrificial.mind) + stone.invisibility = INVISIBILITY_MAXIMUM //so it's not picked up during transfer_soul() + stone.transfer_soul("FORCE", sacrificial, usr) + stone.invisibility = 0 + + if(sacrificial) + if(iscyborg(sacrificial)) + playsound(sacrificial, 'sound/magic/disable_tech.ogg', 100, TRUE) + sacrificial.dust() //To prevent the MMI from remaining + else + playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, TRUE) + sacrificial.gib() + return TRUE + + + +/obj/effect/rune/empower + cultist_name = "Empower" + cultist_desc = "allows cultists to prepare greater amounts of blood magic at far less of a cost." + invocation = "H'drak v'loso, mir'kanas verbot!" + icon_state = "3" + color = RUNE_COLOR_TALISMAN + construct_invoke = FALSE + +/obj/effect/rune/empower/invoke(list/invokers) + . = ..() + var/mob/living/user = invokers[1] //the first invoker is always the user + for(var/datum/action/innate/cult/blood_magic/BM in user.actions) + BM.Activate() + +/obj/effect/rune/teleport + cultist_name = "Teleport" + cultist_desc = "warps everything above it to another chosen teleport rune." + invocation = "Sas'so c'arta forbici!" + icon_state = "2" + color = RUNE_COLOR_TELEPORT + req_keyword = TRUE + light_power = 4 + var/obj/effect/temp_visual/cult/portal/inner_portal //The portal "hint" for off-station teleportations + var/obj/effect/temp_visual/cult/rune_spawn/rune2/outer_portal + var/listkey + + +/obj/effect/rune/teleport/Initialize(mapload, set_keyword) + . = ..() + var/area/A = get_area(src) + var/locname = initial(A.name) + listkey = set_keyword ? "[set_keyword] [locname]":"[locname]" + GLOB.teleport_runes += src + +/obj/effect/rune/teleport/Destroy() + GLOB.teleport_runes -= src + return ..() + +/obj/effect/rune/teleport/invoke(list/invokers) + var/mob/living/user = invokers[1] //the first invoker is always the user + var/list/potential_runes = list() + var/list/teleportnames = list() + for(var/R in GLOB.teleport_runes) + var/obj/effect/rune/teleport/T = R + if(T != src && !is_away_level(T)) + potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T + + if(!potential_runes.len) + to_chat(user, "There are no valid runes to teleport to!") + log_game("Teleport rune failed - no other teleport runes") + fail_invoke() + return + + var/turf/T = get_turf(src) + if(is_away_level(T)) + to_chat(user, "You are not in the right dimension!") + log_game("Teleport rune failed - user in away mission") + fail_invoke() + return + + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? + if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated() || !actual_selected_rune) + fail_invoke() + return + + var/turf/target = get_turf(actual_selected_rune) + if(target.is_blocked_turf(TRUE)) + to_chat(user, "The target rune is blocked. Attempting to teleport to it would be massively unwise.") + fail_invoke() + return + var/movedsomething = FALSE + var/moveuserlater = FALSE + var/movesuccess = FALSE + for(var/atom/movable/A in T) + if(istype(A, /obj/effect/dummy/phased_mob)) + continue + if(ismob(A)) + if(!isliving(A)) //Let's not teleport ghosts and AI eyes. + continue + if(ishuman(A)) + new /obj/effect/temp_visual/dir_setting/cult/phase/out(T, A.dir) + new /obj/effect/temp_visual/dir_setting/cult/phase(target, A.dir) + if(A == user) + moveuserlater = TRUE + movedsomething = TRUE + continue + if(!A.anchored) + movedsomething = TRUE + if(do_teleport(A, target, channel = TELEPORT_CHANNEL_CULT)) + movesuccess = TRUE + if(movedsomething) + ..() + if(moveuserlater) + if(do_teleport(user, target, channel = TELEPORT_CHANNEL_CULT)) + movesuccess = TRUE + if(movesuccess) + visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!", null, "You hear a sharp crack.") + to_chat(user, "You[moveuserlater ? "r vision blurs, and you suddenly appear somewhere else":" send everything above the rune away"].") + else + to_chat(user, "You[moveuserlater ? "r vision blurs briefly, but nothing happens":" try send everything above the rune away, but the teleportation fails"].") + var/area/A = get_area(T) + if(initial(A.name) == "Space") + actual_selected_rune.handle_portal("space", T) + if(movesuccess) + target.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") + else + fail_invoke() + +/obj/effect/rune/teleport/proc/handle_portal(portal_type, turf/origin) + var/turf/T = get_turf(src) + close_portal() // To avoid stacking descriptions/animations + playsound(T, pick('sound/effects/sparks1.ogg', 'sound/effects/sparks2.ogg', 'sound/effects/sparks3.ogg', 'sound/effects/sparks4.ogg'), 100, TRUE, 14) + inner_portal = new /obj/effect/temp_visual/cult/portal(T) + if(portal_type == "space") + set_light_color(color) + desc += "
A tear in reality reveals a black void interspersed with dots of light... something recently teleported here from space.
The void feels like it's trying to pull you to the [dir2text(get_dir(T, origin))]!
" + else + inner_portal.icon_state = "lava" + set_light_color(LIGHT_COLOR_FIRE) + desc += "
A tear in reality reveals a coursing river of lava... something recently teleported here from the Lavaland Mines!" + outer_portal = new(T, 600, color) + light_range = 4 + update_light() + addtimer(CALLBACK(src, PROC_REF(close_portal)), 600, TIMER_UNIQUE) + +/obj/effect/rune/teleport/proc/close_portal() + qdel(inner_portal) + qdel(outer_portal) + desc = initial(desc) + light_range = 0 + update_light() + +//Ritual of Dimensional Rending: Calls forth the avatar of Nar'Sie upon the station. +/obj/effect/rune/narsie + cultist_name = "Nar'Sie" + cultist_desc = "tears apart dimensional barriers, calling forth the Geometer. Requires 9 invokers." + invocation = "TOK-LYR RQA-NAP G'OLT-ULOFT!!" + req_cultists = 9 + icon = 'icons/effects/96x96.dmi' + color = RUNE_COLOR_DARKRED + icon_state = "rune_large" + pixel_x = -32 //So the big ol' 96x96 sprite shows up right + pixel_y = -32 + scribe_delay = 500 //how long the rune takes to create + scribe_damage = 40.1 //how much damage you take doing it + var/used = FALSE + +/obj/effect/rune/narsie/Initialize(mapload, set_keyword) + . = ..() + GLOB.poi_list |= src + +/obj/effect/rune/narsie/Destroy() + GLOB.poi_list -= src + . = ..() + +/obj/effect/rune/narsie/conceal() //can't hide this, and you wouldn't want to + return + +/obj/effect/rune/narsie/invoke(list/invokers) + if(used) + return + var/mob/living/user = invokers[1] + var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives + var/area/place = get_area(src) + if(!(place in summon_objective.summon_spots)) + to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") + return + if(locate(/obj/singularity/narsie) in GLOB.poi_list) + for(var/M in invokers) + to_chat(M, "Nar'Sie is already on this plane!") + log_game("Nar'Sie rune failed - already summoned") + return + //BEGIN THE SUMMONING + used = TRUE + ..() + sound_to_playing_players('sound/effects/dimensional_rend.ogg') + var/turf/T = get_turf(src) + sleep(40) + if(src) + color = RUNE_COLOR_RED + new /obj/singularity/narsie/large/cult(T) //Causes Nar'Sie to spawn even if the rune has been removed + +//Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every three sacrifices your cult has carried out. +/obj/effect/rune/raise_dead + cultist_name = "Revive" + cultist_desc = "requires a dead, mindless, or inactive cultist placed upon the rune. For each three bodies sacrificed to the dark patron, one body will be mended and their mind awoken" + invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below + icon_state = "1" + color = RUNE_COLOR_MEDIUMRED + var/static/sacrifices_used = -SOULS_TO_REVIVE // Cultists get one "free" revive + +/obj/effect/rune/raise_dead/examine(mob/user) + . = ..() + if(iscultist(user) || user.stat == DEAD) + . += "Sacrifices unrewarded: [LAZYLEN(GLOB.sacrificed) - sacrifices_used]" + +/obj/effect/rune/raise_dead/invoke(list/invokers) + var/turf/T = get_turf(src) + var/mob/living/mob_to_revive + var/list/potential_revive_mobs = list() + var/mob/living/user = invokers[1] + if(rune_in_use) + return + rune_in_use = TRUE + for(var/mob/living/M in T.contents) + if(iscultist(M) && (M.stat == DEAD || !M.client || M.client.is_afk())) + potential_revive_mobs |= M + if(!potential_revive_mobs.len) + to_chat(user, "There are no dead cultists on the rune!") + log_game("Raise Dead rune failed - no cultists to revive") + fail_invoke() + return + if(potential_revive_mobs.len > 1) + mob_to_revive = input(user, "Choose a cultist to revive.", "Cultist to Revive") as null|anything in potential_revive_mobs + else + mob_to_revive = potential_revive_mobs[1] + if(QDELETED(src) || !validness_checks(mob_to_revive, user)) + fail_invoke() + return + if(user.name == "Herbert West") + invocation = "To life, to life, I bring them!" + else + invocation = initial(invocation) + ..() + if(mob_to_revive.stat == DEAD) + var/diff = LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - sacrifices_used + if(diff < 0) + to_chat(user, "Your cult must carry out [abs(diff)] more sacrifice\s before it can revive another cultist!") + fail_invoke() + return + sacrifices_used += SOULS_TO_REVIVE + mob_to_revive.revive(full_heal = TRUE, admin_revive = TRUE) //This does remove traits and such, but the rune might actually see some use because of it! + mob_to_revive.grab_ghost() + if(!mob_to_revive.client || mob_to_revive.client.is_afk()) + set waitfor = FALSE + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [mob_to_revive.name], an inactive blood cultist?", ROLE_CULTIST, null, ROLE_CULTIST, 50, mob_to_revive) + if(LAZYLEN(candidates)) + var/mob/dead/observer/C = pick(candidates) + to_chat(mob_to_revive.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.") + message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.") + mob_to_revive.ghostize(0) + mob_to_revive.key = C.key + else + fail_invoke() + return + SEND_SOUND(mob_to_revive, 'sound/ambience/antag/bloodcult.ogg') + to_chat(mob_to_revive, "\"PASNAR SAVRAE YAM'TOTH. Arise.\"") + mob_to_revive.visible_message( + "[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes.", \ + "You awaken suddenly from the void. You're alive!") + rune_in_use = FALSE + +/obj/effect/rune/raise_dead/proc/validness_checks(mob/living/target_mob, mob/living/user) + var/turf/T = get_turf(src) + if(QDELETED(user)) + return FALSE + if(!Adjacent(user) || user.incapacitated()) + return FALSE + if(QDELETED(target_mob)) + return FALSE + if(!(target_mob in T.contents)) + to_chat(user, "The cultist to revive has been moved!") + log_game("Raise Dead rune failed - revival target moved") + return FALSE + return TRUE + +/obj/effect/rune/raise_dead/fail_invoke() + ..() + rune_in_use = FALSE + for(var/mob/living/M in range(1,src)) + if(iscultist(M) && M.stat == DEAD) + M.visible_message("[M] twitches.") + +//Rite of the Corporeal Shield: When invoked, becomes solid and cannot be passed. Invoke again to undo. +/obj/effect/rune/wall + cultist_name = "Barrier" + cultist_desc = "when invoked, makes a temporary invisible wall to block passage. Can be invoked again to reverse this." + invocation = "Khari'd! Eske'te tannin!" + icon_state = "4" + color = RUNE_COLOR_DARKRED + CanAtmosPass = ATMOS_PASS_DENSITY + var/datum/timedevent/density_timer + var/recharging = FALSE + +/obj/effect/rune/wall/Initialize(mapload, set_keyword) + . = ..() + GLOB.wall_runes += src + +/obj/effect/rune/wall/examine(mob/user) + . = ..() + if(density && iscultist(user)) + if(density_timer) + . += "The air above this rune has hardened into a barrier that will last [DisplayTimeText(density_timer.timeToRun - world.time)]." + +/obj/effect/rune/wall/Destroy() + GLOB.wall_runes -= src + return ..() + +/obj/effect/rune/wall/BlockThermalConductivity() + return density + +/obj/effect/rune/wall/invoke(list/invokers) + if(recharging) + return + var/mob/living/user = invokers[1] + ..() + density = !density + update_state() + if(density) + spread_density() + var/carbon_user = iscarbon(user) + user.visible_message( + "[user] [carbon_user ? "places [user.p_their()] hands on":"stares intently at"] [src], and [density ? "the air above it begins to shimmer" : "the shimmer above it fades"].", \ + "You channel [carbon_user ? "your life ":""]energy into [src], [density ? "temporarily preventing" : "allowing"] passage above it.") + if(carbon_user) + var/mob/living/carbon/C = user + C.apply_damage(2, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + +/obj/effect/rune/wall/proc/spread_density() + for(var/R in GLOB.wall_runes) + var/obj/effect/rune/wall/W = R + if(W.virtual_z() == virtual_z() && get_dist(src, W) <= 2 && !W.density && !W.recharging) + W.density = TRUE + W.update_state() + W.spread_density() + density_timer = addtimer(CALLBACK(src, PROC_REF(lose_density)), 3000, TIMER_STOPPABLE) + +/obj/effect/rune/wall/proc/lose_density() + if(density) + recharging = TRUE + density = FALSE + update_state() + var/oldcolor = color + add_atom_colour("#696969", FIXED_COLOUR_PRIORITY) + animate(src, color = oldcolor, time = 50, easing = EASE_IN) + addtimer(CALLBACK(src, PROC_REF(recharge)), 50) + +/obj/effect/rune/wall/proc/recharge() + recharging = FALSE + add_atom_colour(RUNE_COLOR_MEDIUMRED, FIXED_COLOUR_PRIORITY) + +/obj/effect/rune/wall/proc/update_state() + deltimer(density_timer) + air_update_turf(TRUE) + if(density) + var/mutable_appearance/shimmer = mutable_appearance('icons/effects/effects.dmi', "barriershimmer", ABOVE_MOB_LAYER) + shimmer.appearance_flags |= RESET_COLOR + shimmer.alpha = 60 + shimmer.color = "#701414" + add_overlay(shimmer) + add_atom_colour(RUNE_COLOR_RED, FIXED_COLOUR_PRIORITY) + else + cut_overlays() + add_atom_colour(RUNE_COLOR_MEDIUMRED, FIXED_COLOUR_PRIORITY) + +//Rite of Joined Souls: Summons a single cultist. +/obj/effect/rune/summon + cultist_name = "Summon Cultist" + cultist_desc = "summons a single cultist to the rune. Requires 2 invokers." + invocation = "N'ath reth sh'yro eth d'rekkathnor!" + req_cultists = 2 + invoke_damage = 10 + icon_state = "3" + color = RUNE_COLOR_SUMMON + +/obj/effect/rune/summon/invoke(list/invokers) + var/mob/living/user = invokers[1] + var/list/cultists = list() + for(var/datum/mind/M in SSticker.mode.cult) + if(!(M.current in invokers) && M.current && M.current.stat != DEAD) + cultists |= M.current + var/mob/living/cultist_to_summon = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in cultists + if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated()) + return + if(!cultist_to_summon) + to_chat(user, "You require a summoning target!") + fail_invoke() + log_game("Summon Cultist rune failed - no target") + return + if(cultist_to_summon.stat == DEAD) + to_chat(user, "[cultist_to_summon] has died!") + fail_invoke() + log_game("Summon Cultist rune failed - target died") + return + if(cultist_to_summon.pulledby || cultist_to_summon.buckled) + to_chat(user, "[cultist_to_summon] is being held in place!") + fail_invoke() + log_game("Summon Cultist rune failed - target restrained") + return + if(!iscultist(cultist_to_summon)) + to_chat(user, "[cultist_to_summon] is not a follower of the Geometer!") + fail_invoke() + log_game("Summon Cultist rune failed - target was deconverted") + return + if(is_away_level(cultist_to_summon)) + to_chat(user, "[cultist_to_summon] is not in our dimension!") + fail_invoke() + log_game("Summon Cultist rune failed - target in away mission") + return + cultist_to_summon.visible_message( + "[cultist_to_summon] suddenly disappears in a flash of red light!", \ + "Overwhelming vertigo consumes you as you are hurled through the air!") + ..() + visible_message("A foggy shape materializes atop [src] and solidifes into [cultist_to_summon]!") + cultist_to_summon.forceMove(get_turf(src)) + qdel(src) + +//Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby +/obj/effect/rune/blood_boil + cultist_name = "Boil Blood" + cultist_desc = "boils the blood of non-believers who can see the rune, rapidly dealing extreme amounts of damage. Requires 3 invokers." + invocation = "Dedo ol'btoh!" + icon_state = "4" + color = RUNE_COLOR_BURNTORANGE + light_color = LIGHT_COLOR_LAVA + req_cultists = 3 + invoke_damage = 10 + construct_invoke = FALSE + var/tick_damage = 25 + rune_in_use = FALSE + +/obj/effect/rune/blood_boil/do_invoke_glow() + return + +/obj/effect/rune/blood_boil/invoke(list/invokers) + if(rune_in_use) + return + ..() + rune_in_use = TRUE + var/turf/T = get_turf(src) + visible_message("[src] turns a bright, glowing orange!") + color = "#FC9B54" + set_light(6, 1, color) + for(var/mob/living/L in viewers(T)) + if(!iscultist(L) && L.blood_volume) + var/atom/I = L.anti_magic_check(chargecost = 0) + if(I) + if(isitem(I)) + to_chat(L, "[I] suddenly burns hotly before returning to normal!") + continue + to_chat(L, "Your blood boils in your veins!") + animate(src, color = "#FCB56D", time = 4) + sleep(4) + if(QDELETED(src)) + return + do_area_burn(T, 0.5) + animate(src, color = "#FFDF80", time = 5) + sleep(5) + if(QDELETED(src)) + return + do_area_burn(T, 1) + animate(src, color = "#FFFDF4", time = 6) + sleep(6) + if(QDELETED(src)) + return + do_area_burn(T, 1.5) + new /obj/effect/hotspot(T) + qdel(src) + +/obj/effect/rune/blood_boil/proc/do_area_burn(turf/T, multiplier) + set_light(6, 1, color) + for(var/mob/living/L in viewers(T)) + if(!iscultist(L) && L.blood_volume) + if(L.anti_magic_check(chargecost = 0)) + continue + L.take_overall_damage(tick_damage*multiplier, tick_damage*multiplier) + +//Rite of Spectral Manifestation: Summons a ghost on top of the rune as a cultist human with no items. User must stand on the rune at all times, and takes damage for each summoned ghost. +/obj/effect/rune/manifest + cultist_name = "Spirit Realm" + cultist_desc = "manifests a spirit servant of the Geometer and allows you to ascend as a spirit yourself. The invoker must not move from atop the rune, and will take damage for each summoned spirit." + invocation = "Gal'h'rfikk harfrandid mud'gib!" //how the fuck do you pronounce this + icon_state = "7" + invoke_damage = 10 + construct_invoke = FALSE + color = RUNE_COLOR_DARKRED + var/mob/living/affecting = null + var/ghost_limit = 3 + var/ghosts = 0 + +/obj/effect/rune/manifest/Initialize() + . = ..() + + +/obj/effect/rune/manifest/can_invoke(mob/living/user) + if(!(user in get_turf(src))) + to_chat(user, "You must be standing on [src]!") + fail_invoke() + log_game("Manifest rune failed - user not standing on rune") + return list() + if(user.has_status_effect(STATUS_EFFECT_SUMMONEDGHOST)) + to_chat(user, "Ghosts can't summon more ghosts!") + fail_invoke() + log_game("Manifest rune failed - user is a ghost") + return list() + return ..() + +/obj/effect/rune/manifest/invoke(list/invokers) + . = ..() + var/mob/living/user = invokers[1] + var/turf/T = get_turf(src) + var/choice = alert(user,"You tear open a connection to the spirit realm...",,"Summon a Cult Ghost","Ascend as a Dark Spirit","Cancel") + if(choice == "Summon a Cult Ghost") + if(ghosts >= ghost_limit) + to_chat(user, "You are sustaining too many ghosts to summon more!") + fail_invoke() + log_game("Manifest rune failed - too many summoned ghosts") + return list() + notify_ghosts("Manifest rune invoked in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src, header = "Manifest rune") + var/list/ghosts_on_rune = list() + for(var/mob/dead/observer/O in T) + if(O.client && !is_banned_from(O.ckey, ROLE_CULTIST) && !QDELETED(src) && !(isAdminObserver(O) && (O.client.prefs.toggles & ADMIN_IGNORE_CULT_GHOST)) && !QDELETED(O)) + ghosts_on_rune += O + if(!ghosts_on_rune.len) + to_chat(user, "There are no spirits near [src]!") + fail_invoke() + log_game("Manifest rune failed - no nearby ghosts") + return list() + var/mob/dead/observer/ghost_to_spawn = pick(ghosts_on_rune) + var/mob/living/carbon/human/cult_ghost/new_human = new(T) + new_human.real_name = ghost_to_spawn.real_name + new_human.alpha = 150 //Makes them translucent + new_human.equipOutfit(/datum/outfit/ghost_cultist) //give them armor + new_human.apply_status_effect(STATUS_EFFECT_SUMMONEDGHOST) //ghosts can't summon more ghosts + new_human.see_invisible = SEE_INVISIBLE_OBSERVER + ghosts++ + playsound(src, 'sound/magic/exit_blood.ogg', 50, TRUE) + visible_message("A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man.") + to_chat(user, "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...") + var/obj/structure/emergency_shield/invoker/N = new(T) + new_human.key = ghost_to_spawn.key + SSticker.mode.add_cultist(new_human.mind, 0) + to_chat(new_human, "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar'Sie, and you are to serve them at all costs.") + + while(!QDELETED(src) && !QDELETED(user) && !QDELETED(new_human) && (user in T)) + if(user.stat != CONSCIOUS || HAS_TRAIT(new_human, TRAIT_CRITICAL_CONDITION)) + break + user.apply_damage(0.1, BRUTE) + sleep(1) + + qdel(N) + ghosts-- + if(new_human) + new_human.visible_message( + "[new_human] suddenly dissolves into bones and ashes.", \ + "Your link to the world fades. Your form breaks apart.") + for(var/obj/I in new_human) + new_human.dropItemToGround(I, TRUE) + new_human.dust() + else if(choice == "Ascend as a Dark Spirit") + affecting = user + affecting.add_atom_colour(RUNE_COLOR_DARKRED, ADMIN_COLOUR_PRIORITY) + affecting.visible_message( + "[affecting] freezes statue-still, glowing an unearthly red.", \ + "You see what lies beyond. All is revealed. In this form you find that your voice booms louder and you can mark targets for the entire cult") + var/mob/dead/observer/G = affecting.ghostize(1) + var/datum/action/innate/cult/comm/spirit/CM = new + var/datum/action/innate/cult/ghostmark/GM = new + G.name = "Dark Spirit of [G.name]" + G.color = "red" + CM.Grant(G) + GM.Grant(G) + while(!QDELETED(affecting)) + if(!(affecting in T)) + user.visible_message("A spectral tendril wraps around [affecting] and pulls [affecting.p_them()] back to the rune!") + Beam(affecting, icon_state="drainbeam", time=2) + affecting.forceMove(get_turf(src)) //NO ESCAPE :^) + if(affecting.key) + affecting.visible_message( + "[affecting] slowly relaxes, the glow around [affecting.p_them()] dimming.", \ + "You are re-united with your physical form. [src] releases its hold over you.") + affecting.Paralyze(40) + break + if(affecting.health <= 10) + to_chat(G, "Your body can no longer sustain the connection!") + break + sleep(5) + CM.Remove(G) + GM.Remove(G) + affecting.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED) + affecting.grab_ghost() + affecting = null + rune_in_use = FALSE + +/mob/living/carbon/human/cult_ghost/spill_organs(no_brain, no_organs, no_bodyparts) //cult ghosts never drop a brain + no_brain = TRUE + . = ..() + +/mob/living/carbon/human/cult_ghost/getorganszone(zone, subzones = 0) + . = ..() + for(var/obj/item/organ/brain/B in .) //they're not that smart, really + . -= B + + +/obj/effect/rune/apocalypse + cultist_name = "Apocalypse" + cultist_desc = "a harbinger of the end times. Grows in strength with the cult's desperation - but at the risk of... side effects." + invocation = "Ta'gh fara'qha fel d'amar det!" + icon = 'icons/effects/96x96.dmi' + icon_state = "apoc" + pixel_x = -32 + pixel_y = -32 + color = RUNE_COLOR_DARKRED + req_cultists = 3 + scribe_delay = 100 + +/obj/effect/rune/apocalypse/invoke(list/invokers) + if(rune_in_use) + return + . = ..() + var/area/place = get_area(src) + var/mob/living/user = invokers[1] + var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives + if(summon_objective.summon_spots.len <= 1) + to_chat(user, "Only one ritual site remains - it must be reserved for the final summoning!") + return + if(!(place in summon_objective.summon_spots)) + to_chat(user, "The Apocalypse rune will remove a ritual site, where Nar'Sie can be summoned, it can only be scribed in [english_list(summon_objective.summon_spots)]!") + return + summon_objective.summon_spots -= place + rune_in_use = TRUE + var/turf/T = get_turf(src) + new /obj/effect/temp_visual/dir_setting/curse/grasp_portal/fading(T) + var/intensity = 0 + for(var/mob/living/M in GLOB.player_list) + if(iscultist(M)) + intensity++ + intensity = max(60, 360 - (360*(intensity/GLOB.player_list.len + 0.3)**2)) //significantly lower intensity for "winning" cults + var/duration = intensity*10 + playsound(T, 'sound/magic/enter_blood.ogg', 100, TRUE) + visible_message("A colossal shockwave of energy bursts from the rune, disintegrating it in the process!") + for(var/mob/living/L in range(src, 3)) + L.Paralyze(30) + empulse(T, 0.42*(intensity), 1) + var/list/images = list() + var/zmatch = T.virtual_z() + var/datum/atom_hud/AH = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] + for(var/mob/living/M in GLOB.alive_mob_list) + if(M.virtual_z() != zmatch) + continue + if(ishuman(M)) + if(!iscultist(M)) + AH.remove_hud_from(M) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(hudFix), M), duration) + var/image/A = image('icons/mob/cult.dmi',M,"cultist", ABOVE_MOB_LAYER) + A.override = 1 + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "human_apoc", A, NONE) + addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"human_apoc",TRUE), duration) + images += A + SEND_SOUND(M, pick(sound('sound/ambience/antag/bloodcult.ogg'),sound('sound/spookoween/ghost_whisper.ogg'),sound('sound/spookoween/ghosty_wind.ogg'))) + else + var/construct = pick("floater","artificer","behemoth") + var/image/B = image('icons/mob/mob.dmi',M,construct, ABOVE_MOB_LAYER) + B.override = 1 + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "mob_apoc", B, NONE) + addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"mob_apoc",TRUE), duration) + images += B + if(!iscultist(M)) + if(M.client) + var/image/C = image('icons/effects/cult_effects.dmi',M,"bloodsparkles", ABOVE_MOB_LAYER) + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, NONE) + addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"cult_apoc",TRUE), duration) + images += C + else + to_chat(M, "An Apocalypse Rune was invoked in the [place.name], it is no longer available as a summoning site!") + SEND_SOUND(M, 'sound/effects/pope_entry.ogg') + image_handler(images, duration) + if(intensity>=285) // Based on the prior formula, this means the cult makes up <15% of current players + var/outcome = rand(1,80) + switch(outcome) + if(1 to 10) + var/datum/round_event_control/disease_outbreak/D = new() + // var/datum/round_event_control/mice_migration/M = new() + D.runEvent() + // M.runEvent() + if(11 to 20) + var/datum/round_event_control/radiation_storm/RS = new() + RS.runEvent() + if(21 to 30) + var/datum/round_event_control/brand_intelligence/BI = new() + BI.runEvent() + if(31 to 40) + var/datum/round_event_control/immovable_rod/R = new() + R.runEvent() + R.runEvent() + R.runEvent() + if(41 to 50) + var/datum/round_event_control/meteor_wave/MW = new() + MW.runEvent() + if(51 to 60) + var/datum/round_event_control/spider_infestation/SI = new() + SI.runEvent() + if(61 to 80) + var/datum/round_event_control/spacevine/SV = new() + var/datum/round_event_control/grey_tide/GT = new() + SV.runEvent() + GT.runEvent() + qdel(src) + +/obj/effect/rune/apocalypse/proc/image_handler(list/images, duration) + var/end = world.time + duration + set waitfor = 0 + while(end>world.time) + for(var/image/I in images) + I.override = FALSE + animate(I, alpha = 0, time = 25, flags = ANIMATION_PARALLEL) + sleep(35) + for(var/image/I in images) + animate(I, alpha = 255, time = 25, flags = ANIMATION_PARALLEL) + sleep(25) + for(var/image/I in images) + if(I.icon_state != "bloodsparkles") + I.override = TRUE + sleep(190) + + + +/proc/hudFix(mob/living/carbon/human/target) + if(!target || !target.client) + return + var/obj/O = target.get_item_by_slot(ITEM_SLOT_EYES) + if(istype(O, /obj/item/clothing/glasses/hud/security)) + var/datum/atom_hud/AH = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] + AH.add_hud_to(target) diff --git a/shiptest.dme b/shiptest.dme index 13b29628688c..3c963f860f96 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1662,6 +1662,14 @@ #include "code\modules\antagonists\changeling\powers\strained_muscles.dm" #include "code\modules\antagonists\changeling\powers\tiny_prick.dm" #include "code\modules\antagonists\changeling\powers\transform.dm" +#include "code\modules\antagonists\cult\blood_magic.dm" +#include "code\modules\antagonists\cult\cult.dm" +#include "code\modules\antagonists\cult\cult_comms.dm" +#include "code\modules\antagonists\cult\cult_items.dm" +#include "code\modules\antagonists\cult\cult_structures.dm" +#include "code\modules\antagonists\cult\cult_turf_overlay.dm" +#include "code\modules\antagonists\cult\rune_spawn_action.dm" +#include "code\modules\antagonists\cult\runes.dm" #include "code\modules\antagonists\devil\devil.dm" #include "code\modules\antagonists\devil\devil_helpers.dm" #include "code\modules\antagonists\devil\imp\imp.dm" From aa6115b30b8fbdce70c5bd63412061bb62d98da4 Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 10:45:05 -0500 Subject: [PATCH 026/102] fixing sprites by removing stuff mostly c: --- code/game/objects/items/melee/energy.dm | 1 - code/game/objects/items/melee/misc.dm | 173 ------------------- code/game/objects/items/melee/spear.dm | 110 ------------ code/game/objects/items/melee/stunbaton.dm | 4 - code/game/objects/items/melee/sword.dm | 166 ++++++++++++++++++ code/modules/antagonists/cult/blood_magic.dm | 19 +- code/modules/antagonists/cult/cult_items.dm | 123 ------------- icons/obj/weapon/baton.dmi | Bin 4570 -> 5584 bytes icons/obj/weapon/spear.dmi | Bin 2985 -> 2045 bytes 9 files changed, 167 insertions(+), 429 deletions(-) diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index eb5adb35e106..34219662e53d 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -255,7 +255,6 @@ /obj/item/melee/transforming/energy/ctf name = "energy sword" desc = "That cable over there, I'm going to cut it." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "plasmasword0" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 27ce38d87994..0c1958752b45 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -105,179 +105,6 @@ "Boxcutter" = "letter_opener_b", "Corporate" = "letter_opener_a" ) -/obj/item/melee/weebstick - name = "Weeb Stick" - desc = "Glorious nippon steel, folded 1000 times." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "weeb_blade" - item_state = "weeb_blade" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - pickup_sound = 'sound/items/handling/knife2_pickup.ogg' - drop_sound = 'sound/items/handling/metal_drop.ogg' - flags_1 = CONDUCT_1 - obj_flags = UNIQUE_RENAME - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - sharpness = IS_SHARP_ACCURATE - force = 25 - throw_speed = 4 - throw_range = 5 - throwforce = 12 - block_chance = 20 - armour_penetration = 50 - hitsound = 'sound/weapons/anime_slash.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "diced", "cut") - -/obj/item/melee/weebstick/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 25, 90, 5) //Not made for scalping victims, but will work nonetheless - -/obj/item/melee/weebstick/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = block_chance / 2 //Pretty good... - return ..() - -/obj/item/melee/weebstick/on_exit_storage(datum/component/storage/concrete/S) - var/obj/item/storage/belt/weebstick/B = S.real_location() - if(istype(B)) - playsound(B, 'sound/items/unsheath.ogg', 25, TRUE) - -/obj/item/melee/weebstick/on_enter_storage(datum/component/storage/concrete/S) - var/obj/item/storage/belt/weebstick/B = S.real_location() - if(istype(B)) - playsound(B, 'sound/items/sheath.ogg', 25, TRUE) - -/obj/item/storage/belt/weebstick - name = "nanoforged blade sheath" - desc = "It yearns to bath in the blood of your enemies... but you hold it back!" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "weeb_sheath" - item_state = "sheath" - w_class = WEIGHT_CLASS_BULKY - force = 3 - var/primed = FALSE //Prerequisite to anime bullshit - // ##The anime bullshit## - Mostly stolen from action/innate/dash - var/dash_sound = 'sound/weapons/unsheathed_blade.ogg' - var/beam_effect = "blood_beam" - var/phasein = /obj/effect/temp_visual/dir_setting/cult/phase - var/phaseout = /obj/effect/temp_visual/dir_setting/cult/phase - -/obj/item/storage/belt/weebstick/ComponentInitialize() - . = ..() - AddElement(/datum/element/update_icon_updates_onmob) - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_items = 1 - STR.use_sound = null - STR.max_w_class = WEIGHT_CLASS_BULKY - STR.set_holdable(list( - /obj/item/melee/weebstick - )) - -/obj/item/storage/belt/weebstick/examine(mob/user) - . = ..() - if(length(contents)) - . += "Use [src] in-hand to prime for an opening strike." - . += "Alt-click it to quickly draw the blade." - -/obj/item/storage/belt/weebstick/AltClick(mob/user) - if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)) || primed) - return - if(length(contents)) - var/obj/item/I = contents[1] - playsound(user, dash_sound, 25, TRUE) - user.visible_message("[user] swiftly draws \the [I].", "You draw \the [I].") - user.put_in_hands(I) - update_appearance() - else - to_chat(user, "[src] is empty!") - -/obj/item/storage/belt/weebstick/attack_self(mob/user) - if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) - return - if(length(contents)) - var/datum/component/storage/CP = GetComponent(/datum/component/storage) - if(primed) - CP.locked = FALSE - playsound(user, 'sound/items/sheath.ogg', 25, TRUE) - to_chat(user, "You return your stance.") - primed = FALSE - update_appearance() - else - CP.locked = TRUE //Prevents normal removal of the blade while primed - playsound(user, 'sound/items/unsheath.ogg', 25, TRUE) - user.visible_message("[user] grips the blade within [src] and primes to attack.", "You take an opening stance...", "You hear a weapon being drawn...") - primed = TRUE - update_appearance() - else - to_chat(user, "[src] is empty!") - -/obj/item/storage/belt/weebstick/afterattack(atom/A, mob/living/user, proximity_flag, params) - . = ..() - if(primed && length(contents)) - if(!(A in view(user.client.view, user))) - return - var/obj/item/I = contents[1] - if(!user.put_in_inactive_hand(I)) - to_chat(user, "You need a free hand!") - return - var/datum/component/storage/CP = GetComponent(/datum/component/storage) - CP.locked = FALSE - primed = FALSE - update_appearance() - primed_attack(A, user) - if(CanReach(A, I)) - I.melee_attack_chain(user, A, params) - user.swap_hand() - -/obj/item/storage/belt/weebstick/proc/primed_attack(atom/target, mob/living/user) - var/turf/end = get_turf(user) - var/turf/start = get_turf(user) - var/obj/spot1 = new phaseout(start, user.dir) - var/halt = FALSE - // Stolen dash code - for(var/T in getline(start, get_turf(target))) - var/turf/tile = T - for(var/mob/living/victim in tile) - if(victim != user) - playsound(victim, 'sound/weapons/anime_slash.ogg', 10, TRUE) - victim.take_bodypart_damage(15) - // Unlike actual ninjas, we stop noclip-dashing here. - if(isclosedturf(T)) - halt = TRUE - for(var/obj/O in tile) - // We ignore mobs as we are cutting through them - if(!O.CanPass(user, tile)) - halt = TRUE - if(halt) - break - else - end = T - user.forceMove(end) // YEET - playsound(start, dash_sound, 35, TRUE) - var/obj/spot2 = new phasein(end, user.dir) - spot1.Beam(spot2, beam_effect, time=20) - user.visible_message("In a flash of red, [user] draws [user.p_their()] blade!", "You dash forward while drawing your weapon!", "You hear a blade slice through the air at impossible speeds!") - -/obj/item/storage/belt/weebstick/update_icon_state() - icon_state = "weeb_sheath" - item_state = "sheath" - if(contents.len) - if(primed) - icon_state += "-primed" - else - icon_state += "-blade" - item_state += "-sabre" - return ..() - -/obj/item/storage/belt/weebstick/PopulateContents() - //Time to generate names now that we have the sword - var/n_title = pick(GLOB.ninja_titles) - var/n_name = pick(GLOB.ninja_names) - var/obj/item/melee/weebstick/sword = new /obj/item/melee/weebstick(src) - sword.name = "[n_title] blade of clan [n_name]" - name = "[n_title] scabbard of clan [n_name]" - update_appearance() /obj/item/melee/baseball_bat name = "baseball bat" diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index e3212657abab..d02f12c41008 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -161,113 +161,3 @@ /obj/item/spear/bonespear/ComponentInitialize() . = ..() AddComponent(/datum/component/two_handed, force_unwielded=12, force_wielded=20, icon_wielded="[icon_prefix]1") - -//version of the bone spear crafted from the trophy dropped by the Ash Drake. High damage, high ap, burns. -/obj/item/spear/dragonspear - name = "dragonslayer's spear" - force = 20 - throwforce = 25 - block_chance = 15//lol,lmao - armour_penetration = 30 - embedding = list("impact_pain_mult" = 5) - icon_prefix = "dragonspear" - base_icon_state = "dragonspear0" - icon_state = "dragonspear0" - var/list/nemesis_factions = list("mining", "boss") - var/faction_bonus_force = 25 - attack_verb = list("seared", "braided", "impaled", "smote", "gored") - hitsound = 'sound/weapons/sear.ogg' - var/cooldown_time = 0 SECONDS - COOLDOWN_DECLARE(freeze_cooldown) - -/obj/item/spear/dragonspear/attack(mob/living/target, mob/living/carbon/human/user) - var/nemesis_faction = FALSE - if(LAZYLEN(nemesis_factions)) - for(var/F in target.faction) - if(F in nemesis_factions) - nemesis_faction = TRUE - force += faction_bonus_force - throwforce += faction_bonus_force - nemesis_effects(user, target) - break - . = ..() - if(nemesis_faction) - force -= faction_bonus_force - throwforce -= faction_bonus_force - -/obj/item/spear/dragonspear/proc/nemesis_effects(mob/living/user, mob/living/target) - return - -/obj/item/spear/dragonspear/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=20, force_wielded=25, icon_wielded="[icon_prefix]1") - AddComponent(/datum/component/butchering, 60, 150) - -/obj/item/spear/dragonspear/attack(atom/target, blocked = FALSE) - if(iscarbon(target)) - var/mob/living/carbon/M = target - M.adjust_fire_stacks(3) - M.IgniteMob() - M.apply_damage(5, BURN) - M.adjust_bodytemperature(150) - if(isanimal(target)) - var/mob/living/simple_animal/M = target - M.apply_damage(15, BURN) - ..() - -//crystal spear -/obj/item/spear/crystal - icon_state = "crystal_spear0" - name = "crystal spear" - desc = "While more 'sharp stick' than spear, this thing is extremely dangerous neverless. Crafted out of the mysterous crystals, it can hit for very high damage, although it will break with repeated use." - base_icon_state = "crystal_spear" - icon_prefix = "crystal_spear" - force = 12 - throwforce = 40 - armour_penetration = 20 - max_integrity = 300 //you can repair this with duct tape - var/damage_to_take_on_hit = 25 //every time we hit something, deal how much damage? - -/obj/item/spear/crystal/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=12, force_wielded=30, icon_wielded="[icon_prefix]1") //4 hit crit - -/obj/item/spear/crystal/examine(mob/user) - . = ..() - . += "You can throw it for very high damage and stuns fauna, though this will shatter it instantly." - var/healthpercent = (obj_integrity/max_integrity) * 100 - switch(healthpercent) - if(50 to 99) - . += "It looks slightly damaged." - if(25 to 50) - . += "It appears heavily damaged." - if(0 to 25) - . += "It's falling apart!" - -/obj/item/spear/crystal/attack(mob/living/M, mob/living/user) - . = ..() - take_damage(damage_to_take_on_hit) - -/obj/item/spear/crystal/attack_obj(obj/O, mob/living/user) - . = ..() - take_damage(damage_to_take_on_hit) - -/obj/item/spear/crystal/obj_destruction(damage_flag) - visible_message("[src] shatters into a million pieces!") - playsound(src,"shatter", 70) - new /obj/effect/decal/cleanable/glass/strange(get_turf(src)) - return ..() - -/obj/item/spear/crystal/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) //destroyes when thrown - . = ..() - if(ishostile(hit_atom)) - var/mob/living/simple_animal/hostile/hostile_target = hit_atom - var/hostile_ai_status = hostile_target.AIStatus - hostile_target.AIStatus = AI_OFF - addtimer(VARSET_CALLBACK(hostile_target, AIStatus, hostile_ai_status), 5 SECONDS) - - new /obj/effect/temp_visual/goliath_tentacle/crystal/visual_only(get_turf(src)) - visible_message("[src] shatters into a million pieces!") - playsound(src,"shatter", 70) - new /obj/effect/decal/cleanable/glass/strange(get_turf(src)) - qdel(src) diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index 5b3ad433cdff..b1c40f95f3e1 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -493,7 +493,6 @@ /obj/item/melee/classic_baton/telescopic name = "telescopic baton" desc = "A compact yet robust personal defense weapon. Can be concealed when folded." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "telebaton_0" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' @@ -538,10 +537,7 @@ /obj/item/melee/classic_baton/telescopic/contractor_baton name = "contractor baton" desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "contractor_baton_0" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' item_state = null slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index cd05f1de5912..6920e82c3176 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -356,3 +356,169 @@ owner.visible_message("[owner] parries [attack_text] with [src]!") return 1 return 0 + +/obj/item/melee/sword/weebstick + name = "Weeb Stick" + desc = "Glorious nippon steel, folded 1000 times." + icon_state = "weeb_blade" + item_state = "weeb_blade" + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK + sharpness = IS_SHARP_ACCURATE + force = 25 + throw_speed = 4 + throw_range = 5 + throwforce = 12 + block_chance = 20 + armour_penetration = 50 + hitsound = 'sound/weapons/anime_slash.ogg' + +/obj/item/melee/sword/weebstick/Initialize() + . = ..() + AddComponent(/datum/component/butchering, 25, 90, 5) //Not made for scalping victims, but will work nonetheless + +/obj/item/melee/sword/weebstick/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(attack_type == PROJECTILE_ATTACK) + final_block_chance = block_chance / 2 //Pretty good... + return ..() + +/obj/item/melee/sword/weebstick/on_exit_storage(datum/component/storage/concrete/S) + var/obj/item/storage/belt/weebstick/B = S.real_location() + if(istype(B)) + playsound(B, 'sound/items/unsheath.ogg', 25, TRUE) + +/obj/item/melee/sword/weebstick/on_enter_storage(datum/component/storage/concrete/S) + var/obj/item/storage/belt/weebstick/B = S.real_location() + if(istype(B)) + playsound(B, 'sound/items/sheath.ogg', 25, TRUE) + +/obj/item/storage/belt/weebstick + name = "nanoforged blade sheath" + desc = "It yearns to bath in the blood of your enemies... but you hold it back!" + icon = 'icons/obj/weapon/sword.dmi' + icon_state = "weeb_sheath" + item_state = "sheath" + w_class = WEIGHT_CLASS_BULKY + force = 3 + var/primed = FALSE //Prerequisite to anime bullshit + // ##The anime bullshit## - Mostly stolen from action/innate/dash + var/dash_sound = 'sound/weapons/unsheathed_blade.ogg' + var/beam_effect = "blood_beam" + var/phasein = /obj/effect/temp_visual/dir_setting/cult/phase + var/phaseout = /obj/effect/temp_visual/dir_setting/cult/phase + +/obj/item/storage/belt/weebstick/ComponentInitialize() + . = ..() + AddElement(/datum/element/update_icon_updates_onmob) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 1 + STR.use_sound = null + STR.max_w_class = WEIGHT_CLASS_BULKY + STR.set_holdable(list( + /obj/item/melee/sword/weebstick + )) + +/obj/item/storage/belt/weebstick/examine(mob/user) + . = ..() + if(length(contents)) + . += "Use [src] in-hand to prime for an opening strike." + . += "Alt-click it to quickly draw the blade." + +/obj/item/storage/belt/weebstick/AltClick(mob/user) + if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)) || primed) + return + if(length(contents)) + var/obj/item/I = contents[1] + playsound(user, dash_sound, 25, TRUE) + user.visible_message("[user] swiftly draws \the [I].", "You draw \the [I].") + user.put_in_hands(I) + update_appearance() + else + to_chat(user, "[src] is empty!") + +/obj/item/storage/belt/weebstick/attack_self(mob/user) + if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) + return + if(length(contents)) + var/datum/component/storage/CP = GetComponent(/datum/component/storage) + if(primed) + CP.locked = FALSE + playsound(user, 'sound/items/sheath.ogg', 25, TRUE) + to_chat(user, "You return your stance.") + primed = FALSE + update_appearance() + else + CP.locked = TRUE //Prevents normal removal of the blade while primed + playsound(user, 'sound/items/unsheath.ogg', 25, TRUE) + user.visible_message("[user] grips the blade within [src] and primes to attack.", "You take an opening stance...", "You hear a weapon being drawn...") + primed = TRUE + update_appearance() + else + to_chat(user, "[src] is empty!") + +/obj/item/storage/belt/weebstick/afterattack(atom/A, mob/living/user, proximity_flag, params) + . = ..() + if(primed && length(contents)) + if(!(A in view(user.client.view, user))) + return + var/obj/item/I = contents[1] + if(!user.put_in_inactive_hand(I)) + to_chat(user, "You need a free hand!") + return + var/datum/component/storage/CP = GetComponent(/datum/component/storage) + CP.locked = FALSE + primed = FALSE + update_appearance() + primed_attack(A, user) + if(CanReach(A, I)) + I.melee_attack_chain(user, A, params) + user.swap_hand() + +/obj/item/storage/belt/weebstick/proc/primed_attack(atom/target, mob/living/user) + var/turf/end = get_turf(user) + var/turf/start = get_turf(user) + var/obj/spot1 = new phaseout(start, user.dir) + var/halt = FALSE + // Stolen dash code + for(var/T in getline(start, get_turf(target))) + var/turf/tile = T + for(var/mob/living/victim in tile) + if(victim != user) + playsound(victim, 'sound/weapons/anime_slash.ogg', 10, TRUE) + victim.take_bodypart_damage(15) + // Unlike actual ninjas, we stop noclip-dashing here. + if(isclosedturf(T)) + halt = TRUE + for(var/obj/O in tile) + // We ignore mobs as we are cutting through them + if(!O.CanPass(user, tile)) + halt = TRUE + if(halt) + break + else + end = T + user.forceMove(end) // YEET + playsound(start, dash_sound, 35, TRUE) + var/obj/spot2 = new phasein(end, user.dir) + spot1.Beam(spot2, beam_effect, time=20) + user.visible_message("In a flash of red, [user] draws [user.p_their()] blade!", "You dash forward while drawing your weapon!", "You hear a blade slice through the air at impossible speeds!") + +/obj/item/storage/belt/weebstick/update_icon_state() + icon_state = "weeb_sheath" + item_state = "sheath" + if(contents.len) + if(primed) + icon_state += "-primed" + else + icon_state += "-blade" + item_state += "-sabre" + return ..() + +/obj/item/storage/belt/weebstick/PopulateContents() + //Time to generate names now that we have the sword + var/n_title = pick(GLOB.ninja_titles) + var/n_name = pick(GLOB.ninja_names) + var/obj/item/melee/sword/weebstick/sword = new /obj/item/melee/sword/weebstick(src) + sword.name = "[n_title] blade of clan [n_name]" + name = "[n_title] scabbard of clan [n_name]" + update_appearance() diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index dd52db6a7ff3..810042ffce18 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -783,29 +783,12 @@ /obj/item/melee/blood_magic/manipulator/attack_self(mob/living/user) if(iscultist(user)) - var/list/options = list("Blood Spear (150)", "Blood Bolt Barrage (300)", "Blood Beam (500)") + var/list/options = list("Blood Bolt Barrage (300)", "Blood Beam (500)") var/choice = input(user, "Choose a greater blood rite...", "Greater Blood Rites") as null|anything in options if(!choice) to_chat(user, "You decide against conducting a greater blood rite.") return switch(choice) - if("Blood Spear (150)") - if(uses < BLOOD_SPEAR_COST) - to_chat(user, "You need [BLOOD_SPEAR_COST] charges to perform this rite.") - else - uses -= BLOOD_SPEAR_COST - var/turf/T = get_turf(user) - qdel(src) - var/datum/action/innate/cult/spear/S = new(user) - var/obj/item/cult_spear/rite = new(T) - S.Grant(user, rite) - rite.spear_act = S - if(user.put_in_hands(rite)) - to_chat(user, "A [rite.name] appears in your hand!") - else - user.visible_message( - "A [rite.name] appears at [user]'s feet!", \ - "A [rite.name] materializes at your feet.") if("Blood Bolt Barrage (300)") if(uses < BLOOD_BARRAGE_COST) to_chat(user, "You need [BLOOD_BARRAGE_COST] charges to perform this rite.") diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 0124ec2b9a49..65e80336306d 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -339,129 +339,6 @@ ..() to_chat(user, "\The [src] can only transport items!") - -/obj/item/cult_spear - name = "blood halberd" - desc = "A sickening spear composed entirely of crystallized blood." - icon_state = "bloodspear0" - base_icon_state = "occultpoleaxe" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - slot_flags = 0 - force = 17 - throwforce = 40 - throw_speed = 2 - armour_penetration = 30 - block_chance = 30 - attack_verb = list("attacked", "impaled", "stabbed", "torn", "gored") - sharpness = IS_SHARP - hitsound = 'sound/weapons/bladeslice.ogg' - var/datum/action/innate/cult/spear/spear_act - var/wielded = FALSE // track wielded status on item - -/obj/item/cult_spear/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - -/obj/item/cult_spear/ComponentInitialize() - . = ..() - AddComponent(/datum/component/butchering, 100, 90) - AddComponent(/datum/component/two_handed, force_unwielded=17, force_wielded=24, icon_wielded="[base_icon_state]1") - -/// triggered on wield of two handed item -/obj/item/cult_spear/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/cult_spear/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/cult_spear/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/cult_spear/Destroy() - if(spear_act) - qdel(spear_act) - return ..() - -/obj/item/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - var/turf/T = get_turf(hit_atom) - if(isliving(hit_atom)) - var/mob/living/L = hit_atom - if(iscultist(L)) - playsound(src, 'sound/weapons/throwtap.ogg', 50) - if(L.put_in_active_hand(src)) - L.visible_message("[L] catches [src] out of the air!") - else - L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") - else if(!..()) - if(!L.anti_magic_check()) - L.Paralyze(50) - break_spear(T) - else - ..() - -/obj/item/cult_spear/proc/break_spear(turf/T) - if(src) - if(!T) - T = get_turf(src) - if(T) - T.visible_message("[src] shatters and melts back into blood!") - new /obj/effect/temp_visual/cult/sparks(T) - new /obj/effect/decal/cleanable/blood/splatter(T) - playsound(T, 'sound/effects/glassbr3.ogg', 100) - qdel(src) - -/obj/item/cult_spear/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) - final_block_chance *= 2 - if(prob(final_block_chance)) - if(attack_type == PROJECTILE_ATTACK) - owner.visible_message("[owner] deflects [attack_text] with [src]!") - playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE) - return TRUE - else - playsound(src, 'sound/weapons/parry.ogg', 100, TRUE) - owner.visible_message("[owner] parries [attack_text] with [src]!") - return TRUE - return FALSE - -/datum/action/innate/cult/spear - name = "Bloody Bond" - desc = "Call the blood spear back to your hand!" - background_icon_state = "bg_demon" - button_icon_state = "bloodspear" - var/obj/item/cult_spear/spear - var/cooldown = 0 - -/datum/action/innate/cult/spear/Grant(mob/user, obj/blood_spear) - . = ..() - spear = blood_spear - button.screen_loc = "6:157,4:-2" - button.moved = "6:157,4:-2" - -/datum/action/innate/cult/spear/Activate() - if(owner == spear.loc || cooldown > world.time) - return - var/ST = get_turf(spear) - var/OT = get_turf(owner) - if(get_dist(OT, ST) > 10) - to_chat(owner,"The spear is too far away!") - else - cooldown = world.time + 20 - if(isliving(spear.loc)) - var/mob/living/L = spear.loc - L.dropItemToGround(spear) - L.visible_message("An unseen force pulls the blood spear from [L]'s hands!") - spear.throw_at(owner, 10, 2, owner) - - /obj/item/gun/ballistic/rifle/illestren/enchanted/arcane_barrage/blood name = "blood bolt barrage" desc = "Blood for blood." diff --git a/icons/obj/weapon/baton.dmi b/icons/obj/weapon/baton.dmi index eea5ca3631aafb514810ed21a7057b7f3d754bf5..c39a8b4e073b358fd82f2e0e7d6b1078b0df435b 100644 GIT binary patch literal 5584 zcmXX~c{tSF7yk|+J4tpUDq1WVQSUG#WtSzQ2#E}Zkz{LTjO9m0{{TOvC-A*2ejp2FW2#yyH+!Nx0#8TP~-EO&H9p<$BhY`OFy(5*nbz|;A<=IezHE~iJVmlI?c^epY{ zy2l5rdta8=ANuee`twnDahao-vfft}H$lt98}Bz>2wh@}AOYNoW;;8J=~|oqbqke~ z+vG*e{=jz#-VHOpwi`OJy@(4QEl}b~G;+ETwIV9_!mUg73CGo?Ug+9N=4!yo@HDpz6z02WNF5p)dO#Ee!&cHa4Use%Ru%XR%QfNKpzs;@ zeM5n9e&S@a$b6#}pMIN3GQQwBZL4`10W>oD=uQy$bGn(67E91Cb7wE71OenR?h$cD zi#@pRJVP99Z)F+mEc9N$RFRQHGX=mab`dp=$&6Iw1FpS4I6pF8N>Sa31Ukv%OcIG_1D;e~!$Rmt96N2b9IvcpbbvajIDX({kXNO1rOM; z-$K3T6saAdDU+hRfExz6!0gNbC-?KI1+3i6|M>AHv~7p>3u$^@Hl1M63;*z`fDe4= zU4Y#t$p}Hsdzl0J&ipt)a1m8bpHD?!0V?2xt}rbNy+o?*pJW*6^iMv!FxEG-?mkNJ{%p8Ds9fY~Jj9YOTv?|pr( zjWVTluTIx!F@Bh`kUE@~?bbZ_Nn4pDYi8t;@0(zou6e_D9rlZzOm%nJMuysN@r%B> zG-<=TitE9$WETj?KGgB=wNj~8d!9QZ%Tt2KM$c+xUQu6~tn60ues`uV#YydA-rElQ+irCV%m~Lxdz-Hc`@=(mR7P4m@zjbue8GlW5gH zrfUY++SGyJM=$0P5R&1wHOe8L!>mh12QXaon z*Wo$QziHqyis!vI`Vb?r{EC<**M@q}Ft>C%_4yv=Xp{NL!_wPmKm%rCE0l4=T*wnP zf>Ml0w?}%pUJ^-yiJI8HJ)LNmPilQ;Ao8#_+^b2X-7H7PEr}-D(RynLlX8C__ZpB3 zwlAj}h{qNO$oGWifu9rIRzW<&l?y~Qf47ZSXrqOtRFZU1xevy

8O!ks!2$9j1_bJTSrbu`@#{x;Nn@ExKARIUM4dq6ZVP3`Qjh?Cy|ZVZ(CZaMpkkC33;iC7bV!=8Aj`&mH`<0*4pIKYeiS;Ot|n z?V`sWKGAntOrwyy=4uA1q78qNXMNvIf3fd{ULl_&2hX)VK%pF~V&Dh&d-4omb7KyMbaX8E9gQJ-NqhQ)y*)WD>?<7oX_MK^)E4u( zxtWZajg~Ux&q2-7N^omS*F~pMedIO&CNk(wDe3u4)wv{4M zPE3pis-8ia1Y@ny0W%`br{GPy?7pQW^8-V39a*5O$IhIDQS_;Kli-%$QWmHghXaQF zFO$iMwbRU@e_s0_a;^>rrNpY@ks-3WZs-7rFoFJ>{`Rz``ql{E5%kyUqz15l<>ARq zaKi5s3BI;%I=4P1A9%K6rlsnwmy={oKP$p4VB=uyoTt@ekCz4dAl;3szd4$c2()Y* zZQz}$bE-#IRergA8=2VG41*qK(S+jA;Y!mxn=pd>9^g1lAV>C zg-0zsq`f{qtSdC}c1O+fr@AfiA;`3Xm z!9?pVf)rBs%_qY7Kshf)F67iC?Wj=zIwUEd@uB)kLmrEn9C%hs#}YIEzo+G|1hE^v$^IqM-zs|n?@z~!uEBx$Go~0Y6Pd=?5xLT zgnqdql2k4tHoZ(VZ>^k+y^QT4Q3>&69^TK-BXvdug*Z5Hj3~(gdWi&Xofw4Uv$UQ&rg-u1k*epWx zI5|t0P<3ROH+Z4djisF1Z1qxcRWLDz@o;I2wZ{E%__3(eZEqRY{%PkJ#1nr8cbraHPPdE`UXc~S;PWg5e(CSTWmUL+Xd3+?{R zpDl`oWM*ELLMQnypH-W>uU1HgjCfwu+OXDH=}ZSxAP#IT%GL4@7uJjasmoeN=ytAP z*OErLmw-2KUoD05xUFl-Qrf99PeQRlq|wnHa0Y=r`^m5AAnGlptP98Bqy^G9@wBCd zBa`XOBzGW30X{Kp0nK4WZ=ZvwiZy?{BUgnEU?aHmWkPGw52Ghado8i*8g~|^@7xMgVfA9$4qWy6 zC<>}$5)2@)8yirC{^LH(4K{I2C=irz4NW)TlUeD$gaVn@WL5KDMj2^W#GVL7_0E6S#6@~S&)EsQ(nPvx}(9JG+k9zg1 zv+y??tevx1(M-r^(t#!LO#B7737jppL}6;<{pF>@+E}fh=TVyMbA<|O8(M=*yKot{wYb!CydmF$^w1i+V=bXV-Mv2NjT_hi`THmgEv(Yx~IShU`~v=i2Q^A#<+ObD6!ExddCITr z2`p!ey>lAubD=)Ldoa~~3#ZH@qg;i~Z&%r?{AM#bfs7?Rp_yWmEP2oEWG3#E^eu4{ zZCrNkiA`;+7Yy<$2iGyJe+c`6g@kA4%5cndeqieHnL^SkzIDa=UW+_I9ocr*&z$5& zx$B`+`kCr<|4`s%(Qvv;-@I5)!7h8EwsNt+wf`{kZyg7{zvyg~`XJa}(PLU~@`{w! znYAt_!GSmV--kf;Cz9e)yX<~ zm1dA?N-K_i!~Ng1gs1upL7czi-a@gsd3<}vRORq~At=!V9njeM@Q?#1s3`r zZrGmLFK!h2sIpmyhU)G;n0Xtz$lUD+Z|0F_;1rz9H8JcPjA!;EY#;*V*C*4HvsAw>OED;HphScl3_Un`hc=P-l|2 zm)B7rnAZ9=>s*_q%Gp9$*vg`m&dv~8p8)7> zj2|;b0y~Hx)i)kC>EcPU&ddzgX?4;D!na1aVv7X{XW&1N+iJsIF0h|e=<^h$kY~4{ zd>N}-(|u!o-*By$=M`aiPo5KXu!e`9%_G6xV*yT_FIKZHP;Gl4x4~#t@FP0)^@~Yo zg?boT-tWqSh;u5Nr&y_Ru^=w5#tie?&-C9Tm;1S^5k5&bz)qTQr`jTFELZ@LM%%$C z>jq^0Qc}~xiMeY^Q8N;*xl|KDe=RTJ>tI>cyZCmTq0cgECfZs~8cjJN`ZKB_&6=kz zdQMN}CxX?JYQGbvSbh~1`#EmyP;CV@7I~4!?FJZzx(46Io2oDWFvL4R3G^r`;B`n~ zFnTR&vK+;4&P9zR0R}L90#UuLmKsa^#btS|>0zWkI_L#Nw`yl|Ww$XP=WE>CxHz8t zswx}%1rY+=nHSJVsS_Cup%$2gm+q_=1}*)FSBK+Edlj3+G0kY8a%UYGaXmM(q1jBO z64sdR7NAXOUsq6xYTIOMuK5#jkPRrsLHhC9E5eAU=Nnu624u4Bd(&l7a50x=Vd(c;$E=7<2CTK%@fG48i3N! zsbKxLj}PV}Cx~CS245NXMgG3paIOx1(0BgZj2;DYuCH9*a1z-D(rjn0}Mfor_wGPc0B#cp#69cw@-<*;1xf{1=xhdTpo_rI*9`deikEH1dfOS{)nR% z8$TR{^M$QNQwlNX&+^jlA=+HYWab**d#_u{^^h(sh<$3RHN5&deb#0_YI6>J$uDC0 z{y&a2v zjD_B<-v65xeqVY3F;RsY^09L+R=@$|@BsgB&Gx~ka_8;|CxiY@Y5`+?^Q+~0cb@(a DND(s; literal 4570 zcmV<05hd=4P)004jp1^@s6jALRO0002WdQ@0+L}hbh za%pgMX>V=-0C=30l0gcCFc3x8$ti+vOHnIy)lE@~i+Tl#ajJosKr*%T_Kg)vp;DFE z%zWPb$%lmOoL`EPW!HiZV4XCYomje$D0#>RJ3kx}N;;5jhtuGYBltEzP*8I;x{3ly z8fl$ZV@ht8_b~M{Y`n+{qtSAK##U?Xe^yppQQSExCVr82c-I@r%D+brFu!p0Dk%OO z<#d;PYSu^_0ZJ`iu8rxza^0>cH(UP=m41ctQO2Sn%ggNjyFyZJeUBN6l@R*6#+q|y}jFeqqEgSCxV5v!yCi%ks-o1Mzp2s5O zQPM;}V!n!s3f_mpML9V+GFf;Zi&jZvKopvJNYd&0`I(5qTvy;EQ#N-%$HcpbyT?TmnE7`E_6E*@0^LfmN#_QDBKugnG>Ce-tZ32F5Cj7(^j`A|{y0rloPc<>-}c6Kr~AK~+eyxL|Do4mm* z!Dqs@wl?bZV8kbD8UqeA*c6Aye8hxinGY3l1dJ#1@rb(dS`8;H3K(fu!d?fPzqjsbEx%D8s$g97#MWPQ&^YP^KQqWN_OVjCv&2BoB zsq=h1jzjzA7>|?Bo6lNt_dFmP55?;u2=?X}%ahNW&sss7;AEAy52ioSEN-{)=JSv+ zpb%Fj#1qj%{a3<(LR=*bD8yB9Hwvbqwy&nDk8kIU*va%ELWO&m!u&H2KC+e7M1}b) z)_g77``M7sWDqjz)&+9OkRh;f!)m6ZIB&r#?|!tXiX(rK!k?GKmG z+osJU(iWaGf8LhGO+5L$%O8?Y)quo&4;-HcFVESpepgsfO1%>Fh1c^*lfa7q$ky>p z_}KI*%Nic#Cv5L_#C&Q7)SGYK+9LQ#dMz!SUIB$iKDiQU%G>{0#DkChO>e)8dHFSL zh=xyP5MpG$MSIS{+4HBU_CxUMGAexG3uoY1&9zmOJLBg_v-`l-UOs*ExhuhT`c&d+4b=~=G(%G&%6AQ@~Jh!jSUTOG_?uV!fR{U|3@%-KI;isBfg@6tj(w6-=XERFkhJZ-$yn~i-7TFKEdx5 z&4?Eve~o5@>?c$Dfbm@Uf=@5vMal>|g;JNvEfQzjB6_3IT ze&X>X%Ma*<=j9i}@grZF!Hr6SpSb+65l|1mbg>oAon?1xP4E+&A38r^f)`%!`SXqQ z113S?1)o1Zr~#9u@Pf~uA20}s1YTa!`(DS1Msp8L@RN%lbRKYEVX2%w;2J}?7OMYj zh6F!(_(7ZCY%4?rN8xAf6=8-1KY92;4Tw9%gV636U#HW<@#kh2UhtEPANE!p0i+HX ztUh9$mEwP(vA`pd;3qa;P>8FjWJb`xg~cmBpWw&8OgEs` ze1ZAlfax=A$<8P0bACoilIPuhx8GO$_wR?gx;i#b!}LYL%*QG}oi{TT+3pwl@n|cS z{ET|@p~jCN4`pR#GA{cRgW?j)@tI;kZ*Dlllg}zYpON`_=LclXCo(HP?u}APqoS! z$}+0hDu1WgCKD4*9b4vGoKB~29g1Ok6U;h4o&Kfg{+1t)hRn#%IDgqR`P+AmfMIhh zAj>%fx_ex5!3>8yZ0U_qG`kE^Z5G*Tk=!<`B#$n!xzU8r9;o*%)s>)_)gt3Mlp(22 z!}OQ@bjiSv)_ha%87p@-wZq9H=i&6R3(7Zc`I_lNl`#oG`+v`>2Fji8PzNb)8QkOS zPWeH{Ox1+X-84*IIiXy3?gCH@3b@Y6NL3A)ot^^3kc4IWDA;p#FYx7ut9_71e!k@8 z6A}KZ>-vzNv9<+LveF<`ah%KLa-Vj)u#<=XYqf75lA@baor(cv7;YOQZEF2Jj3~6o zhfnvYzq8TV2CKi2p{lG6*3`N^MpVAXwe~=mM%D5}@l;^SMEGVW5&^i$(Ea>Xoi;?Vk)@ zRr6Xzteru=GtGd(3eR%pU+~RKmytii0nOX$K#hK~*L^aiU3IzCF~iQ!%$tZd#em@o zPdhRKRgMmg?JvRN$|vF_JMO!5P=%1LbWds@@+G=DVurmjA$32E_* zax)VMM7%)id-m|=>VK#Q5LBrKTEQoxTKDZX-VV< z>?eFQ;Z@fqpvlKUNZP1;C>>s)es0}S4{0ejINf~N)RC`NB0pe1;Xm#C23YWIM=!$H zfBF(mAHM+EQ-?y&gd%F@Q+bj6QX=Q4>koX?>I1{5^LNg1sJF@n+D?O{G`+Q-oB{i2 zs{gZ?$PXCreAEpSzbCWcPu*G%SyxWMd(#KO(TizNtPDi(zA#ONjDWl=KiT;xR^~&I z2sp3$42;N=;OAvo@bITSv~a2n4amFllbzr4v_+o&w_BLKA2 zf*&9>A>RFluaX>3`LgpyPD-YeY` z>gQ1nLNFy4uFcF37g7xJ(+NI({uiGtlt+$x%l9{E%FUbQcW^tZCK$oEn3*3glvw1a zOH{r#@`Q^*H27L+&4(i9Lm5Agr8K$w#(6fEUGMPw5$1+NEdbB=?gwt~nUfSeT7HUBFpEt9qw=eU^zy@*k5&B#jewXR4s*G+pZ2_kRaAD3 zCqEqc=ZCwnqh8G&GS2Rl#yKSS0@!95J;)~a^thp87f4y&{BZb)&tED5=4?xWt(6`_ zhPuaS3g78e`A3{im0zS(#F?9~g<@rWbZnU#6^tTL%=}|+`0)p&(i=Onq5VTA+%cyM zzJ9U}Ztp39BUKFe5tLtPo&)-3JnBDq6U;C_94&tRx}|Vy)h}Sz(xveIl@F^GfqY!k z=HGeeWteN<1gob%0FU3a6tWcljniU*vZ!?TOX7ROsK*C>Db3Z&ec@wPIf7{c`m&;G_E`P9oAnW=MFd&BC z%=&iB4~OaD{PV+sH$Pmr%kOW@d}PNAez-nXs6ha2{)`zg!^nJQ@^Qd{QI344{fyh8 znqQXnAG8T(nIDb@Kh|jv%KWg$77HJvns?eo8ZzWzn2^rZg1Xf(EP^8M@3Wr zei4x5hs(ac5Q@uk<@4L>TsTfiB+{GHT2)o$`><)l%T=j1 ztNQ;tWZF}pwXPMq({0xLu_bWVwEI^?Q>ea3@cHm7hMqWFIOvBfc<}w3U=I1=1m7d| zfdNi@j9R?-{!MUg3pCm+P&#d>`VsTPWhqxe8|4Hwg70aXltIAeWa9_)0oD9)2hT$G z*di#JIuts(dSK_X|DxXi!MP*6i5-mJU9)p?_&vnVU;pZT@WkT1%=s97mMyt&Gj8)N zKacwNGa!%ra9R!jtWLdE!-J0##IKBd3!Y!Q5SB0bH&Z@FAH@I-*L^0}1S>yI9DC;O zqI--gTJflVKLe`y;nHmI-fT~Hq;KWQ(8{X$Q*?A}naVHNdldGK8Pm(pq|e^I9k#E( zZQ*i^fP=jJcQ#H?A8BI2M;Vph`%GU|mOzWb?+*W`rfA5rLTKz7pz`lg_@BQHuy~t=dIZE1tC(!_VuSLt zjDVr)AG-kh_d8-$&^{o`{BT;4K8Rhp0+GLE>5DM>i6?+X48%TQ!}7B*Vbw@D?B!zw z9PK(pov-f$@+dzllKMB(e5im3$T~lqR(J&>Klj70nMXkE1J1ruxP1SfTqyGLKOgum zEVi~Wi@-+ZU(09^!lV8JAID;xA5JTED&VrChVcLR*zY`7V9sGCO^}xV%u5s02>AH! zhv1`+8kq30dBZ_ZJd{5ezb`K|g;UV?g3*M7@;n_M7Ad;4B9)-!cW2f!IRSe9ub&^Q zj)Gb6$;k~?{Q>d^>6rMI+_sIEX_wmDgn1ynlD-T`hf*Ye%z*KBTv<` zKKb#&*Syn9rRfVNR^^Xd117V07><`jcC0v5vX~F`f9voZP?VwDM*si-07*qoM6N<$ Ef;0Ut*8l(j diff --git a/icons/obj/weapon/spear.dmi b/icons/obj/weapon/spear.dmi index 4c77c8d159b2ca18608e1fcdb2c20b059025898c..98b3761430ed1b0c10c5eb17b2d1c47086b9d743 100644 GIT binary patch literal 2045 zcmVV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5sXVhNHKiy&MTv_uC9|j)C}haRnO2mTn+jpW6&4qyCKjdVBo-GN zkf7F(IJE^pwYiBz8VpfPq{&J7xk)4_CG3Qx{Jhk7uzJGABGlqES6RW;&jlQF00A|F zEpSqk{{R377fD1xRCt{2oqtSQRTRe$Fo^*+9a+!~lp%x+lO@DBVPs}xQ(&1)f+o|> zASRm&%FsEdXtIQ47=MfQ@lpqLTh@GNYe*nEpHwid2U>V%q*geP_ zUl$2L^MxsKIoF1-a>v(v0yZA}OdNGR4!7B5yU86tO3RBd8F>u@7Be27HWlUa#@B2G z5c4?lR;Q+dxuug!{xYhcijus|JMDI^`LZjZV||){54q=2N;v0wn_r#@@A&6mcxq)lbdAnK_G58? z#}!sbl&lj=(Bb%p1mw4UP;VyYX^niTeA#P2@yHD^(DfN9A{?uMg}nLCe_WCC;kxbS zNZ>2B2)AWD0h_jN0r={eSOK)PluvWy%i+h=)YQm^7ZvXi5PtdMC5ZjW1_yq3Qk{Mx znJ>Enyy4v)?bPS}NaxGC3W{{|Jn$t~0K(sT{{S5O^e8j)THs5n0Iitkfgg4Pv}B$K zepm_6nt2}hAtykK=6T?UlmM-o=YfCE1Zdej5B#7B(7JgZ_yH5}m9Oc}xJZy@JL4inMgka%S^|a+Sq7VTv+K`i%?~6h2|)7+ zg>gBf*Vy#uv*x25f4YQI=em3rT-6g$yYWtcysO7;{>5ce8^;|Vg~4y{>4%{a-vOZN zRS+3@mWDh1@ujEf_UE(aqcHeQ?dM^1{5pL7QMJ!yu4)xP%;U&=WOXXEnA_Dtamh#F zlyj)=BxI(g1$>Pv`vbhq|LUaQpU;|4^v28EVQbmD(Asms@90MQ)mjkfeTqy$-d(~! zPq?XXPh!o-;NNsOAUiu-Ou*WfX_%a_gUjWrcy;WrPwaO4)JsQmo=JhRz6;C8zk zY&P3#p`1hVPZ4@(nhK_+!Iyd-V}F1IDHVK_u|FV8DH(i}u|FUTDII*2u|FV0sS$jX zu|FULsTF*bu|MD*QZx7{V}C#psU3Wju|FVyXapZ+><{oGTER#8{1l`LqkEbDG-Z60>^!8Yx@%#mHTYWL2dx0s!N;4|cn_6T@M-V^CV+?F7ZhfQcam5I zp9bG=0(c5O?c0d7`97DSwEN?iikQFE*$j;gzGTtn`>g;L!AIkGU7eZ!plF`Sul!gv|0%m}_o^nyK5=gU^buYF9)!!rxZ#>;0;yx9Ez`O?x`&mt?W%vgC7< b0KMvezFY_!?X&_900000NkvXXu0mjfUqbqj literal 2985 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 From 83a92e0d35e3d1251a480fccb2e74f347e44dd2d Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 10:46:59 -0500 Subject: [PATCH 027/102] removes bostaff cruft item (tho i do want a cool matrial staff) --- code/datums/martial/sleeping_carp.dm | 93 ------------------- .../structures/icemoon/cave_entrance.dm | 1 - 2 files changed, 94 deletions(-) diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 72d26cf74367..e4e3ef90ebc7 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -169,96 +169,3 @@ to_chat(usr, "Crashing Wave Kick: Harm Disarm. Launch people brutally across rooms, and away from you.") to_chat(usr, "Keelhaul: Harm Grab. Kick opponents to the floor. Against prone targets, deal additional stamina damage and disarm them.") to_chat(usr, "In addition, your body has become incredibly resilient to most forms of attack. Weapons cannot readily pierce your hardened skin, and you are highly resistant to stuns and knockdowns, and can block all projectiles in Throw Mode. However, you are not invincible, and sustained damage will take it's toll. Avoid heat at all costs!") - -/obj/item/staff/bostaff - name = "bo staff" - desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts. Can be wielded to both kill and incapacitate." - force = 10 - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - throwforce = 20 - throw_speed = 2 - attack_verb = list("smashed", "slammed", "whacked", "thwacked") - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "bostaff0" - base_icon_state = "bostaff" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - block_chance = 50 - var/wielded = FALSE // track wielded status on item - -/obj/item/staff/bostaff/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - -/obj/item/staff/bostaff/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=24, icon_wielded="[base_icon_state]1") - -/// triggered on wield of two handed item -/obj/item/staff/bostaff/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/staff/bostaff/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/staff/bostaff/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/staff/bostaff/attack(mob/target, mob/living/user) - add_fingerprint(user) - if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) - to_chat(user, "You club yourself over the head with [src].") - user.Paralyze(60) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) - else - user.take_bodypart_damage(2*force) - return - if(iscyborg(target)) - return ..() - if(!isliving(target)) - return ..() - var/mob/living/carbon/C = target - if(C.stat) - to_chat(user, "It would be dishonorable to attack a foe while they cannot retaliate.") - return - if(user.a_intent == INTENT_DISARM) - if(!wielded) - return ..() - if(!ishuman(target)) - return ..() - var/mob/living/carbon/human/H = target - var/list/fluffmessages = list("club", "smack", "broadside", "beat", "slam") - H.visible_message("[user] [pick(fluffmessages)]s [H] with [src]!", \ - "[user] [pick(fluffmessages)]s you with [src]!", "You hear a sickening sound of flesh hitting flesh!", null, user) - to_chat(user, "You [pick(fluffmessages)] [H] with [src]!") - playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, TRUE, -1) - H.adjustStaminaLoss(rand(13,20)) - if(prob(10)) - H.visible_message("[H] collapses!", \ - "Your legs give out!") - H.Paralyze(80) - if(H.staminaloss && !H.IsSleeping()) - var/total_health = (H.health - H.staminaloss) - if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat) - H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \ - "You're knocked unconscious by [user]!", "You hear a sickening sound of flesh hitting flesh!", null, user) - to_chat(user, "You deliver a heavy hit to [H]'s head, knocking [H.p_them()] out cold!") - H.SetSleeping(600) - H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 150) - else - return ..() - -/obj/item/staff/bostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(!wielded) - return ..() - return FALSE diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm index 080ca04a11e2..7ad048734cc3 100644 --- a/code/game/objects/structures/icemoon/cave_entrance.dm +++ b/code/game/objects/structures/icemoon/cave_entrance.dm @@ -338,7 +338,6 @@ GLOBAL_LIST_INIT(ore_probability, list( new /mob/living/simple_animal/hostile/skeleton(loc) new /mob/living/simple_animal/hostile/skeleton(loc) if(prob(35)) - new /obj/item/staff/bostaff(loc) new /mob/living/simple_animal/hostile/skeleton(loc) new /mob/living/simple_animal/hostile/skeleton(loc) if(prob(45)) From d7a227625785843688cef0f6b16726bd78b678d3 Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 10:49:12 -0500 Subject: [PATCH 028/102] almost passing i think --- code/datums/components/crafting/recipes/tribal.dm | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/code/datums/components/crafting/recipes/tribal.dm b/code/datums/components/crafting/recipes/tribal.dm index fcff655296ab..07f8fc48a99a 100644 --- a/code/datums/components/crafting/recipes/tribal.dm +++ b/code/datums/components/crafting/recipes/tribal.dm @@ -186,20 +186,6 @@ time = 50 category = CAT_PRIMAL -/datum/crafting_recipe/crystalamulet - name = "Crystal Amulet" - result = /obj/item/clothing/neck/crystal_amulet - time = 4 SECONDS - reqs = list(/obj/item/strange_crystal = 3) - category = CAT_PRIMAL - -/datum/crafting_recipe/crystalspear - name = "Crystal Spear" - result = /obj/item/spear/crystal - time = 4 SECONDS - reqs = list(/obj/item/strange_crystal = 2) - category = CAT_PRIMAL - /datum/crafting_recipe/mushroom_bowl name = "Mushroom Bowl" result = /obj/item/reagent_containers/glass/bowl/mushroom_bowl From f8a9ff4a95184cb6eaa7565af717022dfe3f4800 Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 11:02:51 -0500 Subject: [PATCH 029/102] damn bone spear was like better then a plasma spear what the hell --- .../wasteplanet_fortress_of_solitide.dmm | 2 +- code/game/objects/items/melee/spear.dm | 63 ++++++------------- 2 files changed, 20 insertions(+), 45 deletions(-) diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm index 9a6bf06eef2f..4ba0cfab0d86 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm @@ -3772,7 +3772,7 @@ /obj/structure/table, /obj/item/clothing/mask/gas, /obj/item/clothing/under/color/grey/ancient, -/obj/item/spear/grey_tide, +/obj/item/spear, /turf/open/floor/plating/rust, /area/ruin/powered) "IY" = ( diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index d02f12c41008..68d32501ab3d 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -20,7 +20,6 @@ max_integrity = 200 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) species_exception = list(/datum/species/kepori) - var/war_cry = "AAAAARGH!!!" var/icon_prefix = "spearglass" /obj/item/spear/ComponentInitialize() @@ -43,12 +42,31 @@ qdel(tip) ..() +/* + * Bone Spear + */ +/obj/item/spear/bonespear //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. + icon_state = "bone_spear0" + name = "bone spear" + base_icon_state = "bone_spear0" + icon_prefix = "bone_spear" + desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." + //this should be a plasma spear or worse. + force = 11 + throwforce = 19 + +/obj/item/spear/bonespear/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1") + + /obj/item/spear/explosive name = "explosive lance" icon_state = "spearbomb0" base_icon_state = "spearbomb" icon_prefix = "spearbomb" var/obj/item/grenade/explosive = null + var/war_cry = "AAAAARGH!!!" var/wielded = FALSE // track wielded status on item /obj/item/spear/explosive/Initialize(mapload) @@ -118,46 +136,3 @@ explosive.forceMove(AM) explosive.prime() qdel(src) - -//GREY TIDE -/obj/item/spear/grey_tide - name = "\improper Grey Tide" - desc = "Recovered from the aftermath of a revolt aboard Defense Outpost Theta Aegis, in which a seemingly endless tide of Assistants caused heavy casualities among Nanotrasen military forces." - attack_verb = list("gored") - force=15 - -/obj/item/spear/grey_tide/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=15, force_wielded=25, icon_wielded="[icon_prefix]1") - -/obj/item/spear/grey_tide/afterattack(atom/movable/AM, mob/living/user, proximity) - . = ..() - if(!proximity) - return - user.faction |= "greytide([REF(user)])" - if(isliving(AM)) - var/mob/living/L = AM - if(istype (L, /mob/living/simple_animal/hostile/illusion)) - return - if(!L.stat && prob(50)) - var/mob/living/simple_animal/hostile/illusion/M = new(user.loc) - M.faction = user.faction.Copy() - M.Copy_Parent(user, 100, user.health/2.5, 12, 30) - M.GiveTarget(L) - -/* - * Bone Spear - */ -/obj/item/spear/bonespear //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. - icon_state = "bone_spear0" - name = "bone spear" - base_icon_state = "bone_spear0" - icon_prefix = "bone_spear" - desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." - force = 12 - throwforce = 22 - armour_penetration = 15 //Enhanced armor piercing - -/obj/item/spear/bonespear/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=12, force_wielded=20, icon_wielded="[icon_prefix]1") From 9ecd1eab02bdc55a0ca54d6d8a05d9e2b72f9507 Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 11:39:46 -0500 Subject: [PATCH 030/102] new weapons! --- code/game/objects/items/melee/fireaxe.dm | 17 +++++++++--- code/game/objects/items/melee/misc.dm | 5 ++++ code/game/objects/items/melee/spear.dm | 2 +- code/game/objects/items/melee/sword.dm | 35 ++++++++++++++++++------ code/modules/cargo/packs/sec_supply.dm | 12 ++++++++ 5 files changed, 58 insertions(+), 13 deletions(-) diff --git a/code/game/objects/items/melee/fireaxe.dm b/code/game/objects/items/melee/fireaxe.dm index 705b563a3aff..bfbed0fe361b 100644 --- a/code/game/objects/items/melee/fireaxe.dm +++ b/code/game/objects/items/melee/fireaxe.dm @@ -51,13 +51,22 @@ W.obj_destruction("axe") /obj/item/melee/axe/fire // DEM AXES MAN, marker -Agouri - icon_state = "fireaxe0" - base_icon_state = "fireaxe" name = "fire axe" desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" + icon_state = "fireaxe0" + base_icon_state = "fireaxe" /obj/item/melee/axe/bone // Blatant imitation of the fireaxe, but made out of bone. - icon_state = "bone_axe0" - base_icon_state = "bone_axe" name = "bone axe" desc = "A large, vicious axe crafted out of several sharpened bone plates and crudely tied together. Made of monsters, by killing monsters, for killing monsters." + icon_state = "bone_axe0" + base_icon_state = "bone_axe" + +/obj/item/melee/axe/scrap + name = "scrap axe" + desc = "Oversided and with a pretty dull blade, its decent against armour" + armour_penetration = 10 + +/obj/item/melee/axe/scrap/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=22, icon_wielded="[base_icon_state]1") diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 0c1958752b45..d61ce11538cb 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -3,6 +3,11 @@ icon = 'icons/obj/weapon/misc.dmi' lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + var/projectile_block_chance = 0 +/obj/item/melee/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(attack_type == PROJECTILE_ATTACK) + final_block_chance = projectile_block_chance //Don't bring a sword to a gunfight + return ..() /obj/item/melee/proc/check_martial_counter(mob/living/carbon/human/target, mob/living/carbon/human/user) if(target.check_block()) diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index 68d32501ab3d..b75e4c528cc4 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -53,7 +53,7 @@ desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." //this should be a plasma spear or worse. force = 11 - throwforce = 19 + throwforce = 21 /obj/item/spear/bonespear/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 6920e82c3176..df816c7741c5 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -30,7 +30,7 @@ AddComponent(/datum/component/butchering, 40, 105) /obj/item/melee/sword/bone - name = "Bone Sword" + name = "bone sword" desc = "Jagged pieces of bone are tied to what looks like a goliaths femur." icon_state = "bone_sword" item_state = "bone_sword" @@ -38,6 +38,27 @@ throwforce = 10 armour_penetration = 15 +/obj/item/melee/sword/scrap + name = "scrap sword" + desc = "A jagged and painful weapon only effective on targets without an armour + icon_state = "scrap_sword" + force = 24 + throwforce = 10 + armour_penetration = -35 + max_integrity = 100 + +/obj/item/melee/sword/mass + name = "mass produced machete" + desc = "A middle ground between a machete and a short sword. A simple construction of stamped steel but its so cheap its hard to complain. Its right between being a one hand and two handed weapon" + force = 20 + throwforce = 15 + max_integrity = 50 + +/obj/item/melee/sword/mass/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=20, force_wielded=22, icon_wielded="[base_icon_state]1") + + /obj/item/melee/sword/katana name = "katana" desc = "Woefully underpowered in D20." @@ -51,10 +72,13 @@ max_integrity = 200 /obj/item/melee/sword/chainsaw - icon_state = "chainswordon" - item_state = "chainswordon" name = "sacred chainsaw sword" desc = "Suffer not a heretic to live." + icon_state = "chainswordon" + item_state = "chainswordon" + force = 15 + throwforce = 10 + armour_penetration = 25 slot_flags = ITEM_SLOT_BELT attack_verb = list("sawed", "torn", "cut", "chopped", "diced") hitsound = 'sound/weapons/chainsawhit.ogg' @@ -79,11 +103,6 @@ . = ..() AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results. -/obj/item/melee/sword/sabre/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = 0 //Don't bring a sword to a gunfight - return ..() - /obj/item/melee/sword/sabre/on_enter_storage(datum/component/storage/concrete/S) var/obj/item/storage/belt/sabre/B = S.real_location() if(istype(B)) diff --git a/code/modules/cargo/packs/sec_supply.dm b/code/modules/cargo/packs/sec_supply.dm index 023ab5ee853f..52a35d876937 100644 --- a/code/modules/cargo/packs/sec_supply.dm +++ b/code/modules/cargo/packs/sec_supply.dm @@ -72,6 +72,18 @@ /obj/item/kitchen/knife/combat/survival) crate_name = "combat knife crate" +/datum/supply_pack/sec_supply/machete + name = "Stampted Steel Machete Crate" + desc = "Contains five mass produced machetes. A perfect choice for crews on a budget." + cost = 500 + contains = list(/obj/item/melee/sword/mass, + /obj/item/melee/sword/mass, + /obj/item/melee/sword/mass, + /obj/item/melee/sword/mass, + /obj/item/melee/sword/mass) + crate_name = "combat knife crate" + + /datum/supply_pack/sec_supply/fire name = "Incendiary Weapons Crate" desc = "Burn, baby burn. Contains three incendiary grenades and three prebuilt flamethrowers." From d0fa53130f4eac8b1a976a42ebcdc0cbc3acc70a Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 12:12:20 -0500 Subject: [PATCH 031/102] gives scrap vest ok armour --- code/modules/clothing/suits/armor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 62bb2769f6b6..fdf9ad916b04 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -440,7 +440,7 @@ desc = "An 'armor' vest consisting of sheet metal held together with cable. Who thought this was a good idea?" icon_state = "scraparmor" item_state = "scraparmor" - armor = list("melee" = 5) + armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30) /obj/item/clothing/suit/armor/curator name = "treasure hunter's coat" From c656b540c02756ffdc1d305a10c6826a466a2510 Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 12:20:28 -0500 Subject: [PATCH 032/102] scrap armor --- .../components/crafting/recipes/clothing.dm | 2 +- .../clothing/outfits/ert/frontiersmen_ert.dm | 2 +- code/modules/clothing/suits/armor.dm | 7 ---- .../modules/mining/equipment/explorer_gear.dm | 35 +++++++++++++++++++ 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/code/datums/components/crafting/recipes/clothing.dm b/code/datums/components/crafting/recipes/clothing.dm index 95b37502bcaf..c8a97d5b7631 100644 --- a/code/datums/components/crafting/recipes/clothing.dm +++ b/code/datums/components/crafting/recipes/clothing.dm @@ -183,7 +183,7 @@ /datum/crafting_recipe/scrap_armor name = "Scrap Armor" - result = /obj/item/clothing/suit/armor/vest/scrap_armor + result = /obj/item/clothing/suit/armor/vest/scrap time = 60 reqs = list( /obj/item/stack/sheet/metal = 10, diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm index 1ea6ab79f9b5..b5349c578bdb 100644 --- a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm +++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm @@ -44,7 +44,7 @@ suit = pickweight(list( /obj/item/clothing/suit/armor/vest = 5, /obj/item/clothing/suit/armor/vest/bulletproof/frontier = 5, - /obj/item/clothing/suit/armor/vest/scrap_armor = 1)) + /obj/item/clothing/suit/armor/vest/scrap = 1)) if(prob(30)) mask = pickweight(list( diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index fdf9ad916b04..457e27e2ed56 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -435,13 +435,6 @@ icon_state = "armor_syndie" item_state = "syndiearmor" -/obj/item/clothing/suit/armor/vest/scrap_armor - name = "scrap armor" - desc = "An 'armor' vest consisting of sheet metal held together with cable. Who thought this was a good idea?" - icon_state = "scraparmor" - item_state = "scraparmor" - armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30) - /obj/item/clothing/suit/armor/curator name = "treasure hunter's coat" desc = "Both fashionable and lightly armoured, this jacket is favoured by treasure hunters the galaxy over." diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 41fce675bf70..bbcd56cc2c52 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -190,3 +190,38 @@ /obj/item/clothing/head/hooded/survivor_hood/Initialize() . = ..() AddComponent(/datum/component/armor_plate) + +/obj/item/clothing/suit/hooded/scrap + name = "scrap suit" + desc = "A ragged makeshift suit." + lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' + righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' + icon_state = "survivor" + item_state = "survivor_suit" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + min_cold_protection_temperature = (FIRE_SUIT_MIN_TEMP_PROTECT * 2) + cold_protection = CHEST|GROIN|LEGS|ARMS + max_heat_protection_temperature = (FIRE_SUIT_MAX_TEMP_PROTECT / 2) + heat_protection = CHEST|GROIN|LEGS|ARMS + hoodtype = /obj/item/clothing/head/hooded/scrap + armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals) + resistance_flags = FIRE_PROOF + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION + +/obj/item/clothing/head/hooded/scrap + name = "scrap hood" + desc = "A loose-fitting hood. It gets the job done." + icon_state = "explorerold" + suit = /obj/item/clothing/suit/hooded/scrap + body_parts_covered = HEAD + flags_inv = HIDEHAIR|HIDEEARS + armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30) + + +/obj/item/clothing/suit/armor/vest/scrap + name = "scrap armor" + desc = "An 'armor' vest consisting of sheet metal held together with cable. Who thought this was a good idea?" + icon_state = "scraparmor" + item_state = "scraparmor" + armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30) From 133c69414ea7fed8b874d5a61a9f91c9227d04f4 Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 12:25:31 -0500 Subject: [PATCH 033/102] swords blulky by default --- code/game/objects/items/melee/sword.dm | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index df816c7741c5..055cc91157ff 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -7,7 +7,7 @@ hitsound = 'sound/weapons/bladeslice.ogg' flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK - w_class = WEIGHT_CLASS_NORMAL + w_class = WEIGHT_CLASS_BULKY obj_flags = UNIQUE_RENAME block_chance = 25 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -58,7 +58,6 @@ . = ..() AddComponent(/datum/component/two_handed, force_unwielded=20, force_wielded=22, icon_wielded="[base_icon_state]1") - /obj/item/melee/sword/katana name = "katana" desc = "Woefully underpowered in D20." @@ -92,7 +91,6 @@ item_state = "sabre" force = 15 throwforce = 10 - w_class = WEIGHT_CLASS_BULKY block_chance = 60 armour_penetration = 75 attack_verb = list("slashed", "cut") @@ -196,7 +194,6 @@ icon_state = "supermatter_sword" item_state = "supermatter_sword" slot_flags = null - w_class = WEIGHT_CLASS_BULKY force = 0.001 armour_penetration = 1000 var/obj/machinery/power/supermatter_crystal/shard @@ -331,7 +328,6 @@ throw_speed = 4 sharpness = IS_SHARP attack_verb = list("cut", "sliced", "diced") - w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK hitsound = 'sound/weapons/bladeslice.ogg' var/wielded = FALSE // track wielded status on item @@ -381,7 +377,6 @@ desc = "Glorious nippon steel, folded 1000 times." icon_state = "weeb_blade" item_state = "weeb_blade" - w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK sharpness = IS_SHARP_ACCURATE force = 25 @@ -417,7 +412,6 @@ icon = 'icons/obj/weapon/sword.dmi' icon_state = "weeb_sheath" item_state = "sheath" - w_class = WEIGHT_CLASS_BULKY force = 3 var/primed = FALSE //Prerequisite to anime bullshit // ##The anime bullshit## - Mostly stolen from action/innate/dash From ddfb8df10d92fae3a5f543446b86ba71ad28b80b Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 12:27:34 -0500 Subject: [PATCH 034/102] no armour for tribal pins --- code/modules/clothing/under/accessories.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index ed1d12be3fcb..1c7b439d2fb0 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -424,7 +424,6 @@ name = "bone talisman" desc = "A hunter's talisman, some say the old gods smile on those who wear it." icon_state = "talisman" - armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25) attachment_slot = ARMS above_suit = TRUE @@ -432,7 +431,6 @@ name = "hunter's necklace" desc = "A thick necklace woven from sinew and bits of wolfhide, adorned with a carved fang. Slaying such beasts is rumoured to elate the gods of old, and such an item proves your worth." icon_state = "wolf_talisman" - armor = list("melee" = 15 , "bullet" = 15, "laser" = 10, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 25, "acid" = 25) attachment_slot = CHEST above_suit = TRUE @@ -441,7 +439,6 @@ desc = "A legion skull fitted to a codpiece, intended to protect the important things in life." icon_state = "skull" above_suit = TRUE - armor = list("melee" = 10, "bullet" = 10, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 40, "acid" = 40) attachment_slot = GROIN /obj/item/clothing/accessory/skilt @@ -450,7 +447,6 @@ icon_state = "skilt" above_suit = TRUE minimize_when_attached = FALSE - armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25) attachment_slot = GROIN /obj/item/clothing/accessory/holster From 6ab22f6b8ceba658e30ac2c54a8d4ae689f4f850 Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 13:13:09 -0500 Subject: [PATCH 035/102] removes some random cruft sprites to clean up items_and_weapons --- icons/obj/items_and_weapons.dmi | Bin 68824 -> 61539 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index b04ba67511d936a8ede47b3e3995512b1bce7d41..0b15f3525ff466c116715473d741aa24e8c5c6cd 100644 GIT binary patch literal 61539 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 literal 68824 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ΜFoT)UXe@_S@%CGXkoi5&N22ns!I26TkYle{H;_ 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 Date: Mon, 15 Apr 2024 13:16:34 -0500 Subject: [PATCH 036/102] renames items_and_weapons because why is its name so big omg ive moved out alot of weapons as well, most should now belong in weapon/misc.dmi --- code/datums/actions/ninja.dm | 4 ++-- code/datums/components/riding.dm | 2 +- code/game/objects/items.dm | 2 +- code/game/objects/items/blueprints.dm | 8 ++++---- code/game/objects/items/clown_items.dm | 4 ++-- code/game/objects/items/cosmetics.dm | 4 ++-- code/game/objects/items/courtroom.dm | 4 ++-- code/game/objects/items/dna_injector.dm | 2 +- code/game/objects/items/door_seal.dm | 2 +- code/game/objects/items/handcuffs.dm | 6 +++--- code/game/objects/items/implants/implantcase.dm | 2 +- code/game/objects/items/implants/implanter.dm | 2 +- code/game/objects/items/implants/implantpad.dm | 2 +- code/game/objects/items/melee/misc.dm | 4 ++-- code/game/objects/items/miscellaneous.dm | 10 +++++----- code/game/objects/items/paint.dm | 2 +- code/game/objects/items/stacks/medical.dm | 2 +- code/game/objects/items/stacks/sheets/mineral.dm | 1 - code/game/objects/items/tanks/jetpack.dm | 2 +- code/game/objects/items/toys.dm | 2 +- code/game/objects/structures/manned_turret.dm | 2 +- code/game/objects/structures/tables_racks.dm | 1 - code/game/objects/structures/watercloset.dm | 2 +- code/modules/antagonists/cult/blood_magic.dm | 2 +- code/modules/antagonists/cult/cult_items.dm | 1 - code/modules/flufftext/Hallucination.dm | 2 +- .../modules/food_and_drinks/drinks/drinks/bottle.dm | 2 +- code/modules/holodeck/items.dm | 2 +- code/modules/hydroponics/grown/nettle.dm | 2 +- code/modules/hydroponics/hydroitemdefines.dm | 2 +- .../mob/living/simple_animal/hostile/bear.dm | 2 +- code/modules/photography/_pictures.dm | 2 +- code/modules/photography/camera/camera.dm | 1 - code/modules/photography/camera/film.dm | 1 - code/modules/photography/photos/album.dm | 2 +- code/modules/photography/photos/photo.dm | 2 +- code/modules/reagents/reagent_containers/spray.dm | 2 +- code/modules/spells/spell_types/godhand.dm | 2 +- code/modules/surgery/tools.dm | 2 +- icons/obj/{items_and_weapons.dmi => items.dmi} | Bin 40 files changed, 48 insertions(+), 53 deletions(-) rename icons/obj/{items_and_weapons.dmi => items.dmi} (100%) diff --git a/code/datums/actions/ninja.dm b/code/datums/actions/ninja.dm index b655078349dc..974e4cfa74bc 100644 --- a/code/datums/actions/ninja.dm +++ b/code/datums/actions/ninja.dm @@ -24,7 +24,7 @@ name = "Create Throwing Stars (1E)" desc = "Creates some throwing stars" button_icon_state = "throwingstar" - icon_icon = 'icons/obj/items_and_weapons.dmi' + icon_icon = 'icons/obj/items.dmi' /datum/action/item_action/ninjanet name = "Energy Net (20E)" @@ -36,7 +36,7 @@ name = "Recall Energy Katana (Variable Cost)" desc = "Teleports the Energy Katana linked to this suit to its wearer, cost based on distance." button_icon_state = "energy_katana" - icon_icon = 'icons/obj/items_and_weapons.dmi' + icon_icon = 'icons/obj/items.dmi' /datum/action/item_action/ninja_stealth name = "Toggle Stealth" diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 7d3bf028d796..f4ff07423c52 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -369,7 +369,7 @@ /obj/item/riding_offhand name = "offhand" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "offhand" w_class = WEIGHT_CLASS_HUGE item_flags = ABSTRACT | DROPDEL | NOBLUDGEON diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 50baca2f6ca8..e6a4441ef1f3 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -13,7 +13,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb /obj/item name = "item" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' blocks_emissive = EMISSIVE_BLOCK_GENERIC ///icon state name for inhand overlays var/item_state = null diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index d410dfef0d7d..d2ce379274dc 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -5,7 +5,7 @@ /obj/item/areaeditor name = "area modification item" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "blueprints" attack_verb = list("attacked", "bapped", "hit") var/fluffnotice = "Nobody's gonna read this stuff!" @@ -46,7 +46,7 @@ /obj/item/areaeditor/blueprints name = "station blueprints" desc = "Blueprints of what appear to be an experimental station design, with a large spinal weapon mounted to the front. There is a \"Classified\" stamp and several coffee stains on it." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "blueprints" fluffnotice = "Property of Nanotrasen. For heads of staff only. Store in high-secure storage." resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF @@ -204,7 +204,7 @@ /obj/item/areaeditor/blueprints/cyborg name = "construction schematics" desc = "A digital copy of the local blueprints and zoning permits stored in your memory." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "blueprints" fluffnotice = "Intellectual Property of Nanotrasen. For use in engineering cyborgs only. Wipe from memory upon departure from company ownership." @@ -235,7 +235,7 @@ /obj/item/areaeditor/shuttle name = "shuttle expansion permit" desc = "A set of paperwork which is used to expand flyable shuttles." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "blueprints" color = COLOR_ASSEMBLY_WHITE fluffnotice = "Not to be used for non-sanctioned shuttle construction and maintenance." diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 9c6809cf3dbc..631eb7d2fc8f 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -14,7 +14,7 @@ name = "soap" desc = "A cheap bar of soap. Doesn't smell." gender = PLURAL - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "soap" lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' @@ -150,7 +150,7 @@ /obj/item/bikehorn name = "bike horn" desc = "A horn off of a bicycle." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "bike_horn" item_state = "bike_horn" lefthand_file = 'icons/mob/inhands/equipment/horns_lefthand.dmi' diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index d451f258bd78..b08adc216135 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -2,7 +2,7 @@ gender = PLURAL name = "red lipstick" desc = "A generic brand of lipstick." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "lipstick" w_class = WEIGHT_CLASS_TINY var/colour = "red" @@ -101,7 +101,7 @@ /obj/item/razor name = "electric razor" desc = "The latest and greatest power razor born from the science of shaving." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "razor" flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_TINY diff --git a/code/game/objects/items/courtroom.dm b/code/game/objects/items/courtroom.dm index 78d599ee4d9c..a1750a26493e 100644 --- a/code/game/objects/items/courtroom.dm +++ b/code/game/objects/items/courtroom.dm @@ -5,7 +5,7 @@ /obj/item/gavelhammer name = "gavel hammer" desc = "Order, order! No bombs in my courthouse." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "gavelhammer" force = 5 throwforce = 6 @@ -16,7 +16,7 @@ /obj/item/gavelblock name = "gavel block" desc = "Smack it with a gavel hammer when the assistants get rowdy." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "gavelblock" force = 2 throwforce = 2 diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index 34563d5e649c..71f52b9a0cc5 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -1,7 +1,7 @@ /obj/item/dnainjector name = "\improper DNA injector" desc = "This injects the person with DNA." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "dnainjector" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' diff --git a/code/game/objects/items/door_seal.dm b/code/game/objects/items/door_seal.dm index 64f7ca4fd92c..76b406f3c9ab 100644 --- a/code/game/objects/items/door_seal.dm +++ b/code/game/objects/items/door_seal.dm @@ -1,7 +1,7 @@ /obj/item/door_seal name = "pneumatic seal" desc = "A brace used to seal and reinforce an airlock. Useful for making areas inaccessible to those without opposable thumbs." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "pneumatic_seal" lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 496fc07288ec..9058f8af13f6 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -20,7 +20,7 @@ name = "handcuffs" desc = "Use this to keep prisoners in line." gender = PLURAL - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "handcuff" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' @@ -216,7 +216,7 @@ name = "leg cuffs" desc = "Use this to keep prisoners in line." gender = PLURAL - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "handcuff" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' @@ -420,6 +420,6 @@ /obj/item/restraints/legcuffs/bola/watcher //tribal bola for tribal lizards name = "watcher Bola" desc = "A Bola made from the stretchy sinew of fallen watchers." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "bola_watcher" breakouttime = 45 diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm index 23f7aec9b199..37fb21d9a649 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -1,7 +1,7 @@ /obj/item/implantcase name = "implant case" desc = "A glass case containing an implant." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "implantcase-0" item_state = "implantcase" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm index 5b8db550a87d..51b5e55ef161 100644 --- a/code/game/objects/items/implants/implanter.dm +++ b/code/game/objects/items/implants/implanter.dm @@ -1,7 +1,7 @@ /obj/item/implanter name = "implanter" desc = "A sterile automatic implant injector." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "implanter0" item_state = "syringe_0" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' diff --git a/code/game/objects/items/implants/implantpad.dm b/code/game/objects/items/implants/implantpad.dm index 37667786262f..ccbda83067a2 100644 --- a/code/game/objects/items/implants/implantpad.dm +++ b/code/game/objects/items/implants/implantpad.dm @@ -1,7 +1,7 @@ /obj/item/implantpad name = "implant pad" desc = "Used to modify implants." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "implantpad-0" item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index d61ce11538cb..585ac3c5323e 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -76,7 +76,7 @@ /obj/item/melee/cleric_mace name = "cleric mace" desc = "The grandson of the club, yet the grandfather of the baseball bat. Most notably used by holy orders in days past." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "mace_greyscale" item_state = "mace_greyscale" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' @@ -100,7 +100,7 @@ /obj/item/kitchen/knife/letter_opener name = "letter opener" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "letter_opener" desc = "A military combat utility survival knife." embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 56ca4f95c8e9..d4be66a3432e 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -164,7 +164,7 @@ /obj/item/skub desc = "It's skub." name = "skub" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "skub" w_class = WEIGHT_CLASS_BULKY attack_verb = list("skubbed") @@ -288,7 +288,7 @@ /obj/item/phone name = "red phone" desc = "Should anything ever go wrong..." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "red_phone" force = 3 throwforce = 2 @@ -472,7 +472,7 @@ /obj/item/extendohand name = "extendo-hand" desc = "Futuristic tech has allowed these classic spring-boxing toys to essentially act as a fully functional hand-operated hand prosthetic." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "extendohand" item_state = "extendohand" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' @@ -519,7 +519,7 @@ /obj/item/cane name = "cane" desc = "A cane used by a true gentleman. Or a clown." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "cane" item_state = "stick" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' @@ -556,7 +556,7 @@ /obj/item/staff/stick name = "stick" desc = "A great tool to drag someone else's drinks across the bar." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "cane" item_state = "stick" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm index 5aff78b5561d..7f73673b2a94 100644 --- a/code/game/objects/items/paint.dm +++ b/code/game/objects/items/paint.dm @@ -5,7 +5,7 @@ gender= PLURAL name = "paint" desc = "Used to recolor floors and walls. Can be removed by the janitor." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "paint_neutral" var/paint_color = "FFFFFF" item_state = "paintcan" diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 32d923eef985..79a5490a8494 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -378,7 +378,7 @@ desc = "Used to secure limbs following a fracture." gender = PLURAL singular_name = "splint" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "splint" apply_sounds = list('sound/effects/rip1.ogg', 'sound/effects/rip2.ogg') self_delay = 40 diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 200fc408768f..0193f0a65268 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -74,7 +74,6 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ /obj/item/emptysandbag name = "empty sandbag" desc = "A bag to be filled with sand." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "sandbag" w_class = WEIGHT_CLASS_TINY diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index b8f4451a9660..deca5b57397e 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -173,7 +173,7 @@ /obj/item/tank/jetpack/suit name = "hardsuit jetpack upgrade" desc = "A modular, compact set of thrusters designed to integrate with a hardsuit. It is fueled by a tank inserted into the suit's storage compartment." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "jetpack_upgrade" item_state = "jetpack-black" w_class = WEIGHT_CLASS_NORMAL diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 68245a88c4f2..ded5218e73e8 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -348,7 +348,7 @@ lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi' var/active = FALSE - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' hitsound = 'sound/weapons/smash.ogg' attack_verb = list("robusted") diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm index e0f6e22f3e7e..637f2deeb515 100644 --- a/code/game/objects/structures/manned_turret.dm +++ b/code/game/objects/structures/manned_turret.dm @@ -214,7 +214,7 @@ /obj/item/gun_control name = "turret controls" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "offhand" w_class = WEIGHT_CLASS_HUGE item_flags = ABSTRACT | NOBLUDGEON | DROPDEL diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 2257a3c10c3a..8a28f3079591 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -724,7 +724,6 @@ /obj/item/rack_parts name = "rack parts" desc = "Parts of a rack." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "rack_parts" flags_1 = CONDUCT_1 custom_materials = list(/datum/material/iron=2000) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 377c40d4e7ce..488d0af69506 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -218,7 +218,7 @@ /obj/item/reagent_containers/food/snacks/urinalcake name = "urinal cake" desc = "The noble urinal cake, protecting the people's pipes from the people's pee. Edibility is suggested to be low." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "urinalcake" w_class = WEIGHT_CLASS_TINY list_reagents = list(/datum/reagent/chlorine = 3, /datum/reagent/ammonia = 1) diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 810042ffce18..cc44c34d6415 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -311,7 +311,7 @@ /obj/item/melee/blood_magic name = "\improper magical aura" desc = "A sinister looking aura that distorts the flow of reality around it." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' icon_state = "disintegrate" diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 65e80336306d..30e4ac51fd5c 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -382,7 +382,6 @@ /obj/item/blood_beam name = "\improper magical aura" desc = "Sinister looking aura that distorts the flow of reality around it." - icon = 'icons/obj/items_and_weapons.dmi' lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' icon_state = "disintegrate" diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 4b48fba2af22..805ebf4b3ea6 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -1028,7 +1028,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.halitem.icon_state = "sword0" target.halitem.name = "Energy Sword" if(4) //stun baton - target.halitem.icon = 'icons/obj/items_and_weapons.dmi' + target.halitem.icon = 'icons/obj/items.dmi' target.halitem.icon_state = "stunbaton" target.halitem.name = "Stun Baton" if(5) //emag diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 4da78a5989a1..a2c635f54d44 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -644,7 +644,7 @@ desc = "Legend says something amazing happens when you collect enough of these." custom_price = 100 custom_premium_price = 110 - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "sandstar" w_class = WEIGHT_CLASS_TINY custom_materials = list(/datum/material/gold = 200) diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index c0b6c2434b78..b4a11974df72 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -69,7 +69,7 @@ /obj/item/toy/beach_ball/holoball name = "basketball" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "basketball" item_state = "basketball" desc = "Here's your chance, do your dance at the Space Jam." diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index 277245138a54..4306c52c1898 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -33,7 +33,7 @@ seed = /obj/item/seeds/nettle name = "nettle" desc = "It's probably not wise to touch it with bare hands..." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "nettle" lefthand_file = 'icons/mob/inhands/weapons/plants_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi' diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 715cc972cda1..56ad2264ce01 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -59,7 +59,7 @@ /obj/item/cultivator name = "cultivator" desc = "It's used for removing weeds or scratching your back." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "cultivator" item_state = "cultivator" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index d43d744e2800..b6f5c58b424e 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -115,7 +115,7 @@ name = "pile of bear armor" desc = "A scattered pile of various shaped armor pieces fitted for a bear, some duct tape, and a nail filer. Crude instructions \ are written on the back of one of the plates. This seems like an awful idea." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "bear_armor_upgrade" /obj/item/bear_armor/afterattack(atom/target, mob/user, proximity_flag) diff --git a/code/modules/photography/_pictures.dm b/code/modules/photography/_pictures.dm index 511d75ac6c3f..6570cd00bb04 100644 --- a/code/modules/photography/_pictures.dm +++ b/code/modules/photography/_pictures.dm @@ -45,7 +45,7 @@ if(!picture_image) return var/icon/small_img = icon(picture_image) - var/icon/ic = icon('icons/obj/items_and_weapons.dmi', iconstate ? iconstate :"photo") + var/icon/ic = icon('icons/obj/items.dmi', iconstate ? iconstate :"photo") small_img.Scale(8, 8) ic.Blend(small_img,ICON_OVERLAY, 13, 13) picture_icon = ic diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index 93b8319dbed7..609329c35247 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -4,7 +4,6 @@ /obj/item/camera name = "camera" - icon = 'icons/obj/items_and_weapons.dmi' desc = "A polaroid camera." icon_state = "camera" item_state = "camera" diff --git a/code/modules/photography/camera/film.dm b/code/modules/photography/camera/film.dm index b44b93361083..a6001011eb29 100644 --- a/code/modules/photography/camera/film.dm +++ b/code/modules/photography/camera/film.dm @@ -3,7 +3,6 @@ */ /obj/item/camera_film name = "film cartridge" - icon = 'icons/obj/items_and_weapons.dmi' desc = "A camera film cartridge. Insert it into a camera to reload it." icon_state = "film" item_state = "electropack" diff --git a/code/modules/photography/photos/album.dm b/code/modules/photography/photos/album.dm index 2ba5f5499307..19c2c1297f6b 100644 --- a/code/modules/photography/photos/album.dm +++ b/code/modules/photography/photos/album.dm @@ -4,7 +4,7 @@ /obj/item/storage/photo_album name = "photo album" desc = "A big book used to store photos and mementos." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "album" item_state = "album" lefthand_file = 'icons/mob/inhands/misc/books_lefthand.dmi' diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm index 7274d477babb..ea3b4ff6a99d 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -3,7 +3,7 @@ */ /obj/item/photo name = "photo" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "photo" item_state = "paper" w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index da4c5d0b68fa..cdc3a5416192 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -180,7 +180,7 @@ /obj/item/reagent_containers/spray/pepper name = "pepperspray" desc = "Manufactured by UhangInc, used to blind and down an opponent quickly." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "pepperspray" item_state = "pepperspray" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm index 5cf7e7e1e509..94f0c8a4fcad 100644 --- a/code/modules/spells/spell_types/godhand.dm +++ b/code/modules/spells/spell_types/godhand.dm @@ -4,7 +4,7 @@ var/catchphrase = "High Five!" var/on_use_sound = null var/obj/effect/proc_holder/spell/targeted/touch/attached_spell - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' icon_state = "latexballon" diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 317297c4fe8d..5da5f497bda4 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -171,7 +171,7 @@ //spases 4 legibilititie icon_state = "swa" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items.dmi similarity index 100% rename from icons/obj/items_and_weapons.dmi rename to icons/obj/items.dmi From 1df55bc93005b85c50af08b9447542ff1bcac672 Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 13:19:36 -0500 Subject: [PATCH 037/102] more dmi stuff --- .../objects/items/implants/implantcase.dm | 1 - code/game/objects/items/melee/misc.dm | 4 +--- code/game/objects/items/miscellaneous.dm | 3 --- code/game/objects/items/paint.dm | 1 - icons/obj/items.dmi | Bin 61539 -> 61369 bytes icons/obj/weapon/misc.dmi | Bin 1818 -> 2364 bytes 6 files changed, 1 insertion(+), 8 deletions(-) diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm index 37fb21d9a649..ef8aeefd0517 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -1,7 +1,6 @@ /obj/item/implantcase name = "implant case" desc = "A glass case containing an implant." - icon = 'icons/obj/items.dmi' icon_state = "implantcase-0" item_state = "implantcase" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 585ac3c5323e..f56ad32e4670 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -4,6 +4,7 @@ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' var/projectile_block_chance = 0 + /obj/item/melee/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(attack_type == PROJECTILE_ATTACK) final_block_chance = projectile_block_chance //Don't bring a sword to a gunfight @@ -76,11 +77,8 @@ /obj/item/melee/cleric_mace name = "cleric mace" desc = "The grandson of the club, yet the grandfather of the baseball bat. Most notably used by holy orders in days past." - icon = 'icons/obj/items.dmi' icon_state = "mace_greyscale" item_state = "mace_greyscale" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Material type changes the prefix as well as the color. custom_materials = list(/datum/material/iron = 12000) //Defaults to an Iron Mace. slot_flags = ITEM_SLOT_BELT diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index d4be66a3432e..ef6861c80d5b 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -164,7 +164,6 @@ /obj/item/skub desc = "It's skub." name = "skub" - icon = 'icons/obj/items.dmi' icon_state = "skub" w_class = WEIGHT_CLASS_BULKY attack_verb = list("skubbed") @@ -288,7 +287,6 @@ /obj/item/phone name = "red phone" desc = "Should anything ever go wrong..." - icon = 'icons/obj/items.dmi' icon_state = "red_phone" force = 3 throwforce = 2 @@ -472,7 +470,6 @@ /obj/item/extendohand name = "extendo-hand" desc = "Futuristic tech has allowed these classic spring-boxing toys to essentially act as a fully functional hand-operated hand prosthetic." - icon = 'icons/obj/items.dmi' icon_state = "extendohand" item_state = "extendohand" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm index 7f73673b2a94..9e314d848e3e 100644 --- a/code/game/objects/items/paint.dm +++ b/code/game/objects/items/paint.dm @@ -5,7 +5,6 @@ gender= PLURAL name = "paint" desc = "Used to recolor floors and walls. Can be removed by the janitor." - icon = 'icons/obj/items.dmi' icon_state = "paint_neutral" var/paint_color = "FFFFFF" item_state = "paintcan" diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 0b15f3525ff466c116715473d741aa24e8c5c6cd..e38eb539cf4dbf5725b58e3f653773b6c6b71f2f 100644 GIT binary patch delta 8674 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 Date: Mon, 15 Apr 2024 13:43:24 -0500 Subject: [PATCH 038/102] knife parent --- .../BeachRuins/beach_ancient_ruin.dmm | 2 +- .../BeachRuins/beach_crashed_starwalker.dmm | 2 +- .../BeachRuins/beach_fishing_hut.dmm | 8 +- .../BeachRuins/beach_pirate_crash.dmm | 4 +- .../IceRuins/icemoon_crashed_holemaker.dmm | 2 +- .../icemoon_underground_abandoned_newcops.dmm | 2 +- .../icemoon_underground_abandoned_village.dmm | 4 +- _maps/RandomRuins/JungleRuins/jungle_nest.dmm | 2 +- .../JungleRuins/jungle_paradise.dmm | 2 +- .../JungleRuins/jungle_syndicate.dmm | 4 +- .../lavaland_surface_elephant_graveyard.dmm | 2 +- .../lavaland_surface_lava_canyon.dmm | 4 +- .../LavaRuins/lavaland_surface_pizzaparty.dmm | 2 +- .../lavaland_surface_survivalpod.dmm | 2 +- .../RockRuins/rockplanet_crash.dmm | 2 +- .../whitesands_surface_camp_combination.dmm | 2 +- .../whitesands_surface_conveniencestore.dmm | 4 +- .../whitesands_surface_onlyaspoonful.dmm | 2 +- _maps/RandomRuins/SpaceRuins/Fast_Food.dmm | 2 +- _maps/RandomRuins/SpaceRuins/crashedship.dmm | 10 +- _maps/RandomRuins/SpaceRuins/spacemall.dmm | 6 +- .../WasteRuins/wasteplanet_crash_kitchen.dmm | 2 +- .../wasteplanet_fortress_of_solitide.dmm | 2 +- .../WasteRuins/wasteplanet_pandora.dmm | 6 +- _maps/map_files/generic/CentCom.dmm | 6 +- _maps/outpost/nanotrasen_asteroid.dmm | 6 +- .../independent/independent_beluga.dmm | 2 +- .../independent/independent_junker.dmm | 4 +- .../independent/independent_lagoon.dmm | 4 +- .../independent/independent_mudskipper.dmm | 4 +- .../independent/independent_rigger.dmm | 2 +- .../independent/independent_schmiedeberg.dmm | 6 +- .../independent/independent_shetland.dmm | 8 +- .../independent/independent_tranquility.dmm | 2 +- _maps/shuttles/inteq/inteq_colossus.dmm | 8 +- _maps/shuttles/inteq/inteq_talos.dmm | 6 +- _maps/shuttles/inteq/inteq_valor.dmm | 4 +- _maps/shuttles/inteq/inteq_vaquero.dmm | 6 +- _maps/shuttles/minutemen/minutemen_vela.dmm | 2 +- .../shuttles/nanotrasen/nanotrasen_heron.dmm | 10 +- _maps/shuttles/nanotrasen/nanotrasen_meta.dmm | 2 +- .../shuttles/nanotrasen/nanotrasen_mimir.dmm | 12 +- .../shuttles/nanotrasen/nanotrasen_osprey.dmm | 2 +- .../shuttles/nanotrasen/nanotrasen_ranger.dmm | 6 +- .../nanotrasen/nanotrasen_skipper.dmm | 4 +- _maps/shuttles/pgf/pgf_crying_sun.dmm | 18 +- _maps/shuttles/pirate/pirate_ember.dmm | 14 +- _maps/shuttles/pirate/pirate_libertatia.dmm | 6 +- _maps/shuttles/roumain/srm_elder.dmm | 6 +- _maps/shuttles/solgov/solgov_chronicle.dmm | 4 +- _maps/shuttles/solgov/solgov_inkwell.dmm | 18 +- _maps/shuttles/solgov/solgov_paracelsus.dmm | 6 +- .../subshuttles/independent_sugarcube.dmm | 2 +- _maps/shuttles/syndicate/syndicate_aegis.dmm | 6 +- .../syndicate/syndicate_cybersun_kansatsu.dmm | 12 +- .../syndicate/syndicate_twinkleshine.dmm | 10 +- _maps/templates/shelter_2.dmm | 2 +- code/__DEFINES/inventory.dm | 2 +- .../components/crafting/recipes/misc.dm | 2 +- code/game/gamemodes/clown_ops/clown_ops.dm | 2 +- code/game/gamemodes/nuclear/nuclear.dm | 4 +- .../game/objects/effects/spawners/lootdrop.dm | 6 +- code/game/objects/items/kitchen.dm | 181 ------------------ code/game/objects/items/melee/knife.dm | 154 +++++++++++++++ code/game/objects/items/melee/misc.dm | 2 +- code/game/objects/items/miscellaneous.dm | 2 +- .../game/objects/items/stacks/sheets/glass.dm | 2 +- .../items/stacks/sheets/sheet_types.dm | 2 +- code/game/objects/items/storage/belt.dm | 4 +- .../objects/structures/ghost_role_spawners.dm | 4 +- .../structures/icemoon/cave_entrance.dm | 3 +- .../blood_contract/blood_contract.dm | 2 +- .../antagonists/fugitive/fugitive_outfits.dm | 2 +- code/modules/cargo/bounties/mining.dm | 2 +- code/modules/cargo/exports/lavaland.dm | 2 +- code/modules/cargo/exports/weapons.dm | 2 +- code/modules/cargo/packs/sec_supply.dm | 6 +- .../clothing/outfits/ert/frontiersmen_ert.dm | 4 +- .../modules/clothing/outfits/ert/inteq_ert.dm | 2 +- .../clothing/outfits/ert/minutemen_ert.dm | 2 +- .../clothing/outfits/ert/nanotrasen_ert.dm | 4 +- .../clothing/outfits/ert/syndicate_ert.dm | 6 +- .../clothing/outfits/factions/frontiersmen.dm | 4 +- .../clothing/outfits/factions/independent.dm | 10 +- .../clothing/outfits/factions/nanotrasen.dm | 8 +- .../clothing/outfits/factions/solgov.dm | 4 +- .../clothing/outfits/factions/syndicate.dm | 10 +- .../clothing/spacesuits/miscellaneous.dm | 8 +- code/modules/clothing/suits/cloaks.dm | 2 +- code/modules/hydroponics/grown/root.dm | 2 +- code/modules/jobs/job_types/shaft_miner.dm | 2 +- code/modules/library/lib_items.dm | 2 +- code/modules/mapping/mapping_helpers.dm | 2 +- code/modules/mining/lavaland/ash_flora.dm | 2 +- .../mining/lavaland/necropolis_chests.dm | 4 +- code/modules/mining/machine_vending.dm | 2 +- .../mob/living/simple_animal/bot/cleanbot.dm | 2 +- .../simple_animal/hostile/frontiersman.dm | 2 +- .../hostile/mining_mobs/hivelord.dm | 30 +-- .../living/simple_animal/hostile/survivors.dm | 8 +- code/modules/projectiles/gun.dm | 6 +- .../research/designs/autolathe_designs.dm | 6 +- .../xenobiology/crossbreeding/_weapons.dm | 4 +- .../xenobiology/crossbreeding/burning.dm | 2 +- .../ruins/objects_and_mobs/sin_ruins.dm | 4 +- code/modules/ruins/rockplanet_ruin_code.dm | 2 +- code/modules/shuttle/emergency.dm | 2 +- code/modules/surgery/advanced/lobotomy.dm | 2 +- code/modules/surgery/amputation.dm | 2 +- code/modules/surgery/coronary_bypass.dm | 2 +- .../surgery/experimental_dissection.dm | 2 +- code/modules/surgery/gastrectomy.dm | 2 +- code/modules/surgery/hepatectomy.dm | 2 +- code/modules/surgery/lobectomy.dm | 2 +- code/modules/surgery/mechanic_steps.dm | 4 +- code/modules/surgery/organic_steps.dm | 6 +- code/modules/surgery/organs/augments_arms.dm | 4 +- code/modules/surgery/plastic_surgery.dm | 2 +- code/modules/vending/drinnerware.dm | 6 +- code/modules/vending/sustenance.dm | 2 +- shiptest.dme | 1 + tools/UpdatePaths/Scripts/2776_cultbegone.txt | 10 +- 122 files changed, 423 insertions(+), 450 deletions(-) create mode 100644 code/game/objects/items/melee/knife.dm diff --git a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm index b67667e26c69..39d6e5b2bbab 100644 --- a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm @@ -1461,7 +1461,7 @@ /turf/open/floor/plasteel/mono, /area/ruin/beach/complex) "wV" = ( -/obj/item/kitchen/knife/hunting{ +/obj/item/melee/knife/hunting{ name = "machete"; pixel_y = 8; desc = "Space vines HATE this one simple trick!" diff --git a/_maps/RandomRuins/BeachRuins/beach_crashed_starwalker.dmm b/_maps/RandomRuins/BeachRuins/beach_crashed_starwalker.dmm index 0839518362b4..eaebce7d979b 100644 --- a/_maps/RandomRuins/BeachRuins/beach_crashed_starwalker.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_crashed_starwalker.dmm @@ -2294,7 +2294,7 @@ /area/ruin/beach/starwalker) "IY" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_x = 7; pixel_y = 10 }, diff --git a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm index 0c9cea88ecc2..c7ba64aec0ae 100644 --- a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm @@ -206,7 +206,7 @@ /obj/structure/closet/cabinet, /obj/item/pneumatic_cannon/speargun, /obj/item/storage/backpack/magspear_quiver, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, /turf/open/floor/wood, /area/ruin/beach) "kr" = ( @@ -534,7 +534,7 @@ dir = 6 }, /obj/structure/table/reinforced, -/obj/item/kitchen/knife/butcher, +/obj/item/melee/knife/butcher, /turf/open/floor/plastic, /area/ruin/beach) "wg" = ( @@ -1055,7 +1055,7 @@ "Os" = ( /obj/structure/table/wood/reinforced, /obj/effect/turf_decal/corner/opaque/pink/diagonal, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_y = 12; pixel_x = 9 }, @@ -1075,7 +1075,7 @@ /obj/structure/closet/cabinet, /obj/item/pneumatic_cannon/speargun, /obj/item/storage/backpack/magspear_quiver, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, /obj/machinery/light/small/directional/east{ light_color = "#d8b1b1" }, diff --git a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm index 3cdd90e5e1cb..1a39ac0dc41a 100644 --- a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm @@ -16,7 +16,7 @@ /area/ruin/beach/piratecrash/storage) "af" = ( /obj/structure/table/wood, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/effect/turf_decal/corner/opaque/black/diagonal, /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -37,7 +37,7 @@ }, /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/fishfry, -/obj/item/kitchen/knife/shiv{ +/obj/item/melee/knife/shiv{ pixel_x = -6; pixel_y = 5 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm index 50f7b24ed353..d2fff0e9febb 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm @@ -889,7 +889,7 @@ /area/ruin/unpowered/crashed_holemaker) "oC" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /turf/open/floor/wood{ icon_state = "wood-broken7" }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_newcops.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_newcops.dmm index bf034757b5a2..aa5cf4535ddb 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_newcops.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_newcops.dmm @@ -712,7 +712,7 @@ /obj/item/clothing/shoes/jackboots, /obj/item/clothing/glasses/night, /obj/item/radio/headset, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/item/radio{ icon_state = "radio" }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm index 98397324244f..8d2f2a152403 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm @@ -339,7 +339,7 @@ /obj/item/restraints/legcuffs/beartrap, /obj/item/reagent_containers/glass/bottle/venom, /obj/item/reagent_containers/glass/bottle/curare, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/effect/decal/cleanable/dirt, /obj/item/reagent_containers/food/snacks/meat/slab/human, /obj/item/reagent_containers/food/snacks/meat/slab/human, @@ -393,7 +393,7 @@ /obj/effect/decal/cleanable/blood/gibs/torso, /obj/structure/safe, /obj/item/ammo_box/a12g/slug, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, diff --git a/_maps/RandomRuins/JungleRuins/jungle_nest.dmm b/_maps/RandomRuins/JungleRuins/jungle_nest.dmm index 2783fc59549b..0938705f6e23 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_nest.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_nest.dmm @@ -267,7 +267,7 @@ "Ee" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /turf/open/floor/plating/dirt, /area/overmap_encounter/planetoid/cave/explored) "EC" = ( diff --git a/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm b/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm index bc462784bca8..17547dd97508 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm @@ -798,7 +798,7 @@ /area/ruin/jungle/paradise/construction) "eY" = ( /obj/structure/table/reinforced, -/obj/item/kitchen/knife/butcher, +/obj/item/melee/knife/butcher, /obj/item/clothing/gloves/butchering, /turf/open/floor/pod/dark, /area/overmap_encounter/planetoid/cave/explored) diff --git a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm index ebd333289382..fb98708c83ab 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm @@ -310,7 +310,7 @@ /turf/open/floor/plating/rust, /area/ruin/jungle/syndifort/jerry) "ik" = ( -/obj/item/kitchen/knife/combat{ +/obj/item/melee/knife/combat{ name = "bushcutter"; force = 18 }, @@ -629,7 +629,7 @@ /area/ruin/jungle/syndifort/jerry) "ud" = ( /obj/structure/table, -/obj/item/kitchen/knife/combat{ +/obj/item/melee/knife/combat{ name = "bushcutter"; force = 18 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm index 9babc1631c8f..444845e2ec47 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm @@ -254,7 +254,7 @@ /turf/open/floor/plating/asteroid/basalt/wasteland, /area/ruin/unpowered/elephant_graveyard) "bk" = ( -/obj/item/kitchen/knife/combat/bone, +/obj/item/melee/knife/combat/bone, /obj/item/organ/tongue, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/asteroid/basalt/wasteland, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index 4fdcd50925b6..9624c18c38aa 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -1105,7 +1105,7 @@ pixel_y = -11; pixel_x = -7 }, -/obj/item/kitchen/knife/combat/bone{ +/obj/item/melee/knife/combat/bone{ pixel_x = 10; pixel_y = -10 }, @@ -1478,7 +1478,7 @@ /turf/closed/mineral/random/volcanic, /area/overmap_encounter/planetoid/cave/explored) "PP" = ( -/obj/item/kitchen/knife/combat/bone{ +/obj/item/melee/knife/combat/bone{ pixel_x = -2; pixel_y = 4 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm index d035e25f5cbd..7754373afe45 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm @@ -266,7 +266,7 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/overmap_encounter/planetoid/lava/explored) "O" = ( -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood{ initial_gas_mix = "o2=14;n2=5;co2=13;TEMP=300" diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm index 5e8e6a7f0dec..e2f808908ee1 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm @@ -74,7 +74,7 @@ /area/overmap_encounter/planetoid/lava/explored) "p" = ( /obj/structure/table/survival_pod, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /turf/open/floor/pod/dark, /area/ruin/powered) "q" = ( diff --git a/_maps/RandomRuins/RockRuins/rockplanet_crash.dmm b/_maps/RandomRuins/RockRuins/rockplanet_crash.dmm index 43db217f9dcb..0fdf5f43ab79 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_crash.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_crash.dmm @@ -636,7 +636,7 @@ /obj/machinery/reagentgrinder{ pixel_y = 6 }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_x = 16 }, /obj/item/kitchen/rollingpin{ diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm index f8b569cebdf4..1b7e3a91c39b 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm @@ -223,7 +223,7 @@ /area/overmap_encounter/planetoid/sand/explored) "iL" = ( /obj/structure/statue/snow/snowman, -/obj/item/kitchen/knife/shiv/carrot, +/obj/item/melee/knife/shiv/carrot, /turf/open/floor/plating/asteroid/snow/lit/whitesands, /area/overmap_encounter/planetoid/sand/explored) "iQ" = ( diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_conveniencestore.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_conveniencestore.dmm index 9d32745de146..790948a626e2 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_conveniencestore.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_conveniencestore.dmm @@ -82,7 +82,7 @@ /turf/open/floor/plasteel/white, /area/ruin/unpowered) "pd" = ( -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_x = 6; pixel_y = 1 }, @@ -101,7 +101,7 @@ /area/ruin/unpowered) "sP" = ( /obj/structure/rack, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_x = -5 }, /obj/item/kitchen/spoon/plastic{ diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_onlyaspoonful.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_onlyaspoonful.dmm index f74a8895976a..0f6ad6bd0a58 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_onlyaspoonful.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_onlyaspoonful.dmm @@ -30,7 +30,7 @@ /area/ruin/powered) "bo" = ( /obj/effect/decal/cleanable/blood/gibs/core, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/plastic, /area/ruin/powered) "bz" = ( diff --git a/_maps/RandomRuins/SpaceRuins/Fast_Food.dmm b/_maps/RandomRuins/SpaceRuins/Fast_Food.dmm index 559f4987deec..1a95077dd1d5 100644 --- a/_maps/RandomRuins/SpaceRuins/Fast_Food.dmm +++ b/_maps/RandomRuins/SpaceRuins/Fast_Food.dmm @@ -355,7 +355,7 @@ /area/ruin/space/has_grav/powered/macspace) "aK" = ( /obj/machinery/light/directional/south, -/obj/item/kitchen/knife/butcher, +/obj/item/melee/knife/butcher, /obj/effect/turf_decal/corner/opaque/white{ dir = 1 }, diff --git a/_maps/RandomRuins/SpaceRuins/crashedship.dmm b/_maps/RandomRuins/SpaceRuins/crashedship.dmm index 9a154053c0bf..2648ac3a5103 100644 --- a/_maps/RandomRuins/SpaceRuins/crashedship.dmm +++ b/_maps/RandomRuins/SpaceRuins/crashedship.dmm @@ -527,7 +527,7 @@ /area/awaymission/BMPship/Midship) "cf" = ( /obj/structure/table, -/obj/item/kitchen/knife/butcher, +/obj/item/melee/knife/butcher, /obj/item/reagent_containers/food/drinks/beer, /obj/item/reagent_containers/food/snacks/meat, /obj/effect/turf_decal/corner/opaque/blue{ @@ -589,7 +589,7 @@ /area/awaymission/BMPship/Midship) "ck" = ( /obj/structure/table, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/effect/turf_decal/corner/transparent/bar, /obj/effect/turf_decal/corner/transparent/bar{ dir = 1 @@ -1577,7 +1577,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /turf/open/floor/plating, /area/awaymission/BMPship/Aft) "fa" = ( @@ -1623,7 +1623,7 @@ dir = 4; id = "meatConvey2" }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /turf/open/floor/plating, /area/awaymission/BMPship/Midship) "fj" = ( @@ -1735,7 +1735,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/effect/turf_decal/corner/transparent/bar, /obj/effect/turf_decal/corner/transparent/bar{ dir = 1 diff --git a/_maps/RandomRuins/SpaceRuins/spacemall.dmm b/_maps/RandomRuins/SpaceRuins/spacemall.dmm index 8e6dd2b1c23b..b745e4c5c7bf 100644 --- a/_maps/RandomRuins/SpaceRuins/spacemall.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacemall.dmm @@ -1111,7 +1111,7 @@ "el" = ( /obj/structure/table/glass, /obj/item/toy/plush/lizardplushie, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /turf/open/floor/light, /area/ruin/space/has_grav/spacemall/shop2) "eo" = ( @@ -2145,7 +2145,7 @@ /area/ruin/space/has_grav/spacemall) "ip" = ( /obj/effect/turf_decal/corner/transparent/black/diagonal, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/structure/table, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/spacemall/dorms) @@ -13783,7 +13783,7 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_x = 10 }, /obj/structure/disposalpipe/segment{ diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_crash_kitchen.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_crash_kitchen.dmm index 2cd76a6338be..dec0baaca378 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_crash_kitchen.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_crash_kitchen.dmm @@ -221,7 +221,7 @@ /obj/item/reagent_containers/food/drinks/shaker, /obj/item/reagent_containers/glass/rag, /obj/item/reagent_containers/food/condiment/enzyme, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/effect/turf_decal/corner/opaque/white{ dir = 1 }, diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm index 4ba0cfab0d86..de1df5fe92fb 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm @@ -3539,7 +3539,7 @@ /obj/item/clothing/head/chicken{ pixel_y = 11 }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_x = -9 }, /obj/effect/decal/cleanable/dirt/dust, diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index 6504fdba00c5..4e5e81239a4d 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -70,7 +70,7 @@ /area/ruin/wasteplanet) "df" = ( /obj/structure/table/wood, -/obj/item/kitchen/knife/combat/bone, +/obj/item/melee/knife/combat/bone, /obj/item/flashlight/flare/torch, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) @@ -107,7 +107,7 @@ /area/ruin/wasteplanet) "ge" = ( /obj/structure/table/wood, -/obj/item/kitchen/knife/combat/bone{ +/obj/item/melee/knife/combat/bone{ pixel_x = -20 }, /obj/item/reagent_containers/food/snacks/salad/edensalad, @@ -813,7 +813,7 @@ /turf/open/indestructible/hierophant/two/waste, /area/ruin/wasteplanet) "FP" = ( -/obj/item/kitchen/knife/combat/bone{ +/obj/item/melee/knife/combat/bone{ pixel_x = 15 }, /turf/open/floor/wood/waste, diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 94fa3c52bed1..c57d77325177 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2485,7 +2485,7 @@ /turf/open/floor/plasteel, /area/wizard_station) "azO" = ( -/obj/item/kitchen/knife/ritual, +/obj/item/melee/knife/kitcken/kitchen, /turf/open/floor/plasteel, /area/wizard_station) "azP" = ( @@ -11016,7 +11016,7 @@ /obj/item/reagent_containers/food/condiment/peppermill{ pixel_x = -8 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken/kitchen, /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 }, @@ -15544,7 +15544,7 @@ pixel_x = 7; pixel_y = -2 }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken/kitchen{ pixel_y = -5; pixel_x = -5 }, diff --git a/_maps/outpost/nanotrasen_asteroid.dmm b/_maps/outpost/nanotrasen_asteroid.dmm index 2ea6c907e80e..002cda5f7dfc 100644 --- a/_maps/outpost/nanotrasen_asteroid.dmm +++ b/_maps/outpost/nanotrasen_asteroid.dmm @@ -1777,7 +1777,7 @@ /area/outpost/crew/cryo) "gF" = ( /obj/structure/table/reinforced, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_y = 6; pixel_x = 9 }, @@ -11426,7 +11426,7 @@ "NP" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/table/reinforced, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_x = -6; pixel_y = 2 }, @@ -13124,7 +13124,7 @@ pixel_x = -4; pixel_y = 6 }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_y = 6; pixel_x = 9 }, diff --git a/_maps/shuttles/independent/independent_beluga.dmm b/_maps/shuttles/independent/independent_beluga.dmm index e8bf634e863f..5110f5700b0f 100644 --- a/_maps/shuttles/independent/independent_beluga.dmm +++ b/_maps/shuttles/independent/independent_beluga.dmm @@ -2768,7 +2768,7 @@ pixel_y = 1 }, /obj/structure/table, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_x = 11; pixel_y = 7 }, diff --git a/_maps/shuttles/independent/independent_junker.dmm b/_maps/shuttles/independent/independent_junker.dmm index 006a74a2e3fb..8241f6c5e9ae 100644 --- a/_maps/shuttles/independent/independent_junker.dmm +++ b/_maps/shuttles/independent/independent_junker.dmm @@ -91,7 +91,7 @@ pixel_x = 4; pixel_y = 9 }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_y = -3; pixel_x = 10 }, @@ -1790,7 +1790,7 @@ /obj/structure/cable{ icon_state = "5-10" }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_y = 1; pixel_x = 8 }, diff --git a/_maps/shuttles/independent/independent_lagoon.dmm b/_maps/shuttles/independent/independent_lagoon.dmm index 290586293bc3..04e304cd158f 100644 --- a/_maps/shuttles/independent/independent_lagoon.dmm +++ b/_maps/shuttles/independent/independent_lagoon.dmm @@ -1380,7 +1380,7 @@ "iR" = ( /obj/structure/table/reinforced, /obj/item/storage/bag/tray, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/structure/cable{ icon_state = "2-4" }, @@ -4807,7 +4807,7 @@ /obj/structure/table/wood, /obj/item/paper_bin, /obj/item/pen/fountain, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/kitcken/letter_opener, /obj/item/pen, /turf/open/floor/carpet/black, /area/ship/crew/library) diff --git a/_maps/shuttles/independent/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm index 5ac1bcdd0e65..39383c8194cf 100644 --- a/_maps/shuttles/independent/independent_mudskipper.dmm +++ b/_maps/shuttles/independent/independent_mudskipper.dmm @@ -2361,8 +2361,8 @@ /obj/item/gps/mining{ gpstag = "SCAV1" }, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/item/flashlight/seclite, /obj/item/flashlight/seclite, /turf/open/floor/plasteel/tech, diff --git a/_maps/shuttles/independent/independent_rigger.dmm b/_maps/shuttles/independent/independent_rigger.dmm index 03044b113956..b0c63fae87d7 100644 --- a/_maps/shuttles/independent/independent_rigger.dmm +++ b/_maps/shuttles/independent/independent_rigger.dmm @@ -1182,7 +1182,7 @@ "pv" = ( /obj/effect/turf_decal/corner/opaque/yellow/diagonal, /obj/structure/table, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /turf/open/floor/plasteel/white, /area/ship/crew/canteen) "pD" = ( diff --git a/_maps/shuttles/independent/independent_schmiedeberg.dmm b/_maps/shuttles/independent/independent_schmiedeberg.dmm index f9c4ee6c499c..90e6810a9ab0 100644 --- a/_maps/shuttles/independent/independent_schmiedeberg.dmm +++ b/_maps/shuttles/independent/independent_schmiedeberg.dmm @@ -69,7 +69,7 @@ /obj/structure/table, /obj/item/storage/bag/tray, /obj/item/reagent_containers/food/condiment/enzyme, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/item/reagent_containers/food/condiment/saltshaker{ pixel_x = -5; pixel_y = 10 @@ -2071,8 +2071,8 @@ /obj/item/flashlight/seclite, /obj/item/flashlight/seclite, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/structure/sign/poster/retro/lasergun_new{ pixel_x = -32 }, diff --git a/_maps/shuttles/independent/independent_shetland.dmm b/_maps/shuttles/independent/independent_shetland.dmm index 113975fc8edf..e4237dec04bc 100644 --- a/_maps/shuttles/independent/independent_shetland.dmm +++ b/_maps/shuttles/independent/independent_shetland.dmm @@ -84,7 +84,7 @@ "aR" = ( /obj/effect/turf_decal/corner/opaque/neutral/half, /obj/item/cutting_board, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/structure/table/reinforced, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) @@ -978,7 +978,7 @@ /obj/effect/turf_decal/corner/transparent/beige/full, /obj/effect/turf_decal/corner/transparent/brown/diagonal, /obj/item/toy/redbutton, -/obj/item/kitchen/knife/plastic, +/obj/item/melee/knife/plastic, /obj/item/kitchen/fork/plastic{ pixel_x = 5 }, @@ -1509,7 +1509,7 @@ /obj/item/kitchen/fork/plastic{ pixel_x = 5 }, -/obj/item/kitchen/knife/plastic, +/obj/item/melee/knife/plastic, /turf/open/floor/plasteel, /area/ship/crew/canteen) "nt" = ( @@ -5789,7 +5789,7 @@ /obj/item/kitchen/fork/plastic{ pixel_x = 5 }, -/obj/item/kitchen/knife/plastic, +/obj/item/melee/knife/plastic, /turf/open/floor/plasteel, /area/ship/crew/canteen) "Yp" = ( diff --git a/_maps/shuttles/independent/independent_tranquility.dmm b/_maps/shuttles/independent/independent_tranquility.dmm index fd1a368ebc50..40938a75de5d 100644 --- a/_maps/shuttles/independent/independent_tranquility.dmm +++ b/_maps/shuttles/independent/independent_tranquility.dmm @@ -1685,7 +1685,7 @@ /obj/effect/turf_decal/corner/transparent/bar, /obj/structure/table/reinforced, /obj/machinery/light/directional/south, -/obj/item/kitchen/knife/butcher{ +/obj/item/melee/knife/butcher{ pixel_x = -6; pixel_y = 7 }, diff --git a/_maps/shuttles/inteq/inteq_colossus.dmm b/_maps/shuttles/inteq/inteq_colossus.dmm index 647896ce8185..66d78831e426 100644 --- a/_maps/shuttles/inteq/inteq_colossus.dmm +++ b/_maps/shuttles/inteq/inteq_colossus.dmm @@ -4308,10 +4308,10 @@ /obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "WG" = ( diff --git a/_maps/shuttles/inteq/inteq_talos.dmm b/_maps/shuttles/inteq/inteq_talos.dmm index c8bdcb1bd3be..9caada782858 100644 --- a/_maps/shuttles/inteq/inteq_talos.dmm +++ b/_maps/shuttles/inteq/inteq_talos.dmm @@ -5624,9 +5624,9 @@ pixel_x = -1; pixel_y = 3 }, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "JT" = ( diff --git a/_maps/shuttles/inteq/inteq_valor.dmm b/_maps/shuttles/inteq/inteq_valor.dmm index ede8c585a5c2..82e5174cbdcb 100644 --- a/_maps/shuttles/inteq/inteq_valor.dmm +++ b/_maps/shuttles/inteq/inteq_valor.dmm @@ -537,8 +537,8 @@ /obj/item/megaphone/sec, /obj/item/clothing/suit/armor/vest/alt, /obj/item/clothing/suit/armor/vest/alt, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /turf/open/floor/plasteel/dark, /area/ship/security) "ey" = ( diff --git a/_maps/shuttles/inteq/inteq_vaquero.dmm b/_maps/shuttles/inteq/inteq_vaquero.dmm index c93d0cc7f0a8..a319d2e73293 100644 --- a/_maps/shuttles/inteq/inteq_vaquero.dmm +++ b/_maps/shuttles/inteq/inteq_vaquero.dmm @@ -2214,9 +2214,9 @@ pixel_y = 23 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /turf/open/floor/plasteel/tech/grid, /area/ship/security) "HN" = ( diff --git a/_maps/shuttles/minutemen/minutemen_vela.dmm b/_maps/shuttles/minutemen/minutemen_vela.dmm index 200a677ea101..703df2598de1 100644 --- a/_maps/shuttles/minutemen/minutemen_vela.dmm +++ b/_maps/shuttles/minutemen/minutemen_vela.dmm @@ -1751,7 +1751,7 @@ /area/ship/engineering) "kr" = ( /obj/structure/filingcabinet, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/kitcken/letter_opener, /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/industrial/hatch/yellow, /obj/item/clothing/mask/cigarette/cigar/havana, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm index ba2c8c61533e..c46efe8cbb77 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm @@ -4876,11 +4876,11 @@ pixel_x = 2; pixel_y = 3 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_x = 2 }, -/obj/item/kitchen/knife/plastic, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic, +/obj/item/melee/knife/plastic{ pixel_x = 5; pixel_y = 2 }, @@ -13066,10 +13066,10 @@ /obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/dough, /obj/item/kitchen/rollingpin, -/obj/item/kitchen/knife/butcher{ +/obj/item/melee/knife/butcher{ pixel_x = 13 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/effect/turf_decal/industrial/warning{ dir = 1 }, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm index e01ceabaf3b3..0b7d2ff39931 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm @@ -2382,7 +2382,7 @@ /obj/structure/table, /obj/item/cutting_board, /obj/item/kitchen/rollingpin, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/effect/turf_decal/corner/opaque/white/diagonal, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm index d6cc2ca80968..295f7d336fdc 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm @@ -2008,7 +2008,7 @@ /obj/machinery/door/window{ dir = 4 }, -/obj/item/kitchen/knife/shiv, +/obj/item/melee/knife/shiv, /turf/open/floor/plating, /area/ship/crew/canteen) "lc" = ( @@ -4062,11 +4062,11 @@ /area/ship/crew/dorm) "ye" = ( /obj/structure/closet/crate, -/obj/item/kitchen/knife/plastic, -/obj/item/kitchen/knife/plastic, -/obj/item/kitchen/knife/plastic, -/obj/item/kitchen/knife/plastic, -/obj/item/kitchen/knife/plastic, +/obj/item/melee/knife/plastic, +/obj/item/melee/knife/plastic, +/obj/item/melee/knife/plastic, +/obj/item/melee/knife/plastic, +/obj/item/melee/knife/plastic, /obj/item/kitchen/spoon/plastic, /obj/item/kitchen/spoon/plastic, /obj/item/kitchen/spoon/plastic, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm b/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm index b9f1fe3ee680..4bb12e71cf1b 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm @@ -7652,7 +7652,7 @@ /area/ship/engineering) "XE" = ( /obj/structure/table/reinforced, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/item/kitchen/rollingpin, /obj/item/reagent_containers/food/condiment/sugar, /obj/item/reagent_containers/food/condiment/rice, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm index 360f9fec6963..817394772f6b 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm @@ -176,7 +176,7 @@ /obj/item/clothing/glasses/sunglasses/gar, /obj/item/melee/classic_baton/telescopic, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/item/holosign_creator/security, /obj/item/storage/box/handcuffs, /obj/item/restraints/legcuffs/bola/energy, @@ -450,7 +450,7 @@ pixel_y = 10; pixel_x = -5 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/combat/survival{ pixel_y = 6; pixel_x = 5 }, @@ -3114,7 +3114,7 @@ }, /obj/item/stock_parts/cell/gun, /obj/item/melee/classic_baton/telescopic, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/item/gps, /obj/item/screwdriver, /obj/effect/turf_decal/siding/wood{ diff --git a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm index 5ec1a75727d5..5e8029ce7052 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm @@ -1736,7 +1736,7 @@ pixel_x = 1; pixel_y = 5 }, -/obj/item/kitchen/knife/letter_opener{ +/obj/item/melee/knife/kitcken/letter_opener{ desc = "A military combat utility survival knife, imported from Earth. An expensive paperweight indeed."; pixel_x = 4; pixel_y = 5 @@ -2607,7 +2607,7 @@ dir = 10 }, /obj/structure/table/reinforced, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/item/cutting_board, /obj/effect/turf_decal/corner/opaque/green/mono, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/pgf/pgf_crying_sun.dmm b/_maps/shuttles/pgf/pgf_crying_sun.dmm index f797f25d2f95..5d57f876e9cd 100644 --- a/_maps/shuttles/pgf/pgf_crying_sun.dmm +++ b/_maps/shuttles/pgf/pgf_crying_sun.dmm @@ -3266,19 +3266,19 @@ pixel_x = 3; pixel_y = 5 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_y = 5; pixel_x = -1 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_y = 5; pixel_x = -3 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_y = 5; pixel_x = -5 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_y = 5; pixel_x = -7 }, @@ -5393,19 +5393,19 @@ /area/ship/security/armory) "Qq" = ( /obj/structure/rack, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/combat/survival{ pixel_x = -7; pixel_y = 4 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/combat/survival{ pixel_x = -2; pixel_y = 4 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/combat/survival{ pixel_y = 4; pixel_x = 3 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/combat/survival{ pixel_y = 4; pixel_x = 8 }, @@ -6158,7 +6158,7 @@ pixel_x = -4; pixel_y = 9 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/combat/survival{ pixel_y = 0; pixel_x = 1 }, diff --git a/_maps/shuttles/pirate/pirate_ember.dmm b/_maps/shuttles/pirate/pirate_ember.dmm index 95f5fee143b0..1ca421d968bc 100644 --- a/_maps/shuttles/pirate/pirate_ember.dmm +++ b/_maps/shuttles/pirate/pirate_ember.dmm @@ -1736,7 +1736,7 @@ "jg" = ( /obj/structure/table_frame/wood, /obj/effect/decal/cleanable/blood/old, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/structure/cable{ icon_state = "2-4" }, @@ -1805,14 +1805,14 @@ /obj/effect/turf_decal/techfloor{ dir = 4 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/combat/survival{ pixel_x = -1 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/combat/survival{ pixel_x = -3; pixel_y = 3 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/combat/survival{ pixel_x = -3; pixel_y = 8 }, @@ -2832,7 +2832,7 @@ dir = 1; color = "#808080" }, -/obj/item/kitchen/knife/combat{ +/obj/item/melee/knife/combat{ pixel_x = 9; pixel_y = -9 }, @@ -9751,12 +9751,12 @@ /obj/machinery/reagentgrinder{ pixel_y = 5 }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitcken{ pixel_x = -6; pixel_y = 6 }, /obj/item/kitchen/rollingpin, -/obj/item/kitchen/knife/butcher{ +/obj/item/melee/knife/butcher{ pixel_x = -1 }, /obj/effect/turf_decal/industrial/warning{ diff --git a/_maps/shuttles/pirate/pirate_libertatia.dmm b/_maps/shuttles/pirate/pirate_libertatia.dmm index e0c0905371ad..e0cb6a56df82 100644 --- a/_maps/shuttles/pirate/pirate_libertatia.dmm +++ b/_maps/shuttles/pirate/pirate_libertatia.dmm @@ -574,11 +574,11 @@ /area/ship/security) "sI" = ( /obj/machinery/firealarm/directional/south, -/obj/item/kitchen/knife/hunting{ +/obj/item/melee/knife/hunting{ pixel_y = 5 }, -/obj/item/kitchen/knife/hunting, -/obj/item/kitchen/knife/hunting{ +/obj/item/melee/knife/hunting, +/obj/item/melee/knife/hunting{ pixel_y = -5 }, /obj/item/storage/belt/security/webbing, diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index caa4b5eb3477..7e5e8e25c06c 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -2018,7 +2018,7 @@ pixel_x = -2; pixel_y = 2 }, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /obj/effect/turf_decal/spline/fancy/wood{ dir = 5 }, @@ -2654,7 +2654,7 @@ /obj/item/clothing/shoes/cowboy/black, /obj/item/clothing/shoes/cowboy, /obj/item/clothing/shoes/combat, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/item/gps{ pixel_x = -7 }, @@ -3643,7 +3643,7 @@ /obj/item/clothing/shoes/cowboy, /obj/item/clothing/shoes/cowboy/black, /obj/item/clothing/shoes/combat, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, /obj/item/gps{ pixel_x = -7 }, diff --git a/_maps/shuttles/solgov/solgov_chronicle.dmm b/_maps/shuttles/solgov/solgov_chronicle.dmm index 9cceb17c5dea..2de164af1656 100644 --- a/_maps/shuttles/solgov/solgov_chronicle.dmm +++ b/_maps/shuttles/solgov/solgov_chronicle.dmm @@ -567,7 +567,7 @@ /obj/item/clothing/suit/hazardvest/solgov, /obj/item/clothing/accessory/armband/cargo, /obj/item/clothing/shoes/workboots, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/item/clothing/gloves/combat, /obj/item/storage/backpack, /obj/machinery/light/small/directional/north, @@ -4440,7 +4440,7 @@ "RX" = ( /obj/structure/table/wood, /obj/item/cutting_board, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/machinery/newscaster/directional/north, /obj/structure/sink{ pixel_y = 20; diff --git a/_maps/shuttles/solgov/solgov_inkwell.dmm b/_maps/shuttles/solgov/solgov_inkwell.dmm index e42972d85eed..f83a38ff635d 100644 --- a/_maps/shuttles/solgov/solgov_inkwell.dmm +++ b/_maps/shuttles/solgov/solgov_inkwell.dmm @@ -2524,7 +2524,7 @@ /area/ship/crew/canteen) "qE" = ( /obj/structure/table/wood, -/obj/item/kitchen/knife/letter_opener{ +/obj/item/melee/knife/kitcken/letter_opener{ pixel_x = -13; icon_state = "letter_opener_b"; pixel_y = 4; @@ -2662,7 +2662,7 @@ dir = 4 }, /obj/item/clothing/glasses/meson/prescription, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/kitcken/letter_opener, /obj/item/clothing/glasses/meson, /obj/machinery/light/directional/north, /obj/item/storage/bag/ore, @@ -3008,7 +3008,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/kitcken/letter_opener, /obj/item/clothing/glasses/meson, /obj/structure/sign/poster/solgov/random{ pixel_y = 32 @@ -3257,7 +3257,7 @@ "uS" = ( /obj/structure/table/wood, /obj/item/cutting_board, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/item/reagent_containers/food/condiment/saltshaker{ pixel_x = -17 }, @@ -3532,7 +3532,7 @@ /obj/item/stamp/solgov, /obj/item/clothing/suit/armor/solgov_trenchcoat, /obj/item/storage/backpack/satchel, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/kitcken/letter_opener, /obj/structure/closet/secure_closet/quartermaster{ populate = 0; anchored = 1; @@ -5322,13 +5322,13 @@ }, /obj/structure/rack, /obj/structure/window/reinforced, -/obj/item/kitchen/knife/letter_opener{ +/obj/item/melee/knife/kitcken/letter_opener{ pixel_x = -2 }, -/obj/item/kitchen/knife/letter_opener{ +/obj/item/melee/knife/kitcken/letter_opener{ pixel_x = 1 }, -/obj/item/kitchen/knife/letter_opener{ +/obj/item/melee/knife/kitcken/letter_opener{ pixel_x = 4 }, /obj/effect/turf_decal/corner/opaque/solgovblue{ @@ -6815,7 +6815,7 @@ }, /obj/effect/turf_decal/industrial/outline/red, /obj/item/clothing/glasses/meson/prescription, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/kitcken/letter_opener, /obj/item/clothing/glasses/meson, /obj/item/storage/bag/ore, /turf/open/floor/plasteel/white, diff --git a/_maps/shuttles/solgov/solgov_paracelsus.dmm b/_maps/shuttles/solgov/solgov_paracelsus.dmm index b4ca4f13cb07..8cc6be2882e3 100644 --- a/_maps/shuttles/solgov/solgov_paracelsus.dmm +++ b/_maps/shuttles/solgov/solgov_paracelsus.dmm @@ -805,7 +805,7 @@ /obj/effect/turf_decal/siding/yellow{ dir = 4 }, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/item/clothing/gloves/combat, /obj/item/clothing/suit/hazardvest/solgov, /obj/item/clothing/head/hardhat/solgov, @@ -1658,7 +1658,7 @@ /obj/effect/turf_decal/siding/yellow{ dir = 4 }, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/item/clothing/gloves/combat, /obj/item/clothing/suit/hazardvest/solgov, /obj/item/clothing/head/hardhat/solgov, @@ -4734,7 +4734,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/structure/table/wood, /obj/item/cutting_board, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/item/kitchen/rollingpin, /turf/open/floor/wood/ebony, /area/ship/crew/canteen) diff --git a/_maps/shuttles/subshuttles/independent_sugarcube.dmm b/_maps/shuttles/subshuttles/independent_sugarcube.dmm index 11a8de916cd6..0504142f55b3 100644 --- a/_maps/shuttles/subshuttles/independent_sugarcube.dmm +++ b/_maps/shuttles/subshuttles/independent_sugarcube.dmm @@ -235,7 +235,7 @@ /obj/effect/decal/cleanable/glass, /obj/item/shard, /obj/item/shard, -/obj/item/kitchen/knife/shiv, +/obj/item/melee/knife/shiv, /turf/open/floor/plating, /area/ship/storage) "B" = ( diff --git a/_maps/shuttles/syndicate/syndicate_aegis.dmm b/_maps/shuttles/syndicate/syndicate_aegis.dmm index f5b0e87a6b1b..37ff556cbf79 100644 --- a/_maps/shuttles/syndicate/syndicate_aegis.dmm +++ b/_maps/shuttles/syndicate/syndicate_aegis.dmm @@ -3352,7 +3352,7 @@ /obj/item/storage/box/donkpockets, /obj/item/storage/box/donkpockets/donkpocketberry, /obj/item/storage/box/donkpockets/donkpocketpizza, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/item/kitchen/rollingpin, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -4736,8 +4736,8 @@ /obj/item/gun/ballistic/automatic/pistol, /obj/item/ammo_box/magazine/m10mm, /obj/item/ammo_box/magazine/m10mm, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/structure/closet/secure_closet/wall{ dir = 8; pixel_x = 32 diff --git a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm index 523a524de9d0..a00f218858e8 100644 --- a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm +++ b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm @@ -551,7 +551,7 @@ dir = 4 }, /obj/item/storage/box/rxglasses/spyglasskit, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/kitcken/letter_opener, /turf/open/floor/plasteel/dark, /area/ship/crew/office) "nF" = ( @@ -1847,7 +1847,7 @@ /obj/item/implanter/stealth, /obj/item/modular_computer/laptop/preset/civilian, /obj/item/clothing/mask/chameleon, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /obj/item/reagent_containers/pill/cyanide, /obj/item/reagent_containers/pill/cyanide, /obj/item/reagent_containers/pill/cyanide, @@ -1953,10 +1953,10 @@ layer = 2.91 }, /obj/effect/turf_decal/box, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/combat/survival, /obj/item/pickaxe, /obj/item/pickaxe, /obj/item/pickaxe, diff --git a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm index 79c693817dda..41a934c2a6b1 100644 --- a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm +++ b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm @@ -139,7 +139,7 @@ dir = 8; pixel_x = 28 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitcken, /obj/item/cutting_board, /obj/item/clothing/under/suit/waiter/syndicate, /obj/item/clothing/suit/hazardvest/donk, @@ -922,7 +922,7 @@ /obj/item/clothing/gloves/color/black, /obj/machinery/light/directional/east, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/mineral/plastitanium, /area/ship/security) "fK" = ( @@ -1850,7 +1850,7 @@ /obj/item/clothing/head/soft/black, /obj/item/clothing/glasses/sunglasses, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/mineral/plastitanium, /area/ship/security) "kJ" = ( @@ -2791,7 +2791,7 @@ /obj/item/clothing/gloves/color/black, /obj/machinery/light/directional/west, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/mineral/plastitanium, /area/ship/security) "pO" = ( @@ -4669,7 +4669,7 @@ /obj/machinery/light/directional/east, /obj/item/clothing/head/beret/black, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/mineral/plastitanium, /area/ship/security) "Bq" = ( diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index 4a6de9bbf07d..657062eb14d1 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -39,7 +39,7 @@ /area/survivalpod) "i" = ( /obj/structure/toilet/secret{ - secret_type = /obj/item/kitchen/knife/combat/survival + secret_type = /obj/item/melee/knife/combat/survival }, /turf/open/floor/pod, /area/survivalpod) diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 79f178820285..7fba623f9454 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -161,7 +161,7 @@ GLOBAL_LIST_INIT(security_vest_allowed, typecacheof(list( /obj/item/gun/energy, /obj/item/gun/grenadelauncher, /obj/item/flamethrower, - /obj/item/kitchen/knife/combat, + /obj/item/melee/knife/combat, /obj/item/melee/baton, /obj/item/melee/classic_baton/telescopic, /obj/item/reagent_containers/spray/pepper, diff --git a/code/datums/components/crafting/recipes/misc.dm b/code/datums/components/crafting/recipes/misc.dm index 4df0521bcff3..1ce670f4df6f 100644 --- a/code/datums/components/crafting/recipes/misc.dm +++ b/code/datums/components/crafting/recipes/misc.dm @@ -141,7 +141,7 @@ name = "Improvised Pickaxe" reqs = list( /obj/item/crowbar = 1, - /obj/item/kitchen/knife = 1, + /obj/item/melee/knife/kitcken = 1, /obj/item/stack/tape = 1) result = /obj/item/pickaxe/improvised category = CAT_MISC diff --git a/code/game/gamemodes/clown_ops/clown_ops.dm b/code/game/gamemodes/clown_ops/clown_ops.dm index 9025f6ec2dcb..71316d657901 100644 --- a/code/game/gamemodes/clown_ops/clown_ops.dm +++ b/code/game/gamemodes/clown_ops/clown_ops.dm @@ -38,7 +38,7 @@ r_pocket = /obj/item/bikehorn id = /obj/item/card/id/syndicate backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\ - /obj/item/kitchen/knife/combat/survival, + /obj/item/melee/knife/combat/survival, /obj/item/dnainjector/clumsymut, //in case you want to be clumsy for the memes /obj/item/storage/box/syndie_kit/clownpins, //for any guns that you get your grubby little clown op mitts on /obj/item/reagent_containers/spray/waterflower/lube) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 992f97ba700b..ae6e3c77b271 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -120,7 +120,7 @@ id = /obj/item/card/id/syndicate belt = /obj/item/gun/ballistic/automatic/pistol backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\ - /obj/item/kitchen/knife/combat/survival) + /obj/item/melee/knife/combat/survival) var/tc = 25 var/command_radio = FALSE @@ -169,7 +169,7 @@ backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\ /obj/item/tank/jetpack/oxygen/harness=1,\ /obj/item/gun/ballistic/automatic/pistol=1,\ - /obj/item/kitchen/knife/combat/survival) + /obj/item/melee/knife/combat/survival) /datum/game_mode/nuclear/generate_credit_text() diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index d763c46e84e9..18101ae23ee9 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -105,9 +105,9 @@ /obj/item/paper/fluff/jobs/prisoner/letter = 1, /obj/item/grenade/smokebomb = 1, /obj/item/flashlight/seclite = 1, - /obj/item/kitchen/knife/shiv = 4, - /obj/item/kitchen/knife/shiv/carrot = 1, - /obj/item/kitchen/knife = 1, + /obj/item/melee/knife/shiv = 4, + /obj/item/melee/knife/shiv/carrot = 1, + /obj/item/melee/knife/kitcken = 1, /obj/item/storage/wallet/random = 1, /obj/item/pda = 1 ) diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index 2732e0d37719..f7ff9c187a9c 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -1,10 +1,7 @@ /* Kitchen tools * Contains: * Fork - * Kitchen knives - * Ritual Knife * Butcher's cleaver - * Combat Knife * Rolling Pins * Plastic Utensils */ @@ -64,176 +61,6 @@ user.visible_message("[user]'s fork snaps into tiny pieces in their hand.") qdel(src) -/obj/item/kitchen/knife - name = "kitchen knife" - icon_state = "knife" - item_state = "knife" - desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come." - pickup_sound = 'sound/items/handling/knife1_pickup.ogg' - drop_sound = 'sound/items/handling/knife3_drop.ogg' - flags_1 = CONDUCT_1 - force = 10 - w_class = WEIGHT_CLASS_SMALL - throwforce = 10 - hitsound = 'sound/weapons/bladeslice.ogg' - throw_speed = 3 - throw_range = 6 - custom_materials = list(/datum/material/iron=12000) - attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - sharpness = IS_SHARP_ACCURATE - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) - item_flags = EYE_STAB - var/bayonet = FALSE //Can this be attached to a gun? - custom_price = 250 - -/obj/item/kitchen/knife/ComponentInitialize() - . = ..() - set_butchering() - -///Adds the butchering component, used to override stats for special cases -/obj/item/kitchen/knife/proc/set_butchering() - AddComponent(/datum/component/butchering, 80 - force, 100, force - 10) //bonus chance increases depending on force - -/obj/item/kitchen/knife/plastic - name = "plastic knife" - icon_state = "plastic_knife" - item_state = "knife" - desc = "A very safe, barely sharp knife made of plastic. Good for cutting food and not much else." - force = 0 - w_class = WEIGHT_CLASS_TINY - throwforce = 0 - throw_range = 5 - custom_materials = list(/datum/material/plastic = 100) - attack_verb = list("prodded", "whiffed","scratched", "poked") - sharpness = IS_SHARP - custom_price = 50 - var/break_chance = 25 - -/obj/item/kitchen/knife/plastic/afterattack(mob/living/carbon/user) - .=..() - if(prob(break_chance)) - user.visible_message("[user]'s knife snaps into tiny pieces in their hand.") - qdel(src) - -/obj/item/kitchen/knife/pizza_cutter - name = "pizza cutter" - icon_state = "pizza_cutter" - desc = "A knife edge bent around a circle using the power of science. Perfect for safely cutting pizza." - force = 1 - w_class = WEIGHT_CLASS_SMALL - throwforce = 1 - throw_range = 6 - custom_materials = list(/datum/material/iron=4000) - attack_verb = list("prodded", "whiffed","rolled", "poked") - sharpness = IS_SHARP - -/obj/item/kitchen/knife/ritual - name = "ritual knife" - desc = "The unearthly energies that once powered this blade are now dormant." - icon = 'icons/obj/wizard.dmi' - icon_state = "render" - lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - w_class = WEIGHT_CLASS_NORMAL - -/obj/item/kitchen/knife/bloodletter - name = "bloodletter" - desc = "An occult looking dagger that is cold to the touch. Somehow, the flawless orb on the pommel is made entirely of liquid blood." - icon = 'icons/obj/ice_moon/artifacts.dmi' - icon_state = "bloodletter" - w_class = WEIGHT_CLASS_NORMAL - var/bleed_stacks_per_hit = 3 - -/obj/item/kitchen/knife/bloodletter/attack(mob/living/M, mob/living/carbon/user) - . =..() - if(istype(M) && (M.mob_biotypes & MOB_ORGANIC)) - var/datum/status_effect/stacking/saw_bleed/bloodletting/B = M.has_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting) - if(!B) - M.apply_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting, bleed_stacks_per_hit) - else - B.add_stacks(bleed_stacks_per_hit) - -/obj/item/kitchen/knife/butcher - name = "butcher's cleaver" - icon_state = "butch" - item_state = "butch" - desc = "A huge thing used for chopping and chopping up meat." - flags_1 = CONDUCT_1 - force = 15 - throwforce = 10 - custom_materials = list(/datum/material/iron=18000) - attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - w_class = WEIGHT_CLASS_NORMAL - custom_price = 600 - -/obj/item/kitchen/knife/hunting - name = "hunting knife" - desc = "Despite its name, it's mainly used for cutting meat from dead prey rather than actual hunting." - item_state = "huntingknife" - icon_state = "huntingknife" - -/obj/item/kitchen/knife/hunting/set_butchering() - AddComponent(/datum/component/butchering, 80 - force, 100, force + 10) - -/obj/item/kitchen/knife/combat - name = "combat knife" - icon_state = "buckknife" - desc = "A military combat utility survival knife." - embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) - force = 20 - throwforce = 20 - attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") - bayonet = TRUE - -/obj/item/kitchen/knife/combat/survival - name = "survival knife" - icon_state = "survivalknife" - embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) - desc = "A hunting grade survival knife." - force = 15 - throwforce = 15 - bayonet = TRUE - -/obj/item/kitchen/knife/combat/bone - name = "bone dagger" - item_state = "bone_dagger" - icon_state = "bone_dagger" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - desc = "A sharpened bone. The bare minimum in survival." - embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) - force = 15 - throwforce = 15 - custom_materials = null - -/obj/item/kitchen/knife/combat/cyborg - name = "cyborg knife" - icon = 'icons/obj/items_cyborg.dmi' - icon_state = "knife_cyborg" - desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable." - -/obj/item/kitchen/knife/shiv - name = "glass shiv" - icon = 'icons/obj/shards.dmi' - icon_state = "shiv" - item_state = "shiv" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - desc = "A makeshift glass shiv." - force = 8 - throwforce = 12 - attack_verb = list("shanked", "shivved") - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - custom_materials = list(/datum/material/glass=400) - -/obj/item/kitchen/knife/shiv/carrot - name = "carrot shiv" - icon_state = "carrotshiv" - item_state = "carrotshiv" - icon = 'icons/obj/kitchen.dmi' - desc = "Unlike other carrots, you should probably keep this far away from your eyes." - custom_materials = null - /obj/item/kitchen/rollingpin name = "rolling pin" desc = "Used to knock out the Bartender." @@ -247,8 +74,6 @@ attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") custom_price = 200 -/* Trays moved to /obj/item/storage/bag */ - /obj/item/kitchen/spoon/plastic name = "plastic spoon" desc = "Just be careful your food doesn't melt the spoon first." @@ -259,9 +84,3 @@ custom_materials = list(/datum/material/plastic=120) custom_price = 50 var/break_chance = 25 - -/obj/item/kitchen/knife/plastic/afterattack(mob/living/carbon/user) - .=..() - if(prob(break_chance)) - user.visible_message("[user]'s spoon snaps into tiny pieces in their hand.") - qdel(src) diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm new file mode 100644 index 000000000000..67dfa5de1391 --- /dev/null +++ b/code/game/objects/items/melee/knife.dm @@ -0,0 +1,154 @@ +/obj/item/melee/knife + icon_state = "knife" + item_state = "knife" + icon = 'icons/obj/kitchen.dmi' + lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' + pickup_sound = 'sound/items/handling/knife1_pickup.ogg' + drop_sound = 'sound/items/handling/knife3_drop.ogg' + flags_1 = CONDUCT_1 + force = 10 + w_class = WEIGHT_CLASS_SMALL + throwforce = 10 + hitsound = 'sound/weapons/bladeslice.ogg' + throw_speed = 3 + throw_range = 6 + custom_materials = list(/datum/material/iron=12000) + attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + sharpness = IS_SHARP_ACCURATE + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + item_flags = EYE_STAB + var/bayonet = FALSE //Can this be attached to a gun? + +/obj/item/melee/knife/ComponentInitialize() + . = ..() + set_butchering() + +///Adds the butchering component, used to override stats for special cases +/obj/item/melee/knife/proc/set_butchering() + AddComponent(/datum/component/butchering, 80 - force, 100, force - 10) //bonus chance increases depending on force + +/obj/item/melee/knife/kitcken + name = "kitchen knife" + desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come." + +/obj/item/melee/knife/plastic + name = "plastic knife" + icon_state = "plastic_knife" + item_state = "knife" + desc = "A very safe, barely sharp knife made of plastic. Good for cutting food and not much else." + force = 0 + w_class = WEIGHT_CLASS_TINY + throwforce = 0 + throw_range = 5 + custom_materials = list(/datum/material/plastic = 100) + attack_verb = list("prodded", "whiffed","scratched", "poked") + sharpness = IS_SHARP + custom_price = 50 + var/break_chance = 25 + +/obj/item/melee/knife/plastic/afterattack(mob/living/carbon/user) + .=..() + if(prob(break_chance)) + user.visible_message("[user]'s spoon snaps into tiny pieces in their hand.") + qdel(src) + + +/obj/item/melee/knife/plastic/afterattack(mob/living/carbon/user) + .=..() + if(prob(break_chance)) + user.visible_message("[user]'s knife snaps into tiny pieces in their hand.") + qdel(src) + +/obj/item/melee/knife/pizza_cutter + name = "pizza cutter" + icon_state = "pizza_cutter" + desc = "A knife edge bent around a circle using the power of science. Perfect for safely cutting pizza." + force = 1 + w_class = WEIGHT_CLASS_SMALL + throwforce = 1 + throw_range = 6 + custom_materials = list(/datum/material/iron=4000) + attack_verb = list("prodded", "whiffed","rolled", "poked") + sharpness = IS_SHARP + +/obj/item/melee/knife/butcher + name = "butcher's cleaver" + icon_state = "butch" + item_state = "butch" + desc = "A huge thing used for chopping and chopping up meat." + flags_1 = CONDUCT_1 + force = 15 + throwforce = 10 + custom_materials = list(/datum/material/iron=18000) + attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + w_class = WEIGHT_CLASS_NORMAL + custom_price = 600 + +/obj/item/melee/knife/hunting + name = "hunting knife" + desc = "Despite its name, it's mainly used for cutting meat from dead prey rather than actual hunting." + item_state = "huntingknife" + icon_state = "huntingknife" + +/obj/item/melee/knife/hunting/set_butchering() + AddComponent(/datum/component/butchering, 80 - force, 100, force + 10) + +/obj/item/melee/knife/combat + name = "combat knife" + icon_state = "buckknife" + desc = "A military combat utility survival knife." + embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) + force = 20 + throwforce = 20 + attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") + bayonet = TRUE + +/obj/item/melee/knife/combat/survival + name = "survival knife" + icon_state = "survivalknife" + embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) + desc = "A hunting grade survival knife." + force = 15 + throwforce = 15 + bayonet = TRUE + +/obj/item/melee/knife/combat/bone + name = "bone dagger" + item_state = "bone_dagger" + icon_state = "bone_dagger" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + desc = "A sharpened bone. The bare minimum in survival." + embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) + force = 15 + throwforce = 15 + custom_materials = null + +/obj/item/melee/knife/combat/cyborg + name = "cyborg knife" + icon = 'icons/obj/items_cyborg.dmi' + icon_state = "knife_cyborg" + desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable." + +/obj/item/melee/knife/shiv + name = "glass shiv" + icon = 'icons/obj/shards.dmi' + icon_state = "shiv" + item_state = "shiv" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + desc = "A makeshift glass shiv." + force = 8 + throwforce = 12 + attack_verb = list("shanked", "shivved") + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + custom_materials = list(/datum/material/glass=400) + +/obj/item/melee/knife/shiv/carrot + name = "carrot shiv" + icon_state = "carrotshiv" + item_state = "carrotshiv" + icon = 'icons/obj/kitchen.dmi' + desc = "Unlike other carrots, you should probably keep this far away from your eyes." + custom_materials = null diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index f56ad32e4670..a6040f390534 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -96,7 +96,7 @@ overlay.appearance_flags = RESET_COLOR add_overlay(overlay) -/obj/item/kitchen/knife/letter_opener +/obj/item/melee/knife/kitcken/letter_opener name = "letter opener" icon = 'icons/obj/items.dmi' icon_state = "letter_opener" diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index ef6861c80d5b..d6cc0801c5fe 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -116,7 +116,7 @@ /obj/item/storage/box/hero/carphunter/PopulateContents() new /obj/item/clothing/suit/space/hardsuit/carp/old(src) new /obj/item/clothing/mask/gas/carp(src) - new /obj/item/kitchen/knife/hunting(src) + new /obj/item/melee/knife/hunting(src) new /obj/item/storage/box/papersack/meat(src) new /obj/item/fishing_rod(src) new /obj/item/fishing_line(src) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index da08c87a5a35..23a8c8d5e5f0 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -339,7 +339,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( var/obj/item/stack/sheet/cotton/cloth/C = I to_chat(user, "You begin to wrap the [C] around the [src]...") if(do_after(user, 35, target = src)) - var/obj/item/kitchen/knife/shiv/S = new /obj/item/kitchen/knife/shiv + var/obj/item/melee/knife/shiv/S = new /obj/item/melee/knife/shiv C.use(1) to_chat(user, "You wrap the [C] around the [src] forming a makeshift weapon.") remove_item_from_storage(src) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 45756508e22f..21db3463b5f6 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -682,7 +682,7 @@ GLOBAL_LIST_INIT(bone_recipes, list( \ new /datum/stack_recipe("mortar", /obj/item/reagent_containers/glass/mortar/bone, 3), \ new /datum/stack_recipe("bone armor", /obj/item/clothing/suit/armor/bone, 6), \ new /datum/stack_recipe("skull helmet", /obj/item/clothing/head/helmet/skull, 4), \ - new /datum/stack_recipe("bone dagger", /obj/item/kitchen/knife/combat/bone, 2), \ + new /datum/stack_recipe("bone dagger", /obj/item/melee/knife/combat/bone, 2), \ new /datum/stack_recipe("club", /obj/item/melee/baseball_bat/bone, 6))) /obj/item/stack/sheet/bone name = "bones" diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index afe31de507e5..8256f08efed9 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -272,7 +272,7 @@ /obj/item/ammo_casing/shotgun, /obj/item/ammo_box, /obj/item/reagent_containers/food/snacks/donut, - /obj/item/kitchen/knife/combat, + /obj/item/melee/knife/combat, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic, /obj/item/radio, @@ -347,7 +347,7 @@ /obj/item/storage/fancy/cigarettes, /obj/item/reagent_containers/food/drinks/bottle, /obj/item/stack/medical, - /obj/item/kitchen/knife, + /obj/item/melee/knife/kitcken, /obj/item/reagent_containers/hypospray, /obj/item/gps, /obj/item/storage/bag/ore, diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 112218650f85..e4beddbebb53 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -225,7 +225,7 @@ gloves = /obj/item/clothing/gloves/combat back = /obj/item/storage/backpack l_pocket = /obj/item/gun/ballistic/automatic/pistol - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival belt = /obj/item/storage/belt/military/assault id = /obj/item/card/id/syndicate_command/crew_id implants = list(/obj/item/implant/weapons_auth) @@ -240,7 +240,7 @@ gloves = /obj/item/clothing/gloves/combat back = /obj/item/storage/backpack l_pocket = /obj/item/gun/ballistic/automatic/pistol/APS - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival belt = /obj/item/storage/belt/military/assault id = /obj/item/card/id/syndicate_command/captain_id backpack_contents = list(/obj/item/documents/syndicate/red, /obj/item/paper/fluff/ruins/forgottenship/password) diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm index 7ad048734cc3..c2d699e5e25f 100644 --- a/code/game/objects/structures/icemoon/cave_entrance.dm +++ b/code/game/objects/structures/icemoon/cave_entrance.dm @@ -859,7 +859,6 @@ GLOBAL_LIST_INIT(ore_probability, list( if(16)//the backroom freezer visible_message("The faint hallogen glow of a faraway kitchen greets you.") if(prob(45)) - new /obj/item/kitchen/knife/bloodletter(loc) new /mob/living/simple_animal/hostile/killertomato(loc) if(prob(55)) new /obj/item/clothing/gloves/butchering(loc) @@ -880,7 +879,7 @@ GLOBAL_LIST_INIT(ore_probability, list( new /obj/item/reagent_containers/food/snacks/burger/roburgerbig(loc) new /mob/living/simple_animal/hostile/killertomato(loc) if(prob(35)) - new /obj/item/kitchen/knife/butcher(loc) + new /obj/item/melee/knife/butcher(loc) new /mob/living/simple_animal/hostile/killertomato(loc) if(prob(35)) new /obj/item/flamethrower/full(loc) diff --git a/code/modules/antagonists/blood_contract/blood_contract.dm b/code/modules/antagonists/blood_contract/blood_contract.dm index edd8aba60422..c56ef47db93a 100644 --- a/code/modules/antagonists/blood_contract/blood_contract.dm +++ b/code/modules/antagonists/blood_contract/blood_contract.dm @@ -36,6 +36,6 @@ continue to_chat(P, "You have an overwhelming desire to kill [H]. [H.p_theyve(TRUE)] been marked red! Whoever [H.p_they()] [H.p_were()], friend or foe, go kill [H.p_them()]!") - var/obj/item/I = new /obj/item/kitchen/knife/butcher(get_turf(P)) + var/obj/item/I = new /obj/item/melee/knife/butcher(get_turf(P)) P.put_in_hands(I, del_on_fail=TRUE) QDEL_IN(I, duration) diff --git a/code/modules/antagonists/fugitive/fugitive_outfits.dm b/code/modules/antagonists/fugitive/fugitive_outfits.dm index df784813df40..90724bd9607c 100644 --- a/code/modules/antagonists/fugitive/fugitive_outfits.dm +++ b/code/modules/antagonists/fugitive/fugitive_outfits.dm @@ -2,7 +2,7 @@ name = "Prison Escapee" uniform = /obj/item/clothing/under/rank/prisoner shoes = /obj/item/clothing/shoes/sneakers/orange - r_pocket = /obj/item/kitchen/knife/shiv + r_pocket = /obj/item/melee/knife/shiv /datum/outfit/prisoner/post_equip(mob/living/carbon/human/H, visualsOnly=FALSE) if(visualsOnly) diff --git a/code/modules/cargo/bounties/mining.dm b/code/modules/cargo/bounties/mining.dm index 36425edc2e72..d7ccd8d39018 100644 --- a/code/modules/cargo/bounties/mining.dm +++ b/code/modules/cargo/bounties/mining.dm @@ -48,7 +48,7 @@ description = "Central Command's canteen is undergoing budget cuts. Ship over some bone daggers so our Chef can keep working." reward = 5000 required_count = 3 - wanted_types = list(/obj/item/kitchen/knife/combat/bone) + wanted_types = list(/obj/item/melee/knife/combat/bone) /datum/bounty/item/mining/polypore_mushroom name = "Mushroom Bowl" diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm index e8d574b3d395..3582a5a99328 100644 --- a/code/modules/cargo/exports/lavaland.dm +++ b/code/modules/cargo/exports/lavaland.dm @@ -22,7 +22,7 @@ /obj/item/ship_in_a_bottle, /obj/item/clothing/shoes/clown_shoes/banana_shoes, /obj/item/gun/magic/staff/honk, - /obj/item/kitchen/knife/envy, + /obj/item/melee/knife/kitcken/envy, /obj/item/gun/ballistic/revolver/russian/soul, /obj/item/veilrender/vealrender, /obj/item/clothing/suit/armor/ascetic) diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm index bbe73991f7ef..c6ee67ed091e 100644 --- a/code/modules/cargo/exports/weapons.dm +++ b/code/modules/cargo/exports/weapons.dm @@ -13,7 +13,7 @@ /datum/export/weapon/knife cost = 100 unit_name = "combat knife" - export_types = list(/obj/item/kitchen/knife/combat) + export_types = list(/obj/item/melee/knife/combat) /datum/export/weapon/taser diff --git a/code/modules/cargo/packs/sec_supply.dm b/code/modules/cargo/packs/sec_supply.dm index 52a35d876937..af965ee9e029 100644 --- a/code/modules/cargo/packs/sec_supply.dm +++ b/code/modules/cargo/packs/sec_supply.dm @@ -67,9 +67,9 @@ name = "Survival Knives Crate" desc = "Contains three sharpened survival knives. Each knife guaranteed to fit snugly inside any galactic-standard boot." cost = 500 - contains = list(/obj/item/kitchen/knife/combat/survival, - /obj/item/kitchen/knife/combat/survival, - /obj/item/kitchen/knife/combat/survival) + contains = list(/obj/item/melee/knife/combat/survival, + /obj/item/melee/knife/combat/survival, + /obj/item/melee/knife/combat/survival) crate_name = "combat knife crate" /datum/supply_pack/sec_supply/machete diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm index b5349c578bdb..5e0ae94b8ad2 100644 --- a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm +++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm @@ -107,7 +107,7 @@ /obj/item/gun/energy/e_gun/mini)) if("Melee") r_hand = pickweight(list( - /obj/item/kitchen/knife = 15, + /obj/item/melee/knife/kitcken = 15, /obj/item/melee/baseball_bat = 10, /obj/item/melee/cleric_mace = 7, /obj/item/roastingstick = 2, @@ -127,7 +127,7 @@ suit_store = /obj/item/gun/ballistic/revolver belt = /obj/item/storage/belt/military/assault - backpack_contents = list(/obj/item/ammo_box/a357=3, /obj/item/binoculars=1, /obj/item/kitchen/knife/combat/survival) + backpack_contents = list(/obj/item/ammo_box/a357=3, /obj/item/binoculars=1, /obj/item/melee/knife/combat/survival) /datum/outfit/job/frontiersmen/ert/medic name = "ERT - Frontiersman Medic" diff --git a/code/modules/clothing/outfits/ert/inteq_ert.dm b/code/modules/clothing/outfits/ert/inteq_ert.dm index b3fc0c61970c..9fd796d04516 100644 --- a/code/modules/clothing/outfits/ert/inteq_ert.dm +++ b/code/modules/clothing/outfits/ert/inteq_ert.dm @@ -15,7 +15,7 @@ belt = /obj/item/storage/belt/security/webbing/inteq/skm back = /obj/item/storage/backpack/fireproof - l_pocket = /obj/item/kitchen/knife/combat + l_pocket = /obj/item/melee/knife/combat r_pocket = /obj/item/flashlight/seclite backpack_contents = list(/obj/item/radio=1) diff --git a/code/modules/clothing/outfits/ert/minutemen_ert.dm b/code/modules/clothing/outfits/ert/minutemen_ert.dm index bc440d3bc612..067464d1ca67 100644 --- a/code/modules/clothing/outfits/ert/minutemen_ert.dm +++ b/code/modules/clothing/outfits/ert/minutemen_ert.dm @@ -9,7 +9,7 @@ head = /obj/item/clothing/head/helmet/riot/clip belt = /obj/item/storage/belt/military/clip/cm15 glasses = /obj/item/clothing/glasses/hud/health/night - r_pocket = /obj/item/kitchen/knife/combat + r_pocket = /obj/item/melee/knife/combat l_pocket = /obj/item/extinguisher/mini backpack_contents = list( diff --git a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm index 36445abcdb5a..fc1ac7c47a97 100644 --- a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm +++ b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm @@ -287,7 +287,7 @@ ) belt = /obj/item/storage/belt/military/assault glasses = /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch - l_pocket = /obj/item/kitchen/knife/combat + l_pocket = /obj/item/melee/knife/combat r_pocket = /obj/item/tank/internals/emergency_oxygen/double uniform = /obj/item/clothing/under/rank/security/officer/military accessory = /obj/item/clothing/accessory/holster/marine @@ -399,7 +399,7 @@ box = /obj/item/storage/box/survival/security l_pocket = /obj/item/restraints/handcuffs - r_pocket = /obj/item/kitchen/knife/combat + r_pocket = /obj/item/melee/knife/combat backpack_contents = list(/obj/item/radio=1, /obj/item/stock_parts/cell/gun/upgraded=2, /obj/item/screwdriver=1) diff --git a/code/modules/clothing/outfits/ert/syndicate_ert.dm b/code/modules/clothing/outfits/ert/syndicate_ert.dm index 472983e890db..f9d68009fa1e 100644 --- a/code/modules/clothing/outfits/ert/syndicate_ert.dm +++ b/code/modules/clothing/outfits/ert/syndicate_ert.dm @@ -14,7 +14,7 @@ back = /obj/item/storage/backpack/security belt = /obj/item/storage/belt/military/c20r - r_pocket = /obj/item/kitchen/knife/combat + r_pocket = /obj/item/melee/knife/combat l_pocket = /obj/item/grenade/frag implants = list(/obj/item/implant/weapons_auth) @@ -75,7 +75,7 @@ belt = /obj/item/storage/belt/security suit_store = /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival l_pocket = /obj/item/binoculars backpack_contents = list(/obj/item/ammo_box/magazine/sniper_rounds=2, /obj/item/radio=1) @@ -133,7 +133,7 @@ head = /obj/item/clothing/head/soft/cybersun/medical belt = /obj/item/storage/belt/medical/webbing/paramedic back = /obj/item/storage/backpack/ert/medical - l_pocket = /obj/item/kitchen/knife/combat/survival + l_pocket = /obj/item/melee/knife/combat/survival r_pocket = /obj/item/pinpointer/crew accessory = /obj/item/clothing/accessory/holster/marine diff --git a/code/modules/clothing/outfits/factions/frontiersmen.dm b/code/modules/clothing/outfits/factions/frontiersmen.dm index c30de3d40432..7ce165b75112 100644 --- a/code/modules/clothing/outfits/factions/frontiersmen.dm +++ b/code/modules/clothing/outfits/factions/frontiersmen.dm @@ -140,7 +140,7 @@ shoes = /obj/item/clothing/shoes/cowboy/black head = /obj/item/clothing/head/beret/sec/frontier/officer gloves = /obj/item/clothing/gloves/combat - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival // Head of Security /datum/outfit/job/frontiersmen/hos @@ -189,5 +189,5 @@ accessory = /obj/item/clothing/accessory/armband/med uniform = /obj/item/clothing/under/rank/security/officer/frontier glasses = /obj/item/clothing/glasses/hud/health/prescription - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival backpack_contents = list(/obj/item/storage/firstaid/medical) diff --git a/code/modules/clothing/outfits/factions/independent.dm b/code/modules/clothing/outfits/factions/independent.dm index eeb6a1d8c7f3..30f5711e76f4 100644 --- a/code/modules/clothing/outfits/factions/independent.dm +++ b/code/modules/clothing/outfits/factions/independent.dm @@ -42,7 +42,7 @@ uniform = /obj/item/clothing/under/utility head = /obj/item/clothing/head/soft/black shoes = /obj/item/clothing/shoes/combat - l_pocket = /obj/item/kitchen/knife/combat/survival + l_pocket = /obj/item/melee/knife/combat/survival gloves = /obj/item/clothing/gloves/combat implants = list(/obj/item/implant/radio) @@ -134,7 +134,7 @@ suit = /obj/item/clothing/suit/armor/vest/marine/medium head = /obj/item/clothing/head/soft/black shoes = /obj/item/clothing/shoes/combat - l_pocket = /obj/item/kitchen/knife/combat + l_pocket = /obj/item/melee/knife/combat implants = list(/obj/item/implant/radio) accessory = null @@ -275,7 +275,7 @@ uniform = /obj/item/clothing/under/utility head = /obj/item/clothing/head/soft/black shoes = /obj/item/clothing/shoes/combat - l_pocket = /obj/item/kitchen/knife/combat + l_pocket = /obj/item/melee/knife/combat backpack_contents = list(/obj/item/melee/baton/loaded=1) @@ -327,7 +327,7 @@ uniform = /obj/item/clothing/under/utility head = /obj/item/clothing/head/soft/black shoes = /obj/item/clothing/shoes/combat - l_pocket = /obj/item/kitchen/knife/combat/survival + l_pocket = /obj/item/melee/knife/combat/survival gloves = /obj/item/clothing/gloves/combat implants = list(/obj/item/implant/radio) @@ -547,7 +547,7 @@ l_pocket = /obj/item/storage/bag/ore backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/kitchen/knife/combat/survival=1,\ + /obj/item/melee/knife/combat/survival=1,\ /obj/item/stack/marker_beacon/ten=1,\ /obj/item/radio/weather_monitor=1) diff --git a/code/modules/clothing/outfits/factions/nanotrasen.dm b/code/modules/clothing/outfits/factions/nanotrasen.dm index f0fdb0e4ac1d..c52994d3f00c 100644 --- a/code/modules/clothing/outfits/factions/nanotrasen.dm +++ b/code/modules/clothing/outfits/factions/nanotrasen.dm @@ -226,7 +226,7 @@ backpack = /obj/item/storage/backpack/ert/security belt = /obj/item/storage/belt/military id = /obj/item/card/id/ert/security - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) /datum/outfit/job/nanotrasen/security/ert/engi @@ -237,7 +237,7 @@ backpack = /obj/item/storage/backpack/ert/engineer belt = /obj/item/storage/belt/utility/full/ert id = /obj/item/card/id/ert/security - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) accessory = /obj/item/clothing/accessory/armband/engine glasses = /obj/item/clothing/glasses/hud/diagnostic/sunglasses @@ -250,7 +250,7 @@ backpack = /obj/item/storage/backpack/ert/medical belt = /obj/item/storage/belt/medical/webbing/paramedic id = /obj/item/card/id/ert/security - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) accessory = /obj/item/clothing/accessory/armband/med glasses = /obj/item/clothing/glasses/hud/health/night @@ -541,7 +541,7 @@ r_pocket = /obj/item/storage/bag/ore backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/kitchen/knife/combat/survival=1,\ + /obj/item/melee/knife/combat/survival=1,\ /obj/item/stack/marker_beacon/ten=1,\ /obj/item/radio/weather_monitor=1) diff --git a/code/modules/clothing/outfits/factions/solgov.dm b/code/modules/clothing/outfits/factions/solgov.dm index 972b863bbbda..617f023fcb07 100644 --- a/code/modules/clothing/outfits/factions/solgov.dm +++ b/code/modules/clothing/outfits/factions/solgov.dm @@ -101,7 +101,7 @@ implants = list(/obj/item/implant/mindshield) backpack_contents = list( - /obj/item/kitchen/knife/letter_opener = 1 + /obj/item/melee/knife/kitcken/letter_opener = 1 ) /datum/outfit/job/solgov/overseer @@ -159,7 +159,7 @@ r_pocket = /obj/item/storage/bag/ore //causes issues if spawned in backpack backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/kitchen/knife/combat/survival=1,\ + /obj/item/melee/knife/combat/survival=1,\ /obj/item/stack/marker_beacon/ten=1) backpack = /obj/item/storage/backpack/explorer diff --git a/code/modules/clothing/outfits/factions/syndicate.dm b/code/modules/clothing/outfits/factions/syndicate.dm index 11f822c4b96c..705714013366 100644 --- a/code/modules/clothing/outfits/factions/syndicate.dm +++ b/code/modules/clothing/outfits/factions/syndicate.dm @@ -477,7 +477,7 @@ head = /obj/item/clothing/head/HoS/beret/syndicate gloves = /obj/item/clothing/gloves/color/white id = /obj/item/card/id/syndicate_command/crew_id - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival glasses = /obj/item/clothing/glasses/hud/health backpack_contents = list(/obj/item/storage/box/ids=1,\ /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) @@ -493,7 +493,7 @@ head = /obj/item/clothing/head/HoS/cybersun gloves = /obj/item/clothing/gloves/combat id = /obj/item/card/id/syndicate_command/crew_id - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival glasses = /obj/item/clothing/glasses/sunglasses /datum/outfit/job/syndicate/head_of_personnel/suns @@ -651,7 +651,7 @@ uniform = /obj/item/clothing/under/syndicate/gorlex glasses = /obj/item/clothing/glasses/hud/health/prescription - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival back = /obj/item/storage/backpack/duffelbag/syndie/med id = /obj/item/card/id/syndicate_command/crew_id backpack_contents = list(/obj/item/storage/box/survival/syndie=1, /obj/item/storage/firstaid/medical,) @@ -826,7 +826,7 @@ job_icon = "securityofficer" uniform = /obj/item/clothing/under/syndicate - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/combat/survival belt = /obj/item/storage/belt/military back = /obj/item/storage/backpack suit = /obj/item/clothing/suit/armor/vest @@ -909,7 +909,7 @@ r_pocket = /obj/item/storage/bag/ore backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/kitchen/knife/combat/survival=1,\ + /obj/item/melee/knife/combat/survival=1,\ /obj/item/mining_voucher=1,\ /obj/item/stack/marker_beacon/ten=1) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index e999caf7624b..32e71e601320 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -36,7 +36,7 @@ Contains: desc = "A prototype designed to replace the ageing MK.II SWAT suit. Based on the streamlined MK.II model, the traditional ceramic and graphene plate construction was replaced with plasteel, allowing superior armor against most threats. There's room for some kind of energy projection device on the back." icon_state = "deathsquad" item_state = "swat_suit" - allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat) + allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/knife/combat) armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 60, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -50,7 +50,7 @@ Contains: desc = "A tactical space suit first developed in a joint effort by the defunct IS-ERI and Nanotrasen in 20XX for military space operations. A tried and true workhorse, it is very difficult to move in but offers robust protection against all threats!" icon_state = "heavy" item_state = "swat_suit" - allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat) + allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/knife/combat) armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 40, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100) strip_delay = 120 resistance_flags = FIRE_PROOF | ACID_PROOF @@ -393,7 +393,7 @@ Contains: armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 10, "fire" = 100, "acid" = 100) max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/melee/knife/kitcken, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw) /obj/item/clothing/suit/space/hardsuit/berserker/Initialize() @@ -524,7 +524,7 @@ Contains: desc = "A custom version of the MK.II SWAT suit, modified to look rugged and tough. Works as a space suit, if you can find a helmet." icon_state = "hunter" item_state = "swat_suit" - allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat) + allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/knife/combat) armor = list("melee" = 60, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) strip_delay = 130 resistance_flags = FIRE_PROOF | ACID_PROOF diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index bce5d5bd2445..1fa3bcea34e2 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -71,7 +71,7 @@ name = "goliath cloak" icon_state = "goliath_cloak" desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits." - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat/bone, /obj/item/kitchen/knife/combat/survival) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/melee/knife/combat/bone, /obj/item/melee/knife/combat/survival) armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 35, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath body_parts_covered = CHEST|GROIN|ARMS diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm index 97773e39f277..d3f847d7e292 100644 --- a/code/modules/hydroponics/grown/root.dm +++ b/code/modules/hydroponics/grown/root.dm @@ -28,7 +28,7 @@ /obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params) if(I.get_sharpness()) to_chat(user, "You sharpen the carrot into a shiv with [I].") - var/obj/item/kitchen/knife/shiv/carrot/Shiv = new /obj/item/kitchen/knife/shiv/carrot + var/obj/item/melee/knife/shiv/carrot/Shiv = new /obj/item/melee/knife/shiv/carrot remove_item_from_storage(user) qdel(src) user.put_in_hands(Shiv) diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 2cf67b9bbf70..728514a440c4 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -26,7 +26,7 @@ r_pocket = /obj/item/storage/bag/ore //causes issues if spawned in backpack backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/kitchen/knife/combat/survival=1,\ + /obj/item/melee/knife/combat/survival=1,\ /obj/item/stack/marker_beacon/ten=1,\ /obj/item/radio/weather_monitor=1) diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 55d33ee80d20..7e3fb6c7743f 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -319,7 +319,7 @@ scanner.computer.inventory.Add(src) to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'") - else if(istype(I, /obj/item/kitchen/knife) || I.tool_behaviour == TOOL_WIRECUTTER) + else if(istype(I, /obj/item/melee/knife/kitcken) || I.tool_behaviour == TOOL_WIRECUTTER) to_chat(user, "You begin to carve out [title]...") if(do_after(user, 30, target = src)) to_chat(user, "You carve out the pages from [title]! You didn't want to read it anyway.") diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index e9ac7662edab..6108ce82c7ca 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -280,7 +280,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) //cake + knife to cut it! if(length(table)) var/turf/food_turf = get_turf(pick(table)) - new /obj/item/kitchen/knife(food_turf) + new /obj/item/melee/knife/kitcken(food_turf) var/obj/item/reagent_containers/food/snacks/store/cake/birthday/iancake = new(food_turf) iancake.desc = "Happy birthday, Ian!" diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index f9563cc078eb..35aa4fb2a659 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -419,7 +419,7 @@ /obj/item/seeds/lavaland/puce/attackby(obj/item/item, mob/user, params) . = ..() //anyone intending to add more garnishes using this method should componentize this - if(!istype(item, /obj/item/kitchen/knife)) + if(!istype(item, /obj/item/melee/knife/kitcken)) return playsound(src, 'sound/effects/glassbr1.ogg', 50, TRUE, -1) to_chat(user, "You start breaking [src] up into shards...") diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 78b527c58ca4..75317c5ed29a 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -81,7 +81,7 @@ if(28) new /obj/item/clothing/suit/armor/ascetic(src) if(29) - new /obj/item/kitchen/knife/envy(src) + new /obj/item/melee/knife/kitcken/envy(src) /obj/structure/closet/crate/necropolis/tendril/greater desc = "It's watching you wearily. It seems terribly bloated." @@ -156,7 +156,7 @@ if(28) new /obj/item/clothing/suit/armor/ascetic(src) if(29) - new /obj/item/kitchen/knife/envy(src) + new /obj/item/melee/knife/kitcken/envy(src) //KA modkit design discs /obj/item/disk/design_disk/modkit_disc diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index c84d61ab7cf2..70c3d5a0a80a 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -121,6 +121,6 @@ new /obj/item/clothing/suit/hooded/explorer(src) new /obj/item/clothing/mask/gas/explorer(src) new /obj/item/gun/energy/kinetic_accelerator(src) - new /obj/item/kitchen/knife/combat/survival(src) + new /obj/item/melee/knife/combat/survival(src) new /obj/item/flashlight/seclite(src) new /obj/item/clothing/gloves/explorer(src) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 5229967f0374..5f893bce5dd3 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -170,7 +170,7 @@ to_chat(user, "Please close the access panel before locking it.") else to_chat(user, "\The [src] doesn't seem to respect your authority.") - else if(istype(W, /obj/item/kitchen/knife) && user.a_intent != INTENT_HARM) + else if(istype(W, /obj/item/melee/knife/kitcken) && user.a_intent != INTENT_HARM) to_chat(user, "You start attaching \the [W] to \the [src]...") if(do_after(user, 25, target = src)) deputize(W, user) diff --git a/code/modules/mob/living/simple_animal/hostile/frontiersman.dm b/code/modules/mob/living/simple_animal/hostile/frontiersman.dm index 213cd8c2b822..40a2b8540419 100644 --- a/code/modules/mob/living/simple_animal/hostile/frontiersman.dm +++ b/code/modules/mob/living/simple_animal/hostile/frontiersman.dm @@ -20,7 +20,7 @@ attack_sound = 'sound/weapons/punch1.ogg' a_intent = INTENT_HARM loot = list(/obj/effect/mob_spawn/human/corpse/frontier, - /obj/item/kitchen/knife) + /obj/item/melee/knife/kitcken) atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 15 faction = list(FACTION_ANTAG_FRONTIERSMEN) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 418faac20fb8..f48cc767b702 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -493,7 +493,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, + /obj/item/melee/knife/combat/survival = 3, /obj/item/flashlight/seclite=3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -512,7 +512,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, + /obj/item/melee/knife/combat/survival = 3, /obj/item/flashlight/seclite = 3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -531,7 +531,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, + /obj/item/melee/knife/combat/survival = 3, /obj/item/flashlight/seclite = 3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -574,7 +574,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, + /obj/item/melee/knife/combat/survival = 3, /obj/item/flashlight/seclite=3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -593,7 +593,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, + /obj/item/melee/knife/combat/survival = 3, /obj/item/flashlight/seclite=3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -612,7 +612,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, + /obj/item/melee/knife/combat/survival = 3, /obj/item/flashlight/seclite=3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -666,7 +666,7 @@ if(prob(30)) r_pocket = /obj/item/restraints/legcuffs/bola/watcher if(prob(30)) - l_pocket = /obj/item/kitchen/knife/combat/bone + l_pocket = /obj/item/melee/knife/combat/bone if("Soldier") mob_species = /datum/species/human if(prob(90)) @@ -699,7 +699,7 @@ /obj/item/stack/marker_beacon/ten = 3, /obj/item/detective_scanner = 2, /obj/item/extinguisher/mini = 3, - /obj/item/kitchen/knife/combat = 3, + /obj/item/melee/knife/combat = 3, /obj/item/flashlight/seclite=3, /obj/item/ammo_casing/shotgun = 3, /obj/item/binoculars = 3, @@ -718,7 +718,7 @@ /obj/item/stack/marker_beacon/ten = 3, /obj/item/detective_scanner = 2, /obj/item/extinguisher/mini = 3, - /obj/item/kitchen/knife/combat = 3, + /obj/item/melee/knife/combat = 3, /obj/item/flashlight/seclite=3, /obj/item/ammo_casing/shotgun = 3, /obj/item/binoculars = 3, @@ -737,7 +737,7 @@ /obj/item/stack/marker_beacon/ten = 3, /obj/item/detective_scanner = 2, /obj/item/extinguisher/mini = 3, - /obj/item/kitchen/knife/combat = 3, + /obj/item/melee/knife/combat = 3, /obj/item/flashlight/seclite=3, /obj/item/ammo_casing/shotgun = 3, /obj/item/binoculars = 3, @@ -755,7 +755,7 @@ if(prob(50)) r_pocket = pickweight(list( /obj/item/reagent_containers/hypospray/medipen/stimpack = 1, - /obj/item/kitchen/knife/letter_opener = 3, + /obj/item/melee/knife/kitcken/letter_opener = 3, /obj/item/radio = 3, /obj/item/grenade/syndieminibomb/concussion = 1, /obj/item/melee/transforming/energy/ctf/solgov = 1 @@ -764,7 +764,7 @@ if(prob(50)) l_pocket = pickweight(list( /obj/item/reagent_containers/hypospray/medipen/stimpack = 1, - /obj/item/kitchen/knife/letter_opener = 3, + /obj/item/melee/knife/kitcken/letter_opener = 3, /obj/item/radio = 3, /obj/item/grenade/syndieminibomb/concussion = 1, /obj/item/melee/transforming/energy/ctf/solgov = 1 @@ -796,9 +796,9 @@ if(prob(10)) belt = /obj/item/storage/belt/mining/primitive if(prob(30)) - r_pocket = /obj/item/kitchen/knife/combat/bone + r_pocket = /obj/item/melee/knife/combat/bone if(prob(30)) - l_pocket = /obj/item/kitchen/knife/combat/bone + l_pocket = /obj/item/melee/knife/combat/bone if("YeOlde") mob_gender = FEMALE uniform = /obj/item/clothing/under/costume/maid @@ -907,7 +907,7 @@ if(prob(25)) suit_store = /obj/item/gun/ballistic/shotgun/flamingarrow r_pocket = /obj/item/book/manual/trickwines_4_brewers - belt = pick(list(/obj/item/kitchen/knife/hunting = 1, /obj/item/gun/ballistic/derringer = 1)) + belt = pick(list(/obj/item/melee/knife/hunting = 1, /obj/item/gun/ballistic/derringer = 1)) back = /obj/item/storage/backpack/cultpack backpack_contents = list() if(prob(75)) diff --git a/code/modules/mob/living/simple_animal/hostile/survivors.dm b/code/modules/mob/living/simple_animal/hostile/survivors.dm index bc7573552bc5..c8302d7bc84b 100644 --- a/code/modules/mob/living/simple_animal/hostile/survivors.dm +++ b/code/modules/mob/living/simple_animal/hostile/survivors.dm @@ -211,7 +211,7 @@ /obj/item/stack/marker_beacon/ten = 15, /obj/item/mining_scanner = 5, /obj/item/extinguisher/mini = 10, - /obj/item/kitchen/knife/combat = 5, + /obj/item/melee/knife/combat = 5, /obj/item/flashlight/seclite = 10, /obj/item/stack/sheet/sinew = 10, /obj/item/stack/sheet/bone = 5, @@ -227,7 +227,7 @@ /obj/item/stack/marker_beacon/ten = 10, /obj/item/mining_scanner = 20, /obj/item/extinguisher/mini = 10, - /obj/item/kitchen/knife/combat/survival = 10, + /obj/item/melee/knife/combat/survival = 10, /obj/item/flashlight/seclite = 10, /obj/item/stack/sheet/sinew = 10, /obj/item/stack/sheet/bone = 10 @@ -239,11 +239,11 @@ /obj/item/stack/marker_beacon/ten = 5, /obj/item/mining_scanner = 5, /obj/item/extinguisher/mini = 10, - /obj/item/kitchen/knife/combat/survival = 12, + /obj/item/melee/knife/combat/survival = 12, /obj/item/flashlight/seclite = 10, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 5, - /obj/item/kitchen/knife/combat = 3, + /obj/item/melee/knife/combat = 3, /obj/item/reagent_containers/food/snacks/rationpack = 30 ) ) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 8ca8f0bc05c8..39b4776258f4 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -61,7 +61,7 @@ var/gunlight_state = "flight" var/can_bayonet = FALSE //if a bayonet can be added or removed if it already has one. - var/obj/item/kitchen/knife/bayonet + var/obj/item/melee/knife/kitcken/bayonet var/knife_x_offset = 0 var/knife_y_offset = 0 @@ -499,8 +499,8 @@ alight = new(src) if(loc == user) alight.Grant(user) - else if(istype(I, /obj/item/kitchen/knife)) - var/obj/item/kitchen/knife/K = I + else if(istype(I, /obj/item/melee/knife/kitcken)) + var/obj/item/melee/knife/kitcken/K = I if(!can_bayonet || !K.bayonet || bayonet) //ensure the gun has an attachment point available, and that the knife is compatible with it. return ..() if(!user.transferItemToLoc(I, src)) diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 7c43c3fc5acb..687889e1d1b7 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -356,7 +356,7 @@ id = "kitchen_knife" build_type = AUTOLATHE materials = list(/datum/material/iron = 12000) - build_path = /obj/item/kitchen/knife + build_path = /obj/item/melee/knife/kitcken category = list("initial","Dinnerware") /datum/design/plastic_knife @@ -364,7 +364,7 @@ id = "plastic_knife" build_type = AUTOLATHE | PROTOLATHE materials = list(/datum/material/plastic = 100) - build_path = /obj/item/kitchen/knife/plastic + build_path = /obj/item/melee/knife/plastic category = list("initial", "Tool Designs","Dinnerware") /datum/design/fork @@ -875,7 +875,7 @@ id = "cleaver" build_type = AUTOLATHE materials = list(/datum/material/iron = 18000) - build_path = /obj/item/kitchen/knife/butcher + build_path = /obj/item/melee/knife/butcher category = list("hacked", "Dinnerware") /datum/design/spraycan diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm index 29ea3fbd4298..62cb77d24c7d 100644 --- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm +++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm @@ -17,7 +17,7 @@ Slimecrossing Weapons user.emote("scream") //Rainbow knife - Burning Rainbow -/obj/item/kitchen/knife/rainbowknife +/obj/item/melee/knife/kitcken/rainbowknife name = "rainbow knife" desc = "A strange, transparent knife which constantly shifts color. It hums slightly when moved." icon = 'icons/obj/slimecrossing.dmi' @@ -27,7 +27,7 @@ Slimecrossing Weapons throwforce = 15 damtype = BRUTE -/obj/item/kitchen/knife/rainbowknife/afterattack(atom/O, mob/user, proximity) +/obj/item/melee/knife/kitcken/rainbowknife/afterattack(atom/O, mob/user, proximity) if(proximity && istype(O, /mob/living)) damtype = pick(BRUTE, BURN, TOX, OXY) switch(damtype) diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index e9fd98232e2c..51492f29a67e 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -311,5 +311,5 @@ Burning extracts: /obj/item/slimecross/burning/rainbow/do_effect(mob/user) user.visible_message("[src] flattens into a glowing rainbow blade.") - new /obj/item/kitchen/knife/rainbowknife(get_turf(user)) + new /obj/item/melee/knife/kitcken/rainbowknife(get_turf(user)) ..() diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index 7b5bd27a8ada..972a1a960fc1 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -105,7 +105,7 @@ //can't be bothered to do sloth right now, will make later -/obj/item/kitchen/knife/envy //Envy's knife: Found in the Envy ruin. Attackers take on the appearance of whoever they strike. +/obj/item/melee/knife/kitcken/envy //Envy's knife: Found in the Envy ruin. Attackers take on the appearance of whoever they strike. name = "envy's knife" desc = "Their success will be yours." icon = 'icons/obj/wizard.dmi' @@ -118,7 +118,7 @@ w_class = WEIGHT_CLASS_NORMAL hitsound = 'sound/weapons/bladeslice.ogg' -/obj/item/kitchen/knife/envy/afterattack(atom/movable/AM, mob/living/carbon/human/user, proximity) +/obj/item/melee/knife/kitcken/envy/afterattack(atom/movable/AM, mob/living/carbon/human/user, proximity) . = ..() if(!proximity) return diff --git a/code/modules/ruins/rockplanet_ruin_code.dm b/code/modules/ruins/rockplanet_ruin_code.dm index 57a6d6fd4657..eb6e9bbb3b84 100644 --- a/code/modules/ruins/rockplanet_ruin_code.dm +++ b/code/modules/ruins/rockplanet_ruin_code.dm @@ -100,7 +100,7 @@ /obj/item/strange_crystal/attackby(obj/item/item, mob/user, params) . = ..() - if(!istype(item, /obj/item/kitchen/knife)) + if(!istype(item, /obj/item/melee/knife/kitcken)) return playsound(src, 'sound/effects/glassbr1.ogg', 50, TRUE, -1) to_chat(user, "You start breaking [src] up into shards...") diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 0c535f58ae23..756d889f5bc5 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -91,7 +91,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/item/storage/overmap_ship, 28) new /obj/item/tank/internals/oxygen/red(src) new /obj/item/tank/internals/oxygen/red(src) new /obj/item/pickaxe/emergency(src) - new /obj/item/kitchen/knife/hunting(src) + new /obj/item/melee/knife/hunting(src) new /obj/item/survivalcapsule(src) /obj/item/storage/overmap_ship/fueled/PopulateContents() diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm index d1c882f96620..2b6c3035f0e3 100644 --- a/code/modules/surgery/advanced/lobotomy.dm +++ b/code/modules/surgery/advanced/lobotomy.dm @@ -26,7 +26,7 @@ implements = list( TOOL_SCALPEL = 85, // there is no way this should be reasonable to do basically at all without a real surgery. ghetto lobotomy, for real? /obj/item/melee/transforming/energy/sword = 25, - /obj/item/kitchen/knife = 15, + /obj/item/melee/knife/kitcken = 15, /obj/item/shard = 10, /obj/item = 5) time = 10 SECONDS diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index a657d7180a5a..e737acbb78d7 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -16,7 +16,7 @@ /obj/item/melee/arm_blade = 80, /obj/item/melee/axe/fire = 50, /obj/item/hatchet = 40, - /obj/item/kitchen/knife/butcher = 25) + /obj/item/melee/knife/butcher = 25) time = 6.4 SECONDS preop_sound = 'sound/surgery/scalpel1.ogg' success_sound = 'sound/surgery/organ2.ogg' diff --git a/code/modules/surgery/coronary_bypass.dm b/code/modules/surgery/coronary_bypass.dm index 4c416c31c633..c7f4ab0f220a 100644 --- a/code/modules/surgery/coronary_bypass.dm +++ b/code/modules/surgery/coronary_bypass.dm @@ -22,7 +22,7 @@ name = "incise heart" implements = list( TOOL_SCALPEL = 90, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife/kitcken = 40, /obj/item/shard = 33) time = 1.6 SECONDS preop_sound = 'sound/surgery/scalpel1.ogg' diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index 70dbac246e4e..65bfd9567f19 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -34,7 +34,7 @@ /obj/item/scalpel/augment = 75, /obj/item/scalpel/advanced = 60, TOOL_SCALPEL = 45, - /obj/item/kitchen/knife = 30, + /obj/item/melee/knife/kitcken = 30, /obj/item/shard = 10)// special tools not only cut down time but also improve probability time = 125 silicons_obey_prob = TRUE diff --git a/code/modules/surgery/gastrectomy.dm b/code/modules/surgery/gastrectomy.dm index f4bd48c4729d..36f937bf8ea5 100644 --- a/code/modules/surgery/gastrectomy.dm +++ b/code/modules/surgery/gastrectomy.dm @@ -25,7 +25,7 @@ implements = list( TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 33, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife/kitcken = 40, /obj/item/shard = 10) time = 52 experience_given = (MEDICAL_SKILL_ORGAN_FIX*0.8) //for consistency across organ surgeries diff --git a/code/modules/surgery/hepatectomy.dm b/code/modules/surgery/hepatectomy.dm index e612b6fa18c5..7b1b121d03b5 100644 --- a/code/modules/surgery/hepatectomy.dm +++ b/code/modules/surgery/hepatectomy.dm @@ -24,7 +24,7 @@ implements = list( TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 33, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife/kitcken = 40, /obj/item/shard = 25) time = 52 experience_given = (MEDICAL_SKILL_ORGAN_FIX*0.8) //repeatable so not as much xp diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm index 09ef68f03e18..35a4ae49b54b 100644 --- a/code/modules/surgery/lobectomy.dm +++ b/code/modules/surgery/lobectomy.dm @@ -23,7 +23,7 @@ implements = list( TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 33, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife/kitcken = 40, /obj/item/shard = 25) time = 4.2 SECONDS preop_sound = 'sound/surgery/scalpel1.ogg' diff --git a/code/modules/surgery/mechanic_steps.dm b/code/modules/surgery/mechanic_steps.dm index 3730f7cf1302..6dbca32d29af 100644 --- a/code/modules/surgery/mechanic_steps.dm +++ b/code/modules/surgery/mechanic_steps.dm @@ -4,7 +4,7 @@ implements = list( TOOL_SCREWDRIVER = 100, TOOL_SCALPEL = 75, // med borgs could try to unscrew shell with scalpel - /obj/item/kitchen/knife = 50, + /obj/item/melee/knife/kitcken = 50, /obj/item = 10) time = 2.4 SECONDS preop_sound = 'sound/items/screwdriver.ogg' @@ -28,7 +28,7 @@ implements = list( TOOL_SCREWDRIVER = 100, TOOL_SCALPEL = 75, - /obj/item/kitchen/knife = 50, + /obj/item/melee/knife/kitcken = 50, /obj/item = 10) time = 2.4 SECONDS preop_sound = 'sound/items/screwdriver.ogg' diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm index 341a94d36909..ca4e156bfdd7 100644 --- a/code/modules/surgery/organic_steps.dm +++ b/code/modules/surgery/organic_steps.dm @@ -5,7 +5,7 @@ implements = list( TOOL_SCALPEL = 100, /obj/item/melee/transforming/energy/sword = 40, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife/kitcken = 40, /obj/item/shard = 25, /obj/item = 15) //any sharp item time = 1.6 SECONDS @@ -148,7 +148,7 @@ /obj/item/melee/axe/fire = 50, /obj/item/melee/arm_blade = 40, /obj/item/hatchet = 40, - /obj/item/kitchen/knife/butcher = 33, + /obj/item/melee/knife/butcher = 33, /obj/item = 10) //10% success (sort of) with any sharp item with a force>=10 time = 5.4 SECONDS preop_sound = list( @@ -156,7 +156,7 @@ /obj/item/melee/arm_blade = 'sound/surgery/scalpel1.ogg', /obj/item/melee/axe/fire = 'sound/surgery/scalpel1.ogg', /obj/item/hatchet = 'sound/surgery/scalpel1.ogg', - /obj/item/kitchen/knife/butcher = 'sound/surgery/scalpel1.ogg', + /obj/item/melee/knife/butcher = 'sound/surgery/scalpel1.ogg', /obj/item = 'sound/surgery/scalpel1.ogg', ) success_sound = 'sound/surgery/bone3.ogg' diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 5d6fac852d51..665086d1981d 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -232,11 +232,11 @@ /obj/item/organ/cyberimp/arm/toolset/emag_act(mob/user) for(var/datum/weakref/created_item in items_list) var/obj/potential_knife = created_item.resolve() - if(istype(/obj/item/kitchen/knife/combat/cyborg, potential_knife)) + if(istype(/obj/item/melee/knife/combat/cyborg, potential_knife)) return FALSE to_chat(user, "You unlock [src]'s integrated knife!") - items_list += WEAKREF(new /obj/item/kitchen/knife/combat/cyborg(src)) + items_list += WEAKREF(new /obj/item/melee/knife/combat/cyborg(src)) return TRUE /obj/item/organ/cyberimp/arm/esword diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm index 9c87a5b5a93f..5ce938347edc 100644 --- a/code/modules/surgery/plastic_surgery.dm +++ b/code/modules/surgery/plastic_surgery.dm @@ -8,7 +8,7 @@ name = "reshape face" implements = list( TOOL_SCALPEL = 100, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife/kitcken = 40, TOOL_WIRECUTTER = 33) time = 64 experience_given = MEDICAL_SKILL_MEDIUM diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm index 7ff7d80ddccd..248aa3c93b7f 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/drinnerware.dm @@ -15,12 +15,12 @@ /obj/item/reagent_containers/food/condiment/peppermill = 5, /obj/item/clothing/suit/apron/chef = 2, /obj/item/kitchen/rollingpin = 2, - /obj/item/kitchen/knife = 2, - /obj/item/kitchen/knife/pizza_cutter = 2, + /obj/item/melee/knife/kitcken = 2, + /obj/item/melee/knife/pizza_cutter = 2, /obj/item/book/granter/crafting_recipe/cooking_sweets_101 = 2) contraband = list( /obj/item/kitchen/rollingpin = 2, - /obj/item/kitchen/knife/butcher = 2, + /obj/item/melee/knife/butcher = 2, /obj/item/shovel/spoon = 2) // ST - Only a spoonfull refill_canister = /obj/item/vending_refill/dinnerware default_price = 50 diff --git a/code/modules/vending/sustenance.dm b/code/modules/vending/sustenance.dm index 0519285d26a5..ed1a152a93fc 100644 --- a/code/modules/vending/sustenance.dm +++ b/code/modules/vending/sustenance.dm @@ -11,7 +11,7 @@ /obj/item/reagent_containers/food/drinks/ice/prison = 12, /obj/item/reagent_containers/food/snacks/candy_corn/prison = 6) contraband = list( - /obj/item/kitchen/knife = 6, + /obj/item/melee/knife/kitcken = 6, /obj/item/reagent_containers/food/drinks/coffee = 12, /obj/item/tank/internals/emergency_oxygen = 6, /obj/item/clothing/mask/breath = 6) diff --git a/shiptest.dme b/shiptest.dme index 3c963f860f96..df070860eff7 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1257,6 +1257,7 @@ #include "code\game\objects\items\melee\chainsaw.dm" #include "code\game\objects\items\melee\energy.dm" #include "code\game\objects\items\melee\energyhalberd.dm" +#include "code\game\objects\items\melee\knife.dm" #include "code\game\objects\items\melee\misc.dm" #include "code\game\objects\items\melee\dualsaber.dm" #include "code\game\objects\items\melee\powerfist.dm" diff --git a/tools/UpdatePaths/Scripts/2776_cultbegone.txt b/tools/UpdatePaths/Scripts/2776_cultbegone.txt index eda49b0a539b..a4da9dcb3d80 100644 --- a/tools/UpdatePaths/Scripts/2776_cultbegone.txt +++ b/tools/UpdatePaths/Scripts/2776_cultbegone.txt @@ -33,11 +33,11 @@ /obj/item/toy/plush/narplush : /obj/item/toy/plush/lizardplushie /obj/item/bedsheet/cult : /obj/item/bedsheet/dorms /obj/item/melee/cultblade : /obj/item/melee/sword/claymore/weak -/obj/item/melee/cultblade/dagger : /obj/item/kitchen/knife/combat -/obj/item/melee/cultblade/ghost : /obj/item/kitchen/knife/combat -/obj/item/toy/toy_dagger : /obj/item/kitchen/knife -/obj/item/kitchen/knife/bloodletter : /obj/item/kitchen/knife/combat -/obj/item/kitchen/ritual : /obj/item/kitchen/knife/combat +/obj/item/melee/cultblade/dagger : /obj/item/melee/knife/combat +/obj/item/melee/cultblade/ghost : /obj/item/melee/knife/combat +/obj/item/toy/toy_dagger : /obj/item/melee/knife/kitcken +/obj/item/melee/knife/kitcken/bloodletter : /obj/item/melee/knife/combat +/obj/item/kitchen/ritual : /obj/item/melee/knife/combat /obj/item/restraints/legcuffs/bola/cult : /obj/item/restraints/legcuffs/bola /obj/effect/rune : @DELETE From 4619cec41b626263c78958936e392da894a8205f Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 13:50:34 -0500 Subject: [PATCH 039/102] combat knife doesnt realyl affect survival or bone --- .../icemoon_underground_abandoned_newcops.dmm | 2 +- .../icemoon_underground_abandoned_village.dmm | 2 +- _maps/RandomRuins/JungleRuins/jungle_nest.dmm | 2 +- .../lavaland_surface_elephant_graveyard.dmm | 2 +- .../LavaRuins/lavaland_surface_lava_canyon.dmm | 4 ++-- .../LavaRuins/lavaland_surface_survivalpod.dmm | 2 +- .../WasteRuins/wasteplanet_pandora.dmm | 6 +++--- .../independent/independent_mudskipper.dmm | 4 ++-- .../independent/independent_schmiedeberg.dmm | 4 ++-- _maps/shuttles/inteq/inteq_colossus.dmm | 8 ++++---- _maps/shuttles/inteq/inteq_talos.dmm | 6 +++--- _maps/shuttles/inteq/inteq_valor.dmm | 4 ++-- _maps/shuttles/inteq/inteq_vaquero.dmm | 6 +++--- .../shuttles/nanotrasen/nanotrasen_ranger.dmm | 6 +++--- _maps/shuttles/pgf/pgf_crying_sun.dmm | 10 +++++----- _maps/shuttles/pirate/pirate_ember.dmm | 6 +++--- _maps/shuttles/roumain/srm_elder.dmm | 2 +- _maps/shuttles/solgov/solgov_chronicle.dmm | 2 +- _maps/shuttles/solgov/solgov_paracelsus.dmm | 4 ++-- _maps/shuttles/syndicate/syndicate_aegis.dmm | 4 ++-- .../syndicate/syndicate_cybersun_kansatsu.dmm | 8 ++++---- _maps/templates/shelter_2.dmm | 2 +- code/game/gamemodes/clown_ops/clown_ops.dm | 2 +- code/game/gamemodes/nuclear/nuclear.dm | 4 ++-- code/game/objects/items/melee/knife.dm | 5 +++-- .../objects/items/stacks/sheets/sheet_types.dm | 2 +- .../objects/structures/ghost_role_spawners.dm | 4 ++-- code/modules/cargo/bounties/mining.dm | 2 +- code/modules/cargo/packs/sec_supply.dm | 6 +++--- .../clothing/outfits/ert/frontiersmen_ert.dm | 2 +- .../clothing/outfits/ert/syndicate_ert.dm | 4 ++-- .../clothing/outfits/factions/frontiersmen.dm | 4 ++-- .../clothing/outfits/factions/independent.dm | 6 +++--- .../clothing/outfits/factions/nanotrasen.dm | 8 ++++---- .../clothing/outfits/factions/solgov.dm | 2 +- .../clothing/outfits/factions/syndicate.dm | 10 +++++----- code/modules/clothing/suits/cloaks.dm | 2 +- code/modules/jobs/job_types/shaft_miner.dm | 2 +- code/modules/mining/machine_vending.dm | 2 +- .../hostile/mining_mobs/hivelord.dm | 18 +++++++++--------- .../living/simple_animal/hostile/survivors.dm | 4 ++-- 41 files changed, 93 insertions(+), 92 deletions(-) diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_newcops.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_newcops.dmm index aa5cf4535ddb..5ac4ac978f67 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_newcops.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_newcops.dmm @@ -712,7 +712,7 @@ /obj/item/clothing/shoes/jackboots, /obj/item/clothing/glasses/night, /obj/item/radio/headset, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/radio{ icon_state = "radio" }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm index 8d2f2a152403..6e0513c9cdd5 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm @@ -339,7 +339,7 @@ /obj/item/restraints/legcuffs/beartrap, /obj/item/reagent_containers/glass/bottle/venom, /obj/item/reagent_containers/glass/bottle/curare, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/effect/decal/cleanable/dirt, /obj/item/reagent_containers/food/snacks/meat/slab/human, /obj/item/reagent_containers/food/snacks/meat/slab/human, diff --git a/_maps/RandomRuins/JungleRuins/jungle_nest.dmm b/_maps/RandomRuins/JungleRuins/jungle_nest.dmm index 0938705f6e23..5ceab6d0e390 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_nest.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_nest.dmm @@ -267,7 +267,7 @@ "Ee" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, /turf/open/floor/plating/dirt, /area/overmap_encounter/planetoid/cave/explored) "EC" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm index 444845e2ec47..911b6cf6f4e5 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm @@ -254,7 +254,7 @@ /turf/open/floor/plating/asteroid/basalt/wasteland, /area/ruin/unpowered/elephant_graveyard) "bk" = ( -/obj/item/melee/knife/combat/bone, +/obj/item/melee/knife/bone, /obj/item/organ/tongue, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/asteroid/basalt/wasteland, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index 9624c18c38aa..912133c9f8d4 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -1105,7 +1105,7 @@ pixel_y = -11; pixel_x = -7 }, -/obj/item/melee/knife/combat/bone{ +/obj/item/melee/knife/bone{ pixel_x = 10; pixel_y = -10 }, @@ -1478,7 +1478,7 @@ /turf/closed/mineral/random/volcanic, /area/overmap_encounter/planetoid/cave/explored) "PP" = ( -/obj/item/melee/knife/combat/bone{ +/obj/item/melee/knife/bone{ pixel_x = -2; pixel_y = 4 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm index e2f808908ee1..87fa637c017c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm @@ -74,7 +74,7 @@ /area/overmap_encounter/planetoid/lava/explored) "p" = ( /obj/structure/table/survival_pod, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, /turf/open/floor/pod/dark, /area/ruin/powered) "q" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index 4e5e81239a4d..cd1cc61bbec7 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -70,7 +70,7 @@ /area/ruin/wasteplanet) "df" = ( /obj/structure/table/wood, -/obj/item/melee/knife/combat/bone, +/obj/item/melee/knife/bone, /obj/item/flashlight/flare/torch, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) @@ -107,7 +107,7 @@ /area/ruin/wasteplanet) "ge" = ( /obj/structure/table/wood, -/obj/item/melee/knife/combat/bone{ +/obj/item/melee/knife/bone{ pixel_x = -20 }, /obj/item/reagent_containers/food/snacks/salad/edensalad, @@ -813,7 +813,7 @@ /turf/open/indestructible/hierophant/two/waste, /area/ruin/wasteplanet) "FP" = ( -/obj/item/melee/knife/combat/bone{ +/obj/item/melee/knife/bone{ pixel_x = 15 }, /turf/open/floor/wood/waste, diff --git a/_maps/shuttles/independent/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm index 39383c8194cf..a2555352fe40 100644 --- a/_maps/shuttles/independent/independent_mudskipper.dmm +++ b/_maps/shuttles/independent/independent_mudskipper.dmm @@ -2361,8 +2361,8 @@ /obj/item/gps/mining{ gpstag = "SCAV1" }, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /obj/item/flashlight/seclite, /obj/item/flashlight/seclite, /turf/open/floor/plasteel/tech, diff --git a/_maps/shuttles/independent/independent_schmiedeberg.dmm b/_maps/shuttles/independent/independent_schmiedeberg.dmm index 90e6810a9ab0..25944fcecfc2 100644 --- a/_maps/shuttles/independent/independent_schmiedeberg.dmm +++ b/_maps/shuttles/independent/independent_schmiedeberg.dmm @@ -2071,8 +2071,8 @@ /obj/item/flashlight/seclite, /obj/item/flashlight/seclite, /obj/item/flashlight/seclite, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /obj/structure/sign/poster/retro/lasergun_new{ pixel_x = -32 }, diff --git a/_maps/shuttles/inteq/inteq_colossus.dmm b/_maps/shuttles/inteq/inteq_colossus.dmm index 66d78831e426..7c7363f57366 100644 --- a/_maps/shuttles/inteq/inteq_colossus.dmm +++ b/_maps/shuttles/inteq/inteq_colossus.dmm @@ -4308,10 +4308,10 @@ /obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "WG" = ( diff --git a/_maps/shuttles/inteq/inteq_talos.dmm b/_maps/shuttles/inteq/inteq_talos.dmm index 9caada782858..de5ef53c1db8 100644 --- a/_maps/shuttles/inteq/inteq_talos.dmm +++ b/_maps/shuttles/inteq/inteq_talos.dmm @@ -5624,9 +5624,9 @@ pixel_x = -1; pixel_y = 3 }, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "JT" = ( diff --git a/_maps/shuttles/inteq/inteq_valor.dmm b/_maps/shuttles/inteq/inteq_valor.dmm index 82e5174cbdcb..d047af9465ca 100644 --- a/_maps/shuttles/inteq/inteq_valor.dmm +++ b/_maps/shuttles/inteq/inteq_valor.dmm @@ -537,8 +537,8 @@ /obj/item/megaphone/sec, /obj/item/clothing/suit/armor/vest/alt, /obj/item/clothing/suit/armor/vest/alt, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /turf/open/floor/plasteel/dark, /area/ship/security) "ey" = ( diff --git a/_maps/shuttles/inteq/inteq_vaquero.dmm b/_maps/shuttles/inteq/inteq_vaquero.dmm index a319d2e73293..5beb7dbe39d1 100644 --- a/_maps/shuttles/inteq/inteq_vaquero.dmm +++ b/_maps/shuttles/inteq/inteq_vaquero.dmm @@ -2214,9 +2214,9 @@ pixel_y = 23 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /turf/open/floor/plasteel/tech/grid, /area/ship/security) "HN" = ( diff --git a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm index 817394772f6b..06e2e88787c4 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm @@ -176,7 +176,7 @@ /obj/item/clothing/glasses/sunglasses/gar, /obj/item/melee/classic_baton/telescopic, /obj/item/flashlight/seclite, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/holosign_creator/security, /obj/item/storage/box/handcuffs, /obj/item/restraints/legcuffs/bola/energy, @@ -450,7 +450,7 @@ pixel_y = 10; pixel_x = -5 }, -/obj/item/melee/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 6; pixel_x = 5 }, @@ -3114,7 +3114,7 @@ }, /obj/item/stock_parts/cell/gun, /obj/item/melee/classic_baton/telescopic, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/gps, /obj/item/screwdriver, /obj/effect/turf_decal/siding/wood{ diff --git a/_maps/shuttles/pgf/pgf_crying_sun.dmm b/_maps/shuttles/pgf/pgf_crying_sun.dmm index 5d57f876e9cd..858987d7d560 100644 --- a/_maps/shuttles/pgf/pgf_crying_sun.dmm +++ b/_maps/shuttles/pgf/pgf_crying_sun.dmm @@ -5393,19 +5393,19 @@ /area/ship/security/armory) "Qq" = ( /obj/structure/rack, -/obj/item/melee/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_x = -7; pixel_y = 4 }, -/obj/item/melee/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_x = -2; pixel_y = 4 }, -/obj/item/melee/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 4; pixel_x = 3 }, -/obj/item/melee/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 4; pixel_x = 8 }, @@ -6158,7 +6158,7 @@ pixel_x = -4; pixel_y = 9 }, -/obj/item/melee/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 0; pixel_x = 1 }, diff --git a/_maps/shuttles/pirate/pirate_ember.dmm b/_maps/shuttles/pirate/pirate_ember.dmm index 1ca421d968bc..d2fe7ea94da1 100644 --- a/_maps/shuttles/pirate/pirate_ember.dmm +++ b/_maps/shuttles/pirate/pirate_ember.dmm @@ -1805,14 +1805,14 @@ /obj/effect/turf_decal/techfloor{ dir = 4 }, -/obj/item/melee/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_x = -1 }, -/obj/item/melee/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_x = -3; pixel_y = 3 }, -/obj/item/melee/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_x = -3; pixel_y = 8 }, diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index 7e5e8e25c06c..8f6f38c8ad49 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -2654,7 +2654,7 @@ /obj/item/clothing/shoes/cowboy/black, /obj/item/clothing/shoes/cowboy, /obj/item/clothing/shoes/combat, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/gps{ pixel_x = -7 }, diff --git a/_maps/shuttles/solgov/solgov_chronicle.dmm b/_maps/shuttles/solgov/solgov_chronicle.dmm index 2de164af1656..e626f971d0e2 100644 --- a/_maps/shuttles/solgov/solgov_chronicle.dmm +++ b/_maps/shuttles/solgov/solgov_chronicle.dmm @@ -567,7 +567,7 @@ /obj/item/clothing/suit/hazardvest/solgov, /obj/item/clothing/accessory/armband/cargo, /obj/item/clothing/shoes/workboots, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/clothing/gloves/combat, /obj/item/storage/backpack, /obj/machinery/light/small/directional/north, diff --git a/_maps/shuttles/solgov/solgov_paracelsus.dmm b/_maps/shuttles/solgov/solgov_paracelsus.dmm index 8cc6be2882e3..c002cc00263f 100644 --- a/_maps/shuttles/solgov/solgov_paracelsus.dmm +++ b/_maps/shuttles/solgov/solgov_paracelsus.dmm @@ -805,7 +805,7 @@ /obj/effect/turf_decal/siding/yellow{ dir = 4 }, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/clothing/gloves/combat, /obj/item/clothing/suit/hazardvest/solgov, /obj/item/clothing/head/hardhat/solgov, @@ -1658,7 +1658,7 @@ /obj/effect/turf_decal/siding/yellow{ dir = 4 }, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/clothing/gloves/combat, /obj/item/clothing/suit/hazardvest/solgov, /obj/item/clothing/head/hardhat/solgov, diff --git a/_maps/shuttles/syndicate/syndicate_aegis.dmm b/_maps/shuttles/syndicate/syndicate_aegis.dmm index 37ff556cbf79..1c79374c8543 100644 --- a/_maps/shuttles/syndicate/syndicate_aegis.dmm +++ b/_maps/shuttles/syndicate/syndicate_aegis.dmm @@ -4736,8 +4736,8 @@ /obj/item/gun/ballistic/automatic/pistol, /obj/item/ammo_box/magazine/m10mm, /obj/item/ammo_box/magazine/m10mm, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /obj/structure/closet/secure_closet/wall{ dir = 8; pixel_x = 32 diff --git a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm index a00f218858e8..208d37450945 100644 --- a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm +++ b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm @@ -1953,10 +1953,10 @@ layer = 2.91 }, /obj/effect/turf_decal/box, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, -/obj/item/melee/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /obj/item/pickaxe, /obj/item/pickaxe, /obj/item/pickaxe, diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index 657062eb14d1..8dc9716b85b5 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -39,7 +39,7 @@ /area/survivalpod) "i" = ( /obj/structure/toilet/secret{ - secret_type = /obj/item/melee/knife/combat/survival + secret_type = /obj/item/melee/knife/survival }, /turf/open/floor/pod, /area/survivalpod) diff --git a/code/game/gamemodes/clown_ops/clown_ops.dm b/code/game/gamemodes/clown_ops/clown_ops.dm index 71316d657901..7760a4913726 100644 --- a/code/game/gamemodes/clown_ops/clown_ops.dm +++ b/code/game/gamemodes/clown_ops/clown_ops.dm @@ -38,7 +38,7 @@ r_pocket = /obj/item/bikehorn id = /obj/item/card/id/syndicate backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\ - /obj/item/melee/knife/combat/survival, + /obj/item/melee/knife/survival, /obj/item/dnainjector/clumsymut, //in case you want to be clumsy for the memes /obj/item/storage/box/syndie_kit/clownpins, //for any guns that you get your grubby little clown op mitts on /obj/item/reagent_containers/spray/waterflower/lube) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index ae6e3c77b271..0d4d8547728f 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -120,7 +120,7 @@ id = /obj/item/card/id/syndicate belt = /obj/item/gun/ballistic/automatic/pistol backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\ - /obj/item/melee/knife/combat/survival) + /obj/item/melee/knife/survival) var/tc = 25 var/command_radio = FALSE @@ -169,7 +169,7 @@ backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\ /obj/item/tank/jetpack/oxygen/harness=1,\ /obj/item/gun/ballistic/automatic/pistol=1,\ - /obj/item/melee/knife/combat/survival) + /obj/item/melee/knife/survival) /datum/game_mode/nuclear/generate_credit_text() diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm index 67dfa5de1391..7513d21df5d2 100644 --- a/code/game/objects/items/melee/knife.dm +++ b/code/game/objects/items/melee/knife.dm @@ -104,16 +104,17 @@ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") bayonet = TRUE -/obj/item/melee/knife/combat/survival +/obj/item/melee/knife/survival name = "survival knife" icon_state = "survivalknife" embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) desc = "A hunting grade survival knife." force = 15 throwforce = 15 + attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") bayonet = TRUE -/obj/item/melee/knife/combat/bone +/obj/item/melee/knife/bone name = "bone dagger" item_state = "bone_dagger" icon_state = "bone_dagger" diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 21db3463b5f6..2e9dceb29f89 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -682,7 +682,7 @@ GLOBAL_LIST_INIT(bone_recipes, list( \ new /datum/stack_recipe("mortar", /obj/item/reagent_containers/glass/mortar/bone, 3), \ new /datum/stack_recipe("bone armor", /obj/item/clothing/suit/armor/bone, 6), \ new /datum/stack_recipe("skull helmet", /obj/item/clothing/head/helmet/skull, 4), \ - new /datum/stack_recipe("bone dagger", /obj/item/melee/knife/combat/bone, 2), \ + new /datum/stack_recipe("bone dagger", /obj/item/melee/knife/bone, 2), \ new /datum/stack_recipe("club", /obj/item/melee/baseball_bat/bone, 6))) /obj/item/stack/sheet/bone name = "bones" diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index e4beddbebb53..0a31dadcda2b 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -225,7 +225,7 @@ gloves = /obj/item/clothing/gloves/combat back = /obj/item/storage/backpack l_pocket = /obj/item/gun/ballistic/automatic/pistol - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival belt = /obj/item/storage/belt/military/assault id = /obj/item/card/id/syndicate_command/crew_id implants = list(/obj/item/implant/weapons_auth) @@ -240,7 +240,7 @@ gloves = /obj/item/clothing/gloves/combat back = /obj/item/storage/backpack l_pocket = /obj/item/gun/ballistic/automatic/pistol/APS - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival belt = /obj/item/storage/belt/military/assault id = /obj/item/card/id/syndicate_command/captain_id backpack_contents = list(/obj/item/documents/syndicate/red, /obj/item/paper/fluff/ruins/forgottenship/password) diff --git a/code/modules/cargo/bounties/mining.dm b/code/modules/cargo/bounties/mining.dm index d7ccd8d39018..0c34ce3ef95d 100644 --- a/code/modules/cargo/bounties/mining.dm +++ b/code/modules/cargo/bounties/mining.dm @@ -48,7 +48,7 @@ description = "Central Command's canteen is undergoing budget cuts. Ship over some bone daggers so our Chef can keep working." reward = 5000 required_count = 3 - wanted_types = list(/obj/item/melee/knife/combat/bone) + wanted_types = list(/obj/item/melee/knife/bone) /datum/bounty/item/mining/polypore_mushroom name = "Mushroom Bowl" diff --git a/code/modules/cargo/packs/sec_supply.dm b/code/modules/cargo/packs/sec_supply.dm index af965ee9e029..6a22fb2bc9f0 100644 --- a/code/modules/cargo/packs/sec_supply.dm +++ b/code/modules/cargo/packs/sec_supply.dm @@ -67,9 +67,9 @@ name = "Survival Knives Crate" desc = "Contains three sharpened survival knives. Each knife guaranteed to fit snugly inside any galactic-standard boot." cost = 500 - contains = list(/obj/item/melee/knife/combat/survival, - /obj/item/melee/knife/combat/survival, - /obj/item/melee/knife/combat/survival) + contains = list(/obj/item/melee/knife/survival, + /obj/item/melee/knife/survival, + /obj/item/melee/knife/survival) crate_name = "combat knife crate" /datum/supply_pack/sec_supply/machete diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm index 5e0ae94b8ad2..b54f824cc0e3 100644 --- a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm +++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm @@ -127,7 +127,7 @@ suit_store = /obj/item/gun/ballistic/revolver belt = /obj/item/storage/belt/military/assault - backpack_contents = list(/obj/item/ammo_box/a357=3, /obj/item/binoculars=1, /obj/item/melee/knife/combat/survival) + backpack_contents = list(/obj/item/ammo_box/a357=3, /obj/item/binoculars=1, /obj/item/melee/knife/survival) /datum/outfit/job/frontiersmen/ert/medic name = "ERT - Frontiersman Medic" diff --git a/code/modules/clothing/outfits/ert/syndicate_ert.dm b/code/modules/clothing/outfits/ert/syndicate_ert.dm index f9d68009fa1e..0db7bf2da86e 100644 --- a/code/modules/clothing/outfits/ert/syndicate_ert.dm +++ b/code/modules/clothing/outfits/ert/syndicate_ert.dm @@ -75,7 +75,7 @@ belt = /obj/item/storage/belt/security suit_store = /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival l_pocket = /obj/item/binoculars backpack_contents = list(/obj/item/ammo_box/magazine/sniper_rounds=2, /obj/item/radio=1) @@ -133,7 +133,7 @@ head = /obj/item/clothing/head/soft/cybersun/medical belt = /obj/item/storage/belt/medical/webbing/paramedic back = /obj/item/storage/backpack/ert/medical - l_pocket = /obj/item/melee/knife/combat/survival + l_pocket = /obj/item/melee/knife/survival r_pocket = /obj/item/pinpointer/crew accessory = /obj/item/clothing/accessory/holster/marine diff --git a/code/modules/clothing/outfits/factions/frontiersmen.dm b/code/modules/clothing/outfits/factions/frontiersmen.dm index 7ce165b75112..0a491554b632 100644 --- a/code/modules/clothing/outfits/factions/frontiersmen.dm +++ b/code/modules/clothing/outfits/factions/frontiersmen.dm @@ -140,7 +140,7 @@ shoes = /obj/item/clothing/shoes/cowboy/black head = /obj/item/clothing/head/beret/sec/frontier/officer gloves = /obj/item/clothing/gloves/combat - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival // Head of Security /datum/outfit/job/frontiersmen/hos @@ -189,5 +189,5 @@ accessory = /obj/item/clothing/accessory/armband/med uniform = /obj/item/clothing/under/rank/security/officer/frontier glasses = /obj/item/clothing/glasses/hud/health/prescription - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival backpack_contents = list(/obj/item/storage/firstaid/medical) diff --git a/code/modules/clothing/outfits/factions/independent.dm b/code/modules/clothing/outfits/factions/independent.dm index 30f5711e76f4..bd63f4656eb6 100644 --- a/code/modules/clothing/outfits/factions/independent.dm +++ b/code/modules/clothing/outfits/factions/independent.dm @@ -42,7 +42,7 @@ uniform = /obj/item/clothing/under/utility head = /obj/item/clothing/head/soft/black shoes = /obj/item/clothing/shoes/combat - l_pocket = /obj/item/melee/knife/combat/survival + l_pocket = /obj/item/melee/knife/survival gloves = /obj/item/clothing/gloves/combat implants = list(/obj/item/implant/radio) @@ -327,7 +327,7 @@ uniform = /obj/item/clothing/under/utility head = /obj/item/clothing/head/soft/black shoes = /obj/item/clothing/shoes/combat - l_pocket = /obj/item/melee/knife/combat/survival + l_pocket = /obj/item/melee/knife/survival gloves = /obj/item/clothing/gloves/combat implants = list(/obj/item/implant/radio) @@ -547,7 +547,7 @@ l_pocket = /obj/item/storage/bag/ore backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/melee/knife/combat/survival=1,\ + /obj/item/melee/knife/survival=1,\ /obj/item/stack/marker_beacon/ten=1,\ /obj/item/radio/weather_monitor=1) diff --git a/code/modules/clothing/outfits/factions/nanotrasen.dm b/code/modules/clothing/outfits/factions/nanotrasen.dm index c52994d3f00c..33180a66f5ab 100644 --- a/code/modules/clothing/outfits/factions/nanotrasen.dm +++ b/code/modules/clothing/outfits/factions/nanotrasen.dm @@ -226,7 +226,7 @@ backpack = /obj/item/storage/backpack/ert/security belt = /obj/item/storage/belt/military id = /obj/item/card/id/ert/security - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) /datum/outfit/job/nanotrasen/security/ert/engi @@ -237,7 +237,7 @@ backpack = /obj/item/storage/backpack/ert/engineer belt = /obj/item/storage/belt/utility/full/ert id = /obj/item/card/id/ert/security - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) accessory = /obj/item/clothing/accessory/armband/engine glasses = /obj/item/clothing/glasses/hud/diagnostic/sunglasses @@ -250,7 +250,7 @@ backpack = /obj/item/storage/backpack/ert/medical belt = /obj/item/storage/belt/medical/webbing/paramedic id = /obj/item/card/id/ert/security - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) accessory = /obj/item/clothing/accessory/armband/med glasses = /obj/item/clothing/glasses/hud/health/night @@ -541,7 +541,7 @@ r_pocket = /obj/item/storage/bag/ore backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/melee/knife/combat/survival=1,\ + /obj/item/melee/knife/survival=1,\ /obj/item/stack/marker_beacon/ten=1,\ /obj/item/radio/weather_monitor=1) diff --git a/code/modules/clothing/outfits/factions/solgov.dm b/code/modules/clothing/outfits/factions/solgov.dm index 617f023fcb07..1e37572db41f 100644 --- a/code/modules/clothing/outfits/factions/solgov.dm +++ b/code/modules/clothing/outfits/factions/solgov.dm @@ -159,7 +159,7 @@ r_pocket = /obj/item/storage/bag/ore //causes issues if spawned in backpack backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/melee/knife/combat/survival=1,\ + /obj/item/melee/knife/survival=1,\ /obj/item/stack/marker_beacon/ten=1) backpack = /obj/item/storage/backpack/explorer diff --git a/code/modules/clothing/outfits/factions/syndicate.dm b/code/modules/clothing/outfits/factions/syndicate.dm index 705714013366..8fb73e3014d3 100644 --- a/code/modules/clothing/outfits/factions/syndicate.dm +++ b/code/modules/clothing/outfits/factions/syndicate.dm @@ -477,7 +477,7 @@ head = /obj/item/clothing/head/HoS/beret/syndicate gloves = /obj/item/clothing/gloves/color/white id = /obj/item/card/id/syndicate_command/crew_id - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival glasses = /obj/item/clothing/glasses/hud/health backpack_contents = list(/obj/item/storage/box/ids=1,\ /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) @@ -493,7 +493,7 @@ head = /obj/item/clothing/head/HoS/cybersun gloves = /obj/item/clothing/gloves/combat id = /obj/item/card/id/syndicate_command/crew_id - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival glasses = /obj/item/clothing/glasses/sunglasses /datum/outfit/job/syndicate/head_of_personnel/suns @@ -651,7 +651,7 @@ uniform = /obj/item/clothing/under/syndicate/gorlex glasses = /obj/item/clothing/glasses/hud/health/prescription - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival back = /obj/item/storage/backpack/duffelbag/syndie/med id = /obj/item/card/id/syndicate_command/crew_id backpack_contents = list(/obj/item/storage/box/survival/syndie=1, /obj/item/storage/firstaid/medical,) @@ -826,7 +826,7 @@ job_icon = "securityofficer" uniform = /obj/item/clothing/under/syndicate - r_pocket = /obj/item/melee/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival belt = /obj/item/storage/belt/military back = /obj/item/storage/backpack suit = /obj/item/clothing/suit/armor/vest @@ -909,7 +909,7 @@ r_pocket = /obj/item/storage/bag/ore backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/melee/knife/combat/survival=1,\ + /obj/item/melee/knife/survival=1,\ /obj/item/mining_voucher=1,\ /obj/item/stack/marker_beacon/ten=1) diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 1fa3bcea34e2..136aeeddfc66 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -71,7 +71,7 @@ name = "goliath cloak" icon_state = "goliath_cloak" desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits." - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/melee/knife/combat/bone, /obj/item/melee/knife/combat/survival) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/melee/knife/bone, /obj/item/melee/knife/survival) armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 35, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath body_parts_covered = CHEST|GROIN|ARMS diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 728514a440c4..6cbbf3840ab5 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -26,7 +26,7 @@ r_pocket = /obj/item/storage/bag/ore //causes issues if spawned in backpack backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/melee/knife/combat/survival=1,\ + /obj/item/melee/knife/survival=1,\ /obj/item/stack/marker_beacon/ten=1,\ /obj/item/radio/weather_monitor=1) diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 70c3d5a0a80a..228d4ae70dbb 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -121,6 +121,6 @@ new /obj/item/clothing/suit/hooded/explorer(src) new /obj/item/clothing/mask/gas/explorer(src) new /obj/item/gun/energy/kinetic_accelerator(src) - new /obj/item/melee/knife/combat/survival(src) + new /obj/item/melee/knife/survival(src) new /obj/item/flashlight/seclite(src) new /obj/item/clothing/gloves/explorer(src) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index f48cc767b702..53f4cdbdec22 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -493,7 +493,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/melee/knife/combat/survival = 3, + /obj/item/melee/knife/survival = 3, /obj/item/flashlight/seclite=3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -512,7 +512,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/melee/knife/combat/survival = 3, + /obj/item/melee/knife/survival = 3, /obj/item/flashlight/seclite = 3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -531,7 +531,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/melee/knife/combat/survival = 3, + /obj/item/melee/knife/survival = 3, /obj/item/flashlight/seclite = 3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -574,7 +574,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/melee/knife/combat/survival = 3, + /obj/item/melee/knife/survival = 3, /obj/item/flashlight/seclite=3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -593,7 +593,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/melee/knife/combat/survival = 3, + /obj/item/melee/knife/survival = 3, /obj/item/flashlight/seclite=3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -612,7 +612,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/melee/knife/combat/survival = 3, + /obj/item/melee/knife/survival = 3, /obj/item/flashlight/seclite=3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -666,7 +666,7 @@ if(prob(30)) r_pocket = /obj/item/restraints/legcuffs/bola/watcher if(prob(30)) - l_pocket = /obj/item/melee/knife/combat/bone + l_pocket = /obj/item/melee/knife/bone if("Soldier") mob_species = /datum/species/human if(prob(90)) @@ -796,9 +796,9 @@ if(prob(10)) belt = /obj/item/storage/belt/mining/primitive if(prob(30)) - r_pocket = /obj/item/melee/knife/combat/bone + r_pocket = /obj/item/melee/knife/bone if(prob(30)) - l_pocket = /obj/item/melee/knife/combat/bone + l_pocket = /obj/item/melee/knife/bone if("YeOlde") mob_gender = FEMALE uniform = /obj/item/clothing/under/costume/maid diff --git a/code/modules/mob/living/simple_animal/hostile/survivors.dm b/code/modules/mob/living/simple_animal/hostile/survivors.dm index c8302d7bc84b..b5bd24868407 100644 --- a/code/modules/mob/living/simple_animal/hostile/survivors.dm +++ b/code/modules/mob/living/simple_animal/hostile/survivors.dm @@ -227,7 +227,7 @@ /obj/item/stack/marker_beacon/ten = 10, /obj/item/mining_scanner = 20, /obj/item/extinguisher/mini = 10, - /obj/item/melee/knife/combat/survival = 10, + /obj/item/melee/knife/survival = 10, /obj/item/flashlight/seclite = 10, /obj/item/stack/sheet/sinew = 10, /obj/item/stack/sheet/bone = 10 @@ -239,7 +239,7 @@ /obj/item/stack/marker_beacon/ten = 5, /obj/item/mining_scanner = 5, /obj/item/extinguisher/mini = 10, - /obj/item/melee/knife/combat/survival = 12, + /obj/item/melee/knife/survival = 12, /obj/item/flashlight/seclite = 10, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 5, From a82ab895e24cbcca789027018db643214845dddf Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 13:56:20 -0500 Subject: [PATCH 040/102] insane --- code/game/objects/items/melee/sword.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 055cc91157ff..049604ae73d7 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -40,7 +40,7 @@ /obj/item/melee/sword/scrap name = "scrap sword" - desc = "A jagged and painful weapon only effective on targets without an armour + desc = "A jagged and painful weapon only effective on targets without an armour" icon_state = "scrap_sword" force = 24 throwforce = 10 From 9df3b5fa36604dde20fcaa3041d7aa70df33e93c Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 15 Apr 2024 14:07:16 -0500 Subject: [PATCH 041/102] minor path fixing --- _maps/map_files/generic/CentCom.dmm | 6 ++-- .../independent/independent_lagoon.dmm | 2 +- _maps/shuttles/minutemen/minutemen_vela.dmm | 2 +- .../nanotrasen/nanotrasen_skipper.dmm | 2 +- _maps/shuttles/solgov/solgov_inkwell.dmm | 16 +++++----- .../syndicate/syndicate_cybersun_kansatsu.dmm | 2 +- .../components/crafting/recipes/misc.dm | 2 +- code/game/objects/items/melee/misc.dm | 8 +---- code/modules/cargo/exports/lavaland.dm | 1 - .../clothing/outfits/factions/solgov.dm | 2 +- .../clothing/spacesuits/miscellaneous.dm | 2 +- code/modules/library/lib_items.dm | 2 +- code/modules/mining/lavaland/ash_flora.dm | 2 +- .../mining/lavaland/necropolis_chests.dm | 4 --- .../mob/living/simple_animal/bot/cleanbot.dm | 2 +- .../hostile/mining_mobs/hivelord.dm | 4 +-- code/modules/projectiles/gun.dm | 6 ++-- .../xenobiology/crossbreeding/_weapons.dm | 29 ----------------- .../xenobiology/crossbreeding/burning.dm | 8 ----- .../ruins/objects_and_mobs/sin_ruins.dm | 31 ------------------- code/modules/ruins/rockplanet_ruin_code.dm | 2 +- code/modules/surgery/advanced/lobotomy.dm | 2 +- code/modules/surgery/coronary_bypass.dm | 2 +- .../surgery/experimental_dissection.dm | 2 +- code/modules/surgery/gastrectomy.dm | 2 +- code/modules/surgery/hepatectomy.dm | 2 +- code/modules/surgery/lobectomy.dm | 2 +- code/modules/surgery/organic_steps.dm | 2 +- code/modules/surgery/plastic_surgery.dm | 2 +- 29 files changed, 36 insertions(+), 115 deletions(-) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index c57d77325177..b12b29ba4797 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2485,7 +2485,7 @@ /turf/open/floor/plasteel, /area/wizard_station) "azO" = ( -/obj/item/melee/knife/kitcken/kitchen, +/obj/item/melee/knife/kitcken, /turf/open/floor/plasteel, /area/wizard_station) "azP" = ( @@ -11016,7 +11016,7 @@ /obj/item/reagent_containers/food/condiment/peppermill{ pixel_x = -8 }, -/obj/item/melee/knife/kitcken/kitchen, +/obj/item/melee/knife/kitcken, /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 }, @@ -15544,7 +15544,7 @@ pixel_x = 7; pixel_y = -2 }, -/obj/item/melee/knife/kitcken/kitchen{ +/obj/item/melee/knife/kitcken{ pixel_y = -5; pixel_x = -5 }, diff --git a/_maps/shuttles/independent/independent_lagoon.dmm b/_maps/shuttles/independent/independent_lagoon.dmm index 04e304cd158f..23969c18c92f 100644 --- a/_maps/shuttles/independent/independent_lagoon.dmm +++ b/_maps/shuttles/independent/independent_lagoon.dmm @@ -4807,7 +4807,7 @@ /obj/structure/table/wood, /obj/item/paper_bin, /obj/item/pen/fountain, -/obj/item/melee/knife/kitcken/letter_opener, +/obj/item/melee/knife/letter_opener, /obj/item/pen, /turf/open/floor/carpet/black, /area/ship/crew/library) diff --git a/_maps/shuttles/minutemen/minutemen_vela.dmm b/_maps/shuttles/minutemen/minutemen_vela.dmm index 703df2598de1..a2a4875d2e5d 100644 --- a/_maps/shuttles/minutemen/minutemen_vela.dmm +++ b/_maps/shuttles/minutemen/minutemen_vela.dmm @@ -1751,7 +1751,7 @@ /area/ship/engineering) "kr" = ( /obj/structure/filingcabinet, -/obj/item/melee/knife/kitcken/letter_opener, +/obj/item/melee/knife/letter_opener, /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/industrial/hatch/yellow, /obj/item/clothing/mask/cigarette/cigar/havana, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm index 5e8029ce7052..01fef60ada50 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm @@ -1736,7 +1736,7 @@ pixel_x = 1; pixel_y = 5 }, -/obj/item/melee/knife/kitcken/letter_opener{ +/obj/item/melee/knife/letter_opener{ desc = "A military combat utility survival knife, imported from Earth. An expensive paperweight indeed."; pixel_x = 4; pixel_y = 5 diff --git a/_maps/shuttles/solgov/solgov_inkwell.dmm b/_maps/shuttles/solgov/solgov_inkwell.dmm index f83a38ff635d..0f535b0fcfee 100644 --- a/_maps/shuttles/solgov/solgov_inkwell.dmm +++ b/_maps/shuttles/solgov/solgov_inkwell.dmm @@ -2524,7 +2524,7 @@ /area/ship/crew/canteen) "qE" = ( /obj/structure/table/wood, -/obj/item/melee/knife/kitcken/letter_opener{ +/obj/item/melee/knife/letter_opener{ pixel_x = -13; icon_state = "letter_opener_b"; pixel_y = 4; @@ -2662,7 +2662,7 @@ dir = 4 }, /obj/item/clothing/glasses/meson/prescription, -/obj/item/melee/knife/kitcken/letter_opener, +/obj/item/melee/knife/letter_opener, /obj/item/clothing/glasses/meson, /obj/machinery/light/directional/north, /obj/item/storage/bag/ore, @@ -3008,7 +3008,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/melee/knife/kitcken/letter_opener, +/obj/item/melee/knife/letter_opener, /obj/item/clothing/glasses/meson, /obj/structure/sign/poster/solgov/random{ pixel_y = 32 @@ -3532,7 +3532,7 @@ /obj/item/stamp/solgov, /obj/item/clothing/suit/armor/solgov_trenchcoat, /obj/item/storage/backpack/satchel, -/obj/item/melee/knife/kitcken/letter_opener, +/obj/item/melee/knife/letter_opener, /obj/structure/closet/secure_closet/quartermaster{ populate = 0; anchored = 1; @@ -5322,13 +5322,13 @@ }, /obj/structure/rack, /obj/structure/window/reinforced, -/obj/item/melee/knife/kitcken/letter_opener{ +/obj/item/melee/knife/letter_opener{ pixel_x = -2 }, -/obj/item/melee/knife/kitcken/letter_opener{ +/obj/item/melee/knife/letter_opener{ pixel_x = 1 }, -/obj/item/melee/knife/kitcken/letter_opener{ +/obj/item/melee/knife/letter_opener{ pixel_x = 4 }, /obj/effect/turf_decal/corner/opaque/solgovblue{ @@ -6815,7 +6815,7 @@ }, /obj/effect/turf_decal/industrial/outline/red, /obj/item/clothing/glasses/meson/prescription, -/obj/item/melee/knife/kitcken/letter_opener, +/obj/item/melee/knife/letter_opener, /obj/item/clothing/glasses/meson, /obj/item/storage/bag/ore, /turf/open/floor/plasteel/white, diff --git a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm index 208d37450945..290bd7b44618 100644 --- a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm +++ b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm @@ -551,7 +551,7 @@ dir = 4 }, /obj/item/storage/box/rxglasses/spyglasskit, -/obj/item/melee/knife/kitcken/letter_opener, +/obj/item/melee/knife/letter_opener, /turf/open/floor/plasteel/dark, /area/ship/crew/office) "nF" = ( diff --git a/code/datums/components/crafting/recipes/misc.dm b/code/datums/components/crafting/recipes/misc.dm index 1ce670f4df6f..4a4694bd1e9c 100644 --- a/code/datums/components/crafting/recipes/misc.dm +++ b/code/datums/components/crafting/recipes/misc.dm @@ -141,7 +141,7 @@ name = "Improvised Pickaxe" reqs = list( /obj/item/crowbar = 1, - /obj/item/melee/knife/kitcken = 1, + /obj/item/melee/knife = 1, /obj/item/stack/tape = 1) result = /obj/item/pickaxe/improvised category = CAT_MISC diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index a6040f390534..20b8934f0582 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -22,8 +22,6 @@ desc = "A tool used by great men to placate the frothing masses." icon_state = "chain" item_state = "chain" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT force = 10 @@ -52,15 +50,11 @@ . = ..() AddComponent(/datum/component/butchering, 60, 80) //very imprecise - - /obj/item/melee/curator_whip name = "curator's whip" desc = "Somewhat eccentric and outdated, it still stings like hell to be hit by." icon_state = "whip" item_state = "chain" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' slot_flags = ITEM_SLOT_BELT force = 15 w_class = WEIGHT_CLASS_NORMAL @@ -96,7 +90,7 @@ overlay.appearance_flags = RESET_COLOR add_overlay(overlay) -/obj/item/melee/knife/kitcken/letter_opener +/obj/item/melee/knife/letter_opener name = "letter opener" icon = 'icons/obj/items.dmi' icon_state = "letter_opener" diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm index 3582a5a99328..7cd281564795 100644 --- a/code/modules/cargo/exports/lavaland.dm +++ b/code/modules/cargo/exports/lavaland.dm @@ -22,7 +22,6 @@ /obj/item/ship_in_a_bottle, /obj/item/clothing/shoes/clown_shoes/banana_shoes, /obj/item/gun/magic/staff/honk, - /obj/item/melee/knife/kitcken/envy, /obj/item/gun/ballistic/revolver/russian/soul, /obj/item/veilrender/vealrender, /obj/item/clothing/suit/armor/ascetic) diff --git a/code/modules/clothing/outfits/factions/solgov.dm b/code/modules/clothing/outfits/factions/solgov.dm index 1e37572db41f..393c8a729f47 100644 --- a/code/modules/clothing/outfits/factions/solgov.dm +++ b/code/modules/clothing/outfits/factions/solgov.dm @@ -101,7 +101,7 @@ implants = list(/obj/item/implant/mindshield) backpack_contents = list( - /obj/item/melee/knife/kitcken/letter_opener = 1 + /obj/item/melee/knife/letter_opener = 1 ) /datum/outfit/job/solgov/overseer diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 32e71e601320..171678df04a5 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -393,7 +393,7 @@ Contains: armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 10, "fire" = 100, "acid" = 100) max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/melee/knife/kitcken, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw) /obj/item/clothing/suit/space/hardsuit/berserker/Initialize() diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 7e3fb6c7743f..9c6e90469fcc 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -319,7 +319,7 @@ scanner.computer.inventory.Add(src) to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'") - else if(istype(I, /obj/item/melee/knife/kitcken) || I.tool_behaviour == TOOL_WIRECUTTER) + else if(istype(I, /obj/item/melee/knife) || I.tool_behaviour == TOOL_WIRECUTTER) to_chat(user, "You begin to carve out [title]...") if(do_after(user, 30, target = src)) to_chat(user, "You carve out the pages from [title]! You didn't want to read it anyway.") diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 35aa4fb2a659..bf6fb15c9332 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -419,7 +419,7 @@ /obj/item/seeds/lavaland/puce/attackby(obj/item/item, mob/user, params) . = ..() //anyone intending to add more garnishes using this method should componentize this - if(!istype(item, /obj/item/melee/knife/kitcken)) + if(!istype(item, /obj/item/melee/knife)) return playsound(src, 'sound/effects/glassbr1.ogg', 50, TRUE, -1) to_chat(user, "You start breaking [src] up into shards...") diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 75317c5ed29a..d5b86b5762f7 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -80,8 +80,6 @@ new /obj/item/gun/energy/spur(src) if(28) new /obj/item/clothing/suit/armor/ascetic(src) - if(29) - new /obj/item/melee/knife/kitcken/envy(src) /obj/structure/closet/crate/necropolis/tendril/greater desc = "It's watching you wearily. It seems terribly bloated." @@ -155,8 +153,6 @@ new /obj/item/gun/energy/spur(src) if(28) new /obj/item/clothing/suit/armor/ascetic(src) - if(29) - new /obj/item/melee/knife/kitcken/envy(src) //KA modkit design discs /obj/item/disk/design_disk/modkit_disc diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 5f893bce5dd3..199bbbd1a82d 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -170,7 +170,7 @@ to_chat(user, "Please close the access panel before locking it.") else to_chat(user, "\The [src] doesn't seem to respect your authority.") - else if(istype(W, /obj/item/melee/knife/kitcken) && user.a_intent != INTENT_HARM) + else if(istype(W, /obj/item/melee/knife) && user.a_intent != INTENT_HARM) to_chat(user, "You start attaching \the [W] to \the [src]...") if(do_after(user, 25, target = src)) deputize(W, user) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 53f4cdbdec22..923c87089c73 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -755,7 +755,7 @@ if(prob(50)) r_pocket = pickweight(list( /obj/item/reagent_containers/hypospray/medipen/stimpack = 1, - /obj/item/melee/knife/kitcken/letter_opener = 3, + /obj/item/melee/knife/letter_opener = 3, /obj/item/radio = 3, /obj/item/grenade/syndieminibomb/concussion = 1, /obj/item/melee/transforming/energy/ctf/solgov = 1 @@ -764,7 +764,7 @@ if(prob(50)) l_pocket = pickweight(list( /obj/item/reagent_containers/hypospray/medipen/stimpack = 1, - /obj/item/melee/knife/kitcken/letter_opener = 3, + /obj/item/melee/knife/letter_opener = 3, /obj/item/radio = 3, /obj/item/grenade/syndieminibomb/concussion = 1, /obj/item/melee/transforming/energy/ctf/solgov = 1 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 39b4776258f4..14bf13097ff1 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -61,7 +61,7 @@ var/gunlight_state = "flight" var/can_bayonet = FALSE //if a bayonet can be added or removed if it already has one. - var/obj/item/melee/knife/kitcken/bayonet + var/obj/item/melee/knife/bayonet var/knife_x_offset = 0 var/knife_y_offset = 0 @@ -499,8 +499,8 @@ alight = new(src) if(loc == user) alight.Grant(user) - else if(istype(I, /obj/item/melee/knife/kitcken)) - var/obj/item/melee/knife/kitcken/K = I + else if(istype(I, /obj/item/melee/knife)) + var/obj/item/melee/knife/K = I if(!can_bayonet || !K.bayonet || bayonet) //ensure the gun has an attachment point available, and that the knife is compatible with it. return ..() if(!user.transferItemToLoc(I, src)) diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm index 62cb77d24c7d..2a720129c7e9 100644 --- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm +++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm @@ -16,35 +16,6 @@ Slimecrossing Weapons if(prob(20)) user.emote("scream") -//Rainbow knife - Burning Rainbow -/obj/item/melee/knife/kitcken/rainbowknife - name = "rainbow knife" - desc = "A strange, transparent knife which constantly shifts color. It hums slightly when moved." - icon = 'icons/obj/slimecrossing.dmi' - icon_state = "rainbowknife" - item_state = "rainbowknife" - force = 18 - throwforce = 15 - damtype = BRUTE - -/obj/item/melee/knife/kitcken/rainbowknife/afterattack(atom/O, mob/user, proximity) - if(proximity && istype(O, /mob/living)) - damtype = pick(BRUTE, BURN, TOX, OXY) - switch(damtype) - if(BRUTE) - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("slashed","sliced","cut") - if(BURN) - hitsound = 'sound/weapons/sear.ogg' - attack_verb = list("burned","singed","heated") - if(TOX) - hitsound = 'sound/weapons/pierce.ogg' - attack_verb = list("poisoned","dosed","toxified") - if(OXY) - hitsound = 'sound/effects/space_wind.ogg' - attack_verb = list("suffocated","winded","vacuumed") - return ..() - //Adamantine shield - Chilling Adamantine /obj/item/shield/adamantineshield name = "adamantine shield" diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index 51492f29a67e..26c151e42316 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -305,11 +305,3 @@ Burning extracts: new /obj/item/shield/adamantineshield(get_turf(user)) ..() -/obj/item/slimecross/burning/rainbow - colour = "rainbow" - effect_desc = "Creates the Rainbow Knife, a kitchen knife that deals random types of damage." - -/obj/item/slimecross/burning/rainbow/do_effect(mob/user) - user.visible_message("[src] flattens into a glowing rainbow blade.") - new /obj/item/melee/knife/kitcken/rainbowknife(get_turf(user)) - ..() diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index 972a1a960fc1..0747fb746ddd 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -102,34 +102,3 @@ var/turf/open/chasm/C = T C.set_target(dest) C.drop(user) - -//can't be bothered to do sloth right now, will make later - -/obj/item/melee/knife/kitcken/envy //Envy's knife: Found in the Envy ruin. Attackers take on the appearance of whoever they strike. - name = "envy's knife" - desc = "Their success will be yours." - icon = 'icons/obj/wizard.dmi' - icon_state = "render" - item_state = "knife" - lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - force = 18 - throwforce = 10 - w_class = WEIGHT_CLASS_NORMAL - hitsound = 'sound/weapons/bladeslice.ogg' - -/obj/item/melee/knife/kitcken/envy/afterattack(atom/movable/AM, mob/living/carbon/human/user, proximity) - . = ..() - if(!proximity) - return - if(!istype(user)) - return - if(ishuman(AM)) - var/mob/living/carbon/human/H = AM - if(user.real_name != H.dna.real_name) - user.real_name = H.dna.real_name - H.dna.transfer_identity(user, transfer_SE=1) - user.updateappearance(mutcolor_update=1) - user.domutcheck() - user.visible_message("[user]'s appearance shifts into [H]'s!", \ - "[H.p_they(TRUE)] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't.") diff --git a/code/modules/ruins/rockplanet_ruin_code.dm b/code/modules/ruins/rockplanet_ruin_code.dm index eb6e9bbb3b84..e9d089816269 100644 --- a/code/modules/ruins/rockplanet_ruin_code.dm +++ b/code/modules/ruins/rockplanet_ruin_code.dm @@ -100,7 +100,7 @@ /obj/item/strange_crystal/attackby(obj/item/item, mob/user, params) . = ..() - if(!istype(item, /obj/item/melee/knife/kitcken)) + if(!istype(item, /obj/item/melee/knife)) return playsound(src, 'sound/effects/glassbr1.ogg', 50, TRUE, -1) to_chat(user, "You start breaking [src] up into shards...") diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm index 2b6c3035f0e3..0807e1e5c8cc 100644 --- a/code/modules/surgery/advanced/lobotomy.dm +++ b/code/modules/surgery/advanced/lobotomy.dm @@ -26,7 +26,7 @@ implements = list( TOOL_SCALPEL = 85, // there is no way this should be reasonable to do basically at all without a real surgery. ghetto lobotomy, for real? /obj/item/melee/transforming/energy/sword = 25, - /obj/item/melee/knife/kitcken = 15, + /obj/item/melee/knife = 15, /obj/item/shard = 10, /obj/item = 5) time = 10 SECONDS diff --git a/code/modules/surgery/coronary_bypass.dm b/code/modules/surgery/coronary_bypass.dm index c7f4ab0f220a..1c4b1269251c 100644 --- a/code/modules/surgery/coronary_bypass.dm +++ b/code/modules/surgery/coronary_bypass.dm @@ -22,7 +22,7 @@ name = "incise heart" implements = list( TOOL_SCALPEL = 90, - /obj/item/melee/knife/kitcken = 40, + /obj/item/melee/knife = 40, /obj/item/shard = 33) time = 1.6 SECONDS preop_sound = 'sound/surgery/scalpel1.ogg' diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index 65bfd9567f19..eccf729d263f 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -34,7 +34,7 @@ /obj/item/scalpel/augment = 75, /obj/item/scalpel/advanced = 60, TOOL_SCALPEL = 45, - /obj/item/melee/knife/kitcken = 30, + /obj/item/melee/knife = 30, /obj/item/shard = 10)// special tools not only cut down time but also improve probability time = 125 silicons_obey_prob = TRUE diff --git a/code/modules/surgery/gastrectomy.dm b/code/modules/surgery/gastrectomy.dm index 36f937bf8ea5..6d00f5ae7588 100644 --- a/code/modules/surgery/gastrectomy.dm +++ b/code/modules/surgery/gastrectomy.dm @@ -25,7 +25,7 @@ implements = list( TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 33, - /obj/item/melee/knife/kitcken = 40, + /obj/item/melee/knife = 40, /obj/item/shard = 10) time = 52 experience_given = (MEDICAL_SKILL_ORGAN_FIX*0.8) //for consistency across organ surgeries diff --git a/code/modules/surgery/hepatectomy.dm b/code/modules/surgery/hepatectomy.dm index 7b1b121d03b5..0571cf9b2397 100644 --- a/code/modules/surgery/hepatectomy.dm +++ b/code/modules/surgery/hepatectomy.dm @@ -24,7 +24,7 @@ implements = list( TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 33, - /obj/item/melee/knife/kitcken = 40, + /obj/item/melee/knife = 40, /obj/item/shard = 25) time = 52 experience_given = (MEDICAL_SKILL_ORGAN_FIX*0.8) //repeatable so not as much xp diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm index 35a4ae49b54b..79d3d79bcee5 100644 --- a/code/modules/surgery/lobectomy.dm +++ b/code/modules/surgery/lobectomy.dm @@ -23,7 +23,7 @@ implements = list( TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 33, - /obj/item/melee/knife/kitcken = 40, + /obj/item/melee/knife = 40, /obj/item/shard = 25) time = 4.2 SECONDS preop_sound = 'sound/surgery/scalpel1.ogg' diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm index ca4e156bfdd7..8661b59d6cfa 100644 --- a/code/modules/surgery/organic_steps.dm +++ b/code/modules/surgery/organic_steps.dm @@ -5,7 +5,7 @@ implements = list( TOOL_SCALPEL = 100, /obj/item/melee/transforming/energy/sword = 40, - /obj/item/melee/knife/kitcken = 40, + /obj/item/melee/knife = 40, /obj/item/shard = 25, /obj/item = 15) //any sharp item time = 1.6 SECONDS diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm index 5ce938347edc..ed54575bb1bf 100644 --- a/code/modules/surgery/plastic_surgery.dm +++ b/code/modules/surgery/plastic_surgery.dm @@ -8,7 +8,7 @@ name = "reshape face" implements = list( TOOL_SCALPEL = 100, - /obj/item/melee/knife/kitcken = 40, + /obj/item/melee/knife = 40, TOOL_WIRECUTTER = 33) time = 64 experience_given = MEDICAL_SKILL_MEDIUM From 2b37b9e21030f6d9f1ccc2111dbd68cc7342761b Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 15 Apr 2024 23:32:06 -0500 Subject: [PATCH 042/102] yea --- code/game/objects/items/melee/spear.dm | 1 - code/game/objects/items/melee/sword.dm | 4 +++- icons/mob/inhands/weapons/swords_lefthand.dmi | Bin 28291 -> 30216 bytes .../mob/inhands/weapons/swords_righthand.dmi | Bin 31883 -> 31326 bytes icons/obj/weapon/sword.dmi | Bin 14471 -> 15674 bytes shiptest.dme | 6 +++--- 6 files changed, 6 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index b75e4c528cc4..04c5c5a672c8 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -59,7 +59,6 @@ . = ..() AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1") - /obj/item/spear/explosive name = "explosive lance" icon_state = "spearbomb0" diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 049604ae73d7..21bde05c0dd3 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -41,7 +41,7 @@ /obj/item/melee/sword/scrap name = "scrap sword" desc = "A jagged and painful weapon only effective on targets without an armour" - icon_state = "scrap_sword" + icon_state = "machete0" force = 24 throwforce = 10 armour_penetration = -35 @@ -50,6 +50,8 @@ /obj/item/melee/sword/mass name = "mass produced machete" desc = "A middle ground between a machete and a short sword. A simple construction of stamped steel but its so cheap its hard to complain. Its right between being a one hand and two handed weapon" + icon_state = "machete0" + base_icon_state = "machete" force = 20 throwforce = 15 max_integrity = 50 diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi index 41093fde051e78163950f7436c0c7d621a0e1ee5..49732e254e41fcc1d25883f00e51eb2188565715 100644 GIT binary patch literal 30216 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 Q-300D+`C-~x&PvS0J&BZ)c^nh literal 28291 zcmb@t2Ut^0w>FHTf^?;+2s|i7PywmZ0)l{ubd(wp=}knMln|wg1r(4fM0ziR^b!FP zsi6r1Qlte45LzgKB;N#|^1kOk=R4>7uaoOS_nujMX7=n^_r2DdH4(bn>hv_{XecNs z=rwNL)Tf|0`homMeFBu+lt;CK8$LfnW6ztm9@dW?A9*^uJ*1#`@;>EV)5G_oOkt=s zmV1x0`jn+yMa=VG=PU4*JUt;#J9I9&Cn2jI#+X)TWA^!vFGm*lyMK@rQ`OgJaOidD z`H9G1$0OcJUSQqNfu8ZaU3)uoTIOUh&0Uk4C`Ruo-OTA{a+(`FbeR{}@_vLjMSM_W z%X^N^HLu!*i=Cv5IOq5F#r4|wQ`&`!1wtqLTzVz1O8RLgDmb~;UEQa&-4LAX6qsxC z7(kz!y;-!MEE*AwDogh|m%t9?sQ!L}t`--_*i1h`-*I)7zW*wbpzvXZ;jz628*6R^ zAyN;ac3EPpA}iwJnP>Ko?%zKZbJZd2d^^J2ZU1hqtfSFf*f;YEGi47}w}@_6#Sr08KM04H>BIJ=o4W<723vKkF7;1HBsr|T7M|YuUzF0)` zx_PfhnY%qUeSBaTvw!|XNQ&5ouu744YT%yafGA&Czf+X3YlI%&LbCGS*UIIW(&wsA ztX^r4;EkGMxQ4Q0*oMrcYJ~i>zW>;HSMx|WjoT=$O)%jCc6E%B{GJ{s%7jTvm zES38cxiC1zRqAK7A1o57C@B7*(71WS@X7n-ad@ox-4rYV`po^-(IdQ^o7NA!#CaFL zNPQiX*t}K1*>;lm5A8Yk)a|yUx;IZR2oJvfBk09vx|7d8=UTll&`#)VFn>=qd`Dd9 zgn;a6gq4j%mvR%6Lp$TOlhF=5(Ke!=1BnY0DbO5Lo-A^E#2>L4SoH3A-fI3PA<*aU zaE?z(KJ^i>jQ`u8jTqcNV-9&YIuk9_LzN{hR)9<+Ro#x>GH>0Z_=+ojt50%!$Gcb) zyP1e==qn@Mr7XUh0bE-FNpbqnksGynRAl~1e0HVO5u zkf>(uWYlT>;aY`r<}04dmkM{TcSv!wLY_5~M{`>c$0v!7+?1(%jXtMm( zlKPNQq-5sG(?z&QxkN*pBgAP(#EHqdet%Ay*XQ z9zdEXvQsEcE8j?J#Bpg#AaVt!#6k-%nfP642?#oJN0I823mAoFlx-5@FXkan8oexP zlT#ZD-IzUa%|~MrGuvl&a(+PY<~tr6)%FZ&1e$y;Xmfn7&+P2H%5I3HdrQnP&t>IQ z1z#CN^{>2RJkHVb{u@sqpd7_>`F5(p-gR<09q0y?8jwovhL>K;BCL>_-*4RsqM>5Y zvB{fab3xSajB-pEKex&~7UqUs2}EX^;EHdwu-K_HFuJr59pf0OJGq#|`~qtJ;8=E^ ztFFfV#rD<89(PWtMkzatil!CY=NDf{pwowheEMXiflOUIr*-Wt3ydahs2TnFvr;it z*Z%gMGQ9%l&9i6DyfIOU9{832THY^8MKNp>gOK3mJ1D#pZ?mcpsYLDNN{AQchy^m8 zzw%QKWxn>?25WZtybx*t=?eTi{{q0383MB*vYUUI5JWp+mBf#G5F zHbcq{Roq0K+HLgkHdMzhD`PDg{OL&7TuOs> z*)~@=O`32C5*I&SPPAJcb=%fp(W}F3x;H>#jNv;N@dzCE*vXI3;H#=ztM~wD35s`U zQXiHbc&V1ya*w)BvQ~_H2gQUXmG~hF|e? zfNmhh?v>OQ>7GV(YQc5x*vU$*fpd6x5m>qXPDj{)BEH(pb7Q6dZWMJs8t9_mp)PXR zMcpPG>abXk{rIcCutu_;{;unWDgUjfV^Uhq3m7-?5baax@4?DTvgnjRfbJ9e6(!Ow zrLy1-|7aXyiuuu5m3y&=dPE+S-5utuQP0i}e7OaRb&WyCu8=0(yMJpgd88h3oKC)U zT_)ZRUrec24z&$vUwY^{E?L~A}n^>2?83@ip>10~iTwgM3bCD&z1E9mkLJ{5JHB(vo?Ek%7>}1-B zxsjNt%?OUv4kqyEayxqO3%w2`yzr9m_Uuf+bXbm9NZ|*d;J*Js!K0a+o<>*%Bu)a}q_ZRDVrZA-#>^L&z6@YI-EDWa6V&mIYkk#q%j; z*GgwmSil&eVupNqpHT2yr;SNY!@6@gK;!=lKizX=ZA;j-K)mW&a$ERKm0pmgK8<;u_tb;b;1jHHBfvhsM@m`|SNjB@#c?Yd4mS7T zDnmxMc|zXc-jx;dTz)m-f8O?e6!FZZ8A2T=7s)y;U!6gNCuHHRO4%o#%ORjT>pkjV z<@JQ5J`K-J>^Z^Cb7jhofTh3g6((OB{Q*>vhUZJzNJiOh9z!gYnkSpZca7Zb{1rKg z=q*2>(BPSv-oI#>?wmoLS_fNMa|n)0J#n6S`^=?*-#s63xlPjTq|4r7d>t!n6G{y< z7!WjgFYF7|tKtjLj}DoDM-6WQ+;D{ag(u<(*R)<4@`QxpEY4JH@?^zo_$Uo}1;9`1 z*TMB~=V71bBjfpOLQjIm#JUBRujytV&Rx_hQG*N|`9zDPH>?+cg>YLEu|BRy1`8zt zqDAx@R-sH_HUPlb7s!gmGvwm^6IC3Hv7sj+d%Ox%g>*W~fb|iSrrB>;`2n>j>I@R9 zuk2vGpB(5g+{ep&$f7af0U(n^1{rS#heYLjxxiMiA=?Vzscj~wiZ=OFB{0w>fFP&K zngMEHHy1rgI0A8;A&S()lP|$@`6gF`uOdR5C!ZI*IJkx&w2u^a@eJ;-IZju;V3C&J z;{s2P#FT7C_#<(+!zXutweN#hLZ#NH==@xp_5DWk&R!?AN8lmFWozoITDuay$^3lu zT8^j~&$khu7tE-&{NP$-(0Fnn!1#ADlv?Xtl76bdA}{l^zH+7{iKiwCI%4)&v;}ZrusAeBP@Xst{!ayeNH)FZD2~p^A+r6$f(Eq~$LB3f zVsRf!!7q=+vKx;0lNWY*KLPkKcv%7d?K&MD9e6KW6EL*8Xh>}}(S(aqL-FzepFFY6 z?hW6+fr=}E>ck0~>^HG%j9O22lfw&As!zg$?NR=aaXg``yytaQHh92;+yA0)c$l z=1u83d|&faLmk9&7>nRHSsb7L3^j2v@T%^&lq*!kShiYYj7dwJX7)lXHC&Y;rDhqI zH-D{Lwg$`T2QSWyt(I{9Z6}a1<-Y8(8n8yHb(2@lJvpHKUjP>hirfS*aW#%gXV93E z@14ahdhzUtQ_7b*Zr=WwH9pySMXTg)5+lWjGn|yUOmnnp`ZRl^9QOb+JXxVH$c$AU zEzY|{whwF}&zNv_FhVGkTjXw|{_`ckyItxf`xVlKPQC}2&9w@ocRH}0Uu`;85pCnW z2+!nOX+FfS$`wiQYyqL@iqE!^*Vb>EIavWv3ELZVdT=Wgn~RIr|7NO1Hho^N^e6R&t=DzD1d(>_Nz(=6$8aUO+~p`-^&%j&mQ&Gt(%y+v>z~4N`5)A zRU?@76F?OHoU(v7QQ4aU*V$P*#y$uh3P{y?w39P{4~L?R-2I|jcJ>x@KD!T1=1j;g z4*H*O>=BqXOs>RmAB@avBCMvtsyvIPjM_b?93y{ZpUBG*Yqaa&!%>V1$8j5c#|?Y= z9gXyhz8ZYxm&!T};>bm^wOU$dWcfP7G+MULj-!-V-Pz*>#(9cP^tdJWzOw+P$LEdC zW(3WYJ2%OyYUX8TLtDL;8=6^K9(`&M8iN*Luzk-cKW$C@dQ(LlJAT1v78mksGaz~h zV+LPISZK`wMuQgr(PUTO6KdROX0N3ih9nK-q%FUn;6T9CH3Tr&1vC+-aO}IT9 z1#CB(yUh3f=5T}vd8u``A)~$9dUgirLqzM$Ov3g)TQ@P)0zLHb`67WN?AH(Eh~xAV zbvFCp6d1)zaw|`BG57-&DM#!zw}FDakni!c>)6fC*N$N7a`tRS^1Am2-=!x`WNlkP zC@CpxhTiS0*xF`r<=A~tc4+WVlT%%M{NzzCm5Bu(YxW0jI&GAIEd?X(2!Dro$7d04 ztE#!J0I}uX6FzUXV(nvpjXR3Wx6B|%qu@L@EiEmDE9Si9d@q*?3)oLh_Xto>C}%QS z7N_2e4r%8KNYojE%H?nv(o1hx4!H$P^Vp@oisLrrVL8)1LQk}Y=z zQPu?WlMkdYk8Dq*6^82$Fdhx(vWYoVF0!(H#v9e07(#AHCNSKpq)b?usnh@8(YQmk zRbnIix+aaQ1@d?yjEgSMW>poE(Fb2!vawK5SboEHu!^Q`$I8S~usmSg$am{**vL2h z?X#?zYIZp3j$Z2oZ&;gN+{jk(TUY;uEicQtKBKdC1AtP${UHh5V>*Q}$1$Jte2H37 z=bgq>a!U4vq8d9yleuJgaZIwUYNzycGHss(xe92)Z4+M8+<%=1y=Y}=6d&)JQ(`a) zm{sZ@fvkk?Clnay$4gu8qVB#U-gwz9PW41PX4cFOrqa>&e#^6V8A0e+V%lI-@Esdi zR;+%9_mNNI!?1VimW?R2m8n)JN$l8Fo@pGXI(dwCg`t1fPoV4qs6@8$@qaj+vmiqcOF1;69e1vB@#y1GuO5xaGKZX~Lt{N(CUZ&|9rofHTk zDlh<{^%MFB)(3xdW4Uc?Q)qGV~Da72Z4*egi*<8I|2tVQ37a9Z!a~@thq=vIA;d9SeIes zEBi>BTmxI2;YQ`;P)6N@zFYY?%a0CUsy;~a*iO3dN|C48=lMP})IPj=a{srmPC0P5 zUJDXbF7nSab$%(<3QDPy7(L60GLQIq+2U*8gN@4jyjLDz ze`eK0I^V%f{c;)XiH}|PS?xD(lg##8bCkmON$t~OpXOrs^bHnNuZ`Sa6( zmV0H}oZ*b+CzDlvmP(xZbRK){P8@g_TPdKK`tWv9M`QhAy4L}O#i&XrB>NY+T4wuv&KINX9x!ZH zNuLfcT|X4N1H{_@6yuVa^^CImt2Nz8p>so!rx0gZpKIf7dN;=*U17ML{WB&XiGkb~ zFAq&(t!-NI`>eBC^W9%CsVZ)aV>HbCX$ z*jwywB~^%25C$z(wS@w??P^hup-C=wyBTHr{}oy#H}do`*)$)MOn9SiX`4cyZw)-^ z%AH@@mOFR3VDG%7awCC(T+#5C*3*@rP5eGt8Ln+9o!@v@!f*D?r+ZItC_KJpck+#G zVmGj@|3%fyt+sPt(dd)y-+$0RVke?f!SgqU(3Lx`GK&e_avhT>(hK8i`Gk=JjI1_f z)RFr}27DkM%w^gY_uHM8_;9t5OOx7&C3Rf98c=K8P17)eAKqnKMqwkl6jIhn)Uflp zot>2f!+BU>2`A?Y^oz+iRmNl?#k$mvm&$Z9ghChw=WKs04tOoeMUo3qUk8hOWpX=< zR)T=vCYTj#;zJ8f_ZGfu>FAb2SN_{yx2>ZXUBxtZWQa`KXLzqo7sJm6#WAhpBQp+% z4&rNL$9ugG=V}kaQ4!4ULx3@u)?Nn-W#46RH9J;cZRPQjrHD|7_Ts@+@^tewjVoLF z;A4Th!+^R!`xkXTzU;}6i8(uE;S=+70{^nAIqc8Heg5U2RarUef|NA(8yIgJefQ13zinptnB@h$H?+ zp$p!wx4m1T$v3T?hHw2s2QSIN8dtXymzvr}a-qq*az2j5Gv^Exb|pAq!@{dQ&?HRt zS3^cfkJ`#8??{cN2j_6YQd7>zLY=q!-;m)dbyY4&|Lf@YJ02-N^FCxDXXQmjr?!H% zK(NjsPY(NLq0{BWi4&Q`XsiCx%;Jn|SbM+E`Nl50`}dWWM9%Wl zYc9zy;f1%)@H>MS6HP9a`9iNL*f07InN!LY81@NkFrT@l-$DHD=hLx8 z3?`X6mEZdkEKv)v{5(Y^Slt7lj|}W}bHwYU7U0Rg&g8iRZNqW3*euF1SlWTeU%bpy z$(@rq{&X?wlkU|J4#{xxbVi4XdT|be!Yu6d0CIDaH`ngezRWAWh`GG7z3`wmD&u)A zEJ17N9Bknl9Y*p0gC%$KaX$HH+Nvcu3@WMzGo1gzj(>%eL;wF#EN%HUXfUlpZO6Ys zNDF>!rrE_9{{M_4N?8qyP=Y}~Bcaf|gz>+4T%8;RsD8vzNmguE#+2U{M2pLknd%sq zEbP!$crns7InfA!&rNwW>#BOy@PAot#HULT)Yn-{%?jqI2^-k}G6M(p{ zKs6?I&SXP@9pNi=_ue?Sp`eSmit7N+a*cwNFymGwY$*{Chwz5S=oU*QY zvkL*te4s$EUZ=u?j5pq*xUscsA^Dv0f?2Od+Xs-V9=-joVC5WQO=hf^lYkDXcKC)S za}M@;J)(P;A(f0LvlRj3GatTRPy>sYj5)yP*OT+b55pKuZ@&jaYH?}g3pt2mdffVg z^{R*Q#|NQ?mgRTNPBr7v2<@X36rwjnJHv-d*psE*iWe=%>U}*{e&H}?jU_IlIJY~G zcEqDRlwd!P)BiSG{=ppK`v7wqCKd-~N1}!gt(xmpgXok-Hs9@;b(f&Jrzt&0aIhSm z_Hu57Ju?Vi8V;rOdJ{Otj&K6XaJaK_?o^%B9DJruDgr?7DQ@M3KZB^}WE{QA_6Ie} zvl7aed!Osv(2TDHdXc2{51i?EHgHY{UIQ`PF9jd6G=SA;(QWrT+;TC>^^SK%n^YuX zXF;#m>1`SL(QdLbg6QoxfP0#r4VpVC{2-!x5pw)0bQBmDj#3)l#ExoaCpcQXjZ@R0 z%K1g3GrJF3xZBIzI-hFNE(1H-I{p_l)r~mRd4K#Hnp~vt#n7LBTSCcNKT}X2%9ca2 zR}^CoO%cOXpIh&#(?+iWJb7=Hdst@kp7#oXG0Vx;zraCURP+yA{HvG{KGsiLhi1!f zE95t-xu=&(aQ#{S+wAzWJh~J>TOf@6Pw+_SF0<|AKRS!YVGO=k1`_ZQW5$&(i3S9( zXmwKJ77nL%Oov%6cFEfombHw*czC-5D~JE6aX(XbF@XE`tAANrFc^&a$Q4IwgJBST z*9NwgCRko#$&HPT8RTLPq&D{4BCvSGaGc=+<%eK+UqdCKwg)KEU*e+4ww-ad6MJT0 z&H4N?XwM+sd9hpcrD8Im*`}y3oU5gjXl)EfM!jXlV0W&SJs=PuYHTJg8703A)*Fa7 z&1=Pz@>{dGpfmk0#-!;Q363G;6XEVKoJi{B@@uTM0Vh2g2OUFbeUt|zt9vsF%oFG_ zZc()5R)m$`rc$N7wQN8Q*Xn-?OiFj${EUzv;X$1L1!$3r_hvRT{r>cRgA=ruiLK8xEXN2hDW}P|)#i$2&Qi&RA`}JGAJ&3I znsTAl9?$ZziIk`akI9W%(=`mban7s4o40g(@*r?TE{5gCm`@uJ&&~2^;NG=rZ)I^e1e;Lj^o(AA$wLeP(xRqZ$b1 zaL+I%<-)xm@PoCT$YsCvEg44ht;Q(06^Qq2vJH8hF78H8Uzw+{vf|2_@iWhwwrw^(^F5%qjEcZGT3-KFKkhQ5!5zd{k7|VlE zj_-2<$lVI*#)E!$x81`!qs9%!0+*qLs@&9=N3M{&z7f|MO>}54jTIK0$t~L|EN;=h z^t4{)-J1F+w?-8-|r>){gR%nf$ZYg12Z?uXVuW99Aq)_g?uc4c$(TkItP5X^&??~%=Ml5>P6Vco6Ltbvy zfR7rt6Nqig3MjvGj{K>e_g+st=JMV5BF|Zdn z=2P58P9N{8Pn_PV2qgGnRTem_0=6?R88F_QUU==Dy!YEI8JqD&@vwl~%}_d}R2 z?8u<`u<_%`-Pv1Hd;udaQm+wCQ=@|P;&t;Kivv;Ybv_EeZYoH9uVe2hP89#r2(ykt zDfn;C$}+RMpnEWmr{$760K--F^6E8Ulo6{baNja#OMoXXUF4oo+1rmsSD<+t*Fs4i^Ha!xU!iV=jW=s05dO#=YhTRQ{r8iJ z;;OiZWuyy{Z(G;aO1u2ywO<&?)?nC`Uj$jyJhtT`zg8mDV-DlymPBX55Cp$@-ieUrWxKFHWEY@^GBqr_yCTa4UEb^^DHK z2iy)76KB7-Wi==;H!rpKdz^-JQGFK&efaOP9Mk=Los}V@Ig{)9_ns=Ez!OfGba4X1 z3)Uex=tua58Irz&D`nm_meI;{Ax_<`VJTlH6aN|KU0l1w>~_8uq(f{rj+Z_1f}r2W zt;~HZ94|1Pj!P+vApLq268Q3yoS2hzTWh>5G|pQe*i9}N9if;!2yN=0&K zBAAorH3lLC%utz$zJqc|tzjoqQEE2A2K=W_8dV9%I$BE!RA;5& zvdbd$1LgiscD}vcuzBKk?cH~t^G%Op7NGrHx`ain1N(#JlwYd2b3R|ChNg`Ns3@MM zGeK5zPwIKNZ<`$D{Ux4~>2cX?VK8rkjn==e79SwDVi)I2c6Eh{=yJ}I$@KY*7Iq2o zppKkr_P_A^2>gapX!Egnr)ya>3e6lKMhSqk769kng;PWj&FJ~b4b5+58TKn25&q!w zI(AH2v9WfpIR|V3q_b&y&1%!8G+btT?SgEugN?I-_?mMa)+3z@wAWg}1?;4H^cpd) zjkILXRkl%0JM^F+vVJkG9AxNx$--gZsyw!LeaVcg2K^P|eq0Qn?PPRy^gX~rpvJyG zk2{mmbE{W|Y^i496o;1j+Jg0fe{d1sIwtMLUB_%p{nYO&vzKu`UyRbiCzIO(u-y$WGA*MH(@w7VWZ*(UUw=>#)Mw3MhICyIwT^c~ zHtcem{wdU}V(+XYm48zD)GKdSr-pj}cP!2N6oXEBUd9D{!EwELs4D+=p-x|qSrSvI z)t=$pJWKR8a{QJwwU>+6}q>oMWnkMNPzAmD${UB2I1oD!vDo*mw^lFV)C>MSko zB2Zkp-~aGqH3;RZd6U%_}$|JuQi zK}zl(M*)Xt=<%MbMb1Qeku=gq1RnIA+qfP`r!l0syMb7_ zAFH;ElQvgr!|7-oFRi}8*NInO`N~(+#G>#j-xLJOet2zO4;;J}j6t-m&)g~_HpP=% zs4^rvh`UBdt~}IjFC*&JxobF!sxoHe$5msvy~pJvxxKok@M!mg>(PZIF!-UzRyrhk9B=^ZsnDGUc=tAl|(1$uWg@4GzRh5=p1eHxJow|kO_~# zF^=KHKN6)TRvyZBeKjHR%DvH(E9D=y%<(R;SRIKU!xxO7;ij|~(8DO&qTfe!_HP$q zKj-5_KN79#0{Mp~zt)Xwg^ygvAZ)0_oT!Fo@tDDfbKPwz$zym+k1jTzFUC`Jf$*zK z^=-u_o2C!1{CF~WM8#yZZxEpUFC#=B(LS>A7}x&!E-CZ}@9re&byBu+4%35a+kW%m z$x8CD>_Wo!fiD+JuWF z^gn;11d*I)!7sA3Zi#_jwEa<+3B?zFlNkIw$jP(aNs`e+H_%+$gD&Wmzc!`i=_(2@ zEQz(kM&n>rV%0=dJ_BsXh_6l*Pyy!Xux1hy9I7+NU@tDmO*#C-_4?#5@=l`@l>Nec- zo5s!hs>^S|bfyGKFxLMd$a^g5KMH~t!{ems9l0GQ7gc__7OM88mEXNfbX^0$hvz2n zZ8T$UZA#8|e1~)9I^5l>YElO~YFml`i^l5<%GiV-5iF^MUO1Dass+KuQyS@G1#x8_ z`mW+BQ;5QcW@>*WuT$Iq3sg&P!oiuGW4CgS(Z%88ZSqzd|Sb=x&%Go3e0rsjU>JS3*R4Vn7 znNy;N#GC4^OwMqw?5)&?$(!Pran#rL<}6uX1!3T0?-8%Z1re8tRJQl;sdJxab81&+ zOerpezwv8UbgZN^w}?^x;hR3_tmpM3pO04I&Z2_C{-*}1Ad#v(0mKykrLCmbWJN8} zl=B{V68^x)mJlpL(ms{}O*U;T>1*g1#bYWQynf{UE2UTO?v|Xq=8M))uo`lzXl7Rs zs`lEsa{7=XHr6P$Cr^8vKAI8PV2 zuFR{gc%Kk4QhehgPs|8P{>{HPOcmB|u6Q34sj470aVCltlN!TwiiG{7jgF&o$9pv5 zqo}gehvEH^g={|qEZ_>B6CO`UOX)ry(7=OmE~QYVvARgVGYzX*JlA0Ob!F;bvz&V4 z>mf|jQ%&er$u^h7-K5JNbR&x_+XyYupt|yE^hw_Jr7X<9((+i&>FR@B zAE#3@AWtWjiV-5husmsI09Pd2C&~6ZFURXrFJ&T1t$UV}F6ZbdLOke&p0?5pEk$xm z2K((O=LK@m0**R|3#ytGe#@x*l}jv-mc=Bs~?GpFjuY`^PqOd_EF{PF7? zSZ`@gJ3ungoZoUejbkt+2FM~||CZ*TLzXLFch6jxi!ddH!`Hriv31-Z^11)rFTt2p z3RPsrxXp|gXCu0%|9On^&>&pF~-nML-{_}mP|2o2J&o zkzaL_N0bVG9?%~*eFhJ=Y8IepdE(UtmSY9!LL{l(!}QUpBAlBvHoq{GR`z&PeksB2 z8oMpPaC*XFg&T+SuTdoZ!w!(v8AcS?E#YD{QBNvKY@XpReOgLoXmmIA$*E$YCXQeK zKho8n(q_J?)O-p9=RW{fKAv~_wy*!H*1QM=nLj)8s|>}5c#3^#Ez+bpdpQ^Ez5Kx+ zbEI!)Ef2&Jf%LSKl7yfuDg@+=JbgutXg{S~U_~A`*o~hzjlvZ*C;E{|6z%sOIi7NO z+2&_1Z9VwAxIp1FWZ+^*oW2%G(*yBlpDVS}lmKhbSJ`2))F%QT)P5xGZ4CO;wyOb1 zpBGX5WLpt9vN{m@u7>Jgyi^Q*I{kb;FW(H9GmN`kXZb%JyW>6-1!` zv4Z@x4m3kV9F7ENys%5*H#3L#kT+SvQ!R84@NkV=>w!EsyHn6yGaIWWG=hy+LaM8k z#jn(895E!-p{yj%$l^+B*p!0f^A1^fXxifpeV8`Ex#w6fuzScp`7x1H>SxEPK2Jyj zT5Vv+cm`;-{T)T^!>2*na^10V zTin4!3qIvnG3B=~=gy0;?JIFL6srJr1~rCH}NBwiYA2m%39g;9W${cT4eeJo(}9LoufKJu2`KiT;~$ z8SOw|Y>&(&F?Na&_e3t)Hg7LRR?`@o)TWf{JYT)fngvhveKy=e72dz<_XxA?Lda0I zU-JxCenkZ+Ra;@1+RuJP?=@?U*1~^}J$UTR(zwEVzJo0Bb9JP#uMC^jBii%1Wb(*^$V(|W; z<}hts59>ejNkatQApA;N(46d-tIh#3=eOL>j zNWVpVRk<1%3UjK7=(;4}(cJh-0jy^v^8ERaz+ujs{?lOw482*ez-(C#6ME+7C})#n z5U{X#ydpP6j{_~F*5C;n*Hp16A{~;yXnpwyUQJ1VV&!z(QL1>`auRZ~%RpyT9AMD)3XM?g2NLkt@LB z{10SRHZgEo13E2@S|vwl^_+diGt(blTu%5iY>U|SADtpM+F$1)Z&=UWA7n$l4->YU=$#Js4IqsCnyqHV}F*~7_$-KE|c-omCc z3TL8*Px}yBij&*cGa`X^^r`L8E7lFJju zY(A4PAFd(dEY~746d1L+3*}UuN=4g4EeF(tkWyjm32d<@n zaPyBkdvxX)&5(GxbFpEa`)?;%t%wwx;=wPhSw?xbg0f(!wO0IPp>GcE&uH=OLO}?e26LWo^h!k8~03jZA$7SVJ0FvqnDM`R>)EtyQmQm zab{7TJqKx%8NU2Rwb;jj5Z-d=C9}y>i3^211o;K0aPw)vo#rPhqPS(rX?WXV@5t_T zB=bR2d?p)kkNudgTsTlGg0G$L`qTXcF$`@_oS5&wu{^?)!EW&5#Y4vB4iKpIOO!|9 zswy(_sG2S`yA9&0P))C7y$4OHt=85Nih>(3i>s@AuB15y|1)+jAGe}BX&M2!TfZS6 zV(@FL&5P1rdaEJ^g1S8chB~*G+LaVeeIau@US0M$nnQ9dw}Pqpryt0UB+C>78Pg_Q z6o}Splbh<1cB(uy6L92X3tjwX(l>F0FL++_k;F+xYXr*bTR~ucpTS@ttgpFlq+z{JMTe~4O@$un4w4Xn3B0A)={HJzx#*P zd3i+HN6%NeO+cy^28j^YDv{^|NtX@Kg}sQv%n-DBhJgOVZ5F-eNtO2JB6il<_aC1(j+;V@3j z;|gzzxf>M6bv5`^?!A9w-=YKmA%KDJa=9M}B63^zCN4Mu^3M%H5KDEEXg=_}$-T_< zQXm!JqM5*f>^GD~l<69d{`?{7cZzdSu||XT9pxgjmf)<)2z!diciT#5@vA@l&u61s zG}kDEF1Bm-+P=*~&*<#kEFy+uf6YC4f_;I%2{-|-Jybt|L8z;2* zC6JM_bp3535m(Zg{IIrtL{+u{F1i_$0fKEgJB+ep*0JF5Y0KPRF8O?!kWI~~r5rc` z(z3pHi|1zQvuoI~U@JxB1K(_l?4Ti3iSg=qlKn~p^RRvS{e^CC<+qeCR$*Y^YQe%3 zPx#Q|w*_f_-aYmviuI*)P3r!FL2h^X&h@r6SIF0d(YNlNIXR)-=b(v<7|RB0s#z%2 zFL4OQL#*O5dg&pe=iY1KZne-4QHXdqisY&%5ncOIn|Ap--h&?l5*R7Yw06$kJ2hkl zov4GWF7wZ~sue-HsVHjP%AX^FQ&s|ZdoxG$R`k} zy!M9Pq2scvytf)>gk}QbCjG+$zNbi&&ys-u+UIsA^zw=63$V7kS$i(^ILdbm0$9d}IO5rXF?LFNoLTNLIp28U&;K+SBWMvoSCIj}yTRkk$H|PnUviKSM9jU!8y= zI-Rl`epn4}#dl&|IpcIajSB(TednBUm?B6{Ll<2}z1tc0naqTK9)at|gGkCM&>Kx@Bv+0Fq&E+KHBB6pc_)Zr{p;<~_?Ui+CDFp!+S_^I!E z&N^IY<>oih^;%@yS*XNRkyax|b=d0FsCm8sM7-r!{N6dJfn?L<{DoXKXx0Pi5oo7V zs|rAFAIP{dEAI|i%4w|byYI>)3LrQ~nXRwlt^Ojl#`1)h<7whg@a%QY*oK7%*Fbq_ z2{^~DJ?XwDkLZN&a_)VVDPd!Gt5HALK$TFZw1|)nUW~Syt)6mwzv=YL|C|2w7H2$m zGlKbjF>+)X%$cT&ZHr=%#D-f&$vN&MB;MImFa|L_w3nK&LF*Nxa)|S2u`<7dwVhi94J7 z#x-AR;0|FU?HK%I`~LRkhlzFA_Z&#dQp#lG%7&l`K2j42Gg8U*Yuh1zsC=Km{pwDE zo0W|-{ce*uCVb=Y@M)@#I}MHelRNmN0hp>DA&DAMtB7Ik$H~Z?f()DxjrZ{$y~YV) ziC4MBB`$jE=ga%}c*fT6mdcPo3$6K6%|XNayS}T$58o3R5LRtuZOyv8sfR&Gh8!m8VJdge$;0%Bols{PH6vLsRF4s!;6? zn8-8qvX0;kJP198j234(sBW*A?iy|}In~9bvyN0@eu*!W3Z|g2HpBc$rm~zIbp}Sp zv6PkvxHmlCf{!O9NLBBKU`~&1UL&97t%=q;8j z;a0l6X!Gr205DK~SV=ssJ+}eyEC4MxIkN6gBSbzP?CT(vywN3&iY;Dw3bHVKhfM6- zwU3mKxOg9Mf$HncAfVCcv$ruv4rEYpzxNt4u?W{8$R6JE#_U$O6Uw2TeFJ4GJ%* z5Wmy4uR?V~$ySqj_R+b`eePH9?xs$XK6pxnr25V$uChudo+nwy(xhca1-lF>Zf~Vj zIzLq?RD3FQ`y7OoUB!VXjbZN$7gt>BLD~JF_5FNIS{SZm8znS^z}XWDTxVRJ^+R=3 zLwjFW6@7$g3K|V{^zr!Yc(e0E}3}^D73VXTS%KVXU z<4j2d+H$V?q?J{wrV`HUkCalqM;#}Mkg<=a`(#Gq?IkkAIY4Y`!w=)%uK* zYSzR)<()ruAAEP#x6ao<=MP6b>M@i(S3oxggT-5`Shn1!?jvz+SBMpoK%-Kpl?O$* zvweP)f2$2!S(R%9+oMZ?b1f*iVT^%Khs2G3uwF=?B~B>^DF&DmkHDrrKf5WSUcg<- z@6G5c+CUU8X<%9me7mL)Amm5gT^@gb*AoZn6%2_)+3T;^QX^gv&Et$j%oKL#m>&h< zdFpN2PlF_@F$neHq;}gG2%D6BS)5#rk$p7vbVn!Kaq(H%Kob9+#qe?X$!i~pja>pl zAtA@#l!fR(CotTsKh5ugLy_v6V@)hVzB$g#yv zZ5UItI__o>a;5gZ#kV}R5L7g6aREL-2u9F?*$GkHNpB9vTi0rDnf)|dMQdNG>7GK47}<%w-mq@eg_ zl=Sq*B|*grP6nWl|JmV>ELh82%&XguVX5RJqVb*_UQZmlkr+k5^}7-0D^EXM0IFfiPX zZyA`H`rt{hUDlRtga`Df4%v)RDSD1uDTEwVGI4qL_%(P#w$ElD=_$UI{@Y#pG~~~^ zDt(2Fb8HCr$^h&fVx|##!z{}j?1np1@Kwi+eXOKi>sA3-a+bG!e{xJ-IzdG>N69F! zTMms8AzwQaS0=y2J6A-C?>{cO=Z}oluU~(C&%WMzOJl@iG%uYkW4^Gl`d3n(NPGO8 z_&%J^-YZ2PzyB^)Kfi`e#-7D_{j7aw&8ChPjId)tl-V2XX>0W%t-EQugQOCJoMERb zcIZn-Frv*#lEd8BD_~!*4T4AO%n`k^LX`vypuQSyvVY z!(NIss0EUUaD-=}YZS!dg-2yp?BlkDn2oY1Saw!hI@(3^k@O>S@2&Rlp&hC0Snry4xX%$H%*>-ECuV zxV;?mHQoj-{w*}6*GzGLeY7b!e6}mGU#h%Nl0n_cO z@ai>2xXaQHehtC79>fY0qIRBk`tvi(mm;wB+PJf93ice$-jt+;?t(8OjPjR5m^MCg z2i8dt@-5I{JCU?GkGwTLOsd}#al$qncx=QgKd)+>IlYL{b{Ks4!IVTIs$Z6lvyIom zdIh2`xG&l(KDJ6~)Gqn{e;WJlsHU24QS5*Pl%fKPSWu9nA|;fdC<1~YHFQ)|qzf_B zkXR@R0wPVipfp2AdPtNiEhq#cH6n!20zwFoP;w`J-&^mk^}Flcn?E?`?6YU@Ju|z_ zoSDIcES+6VbIc&G=}R=Vvgcl8CmnoqR4tQ6VdR_xO&G%eJ2qnri)GM#b(<$j<#5X) z{!=whHc_QctMjB}^&B1-iz?LC0cM*K8rt6(o(eY}r0xD>mk!qHPnOb;PS6b>)s0*U zN-W-|mgzr-3>}eF%haVT?jcc^cAP36YO|^12giqv-S5)=wtkFB(|Ys+jswiT9s6Kp zxbXvD>A2ixGk?>#Q$`={NvO~v;xP+^lB zKze)ojjyiO4L=ad>=zrY#hz_u9joGgmiCBEn!MbMDALMq<(IMr?g6UX)xpD8$g`dLit^!kT z+0zUzak${`U%y^W@;&E0c4kV&04+SdzP}stD%u|P0lW5sWU%uzpj;y3fgiVr;Hed| zRRSAz7_&c|ci#Y#qnx5n7ZZ`o2hoVV{H&A8AJ8xh6I$}p58#H3F)*pArpY5;?r_Uy z5!CY;%18ITkRbLk!nFOvjG7bq+X=Z=3%+gyX)%V3r8FMCI;22a-rRFML7BYd8|&e8 zwfpyY`Dmq{#@+h}Pb38gO4ua4gC!T@ z0RatPulmUEI5wq;hu`&33}QbEJL}SZp(Mz1w(;u6Eck*hn!EyOTOx z{)J|Be`No}i=iR72J-&EezR>I*XsHh#| z^l{?mxiV*VF`B&L`Q<`1u4!K(dz{i*Q|Sp5y`JW?mZuw8un6Apz+z4F_8+Sq z>f4iy>N5Npso{mk^neLfjmm5JP9(@Xq~})_kmOVHAVVv}%8YjW)^E+W2u)-fv3nah zy+xJDkl)f=`c1+^;a&6@efw0H!*AP#c8)$`*BVJ}fAMoGH;KAH01SUJHMKlo#C1~z zR^?`!RCgX>7I_{H8>1gyPmf8d+R({K2Af@QJCb4D->e4t_0|kpRN5EC z$Szrl%iW3LY`3fuv$f0SvChG_&4eWcxqgM8e%ASazP`ys z2z+Zl1Qp_>qfZ~uwp$G}i|Kq168_^^y*7K8=YjHZS>zo$^V4i zj!UL(|NU0$@-m(jT-|CROPfNlEI(ivb=I&qd8RUMLv|E^{sf+ znqGSYMnzJ82K4}}vYm>xgD)_v`p2T#Zvk^T4UyE;eVNif?Ph+(R`C~(DST=vfehs- z>h@7wR1V#9+jKzP14o^ai*6)Rk<)8@hA_0sC-J#NRqG7?MVBWCLL#q(-GNMRER;mT zn?@E92Kv^s8^-ZXX1|EyVsfFkVflYDQEQ)5Y<{Lj6exyc5X|@cX61wHjG~~rhu+wx zl>^9AMsek(0=#(uH^TocQPIl>+6Z=OJc2Y0F!$9(Vc?U>%M(3wglbi%bg@|da<$o+ zRJ(eI+5&@UG=@8~?ITYH3&E3#(iea-W@}ZQP%15nlYR&;w{e2$4i1-9{loE# zi=ILfm(%|lVB}?h)NWJBHcdfOOs!*S;sYQLYmCtc(B?i!T>$=xUXnQ5Vp<{&u65RQ z>=Xfl_VVaxhHtkk?AT>)iIx}+@_usl_}Dcs1fi&(vb`Ta_^D*e;-FR|oo4R5S@@f>X5o*W8=bH8hm5-ab7z;PATMw%zO}={ z7>H#QrIW-h9*%+gFi_6dgn%p|A>U7R)jgm;W0o<$Yz*(FG=9GoVnkbs?1t#uNsF2L zZ{9))J0FA_>a)izDPVn_Rd5b9HCs+7>JxS=M>B%BoLWw79>>>$c3b8Th+T7ju*W-g zEq{?u%a>CL^N-TScz#DsF}niHIhV~_;;kH!VaAqdC`vVO}IQYDO7Ne;Kd!Bp0d-vw~2{l6f1#tL|U_@tco^zm4nRZAX@Sx` zMccH)vkv=U)MnP<4<-IgL8!6J@y~rNESTu5gFEPvqYmf>a0mw%@3pm^V6b_Y8*EnL zI=63309-dHMkq(d7%t=2={8@0qf%`me;gX)p;5&YZ!)olFN>3v-YTTYbEL}BwzUM#| z|Kg4^47`7)T`{;tGUSo1bTHPGTdH;I&%}{f!7PbZCtv5Vff^O+BI|4)Mav!fCunn< z+0fwhwPIXtmC;s^FMfCs9r{E{ObWKT0ENIU7XSH)7-xD+5 zeT{WAkVaxRnqEhZUBgGY!uzjH#Y~O_e}6}0i93&``E4>FhmFs3UH4KHtC7)LBNmVU zPUXo=*Zb>Pl$^94U2<;7McILHkXS7eWgEwtwm^6hf^Qq$2TsVnnuDTl1yDpmV36Zb zIjz4&^lWT~s0nF7VD4q7sT<8TvZTpQNG2_wQd3Mc?H$75JULU#kFhoBOP$YTl!n z4?YtD3QaGxUIHLtd`GigYWa+QA7xGFvXE9GJEE&DvQSg}$IdUifDSFuuNkG8kiCZY z8ls-u{$UU#7Kef3D8CX!`7{vi=GJyTnpt{j7{8DHRc_D=4oc$hGHg^6wN%)m=KXM} z<1lU!lAAB(S9C9)q}c(Pr|En0G9?rS$2JZH=j zoNfc(WJQYapEWUxQht?TvBI+`xoGMLe5e-zIRE^jEOW#r0_-w1Vas=VyN?$2nferU z2GW)@VGcfDcP%}XNafa6${W2kZwU0fqBpDvJNJC=goe_r>ObBn?dZ)P6D`wAx^xe4 z{F{oC)b+;Z+Hf-p12$nHvCd+B9QLh`WyD7g`)>ZkR@IhXo3Pe+K&ziALWFGS!t7alEceVu9MlPp9)_05OSpZoOsGTW)BE7 z{6nC>G3=BX$kwmhrIjlnc4ZtX$6cTLt^YdB4D$5vJfg(X-V?Z8M{Fd%gm7hbV2;CB zuR1KId?0@^;MSFjodH2VDNU^G{Rg3;d@29BtjTyME-%I_#eLiE8>Hi(RtpxWjU9gT z*!kK^fwAUOMTCyN+B;9rOYHQiF4;2QcS6Y(;cjTYv8(AJ_?W`;5G?RD6WR7rwe>)w z{E0q@5*HWY#8Wfs&%0~80B|?g7b*W>339rn`|c~ShTONU$u+_SYNh^~49dmrTu%=p zdBiWgxC7Fi|JCnKS@J8<`gtM+_KA&u*t)5ltg?H!0@$Aecm|qfG*qyw*#>yAh=2Uz z3*Z+Q`whieIV`r#0T2I_E^Dsp*`HX?KeeWb4*v6PVIJTUWnfBgQ9GDbE&+tDU-_${ zuBcuXd`T|L=&vaX!HCKBiLD4A4C)VyuWM~<~5M7{_&#t3Ol2BKII@` z!3Ea>#ldk3Qo&dZ6s#xtXxts_>Pdv`c<{!RtKLH$30=Y@HgWt^Yq+!jC{hkcS-Zq> zj6k4bj|>r!H+`h$6^UG}JYJu11VkW8Pzc(`+Iz9jM=!RC=UWlMYFFK2Z7PpWIBy1+ z%4>Z(H=E<@qAu<255=Irw^y01d9H;v*e1QloY>Hh`} zGkgPwhWhEMb0h&?oBV#^v!CHt z>`FOq(q_H;4VpY6Up!BXr9G#B_J!Gx44q};>Kr_1njdJZ!p^`H@%xAr0~M1Nr&(J& z*Id5M2X{74xq^lT_dyqLCn}8T9?d9(BMQ@?%gtX{I{i~KsU*n(`RtUAbtD$Anae?<^%T}kVo|af?GSvUZKCQ-g7!f4x*VAT+Te=a)Dk1dRt)Q?m#< z)wW{1`mh%H78^MCDOwOIC2i~h5xxDxTdmyH=DB{v}(~v{h-x3~g&-swuJWP!vIJ!93B-Z!`&NbO1*}C@ zxg|jS+WsM9q{fHECXXI#zJVC=7h|hg7Al`|-!A*pROT7BQ1+gYK=HG8=eGCUgDADT zDEHL*|GD<{d=~a8FE3#wbFfmFW~iN2kae^0xt@?>&vU^mywA;jgpO)o++pdx{VvJp zc=*l(_ih)gWJXF8+0fIi_3suhz^SQ$-SzZM-Gc}3&u?@uL}_Re>c`yzo!LcpF6kY8 zbhFtj4~LAF+}&CDldQ@9!qHBlGvz*sb+LOc4WX7e01EO%IV~}j-ArF_^IZbi@){cK z1#EBc2kESZQl~3gUcy3Hk9i2;Y1Miy!&8ZAB83|J_(23?Z`c7&Vwk^K30{MqU@^Ul>71} z7P*|)ro{$(^u#Jmb|3Q5D zsuH=w>4k1%B0ftbm%M(PgxvI`cqZdc+L5jGQ9`_?QEehzZ!^GN*1pnIJoQFLRS0*Bl zeCiK0F~YBAhQBOu-Bh*O!F4EP3D_o2gHX7!vrxM zQ|q&-l<{-xZN$=1b&CtLqMoa<5Uwx!aorTZSD|mXxb`wQ|04h*|GrY+(d6c%df^X% z+Y<_9lSOJ9-1jTawhX} zAr@DJG)D<2hCG;)?h-nUMxZ2V^tMQN7=}5vlo5Y?R8*6 zz#U#ZpFiLJ{nO~<>z)ToVNiHYD(VTd%vW=$d?$TWjGX%a7~jYYi$)NTxmmQ_TWbCdC#Q^b5xYz_%UAQWlBxczs%QVEoJK^7ZvTnO4eMDLi?#Fjfh;iSm>7pVcW%kgJ?Ez>nnl7tSK;-gT*Wmn69%GTw zlvrRO^{GOPX;~tDchUz^7d^0V!S5!qp0`yj4$J!ca{g zR>Yka-)m7}TllrrEz}qL-ie&n-;ngYPybI#{tqG641RMkg0VGURcNhZ`n}3tEwfS0 z{v|?^R1_b&T!4u@$}VepOkz$5w{AHR)+e2z0=2MvdO z5;5*dSJPwc|Y-4anA3+dqK9!$4k5KRAbK)tA-o%R*rxF=w+qVYeL+1!s2U#9@8Ky zBxILts#G3Rao!&(h!yj6RlasXM@3!-pK*cJ6M>j3R109+5D2T1q3#n}WxoV&pwr|HAo zfk(+Vrxp%-wC#x{O)R$DNUF6KG;K0yORlw!YZVoxyl8V>S`V@DigxYuc9ma!7x3+G zxy-lhZ-Tc?bz}2j*Tp^E;>=}bmj=30Ose5J1a!@oH#%YWT~gu-M?7_DIRQP{Ol2o~ zSow~h^lvVZGCFnXr~HkHSF*DoKdgrBKY3Dt$~O%JxX)@nb;+A`1_%*%wz42L%%UhJ zAquTW40zEwNSDXU8hK2|OdpOOE?@C}UZcJeanK*_ee=LPT4}KcOjrBG*Y6aMBX%r) zU4kGg&V{J?3U_2Les5P?YDz!=(VP|!Aw=XLDHRK%{??-zsnRtZGFVN>ne`j#hT3vq zErz}M!o4#O&R(uwukxIjZno=Mr)?zJ;Xz||U~~xWF^-8?dnc*8Bzr=S?N1)i6nD+B zJ6ukK5`NRnzEe);N0|zBsN&<0^FY*BcTCnBit1CdYbG2}DQRHhoL@HHdQ?C4;g zj)T9wPN>pMC-a(lHw3=*CTgGivQH3&Si9nFAUCTvsoSJDx(PO~)$tTPJyva~P~PQCCGjH-`ah z_&X|HBI9)YuEV^uiam_=xT=UHN-sUbw z7BDxe(^Jl!mK4vm70wc`s+_^K+<3l{DixlAEw#{O;}PgG)L))>Tkqe=3mf z72{jjX`ouwI%uHT6?7|hDUrW?_HZA)=G#yx5@oA!tIJyds6up=Mv6YD`NMLWs%F1% z+v>ABEylR{o9z^DX$Qggmb<5il1)jwUh<8|$cJxW?)p$%r0(b3IVKv@WQ!_Bbj4p9 zs76M)+)qxfD6vPN3c3c*lpC1Re~Y>i6Du1ps2w!Mdewfb6P`4AZ=~ks_0mOWkc#cf z9xHj!i5zh%r&-92>r4+{zq{BT+;M2e?uLW#?StLEJjUn-!AoRb5C;-&lgl8`pP7?o zL!g$J2c`XKaVphvnR4_4YSBh&kGT3#Y3-6UqeGU#t zF@7Js-9A6(4b!5e!P{6XsG}t=vzq!R5_4$AW)#Vt^%>xO43?B#aA~(Ju@s7EZYn4h zEcX~n9Pf=g$e(|cH_3As#zILy&vRhSA{1#VBV1^IoFTh_M5QW!y%gS@)klvfV$VxC ze${W+vvrhuI5OZ?7k?oz_8(T@0w<+#fQKZGuAm#N*FE^Iat+E~53x7?6i_M=7vDX>q%jRy$&IW99VL^g9` zKUZELEP{)#u&)891I#nheWj3?KX5jySCV-s_0Eo4W^B|+Jx-CRVC(S0AZNB?IB z|NqChcM;fBQqDsS(0N|nV6E6~n2YQ^J=wxg$! zWxe8dZ|EV>?vYbwja8_TKSW==DShxfr=d7F)6sI@_)ve|&gO!3H-8eP96)uaM!r1T z8f&&udF##8m;%yF*MHIL221$9Bwf&!$q+Z{JhSR;8~^?D1Ss>%Kv7%9o$|?2##%Ph zx#KU^&2URl`R02U5tMe2Bf3ICD-+_*-*c9SReZsTVMy7R?8{(^vTtQy zC#kUwW0^6`n7O{!sQdnWp8NNFpXdHPzvuP)gPFO`^E%ISuDOo)`+Xeeaa@l~jSV^X z3GQQHVBoxX;rvwwhCP||KQ>5O?8q(!Ffxr9!DJ}k&m`c=5WM1-ivK-x%B8YDXU|Rsv?xel=~Au zDH{n%BR?1BF73ozHT#t4+p)bOU??qKU(U^)d#>Qw>sJwQQ$eNi38A5V7oV#7ozJt- zl6tz2U3rs4vi|Vo$d2|m1IhNxrHip%spk)TJR^Rb`@6D%%Gr}WTu1o4+i8*Ox8t|B z?r+oHY#(7Nf3XxSk-?RlP&w(&Vx(p%x&I&!ph^(iUDVE?`b=&l2XI%JH-1m3lBW z{?WtUHe+oqYbzT8TA!bPetq}uFEOD$b6NB)!QAt<`><9G-XWfjb!81Q&4IWF&)db1Auc^+ zV`g)&-D}~D-snzIwyEgLQ1iE0vI$+LQX(KTX-9j<`fQg{x`3iax2u;1lo-LAw(>HY z7Wl$o!NGVCd?{ed1pk}rGwfwxh&;3B6upI42ke;nn1O!RTQZx1|MQMV?m1*NadZ1Y zzZ09T(=>H3&r_6VxZR3kwGPXb$47WtRBQf* zI}C~4KEhvckp9jaVJfcAfo$1%!eqHGOMgGo;E>)a#)BPG{8o~PPED64{UUI-t2O(? z2ATDcRM8xR50IjUa&<8a?CA~ZTk)phc_YP8Ht)T92~^PngG@-#1s}GDQWbb=d;X=B#?~K+_+IhgG-QmGKxc=)WnC z?jPN4JF(j){8&0n5Mio%d>_)_71Z5?F<@n~&P>@KP>BZ;L^_95ey*BViRncTrMlAAON8?syi5@fBn zDJBFBA1;3HL2~L#RhF`^zMX=^h-iHisKJgS=A#f9{3XbgqOd!`0n`yW@3xc$mRK25 zHOdog8=J}o(o?{pY7P1!gL-|H- ze!^MwWLQ(f?3vO)6pQJYpIy20#Y$C3{94j`1Ci~XxlKFYC)I$U((ow@(RpBN9$xho z@XQ8U7DDz-b7_^O#niMdNL6|aeu!R-3ZISprSzor+_In`_x>!h4$xMr3&cg!+8l!f z2-+p}T4=V5P}8q^?kPbhz+35=kkeODMCZ;#9(d0Y97_#U31~&KV^cjf6IdG(CJE9F z=A-y@3_JMx@0%9`gU+G8s>LE6d% zak^qe$Ks;e_TreH-0( zGom&6OmzS881Qy3$abIcPe%G>8G*Kigla_^wc9w!% zV*A{)oumRcP)0O01g!ntoasoTN4;2T#jW*}gb1rC6_2cZJ1mc9tO@%xM^3nKX9a&Ur4KDeF^%T2{kiIam~ZhhglO-g0K{c_9kAHrzH9aM zhjy(#;xiBZTH5^v1jFA=L(*aU@Qg~kmOTYpJ!siAxBdcl#DX=^eR8Fdx3{xP02%Jw7eogCVNf#GY1ATC$J zR!U-UdMZ1gC*h7W=EI*!E1nM_KckVO6#R*>&eW|*d(N@g+gp$7fTrf$qDT0tA)fGd zj;t~g+I;I^l~O#+r=wEXEr(AeZP7bu=-KM_`qRP}uefDMwr#F3Qsq*;#Ks+Ah+Uh{ zCdTli_Ym7CE4$WQ5!_;sO1ek}p7WQk{sS!H8UY3Fk(mKGDv9?_{Il?9{fd-G`?o7- zlW)L;PyNWmN&)X%ZtQr+C`EQ-{vbqukkO*um$e2Hl0CxWF?j0gRB}HZ4TcPW!gyL+ z&-Uqi@yoYRF$PgM!PJSFtVOP!BES?HaQyWqx3u0b9IQ9l)(BaatY0R~5xsi2wo}lr9pklV(o+K4lkaWG=t zX5*T)P2j}4=tf#mSn1A_&BXq8jzWHk0c;WkQN6c?9453OV+x`ITOevcr90d_8@!AS zAeJ;Qbcns@&VtFk+}<_u--4le>ZvT8?GJFg6kO0#Gz6zjsp@Dhz1)Z<{6kCddYOxw~~xZ?CB%N(x~b3#taNLwfRV2gyIMbDBP2 z5ICT|^cB`necUwV=u4TVb;AOaI~!Qh!Uw&9 zrCF13gvkQn>lmKx`Eh7bPvu&8_)?Jm1VG-}9T~`IYf=mND10vRv4=+QWna{SgRBW8 zCip;V_(z$JPS&KtDYna7DOPq_wj))onnzjn^vGz1^c4_5v&cM)u({OkmJ#}5;CvAd z(|(qN)TH2Au9#w{5sLQAr+kNIw?a@oCa-QZ6BV;}@rIMj{`c88pz~@=qK5(j7m<>d zTrn!p9%sG33Z-tra40@qt`9Bj{;$AeJ@LUysb4ws>R?#O*JG#{dsIK^t1E9;gMwEaK3#91ozLnpE&zrA;@S&rf z2H5SsQT?Za|5v#9H$?xxe@Zb!2sVc#%cjNy&TgS673rgJ+U7i)zChKNEW^x8PEApR zdA6bq3|W=w54d@uB=V%t0GZFRz(%pbR$U$cV-Um*tbk+9ij)hduJ=YrI+Dii07BF| zAIiBd3{d9J!4Nt*=BfN&ILAB2;Ilwr7VYYDWw^G$${=Svj#sRAnoExHW&!j|Q-Ps|U&oqbL0 z-P#S?2ecZz(e?uR4R{;&Q#(rchedPOfVlN(P&kxDVsqkC{o0#~11l7Ki9s+W@@>I; z4~jt&!k8U-04n~(=+vt_1@bR98N|6CO!rwy^(QBF3C@uFMKU|b;f@-hf<`Rp<*F5N zjQTAQ;_i1531*-!@yvkQUdvI?Yq@d0~3E~88`MW z28PQ1Sz<5>vB(C#lxAUK8z$^=Bg~~Jkr50P69}@eK(T#BmwcV4i~R6V?+J)ObYme3=Vg zo~OWptJB8wAdvi|6h{f7U4A*n9ZuR|^&QbbHi4c(OT8cFYnpk(2(xQxTZQBEMHs0o z99+Y-AXK7|-H{bQ;U0zrCn+~?ewtiqb%+y4*j$pQHY`pB#lI!oq&qxQEK03Hx2}W@ z;>ad`<6?v~VuFzmnrP66-dh~{zzcm00@>DJ^+A554zYb@HLsv5-6%rCz+Y!H_sirI z%g!L%SnTGwOD#ZIY{Y;fPHs~nQee9Y*9nimMYuU!WV7%>{Lw$AP=%(!jW6SZ%Ju9+tmIPbY#}n{2vyc`Dxx0_KgoPZ3(?vnG{!L! zKEH5K6SUXwMi`Au@b#nIza0+v_mSbhz#siCFoYn(rp1C(!p^-l7^6hqDp>x|Fj#|{ zdTP?p*Qd`J@3+SWlq`e3LCcH*<2x3i3&ZRqiX@j&H{ov>KcO)msakNT)| zkOYt4uFC@j-~mXGR+wu(9tey(*gR#boT@GKj(Z?c&nO%iNk+yAijj}a_=D1Au?7{$ zSc#h%I2FRiImpTv(pgV&#r{&91V<_0cHu@EfWBWIi263e_NGz?Lr{Q5LD?z)vxolH zl;6lP-o#YD-nq_VmXg#h8$)*;N(;*_?qZ^)BOky(dzN`by>d_Rs+dC41QuCH%YVSQ;{kf-VG?bf-_b z>v!j>APJX+zT6)bBau&6 zn&Klwc12O?l!>VF9>Pt!(y4@DQUjg1vYZ~=^mn_8wfPBJ(GBnz(oht-d}H2=G+-Fd z6MjK7RqYl`_sUeVp1X=bYI+A5lRgE654zKC+ld}{&*S<3IOCd{q_8|HGpEFW4Gco` zPG0`*k#RK*^~<~iw8)*b`pp}l{V%+bRPl{RfAZTJq~9XmzDyQxX(%pa6L|MTv1?*q z{%GyO8jJvLZqgTv%-{C5G}Z*8jH_|_wzAuG{jmQC*i|y=vS++w zEf*4$!h}x|8WQpK+l-aUsoM)h@uJ4BrR@&)#P=mDds)@v#+G;NH}WmAb?dk{C)mGC z!~L~#x>oZoPXvgbWVmu&L28_aRtid~@q$!&vMocB?M>LAqJ51QgEwydJmHPW>(;HVtJxOI!BUY;$3a#p`vt-o2zPSK`}`&dh^ z8G%QzfLns_GLY2M-9>K#t-DhM68|=~-!xnFNM!Nsj}K^hUFrO^|L+L%Eop zcx0;mmqQ(#W`ob@_~6% zzVE@r3bs9q>P z0rZ&$n-qw&t1Ayc`@`;d>X(4uw6EyO;a#}dMG%F)<8-v?u*-iHV$+0)}zw&+|zPqBG{!9Ff9^y#!*tk@~F-ah~acSFF5)A$Q_?nHhN=$`hl=v64z-8ELf`crVd!j<2`J;tJnipLE0`Eo1~#{gVb;@I+`S2k`Twf ztOes1;UgeObPSH(S{Zi+0ms2uZ0z!P`P_r(D(ZyAV*T;P;5J$GfFK&|3c9QFQB)Nj zmqql_>H^B39g_Uf$@sL$S{p@w1SkY3xy5T7BQv1G`4BP+0#wc)fLhd>n2=XCvFn>! z&z~owe?IE5o8=FlF~7&2d5bPQHo8=N?f;1s9xXN|;$5$$%^P_yFsQ@hq89`0pG~K& z{ygqG0%8fzIEZS-r#5MCmgMbYOo|1wD90G*zqgRUuqhDKlRjOtJy;-CNx6YeH^os^ zN1W>SBW>x5G@|RRjga$7C5P*mu*7y z09NzY)BV7wm+w^xaJj}Om|zC!4bJ25{uOKf0XviUbLmZNkA#rg3T`Q(^L_z(05uB; zQGWc8wls9=I9aMN;nSbJDa6Sb+vG#}rN|7x2UQIWj5O_YNl#WH6)2v0a znvpW}fXdB1??7W~`IQ_ZmgTmHt6Ka^%q)T^0|M2ndO$%NGvhM~&H>7mkrubt^?wPP z!f7x__U7`p(!z_sp(=Y{_(yePrabnH7Ul~Z72~K(I_U5Z{u6XA&!1kB$xBJzrxFdVAAQ(Do%a&fW#ZPc3<|(5ogr*mZWJ zJla%IGzHmRaX~qTE7RCySN)uV$vr7!$^8+_H<3>|3xbp69~3jb4a%fS%ALjh+~Lk@ zK2N++=gwm*r#yz=Ai}R1(bb;W_7ds6{9xaEp87xF!yC%B3u~u;&;DD`_#OwhhyI30 z&mc z1VkDzs)47o6Pojx+WUqtlT}}dK!|*;avSA>9EIHCZCu?w)Xp|7*W2bxzm^ynw$3x?=WnrDl*K9?0XSr7D#1TG+?=_* z0X#pqcFOI#FB0+iM}ZLny{XDx-#QW{2S7K@(<3!Tgy}m%xN`blyF+h=DH`4)oR6sF z9EQ6Dh*c&jKMIa$dL@m4RGBIvV~Fq5*D3Mu}3}6CQ9en{6C| z#0%)zYI_~!H1=V16HFA?crQ<$&4b$jz0{3u}^KcfBJOFJCX!+-tGLfA5SoP|BM@dc0U zO$TTrf)Wv-QtimXhIHaYNg(>SIQ`Yr9T@r*u!5$1I&-=Ci+p4X4LgCXU$Cq&F#&@( zjp5FH)?UNI$Fo*mTe3Q=qO32!xi`a)?G23B3AqQ1b8prMYz|UXrk#HPjf-jieKc=$ z+g5w5al|i0S>c^G6IRPRxKLpAsS~g+o6z`;c+UP<*i&(@$Tby2IES(QLLW3BNXmxlEz9^1W~~2DfqdZL4hut35s1M-;G^(~VoLd)l??A*%PZ z!`S`k^%#SY`)5YMv;w&r{PFlNNw}kJ%>9L>P4%#e6gL&f$o?#T>XIrPK5T;zn`0dC z3C4fXo?eRc1(rm^79MP%2}Z@_raHFRsSEB&t1@B^%{y{!XVztzN}{Z~dnv8lf+Q11 zFDP4lY=ZEm5VJ7z>dE0y-<;)h6`+csak%+^{DB|h-Q51&Z>b93 zHQc{+Uw?cotmu)N#0cVWQs2NY{l#d5(Z@Y8LOwqO?K>N=5t5P`C~gU0ixMYWZu;7N|~@BJe(@Q}qB6WrPozbX~mhqtL9|KtvL_9~XI{c+-` z;DJu@v`ZI~KFDO*H>2X5go4rgYc(UZ!&s%QD>2RUi=r|c5vLyn-+VFn?drSl1Ki7N zp4SUKp4xM)?y-D>|8PiXEM+oa{blPMWY`6@Tz$!r*lDZa5_iR@j3c#Xz=m7Diahs- znrnV-U0UO?Mr{Wf-`J-cjlciItTmPW+h*FhNN#KR3G#`j=Z1_+Z*p6x^!6rh z*(W3x;lrl@LC+)~h`#yA4mE(H2y1SKJ-HC@Fn?_QzKBMz5XHcD-S4 z@y?LSl6U=_Y(#3s8oVO?#mR7^j|ww6!k-hd*-SaiFObX4%l*2_EhHtXgzU1<@7j+&A+ zUar0^0;WWDt{T%ssN)NwESHgP)5zRm-@UbA!C`j15l7gLJmBdqYZG~s0nXIn`o{b4 z*&V|B>frEaXwNXgFZWKo<*j~Z0-bN+*1ld_rTWPbni6(>`}=yee5b4ou~Zq7^wEPu zSdLX}<9Vdp3M-bsqM?p*RIfT`QdRsINh2m>&pd>JO9VH(*Rs%%LfDG+$g*I@c3qs8 zETm?~5=raMbsQAAqNAO%9_w>q8zZHTzKM2LXSZ6xU)^4`t>(*C7el8mG%xJQ zP1ZrK%m+OC2)#IR;~i@Eq@2ftghnBsF4}|RpW1P)Uj)vzB{mYESlOk@Pgz}djzR&` zn_NW;h7OIoPrV6L-%qjovUAfn*PvG2F{$dDbpoh_xf7}59uFb%1etN1$L@$3AQ)9TvQDz zeLRJi>0U`|bW+~W_wg}|9C!`ZFQ417q?_yAqi#QI`%~CYgUu7+7#hF0^o?BKxS=t9 zZaw6yCTz(+$!j`@;ZPRT{kcbUi(YTz(&PwaI~`Ep=sw1xyugr!+VyCCs=qFzq${S!i^QdGPc~!y!vAQpFyxnKKR1Ki5--6p9Qp zaCZB@h-g-j!x>-p$qP*FahJu+9bi1DbMy>PL#t($@^^j1<<44>9{ZZBJ*Q2kLxW?I zgKCIeUpeT>V398hnDJ`?VJAXBSy8LMb@cz&_|ETiw7uM!Rl=`j!6)@Q|L_1QiYjD4FXpE^YtlpL}qhrmdxR z(jE-VK3qHKaklB8_ftM>x19yIzBdVY<^Sy%35B}`jc-xb2I`r6Lv!#lESG&g zYTyrbyLs_cIUusz@v5ni0W3T&=g4E*%WV7q>LLb4v2Y8Hd{0)IK2Rwzjiy7%gQ5($ zvTL(!3a@XDW>th6ix~{uXE%^4#SsFj$~E*Qc#EQ_M24s%ue7KW`wUWOvdJpiqg0GY zobppSrz23i`Lh>*ipz2Ztc}Kw){g$6XXRtRc8@NXvI_L%?M~K8fcJ`hS^>Phs(g;> zwkqt`2sr#6uyITYf!kg(2hc}TzNggi1<_;7u4tdV5<@wvLC*eB6JXkh#2e#`7xWF` z=q9lhkSrEJOq7%oy*^D&6;^j?j9SKGmp@6%c7%Xt|UTMd&)RYs@Wz+Xz{u{6#Cr5wbB2!I z;QTtd`gx;IJL&eCVL~Mhi7?&>ezrOmoU5qK6Fte;BV;)BvMT8O5HOUuX-m?MD}O3X z#<;jCUAyKZWOyJ55D!T0(?j&hXr$NOKlPK#efr$z3cG23OF%W^*4!{4)u|3!geRqc zy>W9)B=%t)a6r9hPOLeXJp=TNPf&+#h*mug zo+o?-1qja6B+-IUEEN;Vc@R7hJfijb7tQxUq`}tmAP`aV2^YXwP)ZA`U-{|+=q2k zO}-gMD6v}u&CrP#Dxc6ONvZK)JcH(McGBL1HX4r|_H~__UhJ5=zU)NWfTW3qJRi$S zOo%4WDX_>n0B?NDetL&b7^7;?>E=OdjqXQVhCbd!M7*lx&H?`Ays0d&Fa^Wxa_!ko zI6?Y#Lvd;2Y-+GZZpqzHG0n}ECKYq3dxG%{f;*PqL{jRAe0%IajC_sIqpVFIgj|p{ zI-u^KQWqVjxETTNk6K5tf^(P@>r9!j1$=a9t5&TPox3ulM|gWSOEDqEu3gm$FZm>9 zUVq;DBE=ay4ED-e*4G;r8c!hQtcrzX39Ea@d+Br?R^Ry9IAoqz6TArHbUzeg#A)m9yQ;WpvJU_dh!3iD`b4`}@QG@X)laSNWt|dXnbhyF3QJnYWgn5zcELYHmmG)r|{-ICTF*3$UraPM@e+~EN76!07*PkCpZ^0uq*GF6`7 z$cLkuvqO$4WVO>mW?7CLXBc;Sr1k`h=xu%h`f^(T(lNinZnt9u|KB=3zhS|BUgF@G zqi<2@Lk9N*ajaY_pE^e_8woIAC}wS}mQDS5@K1l&Rv)-l`@Qp|`HL9v=dq1@X zFJMN*aHZ=nz+ZzhAai74Y0=APcbFp}{T`d;9UJh*K9ZaOoMFxaCsK^c#SYZ%REAjNVi@hN*q= z;3Vj+Dvp8f+D|a)`7D9c4xQ2+@i)41+>zPO6w)y;=B?vw)SNvxVT9MTW2B$@y#F#dGDPo zO-8jH>nnUlwX-1=i~y*-(rEwSB*$1Zl6lK#D}7j})iXkfo_@{U|8rS?&5 z_=y@r-J2MFssmvF{O!>FpWJy|(7+qXD2KlhZ5dLa=UT`ze7dhb50md&4MYw5E?aF1 zSdbUsn*`t7soIFP@0aWZyq~@wq0Lc?;>hWqt`u!|YQYqc&5>#I?H&bxx86M^aEk=ks$0E zx&YVKc$N;k5x$9Wjj&4xbK!c)zA&d-`_pC@2I(oYHUBA9&a$_X5^ZFucsJJa0j{Dx z+T1evN@4MxVR(g*+h0U%4p`?5jKpUp>@sSO=p;ZB!W* zimC`u$71eRP89ZQ4EZz}x=nz|$Eym{#>#q*s_I2+WIW}|xiSKJyXn~`Mo82NQ{27j zNFl&$th0g&rt{`MhO<}u85qba4s^?{)AjRieWv)mvtKTSfngHo>gHDfTzbNnz{9=cek?;2FmuQ@| zo9|8}S(#)_WAi7JGcD)!c@O?>>N_)$Xq?ed6T(hZF_|i1g{@%7ezqu( zaCI2LxHC~9c6{UqQj%;4=5AYD-OnhCy))c3I&iXB93LN=A+R5;)-biv=Yq(`R`fv(D_BQ6d zu4V`UvlL|5lzF7}-^^CNulgs&7J+F{aO1&aFiY5v!4&b8Db{P zw~W3_=TNOoX(c#jxqZ%%5c@L&^rxOa!V&mCBh)rPul6gH;w3fr?qB&6LtIUXTg=KU z2EbJ1sG?BV*{s$Xx-a(h;(apuH<4Enfy!JrW*gGq99%AH(s%PvU+GuhTTXwc)q#1& zjd?MT#$=V4Z1uWtDoF+$wo*J;mCPgX-*c+rKi%K56|p^;TCbB^+>PgP?4R7^WLk1{ zWjlQ@Go&|ERV`_uTrqyx^^Bug0~rIUZOvCsgpx;?v%$OwZ;Wbqub3-tF{-NVR{V+f zYcV%td#lyNW10Wqv;J|ABV0ewCY;KCQ>~sGB@Oz-)nb>o=@Mp{LeF!!L9O{~knXfr zs?7rvco@Ru#Cchnx}Pry#lGQQ9^?{br0!y6<30x%r^enIdX}+Dx~6y?by$dFDw$qF z6&}*F==>`Rj9FFa%@s^YNDof;D1TD)m0Y2xSNwL2t6uxT_W8(@K%r1RJ&vlAxCgqw zQ~o{cpwDV||6*YA8;$b1PtsW0M3(umU8w2^b6-Pxt=q5!NX9jL5*KZE9c#O8YK>lQ zQBWzWPQK~5orV%+Khit!9Y1j&vEfI!PXdJOUVm@x$GiPv7SNf7;EfmF)nlzo*I9}c zvEIq*>GjjWrQR<%RVVY-f_X(Bb~7d1qsJ&IEB7jiz)89fd)>&CTPI#$qymij8W2l| zK$b2j^~*IM>GKJ8w4h?P9;Mp>CeYk%&Cl<5!L!e zhVQz$GU9oxnFfGAO#PQvm5fIAqSqwoeIG$1LHAg@YWl}8kO=ZWo^*8&A2gwECHd#K zOR~~~X&Xg06*+!(Z#09;JFmHfhsE|8q>s;YyinScw>8!m@mj{QNpq3sOx7K2cS=X0 zBh?c>zl5;f0;tmE z#W#>U<2SW;Z|B>^xVRTeV@_plW#k1K*_U-pw^VdF;E4kn|F-EIcGT$w7?RK)!y$T3 zMskG+SibSDP6@l9+?;B#b$ifkUq%cf-%up@q!tBNF_35iQLE=UGdmqPV&53scXMe! z)qnsho9bl-Vy0~(>%-ri9|1e2vHYXJjFSPbS_%@PT$%ejlZ+|7gxs}y~x z5pUS)1)IgCpUWx}8u86svCgHL+`Hqslo;a&qizg>1pWD@RnHhdqH%E z9k};YYjf0~M*yZ1Jtlo{{1fMV>;Rm-BjQe;wp?Y?^wO?lTr7$r)^)L_gO0Y57Rq?@ zekrnSi|fAdlC7@ki5)P?QaW-2hGH4A1~lwR^W{L3-VI3@&)}|?{(FRfcu~fKs44@qX~}b`2_Ck>|~lgFY-=qu4u_9;kgUdNMwJgH3&Qul;f;HxQVWuyt@+faLJ=Ssgag#8Zn{Uz6=%vp|1 z1I(?C38qJX_nJ?j^i;_yG-8rW3N0vt@g+vpxhClPt_+EgMW7>`gXS9!U3Dg7e(g1N zp!k+LVL`od=B{kPQ3z+VPD9f`~H#(mTc<5zQluz-Wm1wOt#Su3(bj4v1_C|7b^7MwJwDiH%rO4n0HCR)vBPY+?klbP;>x5Ya z(rqbG>C=aa;9hhr!@gsA$61ldEh$fIT4nqN@S#o_l9A`YB{K8rtv;7uX~LBI>0N(L z-~)HFL+;;ITi3!HX{&e}&6>=Yxy$*#3g*uTGj@2u{`#waUe8uN`Z?Tf{V-7-Oz2CA zMD2iEUit>XCBtzQ&ZA%zKLyR=h3Kc|tUo=iUTR$3+$XEONj}vQd!z=x zx=>~O5z@{z35TpZFJrIN7)f~7MZ0?BhT+2Y+3?v2*_?1xM&KcT;JN3e)tB0~sK+hqN7S8cm_}}mu@4ElIpJ(!+M9x?+0s2z#!Sq=?(&FI$nO zQT@)?Gr#Ms&w$j9yh}1!~UfrY#(ShykqLlVvwR<1aQi z6q>axG?(5^cEzFaO`o9ihy@LNvgRsE$p+AqlyKn|Q_xPy{YT~UhaXL>U^(Y*Ng=Lf zGJNi&C3}{FNs6zT7h?WPlX>-(f&*dB848%U!+BR_D?Ot7Ov1jmyOULe*ME*n*GwKb zix~c<41U8vEP_%V~^N_4{NXpy? z5J;e~>0V^bvF%t5A0rwm9)HRk5Fe#3JFuRVJS%chB$U$OfK|I4Z`%0m4s7xwaD9Aw zVrF1O^GZCcwPx}THK|mvAO@y=GR%nWmE4&ui$b4SK~r|4b;RkP?3K4QZjRmft`WvX zFX29U>f(*zl0tDx+Ju+tj=M$s0KYPc`<4%+%9Z3AyE;aJ#nXGi0k@H>y{ElAojy-UpXo$u-Ssx z7Zs#XJrA<1?n-99#yxJNjF&qJYAl2Y1?-Em@?}K*WC{)zmIUTl>V-;HN=NRabl~a6 zx~X{wou}9Sre^A`ysqQSY_BL)DY$1KL9&GY3kgSb4ZHBRjv#*tL9leApk453A3^v&V#ZE^XcescHn1_m_y6) zW_uo%dO>O?!V?A!x8$HiF`)=2JQ_T-OrwzZN`j>dTMZO@{AC$37A+Bqt8*I^vw%ss zh%`0N*#}LhBv-AQf%o~zt(`A2rN*@7X{0#HyV~-vPE+UzO?j_h*)cHL&Vx`4Ws!Zs zi}nN2I;RRuY-r_>WOmQFs zZ^Kr{HYVb-m(krVfpSVz^hV!YFz4^K{p?x^z`SSGhuJvxhs|@>r_1f6iHCIb^CCvY z2naso3o?y_t8+vR7E`?pcS#UGYa~anU6i{<`JCu^{}}j03V72Qg5v{|%QNPQ!cb*s z)pl;mri4-*XHYOLA^3oVaeJXaa7kycG&!4M_WbINAYg8WRjANPfOC$q+*LYG^3j>x^py3Az?T%291R zy|~->_I1vzYY8DUipxj_y|eDT{aZ3rnSF+L2yXa7fde@AqYL(QB?j0$Y8j~Kl4KOAx@ zJOvV7Kf>Chz0;z7IcXR!o5$K`z^QSz_GBA;YA7g&6}XX-(2@{Go9o)dux`I^B>)dk zJYBWSks>2a$d14>htTD!c)^kg#vV1}GgVN6W9xxXAUs{azZOv43+`lA+iz-D!6qFY z1zeh*`*m&6mm(fXo;+RD9GHwXmI^AdY=a-)24f025gsicoVyiZ8w@k#`}5tRJICtC z8ExYCB(N9TmFqILa}t_z*S2?rbM7_T$KeDohTF7VqsYR`M-Zrb;r5gSN5@d_yXPB$ zCLbq!y29GBHKekBZJT?sMs->7m>=O@DqM5>8FuV*{o+{E-|^-m4VwsHA3_Dx|adJx{@<&ZcTw$Y=zh{}|Yb=_JW z2TF@07H&Ce;Gh|qil1_MA)SK&PSABu^P%g9VARfmZ#yo7W9l8ti!t0yC)9q5qQ&9F zaX@owScb*6=H|whW2q!Ou-X^~IEB;Vbpse*t{&lc^e;nx?2a-`Pn?~LHsLo(Zj>`A zD0hv+UXE7@6DWVpkyPSI(DvIo?-TO&EBuPf)~}XTW&VLs4MeZsBs_jKg;aYWbW5p~ zBdbKj{Fhp*C9vFvQP2bq+gsq7Y&Ta=t40Ld<@=%+`iJ>o^YUtU%DVNjC;j~c)mtOJ zd#;43HF`U@#KN{-Dkn;cVwA%Z)!MJ8=9Z^tJXK`;90Y_n2}1DYapedTG5=?E?P=E? zp59zZ=t#qtg+SP}>JK~$qES*Y!NWa0EMWYmSA`qV*&J0KpCn~#<&#du9l4rZRqRnLA@5Xy_ zSC*8|SaN1=hc12<=;*u*%pm3BZ`+PD+Ud@wq-?T=9zDZOr9xB9-fXerv>yIw?}M$c^qzMwA6ixoHY?N9ljAVivMsO(RzU=_sMMq{$Y`4i8LLM?bf`NACbib+VNAYmFbNmwZqy5lX zP|7L!R(Cs`(BWFPE$$Nfx4oR;+Ece&-#DhTFm6zD@hfHMBelb*lPL?QW%F|iaqrg$ z33TrJO5%cN$Uf8QN)XPxYMp`N(BjDxD8Q1A3(1K+_4<$QFJle} zo&Tqdp(1W2`R4;Q5|6^anQtsuys6^=MNS>kmwBh{EBi#ns3u_V?`o~-g0~BsHOa#P zovCrU%kxwp?pN(pg4Qj)*~9|6&veYugP`0oo?JoWYZC$Mf9H1PA2ZaEzt-n!zsC0Z z5RW^IFO7MP?x$i7T~I(q5MPtA^da?dzo=d=PLPww>!ZG`Xjy)LVSO0@c}L*l>fhG* z_dA8e(7TcVrjn9X>2YL!?^O5(^kV}VC7;A~NLuk)#QYrU+aGlrbb}M-t_8GQlYux5 z_0*@HiT)@wh0Q;MxXYZw^uu#PB5p>mW!R-RmmHe7KM?%JKaHYsv->x(DtezZI2VO^(A%+h)1Mi*pSaJQENn_e zvcCB$IP5kX4f%?yuHO3^#B5Pr!8ERs29{dc+fm6g6~y{q)APg)w!s05uJ59+J0Fj& za?9^veVQmv@7C&uBvPa=`}NKOq4~FYbQO_|MXU^@fGr}gU``7=3UjX#*5|%L?<6?d z9p}$W==GmUZ%VVJ`=%?QFV6aUvNwj#Jn&`SF-3;d=mm!K?b|RRgkoAY8wGS zmO}UjbHT0ZfYkA|==;rtFC1r+iq|~csUK9H-~`bv`+l0?0uMnFK5yhkeTgw zm(+I9I-6X{#j|vMU|>JHxx-4fVcsfon`2%Wf%?f#zIuAP0keHuF{?Tr%orLONO|0x}ZmtD8r zU)c))OBs%aJ+&}HC(ECc*ba`euCEni_C0b0y#mepTafVhZL&gP zq6@x^XJ&x@TN1kQ4s8ozQ>km)-*%a?(q*Rb9nw{G(@7*3!Knn(;TB#JzniuD?I;dX z_GwlJDdjTBn{XB>MT!S$r8` z_d*0l{uXq5qg@DmFXfEjI^#e0GzJ0-s z9Q3Rv;1xQ3_N~+J^@7CWuR%8fBS#hKv$3rGv8ko-LFmRBdDs4|RohX43q7>)|>AmVjGewdjUPxoWpBf3Xs-kFsNKLuH!M^+C`qtf_1kGc= z>#v>Z%^i&*mE9u&vGuU?@y|j0_VXRUH}Z z<=CvnHhoc4m++GTs4qL}uuQ)YfsudMsNIBm_UlqYn9btL(LOGkG=X`5cOqE#Y z>L{z@uMsQ{`AJ{e!Gyd`())@nv#kh9rSp`bXiC&pPF=xveaG4nN4vRTKii8eh;OYv zRnR)tPI8*#ERDMK;Z%c96PF{2IFPWfK715P|+9P>Kn z^#Id#1}A+XGIs3MV97hZc`vg|ZVr)_w`>Yaw1%&$B413OV)<+&DRteTjd}-qK{hzw zo>;&thfwZKW$ca;gN$k8ZUmU#TEtBCxEHwL56gKSq0VHzCNtA1K{djo0k6(5%0$gf zkY({l;fbm^)HF9VJ5%zw#}~A%8@cL^*w*$bJcrzHz~OyNuqtr*X~*sGTDQE-uo+R|%@ttEyL8Qii8ZRS{v!CWoe2xczv_ z$&UJ$M$JPn!hC%@Enz*EHMQY_lTOz+*5WbOs>i*zVBPG~VWdVDY9e4KeilXe11s%l z2?De_ALg_Ie!5EM;^tz@(-J_loC?Ir#E=>fwH$U5Zy9Sl({}h;@VIxnOv<}N=!MKR zkGBJJ+_rR7`{Wkn?NM5N-BcUvms9b;15aUn#4QD9YJ30(C^dr@J?^8Yz#!B=;L0aU zeZyQ9gbiB*PCEUJG-V_o;H<>qmVza9|S-x z0V^o&7H!Q#>}<3MAkg*afAPD22GH?Dg#kZW(ab!P6Y%i8C{g(_@bN6c-V1PE1LFSw zLNNXRWKZhk*mz$a2jAjv|uSWNe1Ve!nzMzJ{n_e zK%G-zZp}^iyh|R&Vcp{05y7SCP5+qfT9pQ8OInCHT zD?qtR^kKN5WY}9=7Zob0okV7gsI=Wp@89=umA%b}WG6u*tASlnYyXuF<8t%Fu*Vf< zuRosXj;DW7Lk8NVS4YY?@!XXxmwM3mDHKz{_L~5>N8fDy6`3yrA<3ms<6kK;UJhmh znMbvM3-`CwUt#Z4m3LNn|DaE62~{aq85i(8(C7T#P!ViQfrl+|w2cqFV5ayWZ#~T# zmapEm)>o~TJ^X>y2rfdAy_V5U;hU=2*cx|6hFjXL0(Nug>oleK-WKJTkl}eQD%qO~ zt=9U$-Ug64ulBNogY-2op`+pPRg_W7lU}PE?OTRbqMj>jhajh!W${Do#X#6Q>%@Btct2WOIoYFC2>;(4tXOtd^HdzSi&Zu+m##gG0HQV)51iNA+wWP zY~-OyHn4pb-P0Y*iyl792Zr&Yw{1&IPRXSzp^<{a3NM7O12X%*T|Q6V1eDT4vriO_*wW0OImXd){VM<0PAqDXTy>ihk0)ROv@qj%GxTkx%k${JGt3&@S65i2mJH5|7dHh)tGx-S9ePU~-7O>q&WeLt)2ZP6_OiNjwgRZDOr~ zWlhUt6SE^2OL{2E=bqJ6pIv~l&-j5Ftx-EE-4`Ck$-tq19n{Sfku0d1LgY)&d+9xP zG%Md2z%`O{f)$uFAT%|y(#*Ow4(PgZJKhC8K&cHp`;ajb%p{ zHI4n)yq*M7SC!z`7vZ~ktxXYMlc1F&cy-!(oWu^J6~gLubij__FnNVu`WWWSYyTR% zz#Bd~tUq(#@hr6r#ya;mwxWF3yWO$4eC$*U70BvQn^o@6T>=1CGyo6T+w#toJ-`*p z2lixww7w~QB9N$Dkl|nQJ8;$j^}jG_hpgIIK>~Xl7C?s0@VbRvA+YWeF< zk2eUUGJ8T=raWp}H1yOX;GQZb)*q&Q_ZIuh$uUsBx7}}%GTj5M=@H?h?rhWSkz09e zkV@AbYb3EueHX_1DFtiTV~c^|f`xCPjjWdqARWfO`l2He*^GB~Ij@9O&~1{iFzfW2 z`$!h?nE(e$Ie*Cz<~~c$2yMlaP&EM_`$=yX_Jd4Ca&MUXhm**9*zwWFSf4z^6K__q^ea8ZIq&G!-#*L*p$k)+wQ34HBQTiNiBt88 z%=Fo6h6C30g8JW<`nAyjyD`qdhfHpB4@GC=YpGur`!DuPuJw*N_^`NDhuNk;zA--F z`NjMEq7d#S)M?X!na|p2XN98^SubN_+&Q1ZnI$I7FsM0u3O@)9-&wr#*V;f8S>0v% z^GpQ#b1w>%<{Ed3_qm9K!ns)4JMKUXCzAYO1TWO|3xq>nZXZIAdJAdw#Zh`d+ z4nZgaiJrCOP3uuo$ zIoiFD1sGShfGDKYNf^cwqmLOI(U|19hQxNPpa)DB%c9k!$*@!M?2mgWD zUKdPY*Y&MBJhV-cXw^bj+1P;Zb-D2l1+?3XE{FJ3lXTzLE&#kKu6_ZbyT{6QgmT9q z$ce{GIhsK}Nc)|1vIGPf@s&kqKZwCyD-HMx#}$&pEH_q@vOhEE(+_gYn%!pKHrjHj zz-t|#YoF)xoRb{m;4YrT{)2LtKlh0DbCJtPmX5X!FEdbC{iZhaI0^&=q zd)+LkqkVqibzIK*UA)?L+3>A~lra}oK50mmM`?U?@8;VjY_g5ijE>2|c6}(2a@sv` z7kCd?o+WAN0(Iun)%Kt5zMp<(m$_XhZuDoeuPL$c4JmWAgys@#2Ei4##{aCelj&e% z;@0TZ<2 zT^1(z0qt41cDJnIbq8uAGz6cwX+o-P7QdG%=_^57AO0GL8z9G6Fw-Yangqujq@ z97wZ5tFN%q%-R*V=0qoR5eZxVI>q;tz6R5G7c(#73?uG7Iz5;9vfHSXZL~5G!F~mj z|8e5YT80c(9fEH?s(pn%xQN1mRNzx74m;*ydA|a&&bws>*H+ih4POmeSwaEQ5Gywf za(tSZlziCFw9>%01RMD_cj3K}9RAAsd8L`z7dwBaX42Oi1oLe2&Yvq~1s%+FYBu^{ z+kHYiHSN~j1!H!cuor0kh)BG!K9WS5e@>MYM(e3Gs~>{|(li}~(6JpMsdA}X*Y{r0 zq43t*D#-gUe^b#Q4XZ<(&#b&7IF1zaU?YDHC%rDZP9MAi+MldGtfb5NOnR47!zwL; zgG2X3B)+~y#O|jnL@b8@-Kf|Ga&~REU zPHFkGRCvQFhLG4{059uz+}d65Xn5}0|2QB;>+v^V`lcBM+KObgbF;P(5phxZ+rJFs zkYmV*ZiF^cW6nAkGsQ+}pz%BGJ90SAa4O5e2ZGsRFD5&2n5*fnM9Nl;j#bPh$rw5T zQ2~0byGsOit6_8g_UuNj?<6$_{tJx94FSv_S$da8M4}6vjw{__UD=*x)Y{aS0y+Ty z<^NQsPJtCrw%|J^H392YuAnx&C5Smi@k()lGa=8EV|C0j`i`jiKz4pTjv`B%Uo)ea9eq)WYIw|5r zXo%IuVDans=Y6AlPnzN0ttkuT?6GmCs`Ok0TKBsdYW=pcX7uk*ADer+Tw%k(l%vsE zf$3UzzcMY+$t>+C8?nOKFgr=0|4!ifn?e@*b_HAM{0_FVOm_4T+kNh$H zHbB1u6>`Op9#tN5X6e5|qq|Hu0gn9z2XmP~7M7bMe_nJC5|9`#B7b zqRsUkmN*xW%?z+ctzjntHTDcq#F9q=xghOo=g7C$tfhosPOSI#XOPYfdSw!TN%kM{ z;K;N0P;FQt_P+%@d67B&`^+V01|U`z20&NnjsRu9y{-^-YF7pS)yBsN^UYE*sBoPb zoR9*Zx$wkh@oTC@C0nHbDjHgxmIa88J$SWbC#~rS`H_3)To#P!4>#)6HY)rM7PEg$ zhpj zQ>_-)fsFLZBy~B9=6tVmiZPFj8L&?V-Op~cIn7KtM{TlW&des7Y-QCUW+`J>B;JEw zIa)Y7u+^v>vV}9dJ^4bLk`*!T-5#Y4HK(tIz#G{ODzxdX`jNufAY_+W`!^G{(=ax_ zG=ytwdV8~Y8RK>*rU73g+bmc9tQpdMJ$J}+WIbtd zZKTS8jU;a#W|~^}{=*x?+VhS=c~Z0JJz&H6Mz8m_XtUoUFdRSn_%cW(aSFxuUyu!x zci3&y{x$_tAgN)AWpf+oUHM-EOj35>b?`gwo*iAM_f=~B>{3Z}GqZ?eom?`^o;ztQ z6k=y(z$FfB#@4JHzRG|SGre91F*njb6ERhk1%o3kd2ax8BlQ`}D`5Q?-n?ci*DKw% zU%2F%fwhZ0Z~vY1Fl3d+;&PeQ0(czabmLzL)6&Z2(Ep~=gKbDe$sKyU>pw_H1rt7O z4g`0kL#kHs(u=dCXxb$+4CZM%H#kJtFXRRur}|k#H+X>kqYtpopt76OrPfc=dmguy zA1DJ(>5Di4eg`kQPxr1XJJ z3J+G5n6&K|LwxVFKBB>MCcD+udE7N4f=F;9Y|OG|rU)V37qQdZdSrZOcKrEl^2O<> z9?DGCG$MpKZ6pcf9!PnM=LSus%4G>u9$=D1c62PXaySBh-l2;n6h78!(i2GdaX(Ci z$N*jGjzu4je~`#L(mCP1*7-O)$cJwIO|R@`QI+6FL8V+l`a$&9&jm_Z(VRRgu>&=S z7e>-O3E2ZW;;A2R=nfz^H*PPKtrT~yy>iR2DCPgVOaPAbjG0hH-|;$GiX%WcA>g4G|=Z<&XBE-7k;FgX#AcdQ3= zm>+L4fv#qUo$ui(lU|ixfike-(iU-~3=g_-Xk4^xmSf-TNYy_#KPg=~FvY+BL^e|8 zOm^QyRs?>@Zq(g$RLipqVx|u?;dM^{ntW1X+-evc7tM}d-WhqLXa?h;mD$eDr{ah2291X=c&}I<2+!=~br*QpdmNeb zM+51K>wOEnmbJu`UPkS~1dc7(Wy{MRxb;~NU@n&TEpuPk0er*T=Dh$OvV6+s%((7w zl~->-7CKT5yOP-G<@0vhCiSr`LZ;F&aB-(1j z`M)6Nld@QfyrRSGAqggU|*L|rs**MU>g-+C{UUD#TlW2Qr$A(iVWe(V+>TD|Gf z&rXjJ4aTwTfUSJIQXT{Iy&}+UC$+4stZ0XzSzA?8qtx*+U}Zz*Ac7Z-djF?xdwklA z%UtA#W*#3pjP{Kdaij(5)XQ21>n~JRzJ-G?=tINIee0L$;cZC|I1hYrZ2tYhd)21m zZ(K#^033R>HNJPTVmkFGWbG0eA#j9Gz4lMJGxZW!>rUy#)v6o;-B3;N`G;>Uc)B$A z4Ry>=*eh;aMZiG?pS2%tR|hZlUV%nwzWHKH z5l7nN|H={Vw-D}spi9snK zM(DHzWu!97SYF`Ghs7A3(eLjc6(kpYnJ>=q3b%{*(o@59RLl(E=x^Fc^}k3qG=YJc zP?G1#;APdHn$Ohe2eU)Aj?riLAK^n295jb)X|&yiGr~;zdp5-H=QzC#-_7d|B_$pH z9VSclt4l23{2)>Pl-(Jdwy>Ct&+si-IkTm^F%P57K%qNTbEYU(?Up4h=DTD!J!iCr zoE);oEflsA*G%9}KYi{*61x@Yx_)}$hZ~Ui(s4kR8M?yV)l9)fp5TaSvu+aKXFUS+{sE=vKArVz^=Z^BTE zddS}+C_QtF!$+YJFD))?256K(il>(w7?|)iIqBd{7lYdmXDrK=UZ1aBG9e-!-&_hq zw#UL%$&K#7X*TmA1?V8U*nUiYEPVY4q?O9x&Ha8XixoRCKt5skvZ!DW3&jOe?4Sf$yxNS1$bn{3GH$@sCnb8vnXK=OkqGzgW6X{=pH zj<8-F3UEf}b>^%}Jl=(ouRehyMfhe!)eh-Dkvb{1#JJd#(i`t;H$j{ZkS9KEyiDht zr_EV1yJF#BKAGU7&y=HSRgw%sIca}n%3hmMqT9|v=f#0ue)a?8FF&r&+Ns4T8kZ3* z0}iHidPW2BU7H7E$_$F)*LTMFB`I9yH};w53i8=8{ArTdiZLXUQry|0jy-xRy4wy? z^9cW-D%Ou`%CrOz!KanbdRnkQORDk!t%f7~pxwiYAX(Bxxu%D=msVH}S&Jd7V{Y}n zk28r(J#Pc$7>xY~7?4~0bWhJP|K|kU_fKi~|9KN|6V!-k!O_Dm?l~KWgm?I3dXzGfPiPd}DTUP=VRTL}64E9zeC^@&K6Ut<0U0z@QoxvuxW0!1BseGlhQG@Ny` z7jI^O`#3`Zq+DnH_^KvKhk@(;H=0>f*nC~Php)R?+1v0^3V2}D4K!rzM%;X-qO*-G z@wyZAFTAeZZIRcQxOTCL@gA~WQo&err#NT}Y2Ld8ehi^01CHM8Xjg-i2daa|YUeJ2 zKV4yh1tP~}np}{MIrpsV@t|qnk1o0TUm}~;I zMVF%*z65#D7(Ti`efSg*qi|)L2{14 z7v8~Zh)RlhX^W9S_#GLlQTT?1lGjrIwm4YpfQ5UoMRX{2!`@~mi5f8@3ueVTU%pJ=&y6rE|6Op8_J$6kh4XG``FHJna!|O8Y4KjP$i;&z4Teh7 z1kfgLPHownFwOt1MA&8cXTjV&Gnn{Px0j4t^(6Am#aia8lg))EgH@uJO(YcAdmW}Wt{EWAwD|4w&+g)K9j*9<3iFb zS0;9NMo0cLcsU-kUU8158di4RvgzE9)knFm(~-; zu3G3F&RD4ACkL@Y|Ag(5>`7BhlYzlOu@(E=x1S*#)KZ=&xB}tA)Fw|c7xj-T+Tx9M z%loZ-ukjgNW$M3Ja3?HRm=)!SsUUwxCtg3Oly^CV^t>$#%C`H_QpgE^5YaPqje^&y zlr8O`8W;4euPC3J5rv4WL;|rgwGvJ|r#I}yfb*Ju7{NCW|LAOxRkaoFMT))P$y1^) zJ~taV=lX2TV)*;}fRW_I+4>0_op#sIt|8q+-CQ?@H}|TbuG&vAn9~S<dqo13=X?fHzphQr2`()Icd6HIq;_h%|PpWtGzl){Od;xM}ej8W)0`y*SN ztv8>6qzwK%mWvgZ8n9n%wUB!*9QrgRN4Mrn@615|uGnjUn%YHUAiy|5IQZeU!Sp2X z;))-VdD&_(>|Q=E zXLRq>@{;i)(2GbgNh(~g|8E%bd({M2QM1{NC%714ud)KelCV5UyBI~-B5&2^mBNoe z6j8kJ*uB$w?I)0&?zX@{-}g(`)+R#pGILHMe?D570>j*WhiE@@t}t>WK|CB{1rIPe zymCqhtCd`Mz_w7DAsi$&l>AKzRJ%DQ?PEDLa8fMvDa$`Fa6xZBNZ^I&o@xC*l5zhN zx%hv!Iq3d(zoY^K(D)J_&VA{7-n0RzCj|8#CN~ItT~Z&9!M?9l?~n660!DhD4?a4D zI^(}oAI)c)-o=u{Xq{^sJ{xKq-=o2FWW!5IJ3^qQgNOCSLjjrOt>M~v(PCdi^%6n4 z3-2aC1yTYIz=ovt$o=N?H)&l}1ujpYuLzhUB+wj}oxr;EtQx66WM62a>?PZE3&Jg` zw>J%2Q%;70=>ES!o(4UZ4MCahDIa4pE$ynw^Z*?P>8$WU>vHE18-vDmnZT=BtR=MD z5zV|4Bhty?lmY4KmV2wEx|GdXi^gq_?#zas$UhZ^)$HX)&$^@7Oa_p(BNejO`>-#l zD^@n9hr4D%w3Yu)e*s06@7bO-a%Vv}^Goxl=${`fy?Xl23aL@LRBQ;>YcVRSFKd;8 zZLFfEsCEz79J#fOgSmPJ@KZAb<&@!|(iR*dPtMc*hThFb?Jqr|d!%9x%BdZKOx_2o zzEv^y+wk&}&BN6=JeUtg zBM$`h^A-u{xd2;RRChZFRE}JJU}m6ESn0u8CpHI2E`YmN7Y4s(lTH?1&Ig`=Vb`Wd zP#}GG576l_dL`fs4c&dRwj?As=S+fvjtO~y1Y|-tJ_L9+UM+ovn-xkBft&(^rJf%F z7Lez(K(0&J0^*q5u(TyyS{Z4bP`ki7=cq3AxC>-1-w4?+1ad!!Z&Kr3i>ploAvWRHUdB=^`M#C?)i$bZH_2(m{IfAT#}nYELPwW9+KjeAmZOmjryCFa1M zwLgYeV~Y1D+Ivmkx6uAsN;+co@kHrkJ83h8%`G`Q_L0hiX1vF4p&i>P(7Nm^o)YqePfE%$Fxr~#}`PR71w=w%dVXq zNJqzb-$z8&e)dLf{&|U87uRYGX74E&^~A%x67gL38M=8-%DQKr3@)5ePLA!PeLLO! zrZT9NUD}+Uu=`_mY2g0CH^a#9F{^rJYu2GkD3Iw-%=+`C}BxpBoo1=cK z!4P@CM=N^^mm*Wh`NG(m>8-z=t9=}QE0>LrrIIfPv@Ul$THNDy|5>%_nIrl`;q?_Q znO`q{$#%Yhj#iWLindE>GDgo|<>P!CC3SkKY7^I45-;-LeQwd#LVpTd7FOHLz{0Ml z$vx+V!T07jNw+r+ax-`S=x&~RGI1qD)AQ)vRYpW!n!$~d>s(B+nW#zGX}M0ei?`kK zrMuT7f8c!t-5f~-CRdjiGHd7``)O#-(A-wKq2->mJc&q(aZQFG)J+GTLw;ghzQJFQ z@*Vgycz=TFu`D)1MvtlO^!TuYNT!aeyoDnI@ zyHo2;Hi(DINpRxRoiv?Qrdl-SbK?VAZgeS|K=@&&p`i849gCP$npYD6y_Eqy$}qvh z9!Jux8B*{0YpV92f^qC59h^PypDpGcxWT4yIPG=u$(_UL(Q(0UMYk*&b$u4}qavBv zX%(Z%j+ucKu;quzsmx=SO)NT=T&TTs6*#jfgf{m+f;jT0bD74?i|U#4^Et1{pA**6 z)?OhE?YMiVSn^94;%-DtXax_)@JpRE-2Q^{ki6e&&C}k65uP9wY#MvW^(fn1T~O@! zd^*5tG9v2A4ce!`4j)x>vgZ76=r_f-}4XHKrh`m?;!bvKfkL=yFxCUdI6W& z6dI4D<}D~zE94@k2TXq#STFc>G3yV=CrH@FuD>|zF~U|7Dp96)h1lgdh8rE8Pgs*Z zj+n3>uq;@a)Hd)54&p(R9QhjBNRIs9^;Z;U6H|N0QYWXf)l!S9;kx#CUT$A+EHY&6 z6c!o&+_r+LkJ+Yt^*QwY!%Rel$0T}u_4A==ytJUi}x{;w^@DY zTbal_AE0w^!Q?H|30b22b*N}rU3x*0joRgxVO89wwp}bnuB&>Y*P_ua5vK*oV)kl9{wN z*X2w10mJ4ZAism}M<@6F0jx-e<@&$uEDv#pGl=8eCNCJvI6c z*we-s-G`y7Cl5tZ;nNMthkDm9s|;whw!42leL16%-*Gy}LQ#{A`cqB95I>zQW{@n4 zHLRfa^kJ!WExkXgX05{R({RgL`ePj4#F1)Aqo-##@Q!9v_(5PeVguX2p#9y7PV2B; z@i7Ss&Y(%CUK{;9f0kE+S3G?BiV}Slzx{MYRL^aN6a_2xR?A>!8H*ne4LF7$51Yn;BMZexgw>zGt1S8+`^^+ErNH`Nj>8l<+~PzMz62$MZ@U zV>xftb0(1F+~_UFIG>RLVQN3X(syL3?G{>R3W83(cjYmW6OS%|?rc^{J_k0OI1|RB z$CPf(lxn@8IIL(j)=ITVIsa@q@9cD@UuQ%}ukp-?d-gE?#QfiQDnf8r^a(H8H&C~!&J8DaAWcHVBL zEB(vT!8QG7)Bn!}1>LO#n!5otzbtzQd~p<_$Cedw|Gk0#aE8?W z>SzxlG|?mzVI>)!NBkYY#&z5T4XTVfs_s@2&(gO>uGF2IGp&P^ZLcmwJmfUK-L4F5-3i~|oHvEa4rebW zUNTqqQkhb)>I_T+KkNG_C<9=5=eq1MpAG04BgPEhiPv;lL6|%iiUF$+8%#@jN z_=rCE8McKSW>?<7@Cez=qR^#kMmYMDuUYvIKnjn3OJ^W?A@6qeWji7CxUzAcg(HB7xq8^ zAj3R~stnkT__6H&2Xv4MpSfGEd_nNtuvn()YH>$gphOyklh<$^5N{GM+(*uVJn|E> z*9DCDH6^yu8-Vs{o`ygsYvB93#6eB)_3$RmAsU+J+W*FbHkvv>)-O9>fZ@*YyxQkN z&|Ey@-xB^P8N)JSVb%mDUJZ;~fTJMkVqYOC6OIxZWxPOLW-%wxmT>-u-o> zlzpGdHLcURa+i+a!y7d1_iEna{K985Ko+uIg)x?`4kITf2u)s z9s5i^W_UlyM20FvTqa0xS5Nubrc}Rok+J9-cigsxcBtd&%P^E6oExR|z$36TtbUvW zEb8@&$=J^)!j@eLKZl$@w!0e@hJ+*>p!i+#kFbrm@@XL7CvFj4D5pL;V`woqDgwp{pLj|Y_aE$w!}IiC zEPZq&x$hp%S#spAL*d4C_tTtd#45%IZ2MPoeZ zSFSyh@#0|q<6XH4jwfbGBB&N^d!l2F@|ev4qF$n3Cy_E<6jeRenJj~9jUtrD+8D?_<~6kTPgLbrw+hfV^6ow>T08GU~e zDh$$ynk8v&ANvy+RBvz{oGRy^D>MK5RsDbV9&RRQJUL|;*?g8`Q}w;_FzLC=k%+OR z#rerufydsyw+Bnb)Xx-KC_W;4=(1lom@8P>_t3%&lsokXb>F+f5a5>}V~48B0~{Z; z=!CKYO7>lY(q%I6O_67TidA$PoNLLfwU75Dhu#Vba6)N@H}wFweEqWEKna36W?(3+ z(vJR!;*&}P#MBB?njTYXdS#HNiVwY_h7KIv;t_uo4u%^7PHd0nm||`L%zyeyL48`3 zrqwb&RWm$d#7r*=zjpeL7rpCH&?WD&sYAk(`zFhz>u*$AG<}U2@})NBDkxe$KBhCF zEj|J%*(3?fastRIfw02au>v2S?ji7|`pa+h-0%7xrzlNxIpp+C^8zGrpg( zh;WFmGNyK8U#=7Q%?ew3TA`Mf`W)TzmMCTuvQ$4_`?B-MJKZ-DoVawe*)WAl2jHn6 zn)lf>ryBBT(CtvK&Mop%102>R1Wb{5M#bTR66R}E;^lQ>YUM-KISK2sbFh-Lwj*qg zSsB{n+P_?eO>1iNzM!X=EaoB^hsK8# zr|p|VP_ib6vzT`4O`iAlX{JUdaD@z+kZHp=Q)=Sct?eU1T+<@&{?SD!ObLFYwJsa3 z&T^*1x+)BrCq~vc=mdqft z9I+ET$Z+rom;-wY@$!o_mUYT(3P!ke?QscD>ERBFN{1ug$I;yB_e`erRoYUTMdhvI zmrZh-ex4uw@YL*)w~(aigBjDe29-Pz!C)~ z>HyF=C(0uC{YBo?7E~22c?Wewj7XF+QvBr0)A9gIjTjN85G;CU`1-39!Wt-Q!@*5O z(V?)gxNFjOOPf<$2yDBeMPi}E-x`5=3TG>k(flfv{6URdvOP71-8vsLK&ZISujcB* zj?l5m%q!NI>A4dwK7_a4)dQg^hkV+Z&i6azr#zCbkbAb1772nKJLSijzk>=RlOMMxsO-m}J*m2&u2Z_y3Qc{~ku@F{TM~ynM+d zVHb8H*g*2JZFVYLaxP9Oyl{Kp;vn$+e;-q|F{i|p0kWu+e8E1K&tY4~2BwSq*g@l# z*QZywZb#(lNQIB)i!6;j-h+<5AmB5c3S>Gd*dt>Q$Q1Ldx(KPa;>u?n2Hn2?hZT3wzHxW~V1I9~r3e(3&R z@FQIi;Ky{s-N1SPQA>(!u!=ec_HH5W@}h$P0G=im;@`JR>e*V{8s z!mkN~=pTq5lx;O^`usu`xykqW`94T#Y_i7YopJ!DvQ3^=y!zYgLyA|{0S*I90XIoS zBjAB(Yr9U!uCQI>KSAcPGFFCP_mTMp8#^w)U}Jq{(2FzY2gm$C-u6}XHmP$B=^f^f z+VFQRZ?pVlPtnUU-T)f%pSYb+8!8psx})-e^nM9a&ke7Amk(ZA-(*c`amjD2>4f>$ zi{?|X{$uY#^QZBE2_)}6316UnAN_%9CW`6!w6s_wR1>v|PWta0MiA-~WdL*hwS zLY8Dg4R{3MDYTW^QeUQ&{sR^WU-Y5qV@}y1GS`~o(6?ZHorlE3g#?W=!2SDA3)+%3 zq(8ylQZ6FlhRO3EXaZllRy3rCNYCAl}A*dE}&zijmM3}Q}|Iq-k-KxkM9DFyW2K5<(HV0-C++@)= zSR?z>9+GNu@pow|w|xnAA=^^{lzoB+eHJ;AAI727u256@1hI_-r?a z^^E+2mutHkU^f0Q#1Z}nf&IUYbDSxSsy+JG*!=pcp1g~$s~&j=Tvi~uL9AgB#2WSv zsIi7@lDtOSVM8I`V!e;l(}z4h#F)dGlT zTzW!;VO;ImslmfNZKCUAHOl-4An+a+Co?_{kkHD& zIu~u5f>>w3wBib?${P4Odv&9NV2_YW2dvm+IS#*`o(EEckt$MdwEjb+T*8^VvWh3g zeQ}CY0xy`p)e@ZMPw#yQoyhNF@wzC~(i=TAS>t4UuGNToucofdxm}*cBkwHbB#twr zwIz3Q6>uO*!N=5XuCVMr8;iK!0BR&uJY14Au?H?dl<2q}wr7B!tofoZO0^@@tEn>y zRm|+G7u<^0GL+F~BO^t^Wx#uiF;WI4%0lhm+DRy z;u~d5pKfUJ$j%PTm-KcCOS;$lbW=-PyQ6CWEHfOjb}#h&r_hGZ(i2lE`V3KpN$*|= zG=D|fq0#(3crhT9pzHG*EMx4ga3ohg)Q*^V8$!|0FBI5JsC;-L6{sYDZxc_cX!bLs zCO3Zx1m$o`(*~FOfFuMM)(N|4P<pFxQRME%8CMDR+l>PCG5H}Y4--5m zUPLUcCg!7m!&L#$HE1pJ)Zr>I)(7C-@YXTpFKw$^xd@6SsrJ{0WP=c|S1o@XDI1jj z0z42T89l7F*=^~5v~I0XuR`22Uv}~J!=vd@>=jSCE>ryJTQzXvrQvnAxxw*;(^QD6 z0|Wse%9DNMx769gDN}lYb6aIl*}zB$RWh|O+th=QL&#oXA5~KUv|DYRsC5qIbs^#w zjqwQZ*;dw*EQ9(y5}nVId(1b-V`(t2Zas@Xb2G+>K}qRIPcfDg=NH4`V~~^Q=y6BV zVZzFs;hG51O#%DPE2*mPc7n8PKBdPf^3Fe?NvdyZgi3RLH7D35@g9yOBzz`)qdm|S z^yl_Xlb;NbPWvzQ#JToS%aH_)-R8KdbSgO5rHGk&o(iUtR6UlS$Yk){9ul3H~ z^?&o=+Siku=q|vt;^Yo+RfkQ>g1onO#qZ4tPo4f?VrS>~Er@bCLc%X?v z9(ta6l_@PJxsvc=d{v&rjhgwKP-5&wUf%4MpMUEK>p=0)-VN;OrH*(d()MsfveSpC z4h{WATLpUIo_VKJ5!aFwC15=#o~I_!^|sAJJD7oU4Y-7V8?}$kGqa*aGO{bR=KG3Jb4yI;jXQ#z7$DPCb_q=9mqcu#MU`){GP!qy~PK=`-rPZvYT5mjC zxy4j164Ci}#{{v)zl~fczR2O+7~59o`esJhXr-C1Kz3BaGN>=8)%JK`FB(>r$h;J< z++rDQOjDX}Leuzk)sUr(M*+gMOq$4Io-@`ooeSbZ>}cDHfbIj&woG4-h1Nz2pur8I zK_D3Z10@hcfnSQ8Ze==f`%uxv!zd-C<9g9+VjysPi_bf7;n2pTjpMhwHf7Yz!~|d+ zzWZ>3@;kTJ*2*pT9!vRCNHs`2Q3BHo^FG!l{#lE}nwmS_xi%BLA1Q z)9+aqQL@hp*QY8gsq6^Wyp!`gmceWPWsPWP7N-zkcey}D^BKM=ZFr>aBuqFc9W zE8JIMv)!?2H^*<@MRqqL5_(Kp$Bvbg12GX?JA)7j6Y987CJ~s44{TlRK+ZqsLDy~8 zruy8Q^$U^P5|%=&bjf>Vt`MP7>6IBvbz^ASws@!aNEDLLkm_QStKh9IQ!17+zw5DOxYx-27ZthpEl+fGHj2a4YR|wdTI26T~Pp@<~yK zmG*t{$&>O9$SjK39&QtF+%`o3VX1Kc?ccS?y43wO(IT z)cEC*#jBOHC${09o}ReZipN;02tH?uv#Qj#SAF#8(;M~m$6b^jRLE}P+*qPMp?(JQ zM`*G{iJ7&3E(W+0v69$my!}kZ$w=sIFhchDyTYED`%bpj_R%bAT^or(t7@)H5%SYo zKIxWm%Og#-gfgpzFuKM3eOgMh->&owQm2cOQt>;O5x3_8uMk72_YQoj=~@4#Jn0+K ztsJI88>krLS|Jb-Tj(6%M1@`4w!c8O1cF^Uj0EYS6M57pU!!6K_=M(e#&U|c`Qdz z@aI*Yuox#n>F^ukM^pItytbPz1|^eR*0K3TGtc*FWx@qrhVr$CTP&^C18N$!+u~Q>%8N^QLSswWd zjPgf69KGRW+4ugY=Vq5wC}y%I;ZTsx83Z#6+*G*W>LF}5iwbADh8$jNX&81C#-EUo zr~!d;8jW*cq7XLbpiL%|-5~ifZdJKrVvt7T`J>jIaftbq?3QU#)6<^Bz!J0$ zVXljZB6=c{=jRO5fzN?ALr>)eyO$kcXH4Vs*G%J{E=CJ&SH>_#o34ed2CB3nu2W5^ zb@D3Df%)q{q|#SBR~OU3Ok?syQ67BvONP79NiM6@dir@RYpU%N|EkT__~R8)9?u#? z{+U|RNEp$YjIke>mnZEUV3Pf?qM_?Occ3l1O|kC$&n0h4MXG%7EYkr?o)Zg^)dUjb z#3zD}Nwo688)vb{8O!N_k+_L<%K_U&Si$$eU%jOf*_ z7)(2LGe%CXZB3$gDCHKq=)~EXY&G}!ddySt3tv3UE!1cQ=w13+0(_TWvfn>i#rIg~ zU_0$20q?+^%@(6#@t`o9mg~I>go<+RpLdP<^jAf!(QqODMphP54pcB1V4UZcWsH*x zj9Nc-;raW927kqm(xEbr*4h)~Z_WB=Pfi)$*+>|=Sg3N%V)c5@?5<7YzOS=v3Pby? zgdvgJU?Ir&^Nlrj&4}UWi4k`!p2`v3CNE3mJiE|%=xylJqooIIT<`9!7O8F=Z=h57 zwR}XTh`IyOLlq_e7VYzYP*Tshulr?4vKmJ6zRfOs_a^9C3lDG%v*&i+{dEW;NrSRH z1LCJ1^h6TaXNu0Z#=gksh9X_J=6MPcBXv<2>CXZ znHqh;AUck^Zq$WFwhdiNX<24ArbboNbS2M9qYtd z+}KHi*(!% zAEIHGCv(td6raq395&uOepF65bVfS%^VOuVESA1rJ!wJKjJz{Pm1T5vi66)kkr8e4 zm-MB#7CN|&X6x?a9L3n$h$dF?*kwEqm#R6ZLwo=8H@)$1C>;UKR*8j0xThFfZm!TC zQ*lXZo3On$Y+*z^qMg&S1bS07CVx!O%vwp@B|8gxN{#U8s5b{SS4^l+WYhy6qju#pV+m;U@R^{eE z>jQ{lzrIK2WIPXTslMMGesW1Ahc1@wZb)FC)5WSSL*^;> zxw~%mn|6XiC~@QXD}4x7czxoriYgp3h3oSjnbLD4o|CIO#)$8uA$aJkRMCm3sgI|j z?H8Q2dCR}(LiVBekC-E|Gd3z$*bmzKqZim$JRP9(Yx*V4g>H;CKuxxx6OSbG-IrBM zFo%rJAKrhe#W9P5a%FrHV5_NyNA|l$-rhnFMLem50N;RXc4K@}1Jv>?*uU9;Gu~vClCGl~(c_+Ey695{ zvGuCb+SrrV=%-%>X!z@EK!O4dtJ;~6(L&6y+s5(p71}fO-F5SeM^+M7|2N5$;Gw%IR6SbP2(k{9vY#Y6`2-(2Xb@Pq#SbZXIK$uIK zkQzE{Mip{ouh7mwJqgVD(z&9O;Pm_!#8o$it{TmCy!-B(5SnIan3on?9=iIWeX2Vz zf1{CEY>cS`emhZf_e}2zQK}2t#Qf(iunXU9% z9KWWmo6XAigfvYQu|Cm4(e)}2jCKx(xyfN$7vHn4b4jzX#G7W6Upugc+!l@vD{^${ zkl1ol*N#~U2=4P$D(R{`DXT~qocUeE+OMT{=*0eLW}}V;jxi=&_L{n9R8+5?&Q+;6 z$97{4HrJ=~a9U_PRZ~n8bz=VsQ16XYCC_)YX(Jq;P>J7R zNd|JfmktX^G2Wc&^-YrsfcG(sr(d~1je(V)lI}det)o#qHJ3Lgk>;^*^FrndGSel~ zdGMRUu!7|^3-r>LzHwRYMp|*Y##?@sSg_Qd@n;x>i=t+_1~hg|Krr`Uu_bcJC*H(KX5DlNp(z_oc-nN zhL5UtZHiG3?VXpwdXU7-?SY4PZ;x{t$@BPuFyBJ|>fsliH~bygDfM~N=bep89uBPCiuHgu)+euRI0{M^!&ZS?AKz}eI#YV(ezK^z*7k$(u1rP}2emN;hB z%&KF<_INgG*h843tm=|?uFEHR?!fEg`z|%9!-D$U7s4n;`b5!w(xE>oV!G%vGiJAk zq?TwiU5$UQO`))O9$&?BE}9w4tTS79Q1=2lD+{7VwU5wAY-12?`-|v4#_kA^x37h5 zF(ltRe>lzBoy-GP9RN6fp=&+!{RfAI%f-IyZ?YZ7s)EDih))G)SQZgPsiVpkL>}0A zqiuQOkF|WLuQxsx&@y^0QQ0;t(!gYM;ofjuI;nT(gGYJ`cftbGFMSL&LCH>uRlZUWJPB@X7d zqv==&iLbv0n12(k$v@Cquu+nKn;&!G@$W5{=%T)od`m|1F<@NTCimmjgP+@3ih z=KUiico}e?;ZC+|8&b7XI(BsNEr@r&ydaa&-SW(Zlh1b>jn6u$?Iztx%NHk;_OqRr z@7cG?*2X0$Rwd;;c)`PE_o0I2u&WH6eNTe{UC+lI_s^-GX)d>D`V7QKO!7U9t>NOJ z>t>Tm!xB`SKJW@LPrUz997*Y>i6XLV*?SPirF0i@_^^r4?igMZO@5m|J*7Era;l_}`#66$>l zr9%U%J*Mmzg-0O>U1`H<{kNcc9`3p{!(`8nM|W@>W>;hNNhYh#fOqqrG(dhuCKE-4 zV!49@5MdGBt?MTIr*6)_B6dV6eshbsE%Llw0#NVe7u1Uf%3@Ifv3n0toy}r5QFh%eraR8X-%Kap;?=1mJ1@jL)gr_9`T}C#XaWIZ1W@3)+=0QkS=Q{FuxH zH}gK4bRcgK3PS8C{Y&0Wpghr0g)pNp3M&uTmQ$Hr|D}BhUVb9n`Dso4;w6JTNXBKC zA~sldK+hVuigYCq@hFZc#eO~G#>e)>iG^r0l(Pn_ym61jyO`n|_T1NiA9z+#Wmg?n z`ULQ>fa?#9UC;I(fT_n29Md(i6x}iW$-D_bgCdkEt%W~E5ea9%Q0k8}?gvB+DB79v zNfwo&<$VS7Ln!rQePJN0ND2uE*BYgg`An3^T@MBzp|R??rh(aCBrZ-rMvsgkqOt7X zj#LTZ-($-{k@I+yM15nZeZSR*N7E;GeTgWSGevH!o>^l)*gm}tNB&4t^M)9kx+aIp zdk64HedfC_Maft%lg|sOH$Op>U)>@5R7%NSgBVYcl7d4X`$x67*d6^Xk;S(S+C7ij zNG6y?=#vt<|9n$Z%y9L6QBNK}6as8fBJ(`5p)tK&^6WrZpOkqd%xzZ$vN4<}ONp(| zjMh?wWIlZ#msLWE`Nkn6L_Gg1v)0x_LQnfb3CEIygI8p-q9rvU(rSZ5b(4UMNLjsi z!Fdz|ODp*wgniooN4H@BM;dX}O==i=GqAc|zguvAfPtlg{CN|Den`U@z+0TcY-Mw_ zDy+4wI|Eansdi*uM}z*Zf(sWlo!1ck%<<;QpYK`q4k!QgcP5ri%9Q-pCv+q%H7RXsv7;aj8`(U-m*s!tdL6z-w`|bDtOwfbRL^mkJZHkCHA*7UU zR@b;`9eCyk9pADxQ4Xh3iP0t)0~QZx&Y1kaq|<-BJL+S|_5H4Lv>$E&_xw!2ugLzI zD>NTMq;CGGomKp}c`a$^vfD|<+5O1*kY--6Sn*7#tGNS&GFskaAvizQl*6w^Ld z9h(~|=e^bSmk0elw=3_oMne1JJ7aSnKrZOu9x-S2a~_6$u{sN4)i-_LCcVV|Vrf=? zM2f7VV@~uvfs5?Y9e2^FK5=Qeandixdh+E$2UtuJ#BlS37Cb#G%q~q`jvWE}GzK7$ zlO;7-RhtPB>m~nIK@envFX;2;Ekb~}mqJOInUHS7rRFbn9UVVxIBx?Va#}IV45Vwk zBG3P^_FaGlrpg^@Y;KICVJEAmwpz)$C_^Il`@|__mky2{d%j*q;8dPTze0ptA5Qzd z{_Fai{hfeDUPJ=7ms>gm5f{6c_zHHZ^p`-U^p#vRK1vcl}-dsc`He`0`K^bNtVXa?)!_SzU<@`)6!FaD1{V}=p zS@a~xQK$gPQpZmRMVE>5u}hmdv#&X8i_?qHixWK44yL|{Ka$Gl;Q6$J3%)=?LzHj0 z$zgBW2RUb-yHVL!+(p^X0Jx43RyMI{Sr^BA4rgk%B!gVNdB@g9dIf1Zogravl#^fJsxF)qJi>Y1tgm;6>PnjjPKpIISM)nrUR=O4WLAIbIL;N+ zLyipWo-&%0Ecj0x9}>AI3($>7AZkt{C(@6bDCVxLCmc;pe=Pd)x^`DjQDdXr6<%C~ z%xdq}*4E(g;U|W? zryOgMj|A_c$tWmoY<{?)-|TI{f4J~|MZcVHLO{s`yT2JD-0VjV0zFddaHCclAJP2Q zijA@3@4h>r_*NPnTg^PG|Bg&t9c%cl8pOi_&GM?CpD?KqVvJ2YNq&TAN>d>5TQsn4 ze|h=Lb&1RGeBUMZh^%4C?^wcVEaEsGEbHD>$Eh<{fU);Qwp!fW-^MqP>;lDt-Hl{==ak^|AfO&+r&Z|Fww69YHE%!BQA3clhg z*z?twaSzT>mlgb;;n~@mg5RR?UKv&O%Tm#64CvtOCmwT)D`ajVSjt?KnZ)0Ofns&! zdEdfcKD(*>T^w>^FZc{11^HOkjJVx(mA1&C zieDlF1O}MQLGb+opYihZSIcPOKY0E5CXbU-U%xlu+zSmq+y#C)FLlF8n9kXtGNoc5ea8G%_zEC=_N=zEjf};ps znS{PGR{Xm5#jSF7OKd|=x-Oucd{N5dWkW=WR ze;_lp40?5i7^}Ws-z(I}cpq$B6Phe@SSpHc@8lGQ$GPZFFpqiCWnbZe~SpTZBjQGisHWs!eUpK>!>_jF|;|HUW%@YF2 zZl+Md1dT-{)aM$8{%N9?;1xB$cAC$d?>10fIB_pjf@z!R*>$OaNav>=b$?SFU(^&i zUj87)dI{zK$=c}T6IXeAdSdDDi`&7)W=?|?yzsV;);%DJHaUu!&i?Z6`&74TCrZ!GA)8{o-F_2EkN}K^NkMJknG>+OCAg;4CsFLwQ(rApvEKLjWKt{n7Sv~ zT-YTR=!=wp=!?hH^di}V$(_c6;H1;Z$&GNz-`+g=;?MdM_N=U6t#jVV2F3X-WzwmQqD!`(6vg#OcYI#8%mCZ1U(g&mBS8=I zi_;<;1y^_Zsd~No_{O_nb5Va~ziIvsP9cp#BTI2_u-(dy=jtJ*GZI%1$zHu3q`@N9 z=)U8O{c4W3?-I(Bt|qO08gp&#v`psb-Z9C*uV~@{wCbx9d&=1e=qSJeJZbl z)r>boYBsmy8QZ4yqVG{=5htUj);1S>m|pepx^zi3om7GgM8j5K)Q8(g;(iN8S_UJH zO--$y^RNDcMUcA{O z#MO4KkodCCgRNkul&PaKH5)6ptLcNC4q6)d@}R+on{&W7A*w7gSvKnf3?yzXv_3~Y zPjUYd(%ekPa}i|(Po7M@1us07Y0>medRd^rBKk6>G)_r>Zo9j62BfNLy1V&Uf@sny z^K^*1_CP((iInK?4Qk`@c^DzLcu%j&CMKHbS7tMGL8v}}@3G7Ll{?x8w5y!WKARYx z_Lp%&BA1hmSN#KLVD9?$pv>BCGHm$iNRZ%gF#~0Dak81rul%JqDrod#@}DPUz-p|b z3ir9~NHzgz2emk=j7b> z*L~SDOoq@?!uL(wZm7|>3fAX;K7n>q@Il8^>P3SxWZm%3uE4w%YJ(i^S;l zfBW7v>O$u8q{YR>dvW+ZKkVAP?ZSnSSO&Sjt*Z*f!!4HRTk?GUL*fAmK@DsJJppTD$5qHCp$ii=E5o(^a!g zyUM^&F#wnGwh8MH^SCsM%^|G15j=ZgzgcVdl&k!e5z zR*#!xM3qiP%6V-q^r`R^d2KD1>BEDAKcBEg9TH7-jR+2w-N}FAAh=u}`^0BsXzF~U z_wcn10Gv12L3(;?f}^*P`|LZjB2<;YSfWbAHJxGa83SdYPN`e&$Rw_251uAX5%OTi z&sRN0@p)50#e|6%&&3>=$h;3hVUa?P_(V$8Vq|R`*?FPr$AEJEnvql;VbgB>(rUrfb(+ zzuk*xNC)FSkOM#4TP^Pcs^L5OMDJ+&bW*kBxCr#YTkQuqvRJQQ0{nfB14I4NRF+_B z+6?03djJYSJ230xSgzx9cFa%E+4d5T=eSqY6h=&K)jJSnn*erIux2L6^xrcQ=T>NGy#oXyB;8<=Yv1|8c|HKm022z(uu?}?vjgEHH9>L5J8 z-;s8nyQ_!vZ4{S~I9)W3wSV_s#>vrZTF(R5M5i`f(=up{awps>2V4%AqP!pRAkOF$ z;#Yxxy`x}P5^tm&F?U-^Fj?F=uy1W=BqNf&09@Pj>iD<0vi_=hJ*;DJ{HW}(6=8X7 zv#^Z4+G{~JF_?;t{ zN274nU#IS>xToSLKnR7#?-FKBmja{9qI1}gd2JRv@1>M>CJ+y#l5Ub5^FhLK80>M9 zF=ey|v%ufJxVYIp+}X|8;C}2=hxL!Z4DcI=^RTpa3Ae+y3`<7<^JtuXQSS=u!E+LE zLW(m0ywIp3@%u>hdBO+& zY|a7z_)pB~zF3}^uf#OXyLCQ@lz(DjWQc!3iHi%OL|!Yu87a4VHGanu{xyz5VkGjc z$8R6)!e_eR0|UnYi0U!wqDlSQqL^I5_@6z7=&@NtH)-I`C-LnA(bK{QO zr_mf5oOI11m@@kmQT@X{4AqwKVd(%F{(zrR!e;~A^u2+cSN4M+zxN_Oib@;;a8GmQ zJa8)xgCCbd{(XNX!6uC+Uq{*WhK7blRjv7x6fm5%)c0cxG|gQMRo{3SHV@L!tTjL1 zhf8wqUYAb7<8TY_Z-&zD!m%K|tT9Cp(2^+ak+kN&>?Ut@%_^778-ZfN+W zQgAu`)H`9=Ka{W$o8q~Y_YB*(t;6s%@4gBltbag5-iU%hQVLRfKuGaAmknc@@o97F zpEm%9N54*tUy@*h-Mq@h1U80gW$(AzPyK@^U>EqMvsd}A?xqfF&m+RolZsZ%2je{-gDZAn^TO3Dot5Dg zPg1#B^5N5gg_Zz@Xy4EIN5KY6ryjX&HgEULK8eJX#x6YD_hV$bM+2p;>c`5DD`ZSN zkC+O^by+F{k8k35uhI7cl=c4Gat#4LXO1b@o!o#Zo=y;_HmH<6Kw7>qI*1+?Hf~8}6akXTsGzuS1h~ zgdVDUyoExog_E}+>uNV*itELfweQPC`rPf2-MlMEHW{wkltcqMG5Lx|x1$ho+L^SgENuLH=785AP)=pEKfBWfCn}4 z#$#l`tCHe>_(a1B1U_B1S0@E#)R#O;Eql1Bpo1WeYM&c z#LGCfv%}B=3VqQVQX@@!({Pd^EsSIw$15x&)#ER>jcQDto2vv@1P*R)FOSZ&CAndz zR%R0syP>H}wm&`9&kg@Mg^2dab@_iv`_8x~g09~n3MwEVDAEN4Y%~#&77#&1q$<)0 zMd?LKsDYsLA}An8jUW(_5~UNWfYPLw&=DyC0)!S?NOCtm_q`wQd&`IY?e3g2XU@*f zo-=!9=06h}ms_!_-j8?Cz1M=N`S!x%~v>S@N}75Q%dhnsISNo5mz>u&tKBsf?y zXy3IC-$Z=UT$%y}{1;c>2E>oN>YMCWLi~akgM+^v`_;c78}tearkj4g-7luquR>{P z+HmtoCgPhR7nJt~o-~q!volxyFwr~Ex6bp!)2%g-1(%dFWo(j~t9=eWX_5>o!5UaY z_XM6s%`xAm9%be{#rd+1YL}F7_=X9UL$yq-&qtQo{;D9Fyq^Mn* zMN;Qe$(~^gocvC?$Tqp2PtPo&#M0NGlwtuf-oH*)!5$w`=VhXp#e5a7Y1OLf&!Tn{ z7}PZRSV0n!n3ui-QFBZuAKWk%#n@?=W4|X3!Y>$%E>dpkjz}~tOEY7#EWl19^qCnM zZ-|@q{RDkOp}<~`R0^@%FMOwH%Z09vB6CP>F5C`j@3*LY`~*Dp?oZ}zFAz0Dwq zw=x|_HH1}F`TjSJF!Jq_UQ|e(RWoJopkd8R5)=wsc)P+jGCNzAJXV^Vsd16wu`JF$ zsI#$A?mnY{Co|N)9$Qjl4c>{DUfit5@4LG<9gRw0aHW3JM;&nTB$nAr`7-FN8;j{h za!6$7`82!Nyz8MN?Jo}5S?f%%b=n@XuVzmT`pxwg`M2fZHbr29qvYiw)LKe1b{pDa z$E}_kuGxqP8ZLk|E}?XD{Ccdx9Atq|krtoBJtJjY(hrueQ#J0|y%xS34b_n0^M+mdGPft>!3X(`77zZMgrU>m{BzE+%JrJZeryyb{GP zZ*?~JNEPJ9GGEc~qeT0m+86gZv<_u+81onxzCDIuvrJST#LJLWa3MvA`ZbpwkDlf~ zJMw0}mSidqSf`Z2c-?>*_)$4q=cered?!7P^ zy3=4zURw+ZyAVCfM=U=GUQhk850C7OEx-itwAoO0hmw_qLS;j@Os#})e?8BRZkX4s zI-pK6U`M~qmk?#7N&>bWi1#FLyqD8d+3(htSlOT)*`>`_tf5bas}L8OU<;)?6Sta| z??z8DDv48ds(vD`p$m2k`J2ca*>4af)71<)=(?{m2jF}uoz9VjWvsyO!V(lpv{J1O zx|o@l6?D}cn_jUEU1bILXggafp{2Am)ZI@eOLtCom3Mv?gXdiv`cF3fo-(VfeR(^N zfCQ|bX<+7X2b$i9f#Es0Q^f`~@4tSNwMt|M? zb8QZvX})LWw>qSh=D4z$dQso8a0!9G*-ZM&R*L=L*2E*#lD%=Q@cu(P`$ka~RwJFg zaTw)}&hWy=d%B7ncN(H5V+A`v0zUFdA}QrE3&w}744@s7Jn?uTnN*@;q0 zO|aoa$`hld_L^*E;M7`R{Pk;hH-)^!-Bi-U1R+&Fv}7N9!LT!!z}it7(=a_1u#RHn1&bN~NI+#V;z@^@$QRYYLn}c zo4xrUiZA8s)`aNUHe_^XQ= zDtEh{9rA?yHFXw(#jfMKo}w}uUkb!w_%qHU+VqsPbpULSp`4GKD(l)W==7*OC^{rSLAO`|8M9!>H-!%e}RPf#xSL1f zYx;k&&g3?@%%I}qkJ2R)jAy)FgGWhOK#b_p0ci(g-jz*Y*e<~)zKIW9Qp#+%HxDd!_J2G@ z@L!W}@_U{cf-k97KlN8t^D_`PhX7tVE4OTJU-YdB2S_z_hO|rXv(x^ZQxQEu#6$J) z(*>4#u4&S`ie2LtTt)Xm8aihYpwQbrhKGy=^5GYONeZfEF98JBAuhE52V)TEow+G> z0gIic9DTBAb@z-4yk$IL!P=RMpQ9@NQW@a9q9#x6PIzHgv+DyX93Amd{nxp@%c|)9 zgP-Yno(fI-e+Q#EN>fJvF7Uqo^`i=B}N_h5d2D>BedYqo`;f zcHCj%B>IY(v?yb*2I9)>6dZ!NE|($G9PX!Tr-%sekM8Vq z(8(?FNW+J)Hv6gxDZ+rXK#cGZ9Pg_}3~9w?>OINEUEJIWs9}42cpcRT-S$mO!@vWY z8puYY%@6Vi{8oyCp066RiiP|pj9c(8jTI#HTTUL-nc=Yt8CY&TMie~96wGCs)|nZ&SF%hL*3qQJl~>}uN26pe4Nj@Az~B744PI42QC?tv?&Ic2wxi9p z;r(ka(zRQh0r4YI`mM-1=(ce9PH)FJ+MiYJ9OBp5&p4KD+}t>N97ZBSnXY4C&r=tx z-Z?diymJBf^Z=D{Z^KOM4K8WT<5T5ndtgkA*S(pE^(C_8t1_9#2j<7&e@+!1a&iMei#jEGbkPMwYw$>0mEz!N zY3OHnasIQ?16&dsP^4K20ipDvOuu-o*Wn+{c+b86iDPZ7T^??QvKe87kB(BT*w(&L ztSoj{KT#fHghO<`w2^~6d(*hmHv)v)!n`~sn z536=ej@ytpsFYE$M7YJRM5jXR>csmVGSYfx*lXN^;~3FI#m(zfqu`D^`eB|8^`b4Y zHa34nLsQH-+Mrf56_24mB@ak`jk8XQ{|kZ>OWbOp$jqIY3nmOI*bj0Fvbp>EZTysD zer|el2NTjhVUl*YB$(^hyN5vK0l5Y#u-#f9L-^jf;^sRfGdZtwjG@#retI|V^EBje z8Z_5|&%oob#6!#7U=obK*`*1Ez%Tgq9uRhePh>|bX#)@X`3Jh#%$L%%X9X(e$Y0}u zAo*Jg`w$?Za&@D5myFEL$G-mn<$UyfS&Kq1dTTeI5|;cSV2JXgt6OOm4yC0Vkc1`h z&Sa%)5pTNafk&dqSnmJCK}^@-qoBu!K!izk=%y9zzpK!5FKMsOvjKLiaF5|rxE^rv z@tGIX%CMqeQ8Wt}2n<<2>Ge>j{zP5NU6#wE2QHHS@5W!~Yx!D2-+a>-m{j+cy z{ue;1x)xqrS)W_yAe5cSxjG((q%>EM4Etq5%slUpb`Fg<*00lO@+Z+Rgsr(5V*wL3 z>e(W|0L&M8#KPWSj#S#?S1n6FABRWmb$bx`;8}?Rl>qY%YX~5C8hx@efU_?SgU^7M|0 zqyM#PRef8lrb(wCC9Rd`#BV&&ym|k1UdatwCK2nGli%A)E`Bq!3>EsLR#1?g^d&s* zMYo`>Oz7nwr?ngh&Zyry&QwWayC8RvM7$S-XzV`<8JjFlX|FgSlhk$^iPJ&JvjNkL zalVtD z{IQ0Tv@*q95d63qcg#ISn;>a3_VWx)=9gP92HPw}KU5zJ57zMOe)KG&ptIPm&LfOV zdS23)*N|yLk?8`(tH0AK7f#NYqZ*f|bC@Nvt|;t~Xb>(OYHg))eKeUXhKKQm6gue+ z*`NdFi8uIZsa%Et?cyFiLnz?%h)7fD4W!_{{8eo=v2>H z#7tgk+)@!;chtbuni*Db{h4Xs#7asn5b*r^;E+*#61{R+ZR0FLeUMH+y#J4FY1{>J_hR0?-@g$vn`!h1T;<<~q$MRD%OmDj zHi1T7t=}BZX-H%S%|16Z_>unELqt$;p_#0Cv{g4IS!>vO@W>SUeKrBhPh$HZVRe&0 zghvNYUIfQPN2e2ccs&ySI4k^C5wR6POUT}QtO^2g9#i)S$fEpWcwlB3y-Ac}H6FHk zZi_hN+ES-TOG{52H(#0k8k4pkn-R{((9;vZ#42%H0^40%BzLco&nU74{p^=c@s=rOYv^eE4cVK?#~cFkjxZGKphq@tRYp58T$Hr#Bu z$t*FN4}FQTVtz+Fh|RF@OwrBi1PW2Ea`>=T{;eTPTU6Jlgq*j}IZ^z_Wg-1$-~46k ztDI1S-2Iy+_ch!%C`Cq3w0fesnDTh0k3|JNM)L=)yKVBG7Dp$g)&-&FcV6jiX55X@ zba=tSIygCLrnf~EJ zqwnbl?Ll&9?->xwp7I6j5!JH{8fD69Rl`-bDt;dHc=YS6In_&Vy->GQjEr2AU45DGVy)y^&mS+bEUm=Zr zM{ywq<;gPdmHjZqWWrkWir>vwF+bC2K<}m47z$Lhn6~n z8DvPEfeZ{GJo~Toe+!90kN&g$!+%RA;Baiu^L5Q_$pJ^-RZy4fdGvep4o@yEBQRN0 z71Lc+p|H5Wy9ilI17OyUbj!{xnzJLChfj7hyn{Bqyu?6%#DnSd1@nf&8I07`Zy6$; zIMq0QVh_SsWU%`s7Y^*utd}nL3@P&Co0?Ju_8vn$pSE27mx6^tAU!OB1?buv)^X?K zUan>rEEAxNz)ClUQ?jAnt>`n&fIW3q*cJXDV)3OsCwk4=07gzK-|PEIJ@gTFA=6wB zp%s8l*DwvlF4&t?CQncRQb*})9s2o^pC`5MK^11~2#OCtR+7Fw*)>E77;7mEd$nd8 zVo}p*Di+&6XPP=|>Kv(|XnG8BW^z?Hixgk(fKG9TZXPp!>PaL8K%3#$#Dn22*vSZe zX_zeFRD83VS$1}B&skS7=Gu3zxgZ8jyxseE7(^q<^%L;yH)gfaL3wL7%k!phj#VhF zF}cmvdyvdem)$LWE{vwdy<}uRqa$dor9^g$P>EGUy?jM4?IXg0$&JbZ|YLbMCsf6sXhgmnO_V{H^ zziat`dXsn!b`h$4unQ=xEta@bb?+Qtn8kt^)>ra7?3yB^F?-gbs>@3&Q9)+$>qtXcoPVKyPJX89wK70eABga5w+B zzmI98{o^iy-amWhU5^aS-LWkvLuG142V=`;%vA0PBaYDrRN20xX9UW@|#{1)vAP zTa)rEN7gN4!qRs~+(HM`%WG&>c_CGP^bJBfu*5SHpiTKPG-x4&9Vw zyrC0FY!s^8j=9$RVfjp!jj=srm4BbW{G7m9x)9`+`3Um5yV}*q6XZ}?aLi8Yxu6PYP`6| z*g&S19{sV6F&8;Z7gKxka_5%=>-!+JFLlh`kVeUhYCD?%c@NRQ5lc%JoN~~ZF9A0f z3dNJ#>c*T9t{c6WD=_EE@3*~UnMgT1}8 zIYQqqXvVxZ4l^bzVP!tGzGr63xy)CMX}sjcKiSMmvP>4)UWsQkGdI7rIG9)jc#OIK z_zN}cxdIWH4|+P;H(?0$d!w}O*z>wyi$7~7!~~?waO|nvL+!zbqgkh)>4%c(-~FTa zO*UqR`2P(bIi4F-`Jjhn$}21s**MPm@Zl#$2EyWdXVqSDjrpz|k0UUmIm*y8%wwh7 zULuM((BV}9O$z9+$aKZZ=Jdfja1O@|!6#{)_u6SXw{7R$=>pQz^jlgh?i z^uG;#_Wm=+>%X<=|IhxwkOw^38kJc6suoWDo7s#2IZLy?ethuG_t25SFJzxtA*8$! z(~*F1MfUZR?S8Zvq1D7CvYhwt1Vo_uV(lbgr>T?Zx4U(OsDUXum*{ z_%;{Uy+61VskOinRuHINiuPg!TE)Z1#7@$tgq!B>!?TFSpN4GI5&d@$F`>wENtamj zEh*K*b+NIGKfb_z4v*|2uVs5ci?6*=O=KImE&$u7K1-%VOKg=0YE!;lU0o=d&GRDQ zNNwk@-SuT1W1+cw-j`0ShQ;7NV(A3#1{#d??VE3D=S+{63_;f;w*s_!ss%+Z8nf-1 zb?8+uP|JyqnA#qUxl=pErMhw9?bmSq!TZ_{)T&f_dWJQoC?=pcyzqRu{=4NRVbWF= z-5-s!x$k4g(8( zXw;{Oea5;H0`?sU{vT(D{#>5o7@%=VUgc7IiIV$;yghzVwRC=W_Qt~SdhK%K(_hFU zcD0wM#S}YXWs8Kl*_SM=Z*l&W*c6lSR5uN!vIPT!H2Rg7gdWHZ623uVI1c|eXpGTY zhfplpHXEybUii)K&nMiEUuM@#*tnXm^ubsHGwG#Tsk9}EpPuFI!I1Ou@fH3NQ8*V>OhMt@m=6$>d}*J@6~ zOPnZ^cG3MQ6t0g}FpipFSZr)EMUQyZjWBhF*5o;Qyy22HOi{Sd+Ecs+Pj|nw8*6(x@PrCd1mJ18Z8uHr$W74H0CDr1kI2Qt*{PO3! zb3G>8O8YMEva;U&d6F9T`t=4x_U4bF5yVcyPh-!A4`0hdXtlb83Q7p+QODZFS`Q!6 z;7wp3wvMWm+vz{1mzS5{laos;g(DZfd2cLNd3k%w-@2vk@Am8qF`iS}|5rTc`kq27 zr>Uvw6LsabRl=T3Ueg);h?{5nZt85w#IDMzXp`nmnV9x$jh9c0Wk7OfP&A;JAuE)g&Pbjs%@v8Elzk!YlxHY#~T7Fz6b2uw+$>F zeY(B1IK0nwFFVwTm%s7Zmy^%*6F@gxr`NHTLMCq7szj+yJSLFK7nc&+onQ<;(pU(r#}-bD--9P_Uq&jaB1+@hh0UKki z@1J?iWv8SEAWI1!EhP~cu+f8`bNxtx2a#9Q(~hlcBF~K+w%^WhAt{PNPA(Q(*Zf3$ z)bQpO(f_=Lfl%MXzU{VmB^WQ(?ODn3JJQ#q>xHzv?9R^4_!!5seD+r<$!DB5a~fORw=efUbDvQH3 zpwdMy>!g^qwP1PCA69}VJ%dqur(6#K%w`2?$j61MtIMOoVLS>EUZ^vCylU6|X-{4E zp9H?D^--4PrAAs%XvIGme~{|U24*Uf(*N-f(0{p0OPUeME&ET@tXF>)u<8GsCkA@= z=~n0+Kav8N{=rHiGGs9wblU~>zHgy`>XJjf#j`^duBgc=6NLIWgT$6N>EwvThYQP0 zWejTkavp!|;g_(SblCXD=O*KEzI+mUROutHj^f_&oXxf0a)Ke>iV$#`LEH($qP)nL zIugCW$;qS5Gh+nBFVi&qFi*|#?yi3UHKzE9E=>NBtQ74R&PQi@q#1Jnj$ol1G31an z_9F?ad^#=f9zmDH!M=rvf2wgEpCOsshcSkANt!%78*D$>?%VTrEM zj(jf6RDw6t+p<+4_zC(VyhjXu+`y}HZ(ac{=5Y;BX1&gBJ$0&OSKkco}Yiu}_(OZi7 zyEmq3rA4>i$ZL!o>T=Jd$|Vhnh*d%Pm%AJY$rA4^cWX=k)lO;?oGodQLnK|)6DPZ# z=drY;573>0&mWXF@R-%uq`iBpmsghDza|PPhw{}BsD+LU9h`IQci?hmVbxYTClfXb zsI-^a>){k|yx;Qs+{sESemrEysj;%chcN9>>~y>-0Xv zjB1THeKb9KuidVqt!t0O$-94S~IWzL$cm2x*X_x31uIUe8KEto9Bjs0Pyx7gC%ID;56Cn+^Fn+gTFx8&&hS)zre$vWEZ-aSL?6 zfRK2*K*z|2-aJ-NF*e3{dCuQW2wbuF;@F%sh~tWtOEY$atI zUMbTZh|(3EW!oEdrNm#49O$CD!8Lde+Bz25cab9Lm> zddBLphn?y)zmKxEY@HN{_PR(MioX}wN3eiGVuO~}K#jf*KotyOs7BHZq*l0Ba0U;oz8kpkm&XVl_i3NkQ~%(!fn{rItL>KM-eWT!f zk`_1gKtKO4y~ws7BmlD|rf47C@N!jMC*-i%L2H>7G*@o-%MYU?te}vF{mpax_Q=GI zV0FQ&vd2q)dX)@yP02DxSK(5;*(YyO>PlWaASmBbtoxh)gjDjy8KQANv?d$-2D3m%G=+t#ry82 z>4H9`Ncc8w(s{?_D6F(lT~wAH?Rd7cP!8uE~y zlKPEg{z!SaL6#FbK7QT!M~Jz+KTTwDl_f!rfmZ0%$JZUJ&~Ygr=G>cmt#F}TKnjnX z^%bB1(;EDFXvjb@K(XvQB-K4a zX``cy3)>JwM`rkI8{V6z`Rb#}1fGprec@A^dB#@IihPN>ckaW}5jzR*fCAy z{3Tdae|Vx#^C<#P4#k~ObM%nHEUs9%^Orx4yBf+eXr%qkJxAys|+Y|LkAb01u_g(Lm$v8kIU8VYX$C1F&F)_mtnZfI@3>LMZxN4E| zHc@|WAkyf_EKphV$R)4M?LePOsT4VjxJo6|o^tOvxa_Vo%>o9}ALyvQ1mcr_xB#SM zZs${=n`_v;Q=k_4$a(aWzi6fjkPHoIN&Te$57nc9Y=LEh)bsymX!E~3`+pl4J z&3H#M!WHQ3EbGjz2A^GH^WDhEcxwTv$xKkXEb7B2n3rjsgT#bT$_M1BV)Lz+KP{x1 z@5sBiNS2{?y{AKMc-D5G@r)5>y|kOYRhi?2y!h-3fp$9YZSC&?i`6W8L!qTR(CzM5-V#8A9dD8YGHHer!@9BBPs!It z7!i37qT}BccRQM~#t)MaBnAm*qRkQcZhU)c$bodW^1w=xyRj)asvH z(g^yd(Ky2jUx@!XUZqL|Od6RS&$0S}y?5EkZ(8@RbK?NY1(5HQ1^(Wu@6FE9wWG-NGg16#C36Jr~ZbNlz}5ZwM*E-syiqCQ{Ukk z;P}kVxfL5Puzm(W0S@Da*E1g2^8@o zy}5yBFCD%4Y)uQy;y-88%*0k}yqV89-!Jn_!`3$Mz2c1r6Y|r0(*X8!sQ#AVH4t-K k+&e1kJsMzT00>k><{uRu@?;VEg`(bSY3Qn#sae1IAD1a+bpQYW diff --git a/icons/obj/weapon/sword.dmi b/icons/obj/weapon/sword.dmi index c24924eac5e3dbe7709f7c922501fa7565203653..dc8fd8fd5d7d78e510c79cc23e27de0db4fbceb2 100644 GIT binary patch literal 15674 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 E2TU{#PXGV_ literal 14471 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 diff --git a/shiptest.dme b/shiptest.dme index df070860eff7..bf04c19f93e2 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1255,20 +1255,20 @@ #include "code\game\objects\items\implants\implantpad.dm" #include "code\game\objects\items\implants\implantuplink.dm" #include "code\game\objects\items\melee\chainsaw.dm" +#include "code\game\objects\items\melee\dualsaber.dm" #include "code\game\objects\items\melee\energy.dm" #include "code\game\objects\items\melee\energyhalberd.dm" +#include "code\game\objects\items\melee\fireaxe.dm" #include "code\game\objects\items\melee\knife.dm" #include "code\game\objects\items\melee\misc.dm" -#include "code\game\objects\items\melee\dualsaber.dm" #include "code\game\objects\items\melee\powerfist.dm" +#include "code\game\objects\items\melee\spear.dm" #include "code\game\objects\items\melee\stunbaton.dm" #include "code\game\objects\items\melee\sword.dm" #include "code\game\objects\items\melee\teleprod.dm" #include "code\game\objects\items\melee\transforming.dm" -#include "code\game\objects\items\melee\fireaxe.dm" #include "code\game\objects\items\melee\weaponry.dm" #include "code\game\objects\items\robot\ai_upgrades.dm" -#include "code\game\objects\items\melee\spear.dm" #include "code\game\objects\items\robot\robot_items.dm" #include "code\game\objects\items\robot\robot_parts.dm" #include "code\game\objects\items\robot\robot_upgrades.dm" From 1cbb43ac8f357b02c4513492bb79ead829e3a334 Mon Sep 17 00:00:00 2001 From: fallcon Date: Wed, 24 Apr 2024 12:25:44 -0500 Subject: [PATCH 043/102] yea --- check_regex.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/check_regex.yaml b/check_regex.yaml index 538d570daea4..d682096076a0 100644 --- a/check_regex.yaml +++ b/check_regex.yaml @@ -29,7 +29,7 @@ standards: - exactly: [1, "/area text paths", '"/area'] - exactly: [17, "/datum text paths", '"/datum'] - exactly: [4, "/mob text paths", '"/mob'] - - exactly: [43, "/obj text paths", '"/obj'] + - exactly: [42, "/obj text paths", '"/obj'] - exactly: [0, "/turf text paths", '"/turf'] - exactly: [117, "text2path uses", "text2path"] From 98733cc586cb23fcada90855f1cbe777ffad5036 Mon Sep 17 00:00:00 2001 From: fallcon Date: Wed, 24 Apr 2024 12:29:33 -0500 Subject: [PATCH 044/102] make fixing new ruins made during this pr easier to fix --- tools/UpdatePaths/Scripts/2890_melee.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 tools/UpdatePaths/Scripts/2890_melee.txt diff --git a/tools/UpdatePaths/Scripts/2890_melee.txt b/tools/UpdatePaths/Scripts/2890_melee.txt new file mode 100644 index 000000000000..6b2b0276dcbe --- /dev/null +++ b/tools/UpdatePaths/Scripts/2890_melee.txt @@ -0,0 +1,3 @@ +/obj/item/kitchen/knife : /obj/item/melee/knife/kitchen +/obj/item/kitchen/knife/combat : /obj/item/melee/knife/combat +/obj/item/kitchen/knife/combat/survival : /obj/item/melee/knife/survival From 4212422acb33d0c8824d62f4f244274cf01e34ca Mon Sep 17 00:00:00 2001 From: fallcon Date: Wed, 24 Apr 2024 12:42:12 -0500 Subject: [PATCH 045/102] spears --- .../RandomRuins/JungleRuins/jungle_botany.dmm | 2 +- .../lavaland_surface_ashwalker_shrine.dmm | 16 ++++----- .../lavaland_surface_dwarffortress.dmm | 2 +- .../lavaland_surface_lava_canyon.dmm | 4 +-- _maps/RandomRuins/ReebeRuins/reebe_arena.dmm | 2 +- .../whitesands_surface_camp_combination.dmm | 2 +- .../whitesands_surface_chokepoint.dmm | 2 +- .../wasteplanet_fortress_of_solitide.dmm | 18 +++++----- .../WasteRuins/wasteplanet_pandora.dmm | 6 ++-- _maps/shuttles/pirate/pirate_ember.dmm | 2 +- _maps/shuttles/roumain/srm_elder.dmm | 6 ++-- code/_globalvars/lists/maintenance_loot.dm | 2 +- code/controllers/subsystem/traumas.dm | 2 +- .../components/crafting/recipes/tribal.dm | 12 +++---- .../components/crafting/recipes/weapon.dm | 10 +++--- code/game/objects/items/melee/spear.dm | 34 +++++++++---------- code/game/objects/items/melee/weaponry.dm | 2 +- code/game/objects/structures/headpike.dm | 6 ++-- .../antagonists/wizard/equipment/artefact.dm | 2 +- .../awaymissions/mission_code/snowdin.dm | 2 +- .../blackmarket/blackmarket_items/weapons.dm | 2 +- code/modules/cargo/bounties/assistant.dm | 2 +- .../clothing/spacesuits/miscellaneous.dm | 2 +- code/modules/clothing/suits/cloaks.dm | 4 +-- .../mining/lavaland/necropolis_chests.dm | 2 +- .../hostile/mining_mobs/hivelord.dm | 4 +-- .../living/simple_animal/hostile/skeleton.dm | 2 +- 27 files changed, 76 insertions(+), 76 deletions(-) diff --git a/_maps/RandomRuins/JungleRuins/jungle_botany.dmm b/_maps/RandomRuins/JungleRuins/jungle_botany.dmm index 6888c97fc9a6..c4f5c9ad49aa 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_botany.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_botany.dmm @@ -512,7 +512,7 @@ /turf/open/floor/plasteel, /area/ruin/powered) "Nn" = ( -/obj/item/spear, +/obj/item/melee/spear, /turf/open/floor/plasteel, /area/ruin/powered) "Np" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ashwalker_shrine.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ashwalker_shrine.dmm index 5001fd7a1831..1b9fffd1ad7f 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ashwalker_shrine.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ashwalker_shrine.dmm @@ -235,7 +235,7 @@ /area/overmap_encounter/planetoid/lava/explored) "il" = ( /obj/structure/table/wood, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/overmap_encounter/planetoid/lava/explored) "im" = ( @@ -468,7 +468,7 @@ /obj/effect/mob_spawn/human/corpse{ mob_species = /datum/species/lizard/ashwalker }, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/overmap_encounter/planetoid/lava/explored) "rH" = ( @@ -492,7 +492,7 @@ /obj/effect/mob_spawn/human/corpse{ mob_species = /datum/species/lizard/ashwalker }, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/overmap_encounter/planetoid/lava/explored) "ss" = ( @@ -559,7 +559,7 @@ /obj/effect/mob_spawn/human/corpse{ mob_species = /datum/species/lizard/ashwalker }, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/overmap_encounter/planetoid/lava/explored) "vN" = ( @@ -579,7 +579,7 @@ /obj/effect/mob_spawn/human/corpse{ mob_species = /datum/species/lizard/ashwalker }, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/overmap_encounter/planetoid/lava/explored) "vW" = ( @@ -946,7 +946,7 @@ /obj/effect/mob_spawn/human/corpse{ mob_species = /datum/species/lizard/ashwalker }, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/overmap_encounter/planetoid/lava/explored) "LG" = ( @@ -1085,7 +1085,7 @@ "Us" = ( /obj/structure/stone_tile/slab, /obj/structure/table/wood, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/overmap_encounter/planetoid/lava/explored) "Ux" = ( @@ -1108,7 +1108,7 @@ /area/overmap_encounter/planetoid/lava/explored) "UF" = ( /obj/structure/table/wood, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /turf/open/floor/wood, /area/overmap_encounter/planetoid/lava/explored) "Vb" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm index 1ae5b7ae1063..7dc37e4b2d2b 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm @@ -175,7 +175,7 @@ /area/overmap_encounter/planetoid/cave/explored) "Fs" = ( /obj/structure/table/wood, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /turf/open/floor/plating/asteroid/basalt, /area/overmap_encounter/planetoid/cave/explored) "GD" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index 912133c9f8d4..97af7bd34241 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -348,7 +348,7 @@ /obj/effect/mob_spawn/human/corpse{ mob_species = /datum/species/lizard/ashwalker }, -/obj/item/spear/bonespear{ +/obj/item/melee/spear/bonespear{ pixel_x = 10; pixel_y = -2 }, @@ -1710,7 +1710,7 @@ pixel_x = -2; pixel_y = 1 }, -/obj/item/spear/bonespear{ +/obj/item/melee/spear/bonespear{ pixel_x = 8; pixel_y = 14 }, diff --git a/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm b/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm index fa06a7953bfd..1d86274df26a 100644 --- a/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm +++ b/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm @@ -217,7 +217,7 @@ /turf/open/floor/bronze, /area/ruin/reebe) "Ux" = ( -/obj/item/spear, +/obj/item/melee/spear, /obj/item/grenade/c4, /turf/open/floor/bronze, /area/ruin/reebe) diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm index 1b7e3a91c39b..2aa952f40f36 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm @@ -652,7 +652,7 @@ /turf/open/floor/wood, /area/ruin) "yZ" = ( -/obj/item/spear, +/obj/item/melee/spear, /obj/effect/mob_spawn/human/corpse/damaged/whitesands/survivor, /turf/open/floor/plating/asteroid/whitesands/dried{ light_range = 2 diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_chokepoint.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_chokepoint.dmm index 5d63a30bf22b..522600c1907f 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_chokepoint.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_chokepoint.dmm @@ -85,7 +85,7 @@ /obj/structure/closet/cabinet, /obj/item/clothing/head/helmet/knight/blue, /obj/item/clothing/suit/armor/riot/knight/blue, -/obj/item/spear, +/obj/item/melee/spear, /obj/item/shield/riot/buckler, /turf/open/floor/plating/asteroid/whitesands, /area/ruin) diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm index 01b890856b0e..99ebb3ae41c5 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm @@ -651,8 +651,8 @@ /area/ruin/powered) "fI" = ( /obj/structure/closet/crate, -/obj/item/spear, -/obj/item/spear, +/obj/item/melee/spear, +/obj/item/melee/spear, /obj/effect/decal/cleanable/dirt/dust, /obj/item/trash/tray, /turf/open/floor/plating, @@ -1316,7 +1316,7 @@ /turf/open/floor/plating/rust, /area/ruin/powered) "mo" = ( -/obj/item/spear, +/obj/item/melee/spear, /obj/structure/sign/poster/contraband/random{ pixel_y = 28 }, @@ -1351,7 +1351,7 @@ "mP" = ( /obj/effect/mob_spawn/human/corpse/assistant, /obj/effect/decal/cleanable/blood, -/obj/item/spear, +/obj/item/melee/spear, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -3251,7 +3251,7 @@ /turf/open/floor/plating/rust, /area/ruin/powered) "Eb" = ( -/obj/item/spear, +/obj/item/melee/spear, /turf/open/floor/plating, /area/ruin/powered) "Ed" = ( @@ -3764,7 +3764,7 @@ /obj/structure/table, /obj/item/clothing/mask/gas, /obj/item/clothing/under/color/grey/ancient, -/obj/item/spear, +/obj/item/melee/spear, /turf/open/floor/plating/rust, /area/ruin/powered) "IY" = ( @@ -3933,8 +3933,8 @@ /area/ruin/powered) "KB" = ( /obj/structure/closet/crate, -/obj/item/spear, -/obj/item/spear, +/obj/item/melee/spear, +/obj/item/melee/spear, /obj/effect/decal/cleanable/dirt/dust, /obj/item/trash/boritos, /turf/open/floor/plating, @@ -5070,7 +5070,7 @@ /turf/open/floor/plating/rust, /area/ruin/powered) "UW" = ( -/obj/item/spear, +/obj/item/melee/spear, /obj/machinery/light/directional/south, /turf/open/floor/plating/rust, /area/ruin/powered) diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index 76f13b7270ce..591f073d3589 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -423,7 +423,7 @@ /area/ruin/wasteplanet) "qo" = ( /obj/structure/closet/cabinet, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /obj/item/clothing/suit/armor/witchhunter, /obj/item/reagent_containers/food/snacks/grown/berries/death, /turf/open/floor/wood/waste, @@ -578,7 +578,7 @@ /area/ruin/wasteplanet) "xk" = ( /obj/structure/table/wood, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) "xu" = ( @@ -1233,7 +1233,7 @@ /area/ruin/wasteplanet) "RT" = ( /obj/structure/table/wood, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /obj/item/stack/sheet/sinew, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) diff --git a/_maps/shuttles/pirate/pirate_ember.dmm b/_maps/shuttles/pirate/pirate_ember.dmm index 472511b65694..ac09eae97d22 100644 --- a/_maps/shuttles/pirate/pirate_ember.dmm +++ b/_maps/shuttles/pirate/pirate_ember.dmm @@ -9852,7 +9852,7 @@ pixel_x = -9; pixel_y = 7 }, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bonespear, /obj/item/scythe, /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable{ diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index ec7d813ce16c..06ceccf8fa2e 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -2453,15 +2453,15 @@ /area/ship/roumain) "Eh" = ( /obj/structure/table/wood, -/obj/item/spear/bonespear{ +/obj/item/melee/spear/bonespear{ pixel_y = -3; pixel_x = 2 }, -/obj/item/spear/bonespear{ +/obj/item/melee/spear/bonespear{ pixel_y = 1; pixel_x = 2 }, -/obj/item/spear/bonespear{ +/obj/item/melee/spear/bonespear{ pixel_y = 5; pixel_x = 2 }, diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index f041db0ac02c..978fc2ad4d73 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -164,7 +164,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/roller = 1, /obj/item/restraints/legcuffs/bola = 1, /obj/item/restraints/handcuffs/cable = 1, - /obj/item/spear = 1, + /obj/item/melee/spear = 1, /obj/item/shield/riot/buckler = 1, /obj/item/grenade/iedcasing/spawned = 1, /obj/item/melee/baton/cattleprod = 1, diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index a58c60dd4543..0280a40abe91 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -75,7 +75,7 @@ SUBSYSTEM_DEF(traumas) "greytide" = typecacheof(list( /obj/item/clothing/under/color/grey, /obj/item/melee/baton/cattleprod, - /obj/item/spear, /obj/item/clothing/mask/gas)), + /obj/item/melee/spear, /obj/item/clothing/mask/gas)), "lizards" = typecacheof(list( /obj/item/toy/plush/lizardplushie, /obj/item/organ/tail/lizard, diff --git a/code/datums/components/crafting/recipes/tribal.dm b/code/datums/components/crafting/recipes/tribal.dm index 07f8fc48a99a..e2691f482aa9 100644 --- a/code/datums/components/crafting/recipes/tribal.dm +++ b/code/datums/components/crafting/recipes/tribal.dm @@ -61,7 +61,7 @@ /datum/crafting_recipe/bonespear name = "Bone Spear" - result = /obj/item/spear/bonespear + result = /obj/item/melee/spear/bonespear time = 30 reqs = list(/obj/item/stack/sheet/bone = 4, /obj/item/stack/sheet/sinew = 1) @@ -87,21 +87,21 @@ /datum/crafting_recipe/headpike name = "Spike Head (Glass Spear)" time = 65 - reqs = list(/obj/item/spear = 1, + reqs = list(/obj/item/melee/spear = 1, /obj/item/bodypart/head = 1) parts = list(/obj/item/bodypart/head = 1, - /obj/item/spear = 1) - blacklist = list(/obj/item/spear/explosive, /obj/item/spear/bonespear) + /obj/item/melee/spear = 1) + blacklist = list(/obj/item/melee/spear/explosive, /obj/item/melee/spear/bonespear) result = /obj/structure/headpike category = CAT_PRIMAL /datum/crafting_recipe/headpikebone name = "Spike Head (Bone Spear)" time = 65 - reqs = list(/obj/item/spear/bonespear = 1, + reqs = list(/obj/item/melee/spear/bonespear = 1, /obj/item/bodypart/head = 1) parts = list(/obj/item/bodypart/head = 1, - /obj/item/spear/bonespear = 1) + /obj/item/melee/spear/bonespear = 1) result = /obj/structure/headpike/bone category = CAT_PRIMAL diff --git a/code/datums/components/crafting/recipes/weapon.dm b/code/datums/components/crafting/recipes/weapon.dm index 10f63bede5ce..ea0af40f2c6d 100644 --- a/code/datums/components/crafting/recipes/weapon.dm +++ b/code/datums/components/crafting/recipes/weapon.dm @@ -12,11 +12,11 @@ /datum/crafting_recipe/lance name = "Explosive Lance (Grenade)" - result = /obj/item/spear/explosive - reqs = list(/obj/item/spear = 1, + result = /obj/item/melee/spear/explosive + reqs = list(/obj/item/melee/spear = 1, /obj/item/grenade = 1) - blacklist = list(/obj/item/spear/bonespear) - parts = list(/obj/item/spear = 1, + blacklist = list(/obj/item/melee/spear/bonespear) + parts = list(/obj/item/melee/spear = 1, /obj/item/grenade = 1) time = 15 category = CAT_WEAPONRY @@ -211,7 +211,7 @@ /datum/crafting_recipe/spear name = "Spear" - result = /obj/item/spear + result = /obj/item/melee/spear reqs = list(/obj/item/restraints/handcuffs/cable = 1, /obj/item/shard = 1, /obj/item/stack/rods = 1) diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index 04c5c5a672c8..ac554bf6b983 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -1,5 +1,5 @@ //spears -/obj/item/spear +/obj/item/melee/spear icon_state = "spearglass0" icon = 'icons/obj/weapon/spear.dmi' lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' @@ -22,17 +22,17 @@ species_exception = list(/datum/species/kepori) var/icon_prefix = "spearglass" -/obj/item/spear/ComponentInitialize() +/obj/item/melee/spear/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad. AddComponent(/datum/component/jousting) AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1") -/obj/item/spear/update_icon_state() +/obj/item/melee/spear/update_icon_state() icon_state = "[icon_prefix]0" return ..() -/obj/item/spear/CheckParts(list/parts_list) +/obj/item/melee/spear/CheckParts(list/parts_list) var/obj/item/shard/tip = locate() in parts_list if (istype(tip, /obj/item/shard/plasma)) throwforce = 21 @@ -45,7 +45,7 @@ /* * Bone Spear */ -/obj/item/spear/bonespear //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. +/obj/item/melee/spear/bonespear //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. icon_state = "bone_spear0" name = "bone spear" base_icon_state = "bone_spear0" @@ -55,11 +55,11 @@ force = 11 throwforce = 21 -/obj/item/spear/bonespear/ComponentInitialize() +/obj/item/melee/spear/bonespear/ComponentInitialize() . = ..() AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1") -/obj/item/spear/explosive +/obj/item/melee/spear/explosive name = "explosive lance" icon_state = "spearbomb0" base_icon_state = "spearbomb" @@ -68,39 +68,39 @@ var/war_cry = "AAAAARGH!!!" var/wielded = FALSE // track wielded status on item -/obj/item/spear/explosive/Initialize(mapload) +/obj/item/melee/spear/explosive/Initialize(mapload) . = ..() RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) set_explosive(new /obj/item/grenade/iedcasing/spawned()) //For admin-spawned explosive lances -/obj/item/spear/explosive/ComponentInitialize() +/obj/item/melee/spear/explosive/ComponentInitialize() . = ..() AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1") /// triggered on wield of two handed item -/obj/item/spear/explosive/proc/on_wield(obj/item/source, mob/user) +/obj/item/melee/spear/explosive/proc/on_wield(obj/item/source, mob/user) SIGNAL_HANDLER wielded = TRUE /// triggered on unwield of two handed item -/obj/item/spear/explosive/proc/on_unwield(obj/item/source, mob/user) +/obj/item/melee/spear/explosive/proc/on_unwield(obj/item/source, mob/user) SIGNAL_HANDLER wielded = FALSE -/obj/item/spear/explosive/proc/set_explosive(obj/item/grenade/G) +/obj/item/melee/spear/explosive/proc/set_explosive(obj/item/grenade/G) if(explosive) QDEL_NULL(explosive) G.forceMove(src) explosive = G desc = "A makeshift spear with [G] attached to it" -/obj/item/spear/explosive/CheckParts(list/parts_list) +/obj/item/melee/spear/explosive/CheckParts(list/parts_list) var/obj/item/grenade/G = locate() in parts_list if(G) - var/obj/item/spear/lancePart = locate() in parts_list + var/obj/item/melee/spear/lancePart = locate() in parts_list var/datum/component/two_handed/comp_twohand = lancePart.GetComponent(/datum/component/two_handed) if(comp_twohand) var/lance_wielded = comp_twohand.force_wielded @@ -114,11 +114,11 @@ qdel(lancePart) ..() -/obj/item/spear/explosive/examine(mob/user) +/obj/item/melee/spear/explosive/examine(mob/user) . = ..() . += "Alt-click to set your war cry." -/obj/item/spear/explosive/AltClick(mob/user) +/obj/item/melee/spear/explosive/AltClick(mob/user) if(user.canUseTopic(src, BE_CLOSE)) ..() if(istype(user) && loc == user) @@ -126,7 +126,7 @@ if(input) src.war_cry = input -/obj/item/spear/explosive/afterattack(atom/movable/AM, mob/user, proximity) +/obj/item/melee/spear/explosive/afterattack(atom/movable/AM, mob/user, proximity) . = ..() if(!proximity) return diff --git a/code/game/objects/items/melee/weaponry.dm b/code/game/objects/items/melee/weaponry.dm index 8f09ad7e07c0..41e7ec930b66 100644 --- a/code/game/objects/items/melee/weaponry.dm +++ b/code/game/objects/items/melee/weaponry.dm @@ -15,7 +15,7 @@ /obj/item/wirerod/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/shard)) - var/obj/item/spear/S = new /obj/item/spear + var/obj/item/melee/spear/S = new /obj/item/melee/spear remove_item_from_storage(user) if (!user.transferItemToLoc(I, S)) diff --git a/code/game/objects/structures/headpike.dm b/code/game/objects/structures/headpike.dm index c42983a5e0e5..2acaf8b540b8 100644 --- a/code/game/objects/structures/headpike.dm +++ b/code/game/objects/structures/headpike.dm @@ -6,7 +6,7 @@ density = FALSE anchored = TRUE var/bonespear = FALSE - var/obj/item/spear/spear + var/obj/item/melee/spear/spear var/obj/item/bodypart/head/victim /obj/structure/headpike/bone //for bone spears @@ -24,9 +24,9 @@ victim = new(src) victim.real_name = random_unique_name(prob(50)) - spear = locate(bonespear ? /obj/item/spear/bonespear : /obj/item/spear) in parts_list + spear = locate(bonespear ? /obj/item/melee/spear/bonespear : /obj/item/melee/spear) in parts_list if(!spear) - spear = bonespear ? new/obj/item/spear/bonespear(src) : new/obj/item/spear(src) + spear = bonespear ? new/obj/item/melee/spear/bonespear(src) : new/obj/item/melee/spear(src) update_appearance() return ..() diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 02f59e588fff..ae651cf055e6 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -260,7 +260,7 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE) - H.equip_to_slot_or_del(new /obj/item/spear(H), ITEM_SLOT_BACK) + H.equip_to_slot_or_del(new /obj/item/melee/spear(H), ITEM_SLOT_BACK) /obj/item/voodoo diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 018f2cf7ea00..0be387320f47 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -531,7 +531,7 @@ loot = list(/obj/item/stack/sheet/mineral/snow{amount = 25} = 10, /obj/item/toy/snowball = 15, /obj/item/shovel = 10, - /obj/item/spear = 8, + /obj/item/melee/spear = 8, ) //special items//-- diff --git a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm index dea11a4c36d3..acaa8f93e4df 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm @@ -27,7 +27,7 @@ /datum/blackmarket_item/weapon/bone_spear name = "Bone Spear" desc = "Authentic tribal spear, made from real bones! A steal at any price, especially if you're a caveman." - item = /obj/item/spear/bonespear + item = /obj/item/melee/spear/bonespear price_min = 200 price_max = 300 diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index 01916354caa7..37507132a865 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -35,7 +35,7 @@ description = "CentCom's security forces are going through budget cuts. You will be paid if you ship a set of spears." reward = 2000 required_count = 5 - wanted_types = list(/obj/item/spear) + wanted_types = list(/obj/item/melee/spear) /datum/bounty/item/assistant/toolbox name = "Toolboxes" diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 171678df04a5..757838cb8aad 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -393,7 +393,7 @@ Contains: armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 10, "fire" = 100, "acid" = 100) max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/melee/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw) /obj/item/clothing/suit/space/hardsuit/berserker/Initialize() diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 136aeeddfc66..2b85fbd8770c 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -71,7 +71,7 @@ name = "goliath cloak" icon_state = "goliath_cloak" desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits." - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/melee/knife/bone, /obj/item/melee/knife/survival) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/melee/spear, /obj/item/organ/regenerative_core/legion, /obj/item/melee/knife/bone, /obj/item/melee/knife/survival) armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 35, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath body_parts_covered = CHEST|GROIN|ARMS @@ -89,7 +89,7 @@ name = "drake armour" icon_state = "dragon" desc = "A suit of armour fashioned from the remains of an ash drake." - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/spear) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/melee/spear) armor = list("melee" = 50, "bullet" = 10, "laser" = 40, "energy" = 50, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100) hoodtype = /obj/item/clothing/head/hooded/cloakhood/drake heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index d5b86b5762f7..3ccc5aa657d2 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -824,7 +824,7 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE) - H.equip_to_slot_or_del(new /obj/item/spear(H), ITEM_SLOT_BACK) + H.equip_to_slot_or_del(new /obj/item/melee/spear(H), ITEM_SLOT_BACK) //ice cube /obj/item/freeze_cube diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index c748d4e770ff..e8c479f3ce5e 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -657,7 +657,7 @@ gloves = /obj/item/clothing/gloves/bracer if(prob(45)) back = pickweight(list( - /obj/item/spear/bonespear = 3, + /obj/item/melee/spear/bonespear = 3, /obj/item/melee/axe/bone = 2 ) ) @@ -789,7 +789,7 @@ gloves = /obj/item/clothing/gloves/bracer if(prob(5)) back = pickweight(list( - /obj/item/spear/bonespear = 3, + /obj/item/melee/spear/bonespear = 3, /obj/item/melee/axe/bone = 2 ) ) diff --git a/code/modules/mob/living/simple_animal/hostile/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/skeleton.dm index 2245ee823c29..099b89b7a7d9 100644 --- a/code/modules/mob/living/simple_animal/hostile/skeleton.dm +++ b/code/modules/mob/living/simple_animal/hostile/skeleton.dm @@ -49,7 +49,7 @@ melee_damage_upper = 20 deathmessage = "collapses into a pile of bones, its gear falling to the floor!" loot = list(/obj/effect/decal/remains/human, - /obj/item/spear, + /obj/item/melee/spear, /obj/item/clothing/shoes/winterboots, /obj/item/clothing/suit/hooded/wintercoat) From 5902a544771b4772c5667afb6d41a41c20c4eea5 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Fri, 13 Sep 2024 11:37:20 -0500 Subject: [PATCH 046/102] regex and banishing tribal.dm once more --- .../components/crafting/recipes/tribal.dm | 222 ------------------ code/game/objects/items/miscellaneous.dm | 2 +- code/modules/cargo/exports/lavaland.dm | 1 - tools/UpdatePaths/Scripts/2890_melee.txt | 3 - tools/UpdatePaths/Scripts/2932_melee.txt | 11 + 5 files changed, 12 insertions(+), 227 deletions(-) delete mode 100644 code/datums/components/crafting/recipes/tribal.dm delete mode 100644 tools/UpdatePaths/Scripts/2890_melee.txt create mode 100644 tools/UpdatePaths/Scripts/2932_melee.txt diff --git a/code/datums/components/crafting/recipes/tribal.dm b/code/datums/components/crafting/recipes/tribal.dm deleted file mode 100644 index e2691f482aa9..000000000000 --- a/code/datums/components/crafting/recipes/tribal.dm +++ /dev/null @@ -1,222 +0,0 @@ -/datum/crafting_recipe/bonetalisman - name = "Bone Talisman" - result = /obj/item/clothing/accessory/talisman - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonenecklace - name = "Hunter's Necklace" - result = /obj/item/clothing/accessory/wolftalisman - time = 35 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/sinew = 3, - /obj/item/crusher_trophy/wolf_ear = 2, - /obj/item/crusher_trophy/fang = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonecodpiece - name = "Skull Codpiece" - result = /obj/item/clothing/accessory/skullcodpiece - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/crusher_trophy/legion_skull = 1, - /obj/item/stack/sheet/animalhide/goliath_hide = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/skilt - name = "Sinew Kilt" - result = /obj/item/clothing/accessory/skilt - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 1, - /obj/item/stack/sheet/sinew = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/bracers - name = "Bone Bracers" - result = /obj/item/clothing/gloves/bracer - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/goliathcloak - name = "Goliath Cloak" - result = /obj/item/clothing/suit/hooded/cloak/goliath - time = 50 - reqs = list(/obj/item/stack/sheet/leather = 2, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 2) //it takes 4 goliaths to make 1 cloak if the plates are skinned - category = CAT_PRIMAL - -/datum/crafting_recipe/drakecloak - name = "Ash Drake Armour" - result = /obj/item/clothing/suit/hooded/cloak/drake - time = 60 - reqs = list(/obj/item/stack/sheet/bone = 10, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/ashdrake = 5) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonespear - name = "Bone Spear" - result = /obj/item/melee/spear/bonespear - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 4, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/boneaxe - name = "Bone Axe" - result = /obj/item/melee/axe/bone - time = 50 - reqs = list(/obj/item/stack/sheet/bone = 6, - /obj/item/stack/sheet/sinew = 3) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonfire - name = "Bonfire" - time = 60 - reqs = list(/obj/item/grown/log = 5) - parts = list(/obj/item/grown/log = 5) - blacklist = list(/obj/item/grown/log/steel) - result = /obj/structure/bonfire - category = CAT_PRIMAL - -/datum/crafting_recipe/headpike - name = "Spike Head (Glass Spear)" - time = 65 - reqs = list(/obj/item/melee/spear = 1, - /obj/item/bodypart/head = 1) - parts = list(/obj/item/bodypart/head = 1, - /obj/item/melee/spear = 1) - blacklist = list(/obj/item/melee/spear/explosive, /obj/item/melee/spear/bonespear) - result = /obj/structure/headpike - category = CAT_PRIMAL - -/datum/crafting_recipe/headpikebone - name = "Spike Head (Bone Spear)" - time = 65 - reqs = list(/obj/item/melee/spear/bonespear = 1, - /obj/item/bodypart/head = 1) - parts = list(/obj/item/bodypart/head = 1, - /obj/item/melee/spear/bonespear = 1) - result = /obj/structure/headpike/bone - category = CAT_PRIMAL - -/datum/crafting_recipe/lasso - name = "Bone Lasso" - reqs = list( - /obj/item/stack/sheet/bone = 1, - /obj/item/stack/sheet/sinew = 5) - result = /obj/item/key/lasso - category = CAT_PRIMAL - -/datum/crafting_recipe/heavybonearmor - name = "Heavy Bone Armor" - result = /obj/item/clothing/suit/hooded/cloak/bone - time = 60 - reqs = list(/obj/item/stack/sheet/bone = 8, - /obj/item/stack/sheet/sinew = 3) - category = CAT_PRIMAL - -/datum/crafting_recipe/watcherbola - name = "Watcher Bola" - result = /obj/item/restraints/legcuffs/bola/watcher - time = 30 - reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 2, - /obj/item/restraints/handcuffs/cable/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/goliathshield - name = "Goliath shield" - result = /obj/item/shield/riot/goliath - time = 60 - reqs = list(/obj/item/stack/sheet/bone = 4, - /obj/item/stack/sheet/animalhide/goliath_hide = 3) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonesword - name = "Bone Sword" - result = /obj/item/melee/sword/bone - time = 40 - reqs = list(/obj/item/stack/sheet/bone = 3, - /obj/item/stack/sheet/sinew = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/hunterbelt - name = "Hunters Belt" - result = /obj/item/storage/belt/mining/primitive - time = 20 - reqs = list(/obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/quiver - name = "Quiver" - result = /obj/item/storage/bag/quiver/empty - time = 80 - reqs = list(/obj/item/stack/sheet/leather = 3, - /obj/item/stack/sheet/sinew = 4) - category = CAT_PRIMAL - -/datum/crafting_recipe/bone_bow - name = "Bone Bow" - result = /obj/item/gun/ballistic/bow/ashen - time = 200 - reqs = list(/obj/item/stack/sheet/bone = 8, - /obj/item/stack/sheet/sinew = 4) - category = CAT_PRIMAL - -/datum/crafting_recipe/polarbearcloak - name = "Polar Cloak" - result = /obj/item/clothing/suit/hooded/cloak/goliath/polar - time = 50 - reqs = list(/obj/item/stack/sheet/leather = 2, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 2) - blacklist = list(/obj/item/stack/sheet/animalhide/goliath_hide) - category = CAT_PRIMAL - -/datum/crafting_recipe/distiller - name = "Distiller" - result = /obj/structure/fermenting_barrel/distiller - reqs = list(/obj/item/stack/sheet/mineral/wood = 8, /obj/item/stack/sheet/metal = 5, /datum/reagent/srm_bacteria = 30) - time = 50 - category = CAT_PRIMAL - -/datum/crafting_recipe/mushroom_bowl - name = "Mushroom Bowl" - result = /obj/item/reagent_containers/glass/bowl/mushroom_bowl - reqs = list(/obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings = 5) - time = 30 - category = CAT_PRIMAL - -/datum/crafting_recipe/charcoal_stylus - name = "Charcoal Stylus" - result = /obj/item/pen/charcoal - reqs = list(/obj/item/stack/sheet/mineral/wood = 1, /datum/reagent/ash = 30) - time = 30 - category = CAT_PRIMAL - -/datum/crafting_recipe/mushroom_mortar - name = "Mushroom Mortar" - result = /obj/item/reagent_containers/glass/mortar/mushroom - reqs = list(/obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings = 5) - time = 30 - category = CAT_PRIMAL - -/datum/crafting_recipe/oar - name = "Goliath Bone Oar" - result = /obj/item/oar - reqs = list(/obj/item/stack/sheet/bone = 2) - time = 15 - category = CAT_PRIMAL - -/datum/crafting_recipe/boat - name = "Goliath Hide Boat" - result = /obj/vehicle/ridden/lavaboat - reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 3) - time = 50 - category = CAT_PRIMAL diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 1e71174e33fe..f32230a732ba 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -502,7 +502,7 @@ /obj/item/cane name = "cane" - desc = "A cane used by a true gentleman. Or a clown." + desc = "A cane used by a true gentleman." icon = 'icons/obj/items.dmi' icon_state = "cane" item_state = "stick" diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm index c58618ef5b15..3ca8ec9ece05 100644 --- a/code/modules/cargo/exports/lavaland.dm +++ b/code/modules/cargo/exports/lavaland.dm @@ -20,7 +20,6 @@ /obj/item/lava_staff, /obj/item/ship_in_a_bottle, /obj/item/clothing/shoes/clown_shoes/banana_shoes, - /obj/item/kitchen/knife/envy, /obj/item/veilrender/vealrender, /obj/item/clothing/suit/armor/ascetic) diff --git a/tools/UpdatePaths/Scripts/2890_melee.txt b/tools/UpdatePaths/Scripts/2890_melee.txt deleted file mode 100644 index 6b2b0276dcbe..000000000000 --- a/tools/UpdatePaths/Scripts/2890_melee.txt +++ /dev/null @@ -1,3 +0,0 @@ -/obj/item/kitchen/knife : /obj/item/melee/knife/kitchen -/obj/item/kitchen/knife/combat : /obj/item/melee/knife/combat -/obj/item/kitchen/knife/combat/survival : /obj/item/melee/knife/survival diff --git a/tools/UpdatePaths/Scripts/2932_melee.txt b/tools/UpdatePaths/Scripts/2932_melee.txt new file mode 100644 index 000000000000..1b35fd9d08e7 --- /dev/null +++ b/tools/UpdatePaths/Scripts/2932_melee.txt @@ -0,0 +1,11 @@ +/obj/item/kitchen/knife : /obj/item/melee/knife/kitchen +/obj/item/kitchen/knife/plastic : /obj/item/melee/knife/plastic +/obj/item/kitchen/knife/letter_opener : /obj/item/melee/knife/letter_opener +/obj/item/kitchen/knife/combat : /obj/item/melee/knife/combat +/obj/item/kitchen/knife/combat/bone : /obj/item/melee/knife/bone +/obj/item/kitchen/knife/combat/survival : /obj/item/melee/knife/survival +/obj/item/kitchen/knife/switchblade : /obj/item/melee/knife/switchblade + +/obj/item/spear : /obj/item/melee/spear +/obj/item/spear/bonespear : /obj/item/melee/spear/bone +/obj/item/melee/spear/bonespear : /obj/item/melee/spear/bone From 34f272d46864f0143653154696de2fb0bea47ec6 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Fri, 13 Sep 2024 11:44:38 -0500 Subject: [PATCH 047/102] regex --- .../BeachRuins/beach_ancient_ruin.dmm | 1 + .../icemoon_underground_brazillianlab.dmm | 16 +------ .../lavaland_abandonedlisteningpost.dmm | 2 +- .../LavaRuins/lavaland_crashed_starwalker.dmm | 2 +- .../lavaland_surface_biodome_winter.dmm | 2 +- .../lavaland_surface_buried_shrine.dmm | 4 +- .../lavaland_surface_lava_canyon.dmm | 5 ++- .../lavaland_surface_wrecked_factory.dmm | 8 ++-- _maps/RandomRuins/ReebeRuins/reebe_arena.dmm | 45 ++++++++----------- .../ReebeRuins/reebe_decayed_sm.dmm | 37 +++++++-------- .../RockRuins/rockplanet_budgetcuts.dmm | 1 + .../WasteRuins/wasteplanet_pandora.dmm | 6 +-- _maps/map_files/generic/CentCom.dmm | 22 +-------- .../independent/independent_dwayne.dmm | 2 +- .../shuttles/independent/independent_kilo.dmm | 2 +- .../independent/independent_sunskipper.dmm | 2 +- _maps/shuttles/inteq/inteq_valor.dmm | 4 +- .../shuttles/nanotrasen/nanotrasen_heron.dmm | 2 +- .../shuttles/nanotrasen/nanotrasen_ranger.dmm | 2 +- _maps/shuttles/pirate/pirate_tortuga.dmm | 12 ++--- _maps/shuttles/roumain/srm_elder.dmm | 8 ++-- _maps/shuttles/solgov/solgov_inkwell.dmm | 2 +- .../syndicate/syndicate_twinkleshine.dmm | 6 +-- tools/UpdatePaths/Scripts/2932_melee.txt | 24 +++++----- 24 files changed, 92 insertions(+), 125 deletions(-) diff --git a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm index cfe522aeb415..6d0ac796457d 100644 --- a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm @@ -374,6 +374,7 @@ }, /obj/item/gun/energy/lasercannon{ pixel_y = 5; + }, /obj/item/gun/energy/lasercannon, /obj/effect/turf_decal/industrial/hatch, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm index 02fc4b41135c..d560e98b2f20 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm @@ -367,12 +367,6 @@ initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/unpowered) -"sf" = ( -/obj/structure/table/wood, -/turf/open/floor/wood{ - initial_gas_mix = "ICEMOON_ATMOS" - }, -/area/ruin/unpowered) "si" = ( /obj/structure/flora/rock/jungle, /obj/structure/flora/grass/jungle/b, @@ -1237,12 +1231,6 @@ }, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/ruin/unpowered) -"Zs" = ( -/obj/structure/table/wood, -/turf/open/floor/wood{ - initial_gas_mix = "ICEMOON_ATMOS" - }, -/area/ruin/unpowered) (1,1,1) = {" aW @@ -2240,7 +2228,7 @@ Hb aW WH jy -Zs +ib WH WH WH @@ -2272,7 +2260,7 @@ Hb aW Br ib -sf +ib WH WH fB diff --git a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm index 444f4ec52509..483580cf70dd 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm @@ -1324,7 +1324,7 @@ /obj/item/cutting_board{ anchored = 1 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/effect/turf_decal/siding/thinplating/dark, /turf/open/floor/plasteel/patterned/cargo_one, /area/ruin/unpowered/listening_post/canteen) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm index 935a852fac76..f9be78af5b89 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm @@ -637,7 +637,7 @@ /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/east, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_x = 7; pixel_y = 10 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm index 739e427fc008..a53bebe1ff01 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm @@ -1072,7 +1072,7 @@ "qj" = ( /obj/effect/turf_decal/corner/opaque/solgovblue/diagonal, /obj/structure/table/wood, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /turf/open/floor/plasteel/white, /area/ruin/unpowered/winter_biodome/living_quarters) "qr" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm index 9937cbeb46bb..17094a2d2bff 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm @@ -1807,7 +1807,7 @@ /area/ruin/unpowered/buried_shrine) "UF" = ( /obj/structure/stone_tile/block, -/obj/item/claymore/bone{ +/obj/item/melee/sword/bone{ pixel_x = 8; pixel_y = 21 }, @@ -1823,7 +1823,7 @@ /area/ruin/unpowered/buried_shrine) "VG" = ( /obj/structure/table/wood, -/obj/item/kitchen/knife/combat/bone, +/obj/item/melee/knife/bone, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/buried_shrine) "Wd" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index 7937424a588d..0c906b0125d8 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -345,7 +345,7 @@ /obj/effect/mob_spawn/human/corpse{ mob_species = /datum/species/lizard/ashwalker }, -/obj/item/melee/spear/bonespear{ +/obj/item/melee/spear/bone{ pixel_x = 10; pixel_y = -2 }, @@ -888,6 +888,7 @@ "zb" = ( /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner{ loot = list(/obj/item/melee/transforming/cleaving_saw,/obj/item/gun/energy/kinetic_accelerator,/obj/item/keycard/gatedrop/lavacanyon); + }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/overmap_encounter/planetoid/cave/explored) @@ -1706,7 +1707,7 @@ pixel_x = -2; pixel_y = 1 }, -/obj/item/melee/spear/bonespear{ +/obj/item/melee/spear/bone{ pixel_x = 8; pixel_y = 14 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm index 2c84843cf776..fcada5b030ec 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm @@ -1098,7 +1098,7 @@ /obj/effect/decal/cleanable/blood{ icon_state = "drip1" }, -/obj/item/spear, +/obj/item/melee/spear, /obj/item/bodypart/l_arm, /turf/open/floor/plasteel/dark, /area/ruin/lavaland/factory/dorms) @@ -2691,8 +2691,8 @@ /turf/open/floor/carpet/blue, /area/ruin/lavaland/factory/manager_office) "zl" = ( -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /obj/structure/closet/crate/secure/gear, /turf/open/floor/plasteel/mono, /area/ruin/lavaland/factory/warehouse) @@ -4302,7 +4302,7 @@ "QM" = ( /obj/structure/table/wood, /obj/item/cutting_board, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /turf/open/floor/wood, /area/ruin/lavaland/factory/adminstrative) "QR" = ( diff --git a/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm b/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm index 1d86274df26a..6e7e5131b640 100644 --- a/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm +++ b/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm @@ -45,9 +45,6 @@ "pm" = ( /turf/open/floor/bronze, /area/ruin/reebe) -"pW" = ( -/turf/open/floor/bronze, -/area/ruin/reebe) "qj" = ( /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/crystal, /obj/structure/fans/tiny/invisible, @@ -224,10 +221,6 @@ "UU" = ( /turf/open/chasm/reebe_void, /area/ruin/reebe) -"VT" = ( -/obj/structure/table/bronze, -/turf/open/floor/bronze, -/area/ruin/reebe) "Xr" = ( /obj/machinery/door/airlock/bronze/seethru{ name = "Summoning Chamber" @@ -2124,7 +2117,7 @@ Cj Cj Fz pm -VT +Ag Ib Cj FD @@ -2183,7 +2176,7 @@ IC IC Cj Cj -VT +Ag Fz pm pm @@ -2248,7 +2241,7 @@ la la pm pm -pW +pm pm xy pm @@ -2502,7 +2495,7 @@ pm pm pm Cj -VT +Ag pm pm pm @@ -2556,7 +2549,7 @@ pm Cj pm pm -pW +pm JC pm JC @@ -2564,7 +2557,7 @@ pm JC pm De -VT +Ag pm pm pm @@ -2812,7 +2805,7 @@ pm JC pm De -VT +Ag pm pm pm @@ -2874,7 +2867,7 @@ pm pm pm Cj -VT +Ag pm pm pm @@ -2993,11 +2986,11 @@ JC pm pm Rc -VT +Ag Cj Ag -VT -VT +Ag +Ag pm pm pm @@ -3050,7 +3043,7 @@ IC IC IC De -VT +Ag pm pm pm @@ -3124,7 +3117,7 @@ pm pm pm pm -VT +Ag Cj pm pm @@ -3175,7 +3168,7 @@ IC IC Cj Cj -VT +Ag hO pm hO @@ -3185,7 +3178,7 @@ pm pm pm pm -VT +Ag Cj Cj pm @@ -3239,14 +3232,14 @@ IC Cj Cj Pn -VT +Ag Pn -VT +Ag Cj -VT +Ag pm pm -VT +Ag Cj Cj pm diff --git a/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm b/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm index 1520a36aa799..e1b0f36f687c 100644 --- a/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm +++ b/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm @@ -56,9 +56,6 @@ "O" = ( /turf/closed/wall/mineral/bronze, /area/ruin/reebe) -"Y" = ( -/turf/open/floor/bronze, -/area/ruin/reebe) "Z" = ( /obj/effect/decal/remains/human, /turf/open/floor/bronze, @@ -77,8 +74,8 @@ a a "} (2,1,1) = {" -Y -Y +d +d C C x @@ -101,19 +98,19 @@ a o "} (4,1,1) = {" -Y +d O e C C O -Y +d O -Y +d E "} (5,1,1) = {" -Y +d B e C @@ -121,23 +118,23 @@ M v Z v -Y +d a "} (6,1,1) = {" -Y +d O C e e O -Y +d O -Y +d a "} (7,1,1) = {" -Y +d C y C @@ -153,19 +150,19 @@ E C C C -Y -Y -Y +d +d +d E a a "} (9,1,1) = {" -Y -Y +d +d E E -Y +d E a a diff --git a/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm b/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm index b837eff979f7..794618753c64 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm @@ -2746,6 +2746,7 @@ "WY" = ( /obj/structure/frame/computer{ dir = 1; + }, /obj/effect/turf_decal/corner/opaque/red/diagonal, /turf/open/floor/plasteel/tech/techmaint, diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index f3065dc2104a..934b648c0bd6 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -423,7 +423,7 @@ /area/ruin/wasteplanet) "qo" = ( /obj/structure/closet/cabinet, -/obj/item/melee/spear/bonespear, +/obj/item/melee/spear/bone, /obj/item/clothing/suit/armor/witchhunter, /obj/item/reagent_containers/food/snacks/grown/berries/death, /turf/open/floor/wood/waste, @@ -578,7 +578,7 @@ /area/ruin/wasteplanet) "xk" = ( /obj/structure/table/wood, -/obj/item/melee/spear/bonespear, +/obj/item/melee/spear/bone, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) "xu" = ( @@ -1233,7 +1233,7 @@ /area/ruin/wasteplanet) "RT" = ( /obj/structure/table/wood, -/obj/item/melee/spear/bonespear, +/obj/item/melee/spear/bone, /obj/item/stack/sheet/sinew, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 30122f3c674c..87de6206efa7 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -5283,15 +5283,6 @@ /obj/item/reagent_containers/glass/beaker, /turf/open/floor/plasteel, /area/centcom/holding) -"aUh" = ( -/obj/machinery/light/directional/east, -/obj/structure/rack, -/obj/item/melee/sword/claymore{ - damtype = "stamina"; - force = 30 - }, -/turf/open/floor/wood, -/area/centcom/holding) "aUj" = ( /obj/item/coin/antagtoken, /obj/effect/turf_decal/industrial/outline/yellow, @@ -5962,15 +5953,6 @@ /obj/effect/turf_decal/industrial/outline/yellow, /turf/open/floor/plasteel, /area/centcom/control) -"aYV" = ( -/obj/machinery/light/directional/west, -/obj/structure/rack, -/obj/item/melee/sword/claymore{ - damtype = "stamina"; - force = 30 - }, -/turf/open/floor/wood, -/area/centcom/holding) "aYW" = ( /obj/effect/landmark/thunderdome/one, /obj/effect/turf_decal/industrial/warning{ @@ -43309,7 +43291,7 @@ aCT aCT aNT avt -aYV +aRS aOU aOU aRS @@ -45882,7 +45864,7 @@ avt aMx aQg aTb -aUh +aMx atW aWO aaa diff --git a/_maps/shuttles/independent/independent_dwayne.dmm b/_maps/shuttles/independent/independent_dwayne.dmm index 533709f94692..a0383e507ec1 100644 --- a/_maps/shuttles/independent/independent_dwayne.dmm +++ b/_maps/shuttles/independent/independent_dwayne.dmm @@ -1477,7 +1477,7 @@ /obj/item/cutting_board{ anchored = 1 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable/cyan{ icon_state = "0-5" diff --git a/_maps/shuttles/independent/independent_kilo.dmm b/_maps/shuttles/independent/independent_kilo.dmm index 8e307abc2825..ec09dda3fb88 100644 --- a/_maps/shuttles/independent/independent_kilo.dmm +++ b/_maps/shuttles/independent/independent_kilo.dmm @@ -1832,7 +1832,7 @@ /obj/item/cutting_board{ anchored = 1 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /turf/open/floor/plasteel/white, /area/ship/crew) "Ti" = ( diff --git a/_maps/shuttles/independent/independent_sunskipper.dmm b/_maps/shuttles/independent/independent_sunskipper.dmm index de92179a11f7..12715cb4b760 100644 --- a/_maps/shuttles/independent/independent_sunskipper.dmm +++ b/_maps/shuttles/independent/independent_sunskipper.dmm @@ -441,7 +441,7 @@ pixel_y = 5; anchored = 1 }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_x = -11; pixel_y = 9 }, diff --git a/_maps/shuttles/inteq/inteq_valor.dmm b/_maps/shuttles/inteq/inteq_valor.dmm index c405c803521a..0c6dd8139f4b 100644 --- a/_maps/shuttles/inteq/inteq_valor.dmm +++ b/_maps/shuttles/inteq/inteq_valor.dmm @@ -500,8 +500,8 @@ /obj/item/megaphone/sec, /obj/item/clothing/suit/armor/vest, /obj/item/clothing/suit/armor/vest, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /obj/machinery/recharger{ pixel_x = -16; pixel_y = 5 diff --git a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm index 0e3993b1d281..d6f8973e2079 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm @@ -6113,7 +6113,7 @@ /obj/item/storage/pill_bottle/aranesp, /obj/item/taperecorder, /obj/item/t_scanner, -/obj/item/kitchen/knife/switchblade, +/obj/item/melee/knife/switchblade, /obj/item/trash/candy, /obj/structure/filingcabinet/double, /obj/item/radio/intercom/directional/south, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm index 00882d9bb52a..fcd049fb153f 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm @@ -1544,7 +1544,7 @@ pixel_y = 9; pixel_x = -12 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 6; pixel_x = 5 }, diff --git a/_maps/shuttles/pirate/pirate_tortuga.dmm b/_maps/shuttles/pirate/pirate_tortuga.dmm index 4bc354b31b5c..fc08d44db510 100644 --- a/_maps/shuttles/pirate/pirate_tortuga.dmm +++ b/_maps/shuttles/pirate/pirate_tortuga.dmm @@ -753,7 +753,7 @@ /obj/structure/closet/crate{ icon_state = "o2crate" }, -/obj/item/spear/explosive, +/obj/item/melee/spear/explosive, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/ship/maintenance) @@ -2375,19 +2375,19 @@ /area/ship/cargo) "FB" = ( /obj/structure/rack, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 8; pixel_x = -9 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 7; pixel_x = 5 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 7; pixel_x = -4 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 7; pixel_x = 1 }, @@ -3403,7 +3403,7 @@ /turf/open/floor/plating, /area/ship/cargo) "RV" = ( -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_x = 8 }, /obj/item/reagent_containers/food/snacks/grown/potato{ diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index c661d4e63ea8..8c28431fbc0b 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -2462,15 +2462,15 @@ /area/ship/roumain) "Eh" = ( /obj/structure/table/wood, -/obj/item/melee/spear/bonespear{ +/obj/item/melee/spear/bone{ pixel_y = -3; pixel_x = 2 }, -/obj/item/melee/spear/bonespear{ +/obj/item/melee/spear/bone{ pixel_y = 1; pixel_x = 2 }, -/obj/item/melee/spear/bonespear{ +/obj/item/melee/spear/bone{ pixel_y = 5; pixel_x = 2 }, @@ -2687,7 +2687,7 @@ pixel_x = -2; pixel_y = 2 }, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /obj/effect/turf_decal/spline/fancy/wood{ dir = 5 }, diff --git a/_maps/shuttles/solgov/solgov_inkwell.dmm b/_maps/shuttles/solgov/solgov_inkwell.dmm index 7d7ff0480e87..6114d8cda8c5 100644 --- a/_maps/shuttles/solgov/solgov_inkwell.dmm +++ b/_maps/shuttles/solgov/solgov_inkwell.dmm @@ -2533,7 +2533,7 @@ /area/ship/crew/canteen) "qE" = ( /obj/structure/table/wood, -/obj/item/kitchen/knife/letter_opener{ +/obj/item/melee/knife/letter_opener{ icon_state = "letter_opener_b"; name = "boxcutter"; pixel_x = -13; diff --git a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm index 5f73d7bf77ab..5c6f3bc390a4 100644 --- a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm +++ b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm @@ -2113,7 +2113,7 @@ /obj/item/clothing/head/soft/black, /obj/item/clothing/glasses/sunglasses, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/mineral/plastitanium, /area/ship/security) "ma" = ( @@ -3321,7 +3321,7 @@ /obj/machinery/light/directional/east, /obj/item/clothing/head/beret/black, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/mineral/plastitanium, /area/ship/security) "sW" = ( @@ -7131,7 +7131,7 @@ /obj/item/clothing/gloves/color/black, /obj/machinery/light/directional/east, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/mineral/plastitanium, /area/ship/security) "Pn" = ( diff --git a/tools/UpdatePaths/Scripts/2932_melee.txt b/tools/UpdatePaths/Scripts/2932_melee.txt index 1b35fd9d08e7..edd017232c0f 100644 --- a/tools/UpdatePaths/Scripts/2932_melee.txt +++ b/tools/UpdatePaths/Scripts/2932_melee.txt @@ -1,11 +1,15 @@ -/obj/item/kitchen/knife : /obj/item/melee/knife/kitchen -/obj/item/kitchen/knife/plastic : /obj/item/melee/knife/plastic -/obj/item/kitchen/knife/letter_opener : /obj/item/melee/knife/letter_opener -/obj/item/kitchen/knife/combat : /obj/item/melee/knife/combat -/obj/item/kitchen/knife/combat/bone : /obj/item/melee/knife/bone -/obj/item/kitchen/knife/combat/survival : /obj/item/melee/knife/survival -/obj/item/kitchen/knife/switchblade : /obj/item/melee/knife/switchblade +/obj/item/kitchen/knife : /obj/item/melee/knife/kitchen {@OLD} +/obj/item/kitchen/knife/plastic : /obj/item/melee/knife/plastic {@OLD} +/obj/item/kitchen/knife/letter_opener : /obj/item/melee/knife/letter_opener {@OLD} +/obj/item/kitchen/knife/combat : /obj/item/melee/knife/combat {@OLD} +/obj/item/kitchen/knife/combat/bone : /obj/item/melee/knife/bone {@OLD} +/obj/item/kitchen/knife/combat/survival : /obj/item/melee/knife/survival {@OLD} +/obj/item/kitchen/knife/switchblade : /obj/item/melee/knife/switchblade {@OLD} -/obj/item/spear : /obj/item/melee/spear -/obj/item/spear/bonespear : /obj/item/melee/spear/bone -/obj/item/melee/spear/bonespear : /obj/item/melee/spear/bone +/obj/item/spear : /obj/item/melee/spear {@OLD} +/obj/item/spear/explosive : /obj/item/melee/spear/explosive {@OLD} +/obj/item/spear/bonespear : /obj/item/melee/spear/bone {@OLD} +/obj/item/melee/spear/bonespear : /obj/item/melee/spear/bone {@OLD} + +/obj/item/claymore : /obj/item/melee/sword/claymore {@OLD} +/obj/item/claymore/bone : /obj/item/melee/sword/bone {@OLD} From d0f04f610030693f8b672d253cf564ae08099d4d Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Fri, 13 Sep 2024 11:47:21 -0500 Subject: [PATCH 048/102] oops! --- code/datums/components/crafting/recipes/weapon.dm | 4 ++-- shiptest.dme | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/code/datums/components/crafting/recipes/weapon.dm b/code/datums/components/crafting/recipes/weapon.dm index 65983b06df23..6b2f986aae4a 100644 --- a/code/datums/components/crafting/recipes/weapon.dm +++ b/code/datums/components/crafting/recipes/weapon.dm @@ -270,7 +270,7 @@ /datum/crafting_recipe/boneaxe name = "Bone Axe" - result = /obj/item/fireaxe/boneaxe + result = /obj/item/melee/axe/bone time = 50 reqs = list(/obj/item/stack/sheet/bone = 6, /obj/item/stack/sheet/sinew = 3) @@ -279,7 +279,7 @@ /datum/crafting_recipe/bonesword name = "Bone Sword" - result = /obj/item/claymore/bone + result = /obj/item/melee/sword/bone time = 40 reqs = list(/obj/item/stack/sheet/bone = 3, /obj/item/stack/sheet/sinew = 2) diff --git a/shiptest.dme b/shiptest.dme index f69bdc94f096..0198eff13d2d 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1222,7 +1222,6 @@ #include "code\game\objects\items\trash.dm" #include "code\game\objects\items\vending_items.dm" #include "code\game\objects\items\wayfinding.dm" -#include "code\game\objects\items\weaponry.dm" #include "code\game\objects\items\attachments\_attachment.dm" #include "code\game\objects\items\attachments\bayonet.dm" #include "code\game\objects\items\attachments\laser_sight.dm" @@ -2143,7 +2142,6 @@ #include "code\modules\events\holiday\vday.dm" #include "code\modules\events\holiday\xmas.dm" #include "code\modules\events\wizard\aid.dm" -#include "code\modules\events\wizard\curseditems.dm" #include "code\modules\events\wizard\departmentrevolt.dm" #include "code\modules\events\wizard\embeddies.dm" #include "code\modules\events\wizard\fakeexplosion.dm" From aa8ce5591984e12a624adbd89759e4f04b8b1634 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Fri, 13 Sep 2024 12:03:29 -0500 Subject: [PATCH 049/102] repath kitcken knives --- code/datums/components/crafting/recipes/misc.dm | 2 +- code/modules/vending/drinnerware.dm | 2 +- tools/UpdatePaths/Scripts/2932_melee.txt | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/datums/components/crafting/recipes/misc.dm b/code/datums/components/crafting/recipes/misc.dm index e76641789157..fd89bd141ea8 100644 --- a/code/datums/components/crafting/recipes/misc.dm +++ b/code/datums/components/crafting/recipes/misc.dm @@ -115,7 +115,7 @@ name = "Improvised Pickaxe" reqs = list( /obj/item/crowbar = 1, - /obj/item/kitchen/knife = 1, + /obj/item/melee/knife/kitchen = 1, /obj/item/stack/tape = 1) result = /obj/item/pickaxe/improvised category = CAT_MISC diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm index 3e51271093ad..f127bc06a9ea 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/drinnerware.dm @@ -15,7 +15,7 @@ /obj/item/reagent_containers/food/condiment/peppermill = 5, /obj/item/clothing/suit/apron/chef = 2, /obj/item/kitchen/rollingpin = 2, - /obj/item/kitchen/knife = 2, + /obj/item/melee/knife/kitchen = 2, /obj/item/kitchen/knife/pizza_cutter = 2, /obj/item/book/granter/crafting_recipe/cooking_sweets_101 = 2, /obj/item/kitchen/knife/butcher = 1) diff --git a/tools/UpdatePaths/Scripts/2932_melee.txt b/tools/UpdatePaths/Scripts/2932_melee.txt index edd017232c0f..60b81ff02b18 100644 --- a/tools/UpdatePaths/Scripts/2932_melee.txt +++ b/tools/UpdatePaths/Scripts/2932_melee.txt @@ -5,6 +5,8 @@ /obj/item/kitchen/knife/combat/bone : /obj/item/melee/knife/bone {@OLD} /obj/item/kitchen/knife/combat/survival : /obj/item/melee/knife/survival {@OLD} /obj/item/kitchen/knife/switchblade : /obj/item/melee/knife/switchblade {@OLD} +/obj/item/kitchen/knife/hunting : obj/item/melee/knife/hunting {@OLD} +/obj/item/kitchen/knife/shiv : obj/item/melee/knife/shiv {@OLD} /obj/item/spear : /obj/item/melee/spear {@OLD} /obj/item/spear/explosive : /obj/item/melee/spear/explosive {@OLD} From 3a561a98e206684cfd6f97fc74cc475f90b2e4e3 Mon Sep 17 00:00:00 2001 From: fallcon Date: Fri, 13 Sep 2024 12:12:28 -0500 Subject: [PATCH 050/102] bunch more repaths from merge --- .../LavaRuins/lavaland_surface_wrecked_factory.dmm | 4 ++-- _maps/shuttles/independent/independent_sunskipper.dmm | 4 ++-- _maps/shuttles/roumain/srm_elder.dmm | 2 +- _maps/shuttles/syndicate/syndicate_panacea.dmm | 2 +- code/datums/components/crafting/recipes/weapon.dm | 4 ++-- code/game/gamemodes/nuclear/nuclear.dm | 2 +- code/game/objects/items/melee/spear.dm | 4 ++-- code/game/objects/items/stacks/sheets/sheet_types.dm | 2 +- code/game/objects/items/storage/uplink_kits.dm | 4 ++-- code/game/objects/structures/headpike.dm | 4 ++-- code/modules/cargo/blackmarket/blackmarket_items/weapons.dm | 4 ++-- code/modules/cargo/packs/costumes_toys.dm | 2 +- code/modules/clothing/outfits/ert/frontiersmen_ert.dm | 6 +++--- code/modules/clothing/outfits/ert/nanotrasen_ert.dm | 2 +- code/modules/clothing/outfits/factions/frontiersmen.dm | 2 +- code/modules/clothing/outfits/factions/independent.dm | 2 +- code/modules/clothing/outfits/factions/nanotrasen.dm | 2 +- code/modules/clothing/outfits/factions/syndicate.dm | 4 ++-- code/modules/mapping/mapping_helpers.dm | 2 +- .../mob/living/simple_animal/hostile/human/frontiersman.dm | 2 +- .../living/simple_animal/hostile/megafauna/cult_templar.dm | 4 ++-- .../simple_animal/hostile/mining_mobs/hivelord_outfits.dm | 4 ++-- code/modules/mod/modules/modules_ninja.dm | 2 +- code/modules/research/designs/autolathe_designs.dm | 2 +- code/modules/vending/drinnerware.dm | 4 ++-- 25 files changed, 38 insertions(+), 38 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm index fcada5b030ec..c4a3a0397508 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm @@ -2982,7 +2982,7 @@ dir = 1 }, /obj/machinery/light/directional/west, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, /obj/item/clothing/suit/hooded/cloak/goliath, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/white, @@ -3828,7 +3828,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/item/kitchen/knife/shiv, +/obj/item/melee/knife/shiv, /turf/open/floor/plasteel/white, /area/ruin/lavaland/factory/adminstrative) "LX" = ( diff --git a/_maps/shuttles/independent/independent_sunskipper.dmm b/_maps/shuttles/independent/independent_sunskipper.dmm index 12715cb4b760..a5fcf740be59 100644 --- a/_maps/shuttles/independent/independent_sunskipper.dmm +++ b/_maps/shuttles/independent/independent_sunskipper.dmm @@ -873,8 +873,8 @@ }, /obj/item/pickaxe, /obj/item/pickaxe, -/obj/item/kitchen/knife/hunting, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, +/obj/item/melee/knife/hunting, /obj/item/clothing/suit/hazardvest, /obj/item/clothing/suit/hazardvest, /obj/item/clothing/head/hardhat/mining, diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index 8c28431fbc0b..0e501c62ed57 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -1533,7 +1533,7 @@ /obj/item/clothing/shoes/cowboy, /obj/item/clothing/shoes/cowboy/black, /obj/item/clothing/shoes/combat, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, /obj/item/gps{ pixel_x = -7 }, diff --git a/_maps/shuttles/syndicate/syndicate_panacea.dmm b/_maps/shuttles/syndicate/syndicate_panacea.dmm index 24334160f64b..71526c69198f 100644 --- a/_maps/shuttles/syndicate/syndicate_panacea.dmm +++ b/_maps/shuttles/syndicate/syndicate_panacea.dmm @@ -7344,7 +7344,7 @@ /obj/item/cutting_board{ pixel_y = 3 }, -/obj/item/kitchen/knife/butcher{ +/obj/item/melee/knife/butcher{ pixel_y = 4; pixel_x = 4 }, diff --git a/code/datums/components/crafting/recipes/weapon.dm b/code/datums/components/crafting/recipes/weapon.dm index 6b2f986aae4a..6783c60c6c6b 100644 --- a/code/datums/components/crafting/recipes/weapon.dm +++ b/code/datums/components/crafting/recipes/weapon.dm @@ -161,7 +161,7 @@ /datum/crafting_recipe/spear name = "Spear" - result = /obj/item/spear + result = /obj/item/melee/spear reqs = list(/obj/item/restraints/handcuffs/cable = 1, /obj/item/shard = 1, /obj/item/stack/rods = 1) @@ -261,7 +261,7 @@ /datum/crafting_recipe/bonespear name = "Bone Spear" - result = /obj/item/spear/bonespear + result = /obj/item/melee/spear/bone time = 30 reqs = list(/obj/item/stack/sheet/bone = 4, /obj/item/stack/sheet/sinew = 1) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 5cc2d30ec218..db73b7b797b9 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -169,7 +169,7 @@ backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\ /obj/item/tank/jetpack/oxygen/harness=1,\ /obj/item/gun/ballistic/automatic/pistol/ringneck=1,\ - /obj/item/kitchen/knife/combat/survival) + /obj/item/melee/knife/survival) /datum/game_mode/nuclear/generate_credit_text() diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index ac554bf6b983..42717117fd8e 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -45,7 +45,7 @@ /* * Bone Spear */ -/obj/item/melee/spear/bonespear //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. +/obj/item/melee/spear/bone //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. icon_state = "bone_spear0" name = "bone spear" base_icon_state = "bone_spear0" @@ -55,7 +55,7 @@ force = 11 throwforce = 21 -/obj/item/melee/spear/bonespear/ComponentInitialize() +/obj/item/melee/spear/bone/ComponentInitialize() . = ..() AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1") diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index f60ec9b6c657..5dde37c0b90d 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -519,7 +519,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ GLOBAL_LIST_INIT(bone_recipes, list( \ new /datum/stack_recipe("mortar", /obj/item/reagent_containers/glass/mortar/bone, 3), \ - new /datum/stack_recipe("bone dagger", /obj/item/kitchen/knife/combat/bone, 2))) + new /datum/stack_recipe("bone dagger", /obj/item/melee/knife/bone, 2))) /obj/item/stack/sheet/bone name = "bones" diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index d9f7cdb66ac2..39e533f2a4a3 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -22,7 +22,7 @@ new /obj/item/multitool/ai_detect(src) // 1 tc new /obj/item/encryptionkey/syndicate(src) // 2 tc new /obj/item/reagent_containers/syringe/mulligan(src) // 4 tc - new /obj/item/kitchen/knife/switchblade(src) //I'll count this as 2 tc + new /obj/item/melee/knife/switchblade(src) //I'll count this as 2 tc new /obj/item/storage/fancy/cigarettes/cigpack_syndicate (src) // 2 tc this shit heals new /obj/item/flashlight/emp(src) // 2 tc new /obj/item/chameleon(src) // 7 tc @@ -184,7 +184,7 @@ if("made_man") new /obj/effect/spawner/lootdrop/mafia_outfit(src) // 0 TC, just an outfit for the new 'don of this family new /obj/item/gun/ballistic/automatic/smg/firestorm/pan(src) // 20 TC, a gun with 50 .45 bullets on a three round burst is kinda outstanding - new /obj/item/kitchen/knife/switchblade(src) // 3 TC? It's nice, but it's really a stealth/oh fuck I'm out of ammo weapon + new /obj/item/melee/knife/switchblade(src) // 3 TC? It's nice, but it's really a stealth/oh fuck I'm out of ammo weapon new /obj/item/reagent_containers/food/drinks/bottle/vodka (src) // 5 TC, free molotov assemblies new /obj/item/reagent_containers/food/drinks/bottle/vodka (src) new /obj/item/reagent_containers/food/drinks/bottle/vodka (src) diff --git a/code/game/objects/structures/headpike.dm b/code/game/objects/structures/headpike.dm index 2acaf8b540b8..5dbaa4a1e7c3 100644 --- a/code/game/objects/structures/headpike.dm +++ b/code/game/objects/structures/headpike.dm @@ -24,9 +24,9 @@ victim = new(src) victim.real_name = random_unique_name(prob(50)) - spear = locate(bonespear ? /obj/item/melee/spear/bonespear : /obj/item/melee/spear) in parts_list + spear = locate(bonespear ? /obj/item/melee/spear/bone : /obj/item/melee/spear) in parts_list if(!spear) - spear = bonespear ? new/obj/item/melee/spear/bonespear(src) : new/obj/item/melee/spear(src) + spear = bonespear ? new/obj/item/melee/spear/bone(src) : new/obj/item/melee/spear(src) update_appearance() return ..() diff --git a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm index aa43a0dde3f5..cd0fcf9fd7a9 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm @@ -15,7 +15,7 @@ /datum/blackmarket_item/weapon/bone_spear name = "Bone Spear" desc = "Authentic tribal spear, made from real bones! A steal at any price, especially if you're a caveman." - item = /obj/item/melee/spear/bonespear + item = /obj/item/melee/spear/bone price_min = 200 price_max = 300 @@ -25,7 +25,7 @@ /datum/blackmarket_item/weapon/switchblade name = "Switchblade" desc = "Extra shrap switchblades for intimidation AND style. Bandages not included if you cut yourself." - item = /obj/item/kitchen/knife/switchblade + item = /obj/item/melee/knife/switchblade price_min = 500 price_max = 700 diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index 01bfcc1dc756..fd3ba6c74863 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -115,7 +115,7 @@ if(prob(30)) //Not all mafioso have mustaches, some people also find this item annoying. new /obj/item/clothing/mask/fakemoustache/italian(C) if(prob(10)) //A little extra sugar every now and then to shake things up. - new /obj/item/kitchen/knife/switchblade(C) + new /obj/item/melee/knife/switchblade(C) /datum/supply_pack/costumes_toys/mech_suits name = "Exosuit Pilot's Suit Crate" diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm index 3541462a157f..1ceeafdc55b1 100644 --- a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm +++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm @@ -123,7 +123,7 @@ /obj/item/gun/energy/e_gun/mini)) if("Melee") r_hand = pickweight(list( - /obj/item/kitchen/knife/combat/survival = 15, + /obj/item/melee/knife/survival = 15, /obj/item/melee/baseball_bat = 10, /obj/item/melee/roastingstick = 2, /obj/item/kitchen/fork = 1, @@ -173,14 +173,14 @@ suit = /obj/item/clothing/suit/armor/frontier suit_store = /obj/item/gun/ballistic/automatic/pistol/deagle - backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/ammo_box/magazine/m50=2, /obj/item/binoculars=1, /obj/item/kitchen/knife/combat/survival) + backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/ammo_box/magazine/m50=2, /obj/item/binoculars=1, /obj/item/melee/knife/survival) /datum/outfit/job/frontiersmen/ert/leader/unnarmed name = "ERT - Frontiersman Officer (Unnarmed)" suit_store = null - backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/binoculars=1, /obj/item/kitchen/knife/combat/survival) + backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/binoculars=1, /obj/item/melee/knife/survival) /datum/outfit/job/frontiersmen/ert/medic name = "ERT - Frontiersman Medic" diff --git a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm index 77e5574dbc4d..1ca40cd640e3 100644 --- a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm +++ b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm @@ -29,7 +29,7 @@ belt = /obj/item/storage/belt/security/full backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\ /obj/item/melee/baton/loaded=1) - l_pocket = /obj/item/kitchen/knife/switchblade + l_pocket = /obj/item/melee/knife/switchblade /datum/outfit/centcom/ert/commander/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) ..() diff --git a/code/modules/clothing/outfits/factions/frontiersmen.dm b/code/modules/clothing/outfits/factions/frontiersmen.dm index ccce6df0dc38..997eec2209d4 100644 --- a/code/modules/clothing/outfits/factions/frontiersmen.dm +++ b/code/modules/clothing/outfits/factions/frontiersmen.dm @@ -184,7 +184,7 @@ accessory = /obj/item/clothing/accessory/armband/med uniform = /obj/item/clothing/under/frontiersmen glasses = /obj/item/clothing/glasses/hud/health - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival suit = /obj/item/clothing/suit/frontiersmen head = /obj/item/clothing/head/frontier belt = /obj/item/storage/belt/medical/webbing/frontiersmen diff --git a/code/modules/clothing/outfits/factions/independent.dm b/code/modules/clothing/outfits/factions/independent.dm index 157e20ec0c31..2b93739fb0f9 100644 --- a/code/modules/clothing/outfits/factions/independent.dm +++ b/code/modules/clothing/outfits/factions/independent.dm @@ -349,7 +349,7 @@ uniform = /obj/item/clothing/under/utility head = /obj/item/clothing/head/soft/black shoes = /obj/item/clothing/shoes/combat - l_pocket = /obj/item/kitchen/knife/combat/survival + l_pocket = /obj/item/melee/knife/survival gloves = /obj/item/clothing/gloves/color/red/insulated implants = list(/obj/item/implant/radio) diff --git a/code/modules/clothing/outfits/factions/nanotrasen.dm b/code/modules/clothing/outfits/factions/nanotrasen.dm index 3333658969a9..e292a6e61d03 100644 --- a/code/modules/clothing/outfits/factions/nanotrasen.dm +++ b/code/modules/clothing/outfits/factions/nanotrasen.dm @@ -316,7 +316,7 @@ backpack_contents = list( /obj/item/flashlight/seclite=1, - /obj/item/kitchen/knife/combat/survival=1, + /obj/item/melee/knife/survival=1, /obj/item/stack/marker_beacon/ten=1, /obj/item/radio/weather_monitor=1, ) diff --git a/code/modules/clothing/outfits/factions/syndicate.dm b/code/modules/clothing/outfits/factions/syndicate.dm index e45966a2fd07..9568dcfee47f 100644 --- a/code/modules/clothing/outfits/factions/syndicate.dm +++ b/code/modules/clothing/outfits/factions/syndicate.dm @@ -711,7 +711,7 @@ head = /obj/item/clothing/head/hardliners suit = /obj/item/clothing/suit/hardliners glasses = /obj/item/clothing/glasses/hud/health - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival back = /obj/item/storage/backpack/duffelbag/syndie/med id = /obj/item/card/id/syndicate_command/crew_id backpack_contents = list(/obj/item/storage/box/survival/syndie=1, /obj/item/storage/firstaid/medical,) @@ -723,7 +723,7 @@ head = /obj/item/clothing/head/ngr/surgical suit = /obj/item/clothing/suit/ngr/smock glasses = /obj/item/clothing/glasses/hud/health - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival back = /obj/item/storage/backpack/duffelbag/syndie/med id = /obj/item/card/id/syndicate_command/crew_id backpack_contents = list(/obj/item/storage/box/survival/syndie=1, /obj/item/storage/firstaid/medical,) diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 2040764eefb9..251cf46e7c5f 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -280,7 +280,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) //cake + knife to cut it! if(length(table)) var/turf/food_turf = get_turf(pick(table)) - new /obj/item/kitchen/knife(food_turf) + new /obj/item/melee/knife/kitchen(food_turf) var/obj/item/food/cake/birthday/iancake = new(food_turf) iancake.desc = "Happy birthday, Ian!" diff --git a/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm b/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm index ba5f75ffb249..d8b4af5344ea 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm @@ -9,7 +9,7 @@ melee_damage_lower = 15 melee_damage_upper = 15 loot = list(/obj/effect/mob_spawn/human/corpse/frontier, - /obj/item/kitchen/knife/combat/survival) + /obj/item/melee/knife/survival) atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) faction = list(FACTION_ANTAG_FRONTIERSMEN) footstep_type = FOOTSTEP_MOB_SHOE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm index 072729ba47b0..c06c78068ce9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm @@ -23,8 +23,8 @@ ranged_cooldown_time = 20 vision_range = 10 damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 0.5, CLONE = 0.5, STAMINA = 0, OXY = 0.5) - loot = list(/obj/item/claymore/cursed, /obj/item/clothing/suit/space/hardsuit/cult/enchanted) - mob_trophy = list(/obj/item/claymore/cursed, /obj/item/clothing/suit/space/hardsuit/cult/enchanted, /obj/item/upgradescroll) + loot = list(/obj/item/melee/sword/claymore, /obj/item/clothing/suit/space/hardsuit/cult/enchanted) + mob_trophy = list(/obj/item/melee/sword/claymore, /obj/item/clothing/suit/space/hardsuit/cult/enchanted, /obj/item/upgradescroll) wander = FALSE del_on_death = TRUE blood_volume = BLOOD_VOLUME_NORMAL diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm index f0c70edc3037..2b1fc84d9536 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm @@ -230,7 +230,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, + /obj/item/melee/knife/survival = 3, /obj/item/flashlight/seclite = 3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -275,7 +275,7 @@ if(prob(75)) back = pick(/obj/item/storage/backpack/industrial, /obj/item/storage/backpack/satchel/eng, /obj/item/storage/backpack/duffelbag/engineering, /obj/item/storage/backpack/messenger/engi) if(prob(10)) - back = /obj/item/fireaxe + back = /obj/item/melee/axe/fire for(var/i = 1 to 3) if(prob(75)) backpack_contents += pickweight(list( diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm index 69da2287eb72..767a229d98f5 100644 --- a/code/modules/mod/modules/modules_ninja.dm +++ b/code/modules/mod/modules/modules_ninja.dm @@ -170,7 +170,7 @@ /// The item linked to the module that will get recalled. var/obj/item/linked_weapon /// The accepted typepath we can link to. - var/accepted_type = /obj/item/energy_katana + var/accepted_type = /obj/item/melee/sword/energy_katana /obj/item/mod/module/weapon_recall/on_suit_activation() ADD_TRAIT(mod.wearer, TRAIT_NOGUNS, MOD_TRAIT) diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 49a971ca662f..5ba7ce1791bd 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -865,7 +865,7 @@ id = "cleaver" build_type = AUTOLATHE materials = list(/datum/material/iron = 18000) - build_path = /obj/item/kitchen/knife/butcher + build_path = /obj/item/melee/knife/butcher category = list("initial", "Dinnerware") /datum/design/spraycan diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm index f127bc06a9ea..18b8fd522aab 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/drinnerware.dm @@ -16,9 +16,9 @@ /obj/item/clothing/suit/apron/chef = 2, /obj/item/kitchen/rollingpin = 2, /obj/item/melee/knife/kitchen = 2, - /obj/item/kitchen/knife/pizza_cutter = 2, + /obj/item/melee/knife/pizza_cutter = 2, /obj/item/book/granter/crafting_recipe/cooking_sweets_101 = 2, - /obj/item/kitchen/knife/butcher = 1) + /obj/item/melee/knife/butcher = 1) refill_canister = /obj/item/vending_refill/dinnerware default_price = 50 extra_price = 250 From efa1cba822b9b22b154b8d7804c335c98338a0d0 Mon Sep 17 00:00:00 2001 From: fallcon Date: Fri, 13 Sep 2024 12:23:16 -0500 Subject: [PATCH 051/102] kitchen not kitcken --- .../BeachRuins/beach_fishing_hut.dmm | 2 +- .../BeachRuins/beach_pirate_crash.dmm | 2 +- .../IceRuins/icemoon_crashed_holemaker.dmm | 2 +- _maps/RandomRuins/SpaceRuins/spacemall.dmm | 4 +- _maps/map_files/generic/CentCom.dmm | 6 +-- _maps/outpost/nanotrasen_asteroid.dmm | 6 +-- .../independent/independent_beluga.dmm | 2 +- .../independent/independent_junker.dmm | 4 +- .../independent/independent_lagoon.dmm | 2 +- .../independent/independent_rigger.dmm | 2 +- .../independent/independent_schmiedeberg.dmm | 2 +- .../independent/independent_shetland.dmm | 2 +- .../shuttles/nanotrasen/nanotrasen_heron.dmm | 2 +- _maps/shuttles/nanotrasen/nanotrasen_meta.dmm | 2 +- .../shuttles/nanotrasen/nanotrasen_osprey.dmm | 2 +- .../nanotrasen/nanotrasen_skipper.dmm | 2 +- _maps/shuttles/solgov/solgov_chronicle.dmm | 2 +- _maps/shuttles/solgov/solgov_inkwell.dmm | 2 +- _maps/shuttles/solgov/solgov_paracelsus.dmm | 2 +- .../syndicate/syndicate_twinkleshine.dmm | 2 +- .../game/objects/effects/spawners/lootdrop.dm | 2 +- code/game/objects/items/melee/knife.dm | 40 ++++++++++++++++++- code/game/objects/items/melee/weaponry.dm | 38 ------------------ code/game/objects/items/storage/belt.dm | 2 +- .../research/designs/autolathe_designs.dm | 2 +- code/modules/surgery/mechanic_steps.dm | 4 +- code/modules/vending/sustenance.dm | 2 +- 27 files changed, 71 insertions(+), 71 deletions(-) diff --git a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm index f83ddc956bc9..ed6c353d26d7 100644 --- a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm @@ -1032,7 +1032,7 @@ "Os" = ( /obj/structure/table/wood/reinforced, /obj/effect/turf_decal/corner/opaque/pink/diagonal, -/obj/item/melee/knife/kitcken{ +/obj/item/melee/knife/kitchen{ pixel_y = 12; pixel_x = 9 }, diff --git a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm index 8895a9fcb8c6..67ac69292603 100644 --- a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm @@ -16,7 +16,7 @@ /area/ruin/beach/piratecrash/storage) "af" = ( /obj/structure/table/wood, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/effect/turf_decal/corner/opaque/black/diagonal, /obj/effect/turf_decal/siding/wood{ dir = 1 diff --git a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm index f47a7a306222..707be4573d13 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm @@ -887,7 +887,7 @@ /area/ruin/unpowered/crashed_holemaker) "oC" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /turf/open/floor/wood{ icon_state = "wood-broken7" }, diff --git a/_maps/RandomRuins/SpaceRuins/spacemall.dmm b/_maps/RandomRuins/SpaceRuins/spacemall.dmm index af4a5debe037..251b40fb4443 100644 --- a/_maps/RandomRuins/SpaceRuins/spacemall.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacemall.dmm @@ -1106,7 +1106,7 @@ "el" = ( /obj/structure/table/glass, /obj/item/toy/plush/lizardplushie, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /turf/open/floor/light, /area/ruin/space/has_grav/spacemall/shop2) "eo" = ( @@ -2138,7 +2138,7 @@ /area/ruin/space/has_grav/spacemall) "ip" = ( /obj/effect/turf_decal/corner/transparent/black/diagonal, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/structure/table, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/spacemall/dorms) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 87de6206efa7..b494bec55055 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2467,7 +2467,7 @@ /turf/open/floor/plasteel, /area/wizard_station) "azO" = ( -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /turf/open/floor/plasteel, /area/wizard_station) "azP" = ( @@ -10963,7 +10963,7 @@ /obj/item/reagent_containers/food/condiment/peppermill{ pixel_x = -8 }, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 }, @@ -15491,7 +15491,7 @@ pixel_x = 7; pixel_y = -2 }, -/obj/item/melee/knife/kitcken{ +/obj/item/melee/knife/kitchen{ pixel_y = -5; pixel_x = -5 }, diff --git a/_maps/outpost/nanotrasen_asteroid.dmm b/_maps/outpost/nanotrasen_asteroid.dmm index c36b1c642ca2..cc6986e98b8d 100644 --- a/_maps/outpost/nanotrasen_asteroid.dmm +++ b/_maps/outpost/nanotrasen_asteroid.dmm @@ -1774,7 +1774,7 @@ /area/outpost/crew/cryo) "gF" = ( /obj/structure/table/reinforced, -/obj/item/melee/knife/kitcken{ +/obj/item/melee/knife/kitchen{ pixel_y = 6; pixel_x = 9 }, @@ -11369,7 +11369,7 @@ "NP" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/table/reinforced, -/obj/item/melee/knife/kitcken{ +/obj/item/melee/knife/kitchen{ pixel_x = -6; pixel_y = 2 }, @@ -13063,7 +13063,7 @@ pixel_x = -4; pixel_y = 6 }, -/obj/item/melee/knife/kitcken{ +/obj/item/melee/knife/kitchen{ pixel_y = 6; pixel_x = 9 }, diff --git a/_maps/shuttles/independent/independent_beluga.dmm b/_maps/shuttles/independent/independent_beluga.dmm index 002185fd5c8b..6158b206d67c 100644 --- a/_maps/shuttles/independent/independent_beluga.dmm +++ b/_maps/shuttles/independent/independent_beluga.dmm @@ -2742,7 +2742,7 @@ pixel_y = 1 }, /obj/structure/table, -/obj/item/melee/knife/kitcken{ +/obj/item/melee/knife/kitchen{ pixel_x = 11; pixel_y = 7 }, diff --git a/_maps/shuttles/independent/independent_junker.dmm b/_maps/shuttles/independent/independent_junker.dmm index 6b088501f343..7819d04ec1c2 100644 --- a/_maps/shuttles/independent/independent_junker.dmm +++ b/_maps/shuttles/independent/independent_junker.dmm @@ -91,7 +91,7 @@ pixel_x = 4; pixel_y = 9 }, -/obj/item/melee/knife/kitcken{ +/obj/item/melee/knife/kitchen{ pixel_y = -3; pixel_x = 10 }, @@ -1790,7 +1790,7 @@ /obj/structure/cable{ icon_state = "5-10" }, -/obj/item/melee/knife/kitcken{ +/obj/item/melee/knife/kitchen{ pixel_y = 1; pixel_x = 8 }, diff --git a/_maps/shuttles/independent/independent_lagoon.dmm b/_maps/shuttles/independent/independent_lagoon.dmm index d22f4d55383b..16f3ad2cbfa1 100644 --- a/_maps/shuttles/independent/independent_lagoon.dmm +++ b/_maps/shuttles/independent/independent_lagoon.dmm @@ -1361,7 +1361,7 @@ "iR" = ( /obj/structure/table/reinforced, /obj/item/storage/bag/tray, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/structure/cable{ icon_state = "2-4" }, diff --git a/_maps/shuttles/independent/independent_rigger.dmm b/_maps/shuttles/independent/independent_rigger.dmm index 838c6bcb2ec9..da493fcdf548 100644 --- a/_maps/shuttles/independent/independent_rigger.dmm +++ b/_maps/shuttles/independent/independent_rigger.dmm @@ -1179,7 +1179,7 @@ "pv" = ( /obj/effect/turf_decal/corner/opaque/yellow/diagonal, /obj/structure/table, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /turf/open/floor/plasteel/white, /area/ship/crew/canteen) "pD" = ( diff --git a/_maps/shuttles/independent/independent_schmiedeberg.dmm b/_maps/shuttles/independent/independent_schmiedeberg.dmm index 0ca9faadbb82..891e3bd2ce9a 100644 --- a/_maps/shuttles/independent/independent_schmiedeberg.dmm +++ b/_maps/shuttles/independent/independent_schmiedeberg.dmm @@ -69,7 +69,7 @@ /obj/structure/table, /obj/item/storage/bag/tray, /obj/item/reagent_containers/food/condiment/enzyme, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/item/reagent_containers/food/condiment/saltshaker{ pixel_x = -5; pixel_y = 10 diff --git a/_maps/shuttles/independent/independent_shetland.dmm b/_maps/shuttles/independent/independent_shetland.dmm index 983f8bc3cce7..acbaed2e83bd 100644 --- a/_maps/shuttles/independent/independent_shetland.dmm +++ b/_maps/shuttles/independent/independent_shetland.dmm @@ -84,7 +84,7 @@ "aR" = ( /obj/effect/turf_decal/corner/opaque/neutral/half, /obj/item/cutting_board, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/structure/table/reinforced, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) diff --git a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm index d6f8973e2079..b469bbaa0984 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm @@ -13021,7 +13021,7 @@ /obj/item/melee/knife/butcher{ pixel_x = 13 }, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/effect/turf_decal/industrial/warning{ dir = 1 }, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm index d89458ed38d8..1ad882aa58b9 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm @@ -2379,7 +2379,7 @@ /obj/structure/table, /obj/item/cutting_board, /obj/item/kitchen/rollingpin, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/effect/turf_decal/corner/opaque/white/diagonal, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm b/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm index 74bd0b4084be..a44e00c41303 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm @@ -7644,7 +7644,7 @@ /area/ship/engineering) "XE" = ( /obj/structure/table/reinforced, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/item/kitchen/rollingpin, /obj/item/reagent_containers/food/condiment/sugar, /obj/item/reagent_containers/food/condiment/rice, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm index 193feb98ff50..e69aa1de47ca 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm @@ -2607,7 +2607,7 @@ dir = 10 }, /obj/structure/table/reinforced, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/item/cutting_board, /obj/effect/turf_decal/corner/opaque/green/mono, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/solgov/solgov_chronicle.dmm b/_maps/shuttles/solgov/solgov_chronicle.dmm index 09cb18efaedc..62d582bc9ea2 100644 --- a/_maps/shuttles/solgov/solgov_chronicle.dmm +++ b/_maps/shuttles/solgov/solgov_chronicle.dmm @@ -4433,7 +4433,7 @@ "RX" = ( /obj/structure/table/wood, /obj/item/cutting_board, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/machinery/newscaster/directional/north, /obj/structure/sink{ layer = 2.79; diff --git a/_maps/shuttles/solgov/solgov_inkwell.dmm b/_maps/shuttles/solgov/solgov_inkwell.dmm index 6114d8cda8c5..71fe5c4e43ce 100644 --- a/_maps/shuttles/solgov/solgov_inkwell.dmm +++ b/_maps/shuttles/solgov/solgov_inkwell.dmm @@ -3297,7 +3297,7 @@ "uS" = ( /obj/structure/table/wood, /obj/item/cutting_board, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/item/reagent_containers/food/condiment/saltshaker{ pixel_x = -17 }, diff --git a/_maps/shuttles/solgov/solgov_paracelsus.dmm b/_maps/shuttles/solgov/solgov_paracelsus.dmm index 0ad36fc4e9fe..ef642488ef50 100644 --- a/_maps/shuttles/solgov/solgov_paracelsus.dmm +++ b/_maps/shuttles/solgov/solgov_paracelsus.dmm @@ -4715,7 +4715,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/structure/table/wood, /obj/item/cutting_board, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/item/kitchen/rollingpin, /turf/open/floor/wood/ebony, /area/ship/crew/canteen) diff --git a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm index 5c6f3bc390a4..9114601966e6 100644 --- a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm +++ b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm @@ -120,7 +120,7 @@ /area/ship/security/armory) "aG" = ( /obj/structure/closet/secure_closet/wall/directional/east, -/obj/item/melee/knife/kitcken, +/obj/item/melee/knife/kitchen, /obj/item/cutting_board, /obj/item/clothing/under/suit/waiter/syndicate, /obj/item/clothing/suit/hazardvest/donk, diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 05d3fc0be80d..2caecd950a9f 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -107,7 +107,7 @@ /obj/item/flashlight/seclite = 1, /obj/item/melee/knife/shiv = 4, /obj/item/melee/knife/shiv/carrot = 1, - /obj/item/melee/knife/kitcken = 1, + /obj/item/melee/knife/kitchen = 1, /obj/item/storage/wallet/random = 1, /obj/item/pda = 1 ) diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm index 7513d21df5d2..7f6412f7105c 100644 --- a/code/game/objects/items/melee/knife.dm +++ b/code/game/objects/items/melee/knife.dm @@ -28,7 +28,7 @@ /obj/item/melee/knife/proc/set_butchering() AddComponent(/datum/component/butchering, 80 - force, 100, force - 10) //bonus chance increases depending on force -/obj/item/melee/knife/kitcken +/obj/item/melee/knife/kitchen name = "kitchen knife" desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come." @@ -153,3 +153,41 @@ icon = 'icons/obj/kitchen.dmi' desc = "Unlike other carrots, you should probably keep this far away from your eyes." custom_materials = null + +/obj/item/melee/knife/switchblade + name = "switchblade" + icon_state = "switchblade" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + desc = "A sharp, concealable, spring-loaded knife." + flags_1 = CONDUCT_1 + force = 3 + w_class = WEIGHT_CLASS_SMALL + throwforce = 5 + throw_speed = 3 + throw_range = 6 + custom_materials = list(/datum/material/iron=12000) + hitsound = 'sound/weapons/genhit.ogg' + attack_verb = list("stubbed", "poked") + resistance_flags = FIRE_PROOF + var/extended = 0 + +/obj/item/melee/knife/switchblade/attack_self(mob/user) + extended = !extended + playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) + if(extended) + force = 20 + w_class = WEIGHT_CLASS_NORMAL + throwforce = 23 + icon_state = "switchblade_ext" + attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + hitsound = 'sound/weapons/bladeslice.ogg' + sharpness = IS_SHARP + else + force = 3 + w_class = WEIGHT_CLASS_SMALL + throwforce = 5 + icon_state = "switchblade" + attack_verb = list("stubbed", "poked") + hitsound = 'sound/weapons/genhit.ogg' + sharpness = IS_BLUNT diff --git a/code/game/objects/items/melee/weaponry.dm b/code/game/objects/items/melee/weaponry.dm index 41e7ec930b66..11c1b118570b 100644 --- a/code/game/objects/items/melee/weaponry.dm +++ b/code/game/objects/items/melee/weaponry.dm @@ -83,44 +83,6 @@ attack_verb = list("stabbed", "ripped", "gored", "impaled") embedding = list("pain_mult" = 8, "embed_chance" = 100, "fall_chance" = 0, "impact_pain_mult" = 15) //55 damage+embed on hit -/obj/item/switchblade - name = "switchblade" - icon_state = "switchblade" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - desc = "A sharp, concealable, spring-loaded knife." - flags_1 = CONDUCT_1 - force = 3 - w_class = WEIGHT_CLASS_SMALL - throwforce = 5 - throw_speed = 3 - throw_range = 6 - custom_materials = list(/datum/material/iron=12000) - hitsound = 'sound/weapons/genhit.ogg' - attack_verb = list("stubbed", "poked") - resistance_flags = FIRE_PROOF - var/extended = 0 - -/obj/item/switchblade/attack_self(mob/user) - extended = !extended - playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) - if(extended) - force = 20 - w_class = WEIGHT_CLASS_NORMAL - throwforce = 23 - icon_state = "switchblade_ext" - attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - else - force = 3 - w_class = WEIGHT_CLASS_SMALL - throwforce = 5 - icon_state = "switchblade" - attack_verb = list("stubbed", "poked") - hitsound = 'sound/weapons/genhit.ogg' - sharpness = IS_BLUNT - /obj/item/mounted_chainsaw name = "mounted chainsaw" desc = "A chainsaw that has replaced your arm." diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 46906b3f6cc6..c2679adf8ae9 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -367,7 +367,7 @@ /obj/item/storage/fancy/cigarettes, /obj/item/reagent_containers/food/drinks/bottle, /obj/item/stack/medical, - /obj/item/melee/knife/kitcken, + /obj/item/melee/knife/kitchen, /obj/item/reagent_containers/hypospray, /obj/item/gps, /obj/item/storage/bag/ore, diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 5ba7ce1791bd..d1fe33024919 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -356,7 +356,7 @@ id = "kitchen_knife" build_type = AUTOLATHE materials = list(/datum/material/iron = 12000) - build_path = /obj/item/melee/knife/kitcken + build_path = /obj/item/melee/knife/kitchen category = list("initial","Dinnerware") /datum/design/plastic_knife diff --git a/code/modules/surgery/mechanic_steps.dm b/code/modules/surgery/mechanic_steps.dm index 6dbca32d29af..694081f7af78 100644 --- a/code/modules/surgery/mechanic_steps.dm +++ b/code/modules/surgery/mechanic_steps.dm @@ -4,7 +4,7 @@ implements = list( TOOL_SCREWDRIVER = 100, TOOL_SCALPEL = 75, // med borgs could try to unscrew shell with scalpel - /obj/item/melee/knife/kitcken = 50, + /obj/item/melee/knife/kitchen = 50, /obj/item = 10) time = 2.4 SECONDS preop_sound = 'sound/items/screwdriver.ogg' @@ -28,7 +28,7 @@ implements = list( TOOL_SCREWDRIVER = 100, TOOL_SCALPEL = 75, - /obj/item/melee/knife/kitcken = 50, + /obj/item/melee/knife/kitchen = 50, /obj/item = 10) time = 2.4 SECONDS preop_sound = 'sound/items/screwdriver.ogg' diff --git a/code/modules/vending/sustenance.dm b/code/modules/vending/sustenance.dm index 7b124b050dfe..02a95555468f 100644 --- a/code/modules/vending/sustenance.dm +++ b/code/modules/vending/sustenance.dm @@ -11,7 +11,7 @@ /obj/item/reagent_containers/food/drinks/ice/prison = 12, /obj/item/reagent_containers/food/snacks/candy_corn/prison = 6) contraband = list( - /obj/item/melee/knife/kitcken = 6, + /obj/item/melee/knife/kitchen = 6, /obj/item/reagent_containers/food/drinks/coffee = 12, /obj/item/tank/internals/emergency_oxygen = 6, /obj/item/clothing/mask/breath = 6) From 8c663609001d19ce6ed21091f8095aa883983e4c Mon Sep 17 00:00:00 2001 From: fallcon Date: Fri, 13 Sep 2024 12:33:33 -0500 Subject: [PATCH 052/102] more repaths --- code/controllers/subsystem/traumas.dm | 2 +- code/modules/clothing/outfits/ert/frontiersmen_ert.dm | 2 +- code/modules/clothing/outfits/factions/syndicate.dm | 2 +- .../modules/mob/living/simple_animal/hostile/human/skeleton.dm | 2 +- .../living/simple_animal/hostile/megafauna/codename_claw.dm | 2 +- .../simple_animal/hostile/mining_mobs/hivelord_outfits.dm | 2 +- code/modules/vending/wardrobes.dm | 3 +-- 7 files changed, 7 insertions(+), 8 deletions(-) diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 56ec928fbe7e..333dee323e87 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -131,7 +131,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/soulstone, /obj/item/clothing/suit/wizrobe, /obj/item/clothing/head/wizard, /obj/item/spellbook, /obj/item/staff, /obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/clothing/suit/space/hardsuit/wizard, - /obj/item/nullrod, /obj/item/clothing/under/rank/civilian/chaplain)), + /obj/item/clothing/under/rank/civilian/chaplain)), "aliens" = typecacheof(list( /obj/item/clothing/mask/facehugger_item, /obj/item/organ/body_egg/alien_embryo, diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm index 1ceeafdc55b1..8401455bf7d8 100644 --- a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm +++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm @@ -125,7 +125,7 @@ r_hand = pickweight(list( /obj/item/melee/knife/survival = 15, /obj/item/melee/baseball_bat = 10, - /obj/item/melee/roastingstick = 2, + /obj/item/roastingstick = 2, /obj/item/kitchen/fork = 1, /obj/item/melee/flyswatter = 1, )) diff --git a/code/modules/clothing/outfits/factions/syndicate.dm b/code/modules/clothing/outfits/factions/syndicate.dm index 9568dcfee47f..1d91a94b766d 100644 --- a/code/modules/clothing/outfits/factions/syndicate.dm +++ b/code/modules/clothing/outfits/factions/syndicate.dm @@ -634,7 +634,7 @@ uniform = /obj/item/clothing/under/syndicate/suns/pkuniform suit = /obj/item/clothing/suit/armor/vest/suns/hos - belt = /obj/item/melee/sabre/suns/telescopic + belt = /obj/item/melee/sword/sabre/suns/telescopic gloves = /obj/item/clothing/gloves/tackler/dolphin/suns shoes = /obj/item/clothing/shoes/combat/suns head = /obj/item/clothing/head/welding/suns/hos diff --git a/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm index b251dda91e48..147c2081f622 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm @@ -49,7 +49,7 @@ loot = list(/obj/effect/decal/remains/human, /obj/item/clothing/suit/armor/witchhunter, /obj/item/clothing/head/witchunter, - /obj/item/claymore/weak{name = "holy sword"}) + /obj/item/melee/sword/claymore{name = "holy sword"}) /mob/living/simple_animal/hostile/human/skeleton/ice name = "ice skeleton" diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm index a762a9298279..d3a50564ca75 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm @@ -58,7 +58,7 @@ speed = 5 move_to_delay = 5 speak_emote = list("verbalizes") - mob_trophy = /obj/item/nullrod/armblade/tentacle + mob_trophy = /obj/item/melee/synthetic_arm_blade loot = list(/obj/effect/spawner/clawloot) health = 2250 maxHealth = 2250 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm index 2b1fc84d9536..1a347db1646b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm @@ -424,7 +424,7 @@ if(prob(75)) accessory = /obj/item/clothing/accessory/armband/cargo if(prob(25)) - suit = /obj/item/clothing/suit/armor/vest/scrap_armor + suit = /obj/item/clothing/suit/armor/vest/scrap suit_store = /obj/item/gun/ballistic/rifle/illestren /datum/outfit/generic/cargo diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index da3fdb134010..4686c12da1ad 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -375,8 +375,7 @@ icon_state = "chapdrobe" product_ads = "Are you being bothered by cultists or pesky revenants? Then come and dress like the holy man!;Clothes for men of the cloth!" vend_reply = "Thank you for using the ChapDrobe!" - products = list(/obj/item/storage/box/holy = 1, - /obj/item/storage/backpack/cultpack = 1, + products = list(/obj/item/storage/backpack/cultpack = 1, /obj/item/clothing/head/beret/service = 1, //WS edit - berets /obj/item/clothing/accessory/pocketprotector/cosmetology = 1, /obj/item/clothing/under/rank/civilian/chaplain = 1, From 7ba778dcd9d2f45c13ecf8d0e6ba4a8e7724ac18 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Fri, 13 Sep 2024 13:39:40 -0500 Subject: [PATCH 053/102] why did regex add new lines wtf --- .../BeachRuins/beach_ancient_ruin.dmm | 1 - .../lavaland_surface_lava_canyon.dmm | 1 - .../RockRuins/rockplanet_budgetcuts.dmm | 1 - code/game/objects/items/melee/knife.dm | 26 ++++++++++-------- icons/obj/{item => weapon}/knife.dmi | Bin 5 files changed, 14 insertions(+), 15 deletions(-) rename icons/obj/{item => weapon}/knife.dmi (100%) diff --git a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm index 6d0ac796457d..cfe522aeb415 100644 --- a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm @@ -374,7 +374,6 @@ }, /obj/item/gun/energy/lasercannon{ pixel_y = 5; - }, /obj/item/gun/energy/lasercannon, /obj/effect/turf_decal/industrial/hatch, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index 0c906b0125d8..a5547c39e8fd 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -888,7 +888,6 @@ "zb" = ( /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner{ loot = list(/obj/item/melee/transforming/cleaving_saw,/obj/item/gun/energy/kinetic_accelerator,/obj/item/keycard/gatedrop/lavacanyon); - }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/overmap_encounter/planetoid/cave/explored) diff --git a/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm b/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm index 794618753c64..b837eff979f7 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm @@ -2746,7 +2746,6 @@ "WY" = ( /obj/structure/frame/computer{ dir = 1; - }, /obj/effect/turf_decal/corner/opaque/red/diagonal, /turf/open/floor/plasteel/tech/techmaint, diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm index 7f6412f7105c..8819df82d3fb 100644 --- a/code/game/objects/items/melee/knife.dm +++ b/code/game/objects/items/melee/knife.dm @@ -1,9 +1,9 @@ /obj/item/melee/knife - icon_state = "knife" - item_state = "knife" - icon = 'icons/obj/kitchen.dmi' - lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' + icon_state = "kitchenknife" + item_state = "kitchenknife" + icon = 'icons/obj/weapon/knife.dmi' + lefthand_file = 'icons/mob/inhands/weapons/knifes_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/knifes_righthand.dmi' pickup_sound = 'sound/items/handling/knife1_pickup.ogg' drop_sound = 'sound/items/handling/knife3_drop.ogg' flags_1 = CONDUCT_1 @@ -18,7 +18,8 @@ sharpness = IS_SHARP_ACCURATE armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) item_flags = EYE_STAB - var/bayonet = FALSE //Can this be attached to a gun? + tool_behaviour = TOOL_KNIFE + /obj/item/melee/knife/ComponentInitialize() . = ..() @@ -30,12 +31,13 @@ /obj/item/melee/knife/kitchen name = "kitchen knife" + icon_state = "kitchenknife" + item_state = "kitchenknife" desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come." /obj/item/melee/knife/plastic name = "plastic knife" icon_state = "plastic_knife" - item_state = "knife" desc = "A very safe, barely sharp knife made of plastic. Good for cutting food and not much else." force = 0 w_class = WEIGHT_CLASS_TINY @@ -74,8 +76,8 @@ /obj/item/melee/knife/butcher name = "butcher's cleaver" - icon_state = "butch" - item_state = "butch" + icon_state = "cleaver" + item_state = "cleaver" desc = "A huge thing used for chopping and chopping up meat." flags_1 = CONDUCT_1 force = 15 @@ -96,23 +98,23 @@ /obj/item/melee/knife/combat name = "combat knife" - icon_state = "buckknife" + icon_state = "combatknife" + item_state = "combatknife" desc = "A military combat utility survival knife." embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) force = 20 throwforce = 20 attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") - bayonet = TRUE /obj/item/melee/knife/survival name = "survival knife" icon_state = "survivalknife" + item_state = "survivalknife" embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) desc = "A hunting grade survival knife." force = 15 throwforce = 15 attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") - bayonet = TRUE /obj/item/melee/knife/bone name = "bone dagger" diff --git a/icons/obj/item/knife.dmi b/icons/obj/weapon/knife.dmi similarity index 100% rename from icons/obj/item/knife.dmi rename to icons/obj/weapon/knife.dmi From 48912932ca160a1ee9f8c437552e7313816b15f0 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Fri, 13 Sep 2024 14:19:16 -0500 Subject: [PATCH 054/102] yea! --- code/game/objects/items/melee/knife.dm | 13 +++++++++++++ code/game/objects/items/melee/misc.dm | 13 ------------- code/modules/mining/equipment/explorer_gear.dm | 1 - 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm index 8819df82d3fb..83022e7125ff 100644 --- a/code/game/objects/items/melee/knife.dm +++ b/code/game/objects/items/melee/knife.dm @@ -193,3 +193,16 @@ attack_verb = list("stubbed", "poked") hitsound = 'sound/weapons/genhit.ogg' sharpness = IS_BLUNT + +/obj/item/melee/knife/letter_opener + name = "letter opener" + icon = 'icons/obj/items.dmi' + icon_state = "letter_opener" + desc = "A military combat utility survival knife." + embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) + force = 15 + throwforce = 15 + unique_reskin = list("Traditional" = "letter_opener", + "Boxcutter" = "letter_opener_b", + "Corporate" = "letter_opener_a" + ) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 20b8934f0582..afb4bfe2ec33 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -90,19 +90,6 @@ overlay.appearance_flags = RESET_COLOR add_overlay(overlay) -/obj/item/melee/knife/letter_opener - name = "letter opener" - icon = 'icons/obj/items.dmi' - icon_state = "letter_opener" - desc = "A military combat utility survival knife." - embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) - force = 15 - throwforce = 15 - unique_reskin = list("Traditional" = "letter_opener", - "Boxcutter" = "letter_opener_b", - "Corporate" = "letter_opener_a" - ) - /obj/item/melee/baseball_bat name = "baseball bat" desc = "There ain't a skull in the league that can withstand a swatter." diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index f5a3c1a870e9..b5e112713a82 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -218,7 +218,6 @@ flags_inv = HIDEHAIR|HIDEEARS armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30) - /obj/item/clothing/suit/armor/vest/scrap name = "scrap armor" desc = "An 'armor' vest consisting of sheet metal held together with cable. Who thought this was a good idea?" From b3a5f7ff839a4ca37104ab1c21f7707304045e9a Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 10:42:35 -0500 Subject: [PATCH 055/102] transforming component, stunbaton span defines, wip items --- .../signals_item/signals_transform.dm | 10 + code/datums/components/transforming.dm | 236 ++++++++++++++++++ code/game/objects/items/melee/bladeatheon.dm | 48 ++++ code/game/objects/items/melee/stunbaton.dm | 52 ++-- 4 files changed, 320 insertions(+), 26 deletions(-) create mode 100644 code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_transform.dm create mode 100644 code/datums/components/transforming.dm create mode 100644 code/game/objects/items/melee/bladeatheon.dm diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_transform.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_transform.dm new file mode 100644 index 000000000000..a70e4c0b1963 --- /dev/null +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_transform.dm @@ -0,0 +1,10 @@ +// /datum/component/transforming signals + +/// From /datum/component/transforming/proc/on_attack_self(obj/item/source, mob/user): (obj/item/source, mob/user, active) +#define COMSIG_TRANSFORMING_PRE_TRANSFORM "transforming_pre_transform" + /// Return COMPONENT_BLOCK_TRANSFORM to prevent the item from transforming. + #define COMPONENT_BLOCK_TRANSFORM (1<<0) +/// From /datum/component/transforming/proc/do_transform(obj/item/source, mob/user): (obj/item/source, mob/user, active) +#define COMSIG_TRANSFORMING_ON_TRANSFORM "transforming_on_transform" + /// Return COMPONENT_NO_DEFAULT_MESSAGE to prevent the transforming component from displaying the default transform message / sound. + #define COMPONENT_NO_DEFAULT_MESSAGE (1<<0) diff --git a/code/datums/components/transforming.dm b/code/datums/components/transforming.dm new file mode 100644 index 000000000000..297cf687d30e --- /dev/null +++ b/code/datums/components/transforming.dm @@ -0,0 +1,236 @@ +/* + * Transforming weapon component. For weapons that swap between states. + * For example: Energy swords, cleaving saws, switch blades. + * + * Used to easily make an item that can be attack_self'd to gain force or change mode. + * + * Only values passed on initialize will update when the item is activated (except the icon_state). + * The icon_state of the item will swap between "[icon_state]" and "[icon_state]_on". + */ +/datum/component/transforming + /// Whether the weapon is transformed + var/active = FALSE + /// Cooldown on transforming this item back and forth + var/transform_cooldown_time + /// Force of the weapon when active + var/force_on + /// Throwforce of the weapon when active + var/throwforce_on + /// Throw speed of the weapon when active + var/throw_speed_on + /// Weight class of the weapon when active + var/w_class_on + /// The sharpness of the weapon when active + var/sharpness_on + /// Hitsound played when active + var/hitsound_on + /// List of the original continuous attack verbs the item has. + var/list/attack_verb_continuous_off + /// List of the original simple attack verbs the item has. + var/list/attack_verb_simple_off + /// List of continuous attack verbs used when the weapon is enabled + var/list/attack_verb_continuous_on + /// List of simple attack verbs used when the weapon is enabled + var/list/attack_verb_simple_on + /// If we get sharpened with a whetstone, save the bonus here for later use if we un/redeploy + var/sharpened_bonus = 0 + /// Dictate whether we change inhands or not + var/inhand_icon_change = TRUE + /// Cooldown in between transforms + COOLDOWN_DECLARE(transform_cooldown) + +/datum/component/transforming/Initialize( + start_transformed = FALSE, + transform_cooldown_time = 0 SECONDS, + force_on = 0, + throwforce_on = 0, + throw_speed_on = 2, + sharpness_on = NONE, + hitsound_on = 'sound/weapons/blade1.ogg', + w_class_on = WEIGHT_CLASS_BULKY, + list/attack_verb_continuous_on, + list/attack_verb_simple_on, + inhand_icon_change = TRUE, +) + + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + var/obj/item/item_parent = parent + + src.transform_cooldown_time = transform_cooldown_time + src.force_on = force_on + src.throwforce_on = throwforce_on + src.throw_speed_on = throw_speed_on + src.sharpness_on = sharpness_on + src.hitsound_on = hitsound_on + src.w_class_on = w_class_on + src.inhand_icon_change = inhand_icon_change + + if(attack_verb_continuous_on) + src.attack_verb_continuous_on = attack_verb_continuous_on + attack_verb_continuous_off = item_parent.attack_verb_continuous + if(attack_verb_simple_on) + src.attack_verb_simple_on = attack_verb_simple_on + attack_verb_simple_off = item_parent.attack_verb_simple + + if(start_transformed) + toggle_active(parent) + +/datum/component/transforming/RegisterWithParent() + var/obj/item/item_parent = parent + + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(on_attack_self)) + if(item_parent.sharpness || sharpness_on) + RegisterSignal(parent, COMSIG_ITEM_SHARPEN_ACT, PROC_REF(on_sharpen)) + + +/datum/component/transforming/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_ITEM_ATTACK_SELF, COMSIG_ITEM_SHARPEN_ACT)) + +/* + * Called on [COMSIG_ITEM_ATTACK_SELF]. + * + * Check if we can transform our weapon, and if so, call [do_transform]. + * Sends signal [COMSIG_TRANSFORMING_PRE_TRANSFORM], and stops the transform action if it returns [COMPONENT_BLOCK_TRANSFORM]. + * + * source - source of the signal, the item being transformed / parent + * user - the mob transforming the weapon + */ +/datum/component/transforming/proc/on_attack_self(obj/item/source, mob/user) + SIGNAL_HANDLER + + if(!COOLDOWN_FINISHED(src, transform_cooldown)) + to_chat(user, span_warning("Wait a bit before trying to use [source] again!")) + return + + if(SEND_SIGNAL(source, COMSIG_TRANSFORMING_PRE_TRANSFORM, user, active) & COMPONENT_BLOCK_TRANSFORM) + return + + if(do_transform(source, user)) + return COMPONENT_CANCEL_ATTACK_CHAIN + +/* + * Transform the weapon into its alternate form, calling [toggle_active]. + * + * Sends signal [COMSIG_TRANSFORMING_ON_TRANSFORM], and calls [default_transform_message] if it does not return [COMPONENT_NO_DEFAULT_MESSAGE]. + * Also starts the [transform_cooldown] if we have a set [transform_cooldown_time]. + * + * source - the item being transformed / parent + * user - the mob transforming the item + * + * returns TRUE. + */ +/datum/component/transforming/proc/do_transform(obj/item/source, mob/user) + toggle_active(source) + if(!(SEND_SIGNAL(source, COMSIG_TRANSFORMING_ON_TRANSFORM, user, active) & COMPONENT_NO_DEFAULT_MESSAGE)) + default_transform_message(source, user) + + if(isnum(transform_cooldown_time)) + COOLDOWN_START(src, transform_cooldown, transform_cooldown_time) + if(user) + source.add_fingerprint(user) + return TRUE + +/* + * The default feedback message and sound effect for an item transforming. + * + * source - the item being transformed / parent + * user - the mob transforming the item + */ +/datum/component/transforming/proc/default_transform_message(obj/item/source, mob/user) + if(user) + source.balloon_alert(user, "[active ? "enabled" : "disabled"] [source]") + playsound(source, 'sound/weapons/batonextend.ogg', 50, TRUE) + +/* + * Toggle active between true and false, and call + * either set_active or set_inactive depending on whichever state is toggled. + * + * source - the item being transformed / parent + */ +/datum/component/transforming/proc/toggle_active(obj/item/source) + active = !active + if(active) + set_active(source) + else + set_inactive(source) + +/* + * Set our transformed item into its active state. + * Updates all the values that were passed from init and the icon_state. + * + * source - the item being transformed / parent + */ +/datum/component/transforming/proc/set_active(obj/item/source) + ADD_TRAIT(source, TRAIT_TRANSFORM_ACTIVE, REF(src)) + if(sharpness_on) + source.sharpness = sharpness_on + if(force_on) + source.force = force_on + (source.sharpness ? sharpened_bonus : 0) + if(throwforce_on) + source.throwforce = throwforce_on + (source.sharpness ? sharpened_bonus : 0) + if(throw_speed_on) + source.throw_speed = throw_speed_on + + if(LAZYLEN(attack_verb_continuous_on)) + source.attack_verb_continuous = attack_verb_continuous_on + if(LAZYLEN(attack_verb_simple_on)) + source.attack_verb_simple = attack_verb_simple_on + + source.hitsound = hitsound_on + source.update_weight_class(w_class_on) + source.icon_state = "[source.icon_state]_on" + if(inhand_icon_change && source.inhand_icon_state) + source.inhand_icon_state = "[source.inhand_icon_state]_on" + source.update_inhand_icon() + +/* + * Set our transformed item into its inactive state. + * Updates all the values back to the item's initial values. + * + * source - the item being un-transformed / parent + */ +/datum/component/transforming/proc/set_inactive(obj/item/source) + REMOVE_TRAIT(source, TRAIT_TRANSFORM_ACTIVE, REF(src)) + if(sharpness_on) + source.sharpness = initial(source.sharpness) + if(force_on) + source.force = initial(source.force) + (source.sharpness ? sharpened_bonus : 0) + if(throwforce_on) + source.throwforce = initial(source.throwforce) + (source.sharpness ? sharpened_bonus : 0) + if(throw_speed_on) + source.throw_speed = initial(source.throw_speed) + + if(LAZYLEN(attack_verb_continuous_on)) + source.attack_verb_continuous = attack_verb_continuous_off + if(LAZYLEN(attack_verb_simple_off)) + source.attack_verb_simple = attack_verb_simple_off + + source.hitsound = initial(source.hitsound) + source.update_weight_class(initial(source.w_class)) + source.icon_state = initial(source.icon_state) + source.inhand_icon_state = initial(source.inhand_icon_state) + if(ismob(source.loc)) + var/mob/loc_mob = source.loc + loc_mob.update_held_items() + +/* + * Called on [COMSIG_ITEM_SHARPEN_ACT]. + * We need to track our sharpened bonus here, so we correctly apply and unapply it + * if our item's sharpness state changes from transforming. + * + * source - the item being sharpened / parent + * increment - the amount of force added + * max - the maximum force that the item can be adjusted to. + * + * Does not return naturally [COMPONENT_BLOCK_SHARPEN_APPLIED] as this is only to track our sharpened bonus between transformation. + */ +/datum/component/transforming/proc/on_sharpen(obj/item/source, increment, max) + SIGNAL_HANDLER + + if(sharpened_bonus) + return COMPONENT_BLOCK_SHARPEN_ALREADY + if(force_on + increment > max) + return COMPONENT_BLOCK_SHARPEN_MAXED + sharpened_bonus = increment diff --git a/code/game/objects/items/melee/bladeatheon.dm b/code/game/objects/items/melee/bladeatheon.dm new file mode 100644 index 000000000000..1237dc202c64 --- /dev/null +++ b/code/game/objects/items/melee/bladeatheon.dm @@ -0,0 +1,48 @@ +/obj/item/clothing/shoes/blade_skates + name = "bladeatheon skates" + desc = "wip." + icon_state = "iceboots" //Need sprites + item_state = "iceboots" + clothing_flags = NOSLIP_ICE + lace_time = 12 SECONDS + +/obj/item/melee/fimbo_stick + name = "fimbo" + +/obj/item/melee/sword/pedang + name = "pedang" + desc = "an electrically-charged fencing sword." + + var/obj/item/stock_parts/cell/cell + var/preload_cell_type = /obj/item/stock_parts/cell/pedang //if not empty the sabre starts with this type of cell + var/cell_hit_cost = 1000 + var/can_remove_cell = TRUE + + var/turned_on = FALSE + var/activate_sound = "sparks" + +/obj/item/stock_parts/cell/pedang + name = "compact pedang cell" + +/obj/item/melee/sword/pedang/Initialize() + . = ..() + if(preload_cell_type) + if(!ispath(preload_cell_type,/obj/item/stock_parts/cell)) + log_mapping("[src] at [AREACOORD(src)] had an invalid preload_cell_type: [preload_cell_type].") + else + cell = new preload_cell_type(src) + update_appearance() + +/obj/item/melee/sword/pedang/Destroy() + if(cell) + QDEL_NULL(cell) + UnregisterSignal(src, COMSIG_PARENT_ATTACKBY) + return ..() + +/obj/item/melee/baton/examine(mob/user) + . = ..() + if(cell) + . += span_noitce("\The [src] is [round(cell.percent())]% charged.") + else + . += span_warning("\The [src] does not have a power source installed.") + diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index 05225d80cff8..26fd71f67a84 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -110,23 +110,23 @@ /obj/item/melee/baton/examine(mob/user) . = ..() if(cell) - . += "\The [src] is [round(cell.percent())]% charged." + . += span_notice("\The [src] is [round(cell.percent())]% charged.") else - . += "\The [src] does not have a power source installed." + . += span_warning("\The [src] does not have a power source installed.") /obj/item/melee/baton/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stock_parts/cell)) var/obj/item/stock_parts/cell/C = W if(cell) - to_chat(user, "[src] already has a cell!") + to_chat(user, span_notice("[src] already has a cell!")) else if(C.maxcharge < cell_hit_cost) - to_chat(user, "[src] requires a higher capacity cell.") + to_chat(user, span_notice("[src] requires a higher capacity cell.")) return if(!user.transferItemToLoc(W, src)) return cell = W - to_chat(user, "You install a cell in [src].") + to_chat(user, span_notice("You install a cell in [src].")) update_appearance() else if(W.tool_behaviour == TOOL_SCREWDRIVER) @@ -139,7 +139,7 @@ cell.update_appearance() cell.forceMove(get_turf(src)) cell = null - to_chat(user, "You remove the cell from [src].") + to_chat(user, span_notice("You remove the cell from [src].")) turned_on = FALSE update_appearance() @@ -149,22 +149,22 @@ /obj/item/melee/baton/proc/toggle_on(mob/user) if(cell && cell.charge > cell_hit_cost) turned_on = !turned_on - to_chat(user, "[src] is now [turned_on ? "on" : "off"].") + to_chat(user, span_notice("[src] is now [turned_on ? "on" : "off"].")) playsound(src, activate_sound, 75, TRUE, -1) else turned_on = FALSE if(!cell) - to_chat(user, "[src] does not have a power source!") + to_chat(user, span_warning("[src] does not have a power source!")) else - to_chat(user, "[src] is out of charge.") + to_chat(user, span_warning("[src] is out of charge.")) update_appearance() add_fingerprint(user) /obj/item/melee/baton/proc/clumsy_check(mob/living/carbon/human/user) if(turned_on && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) playsound(src, stun_sound, 75, TRUE, -1) - user.visible_message("[user] accidentally hits [user.p_them()]self with [src]!", \ - "You accidentally hit yourself with [src]!") + user.visible_message(span_danger("[user] accidentally hits [user.p_them()]self with [src]!"), \ + span_userdanger("You accidentally hit yourself with [src]!")) user.Knockdown(stun_time*3) //should really be an equivalent to attack(user,user) deductcharge(cell_hit_cost) return TRUE @@ -191,10 +191,10 @@ user.do_attack_animation(M) return else - to_chat(user, "The baton is still charging!") + to_chat(user, span_danger("The baton is still charging!")) else - M.visible_message("[user] prods [M] with [src]. Luckily it was off.", \ - "[user] prods you with [src]. Luckily it was off.") + M.visible_message(span_warning("[user] prods [M] with [src]. Luckily it was off."), \ + span_warning("[user] prods you with [src]. Luckily it was off.")) else if(turned_on) if(attack_cooldown_check <= world.time) @@ -206,7 +206,7 @@ if(shields_blocked(L, user)) return FALSE if(HAS_TRAIT_FROM(L, TRAIT_IWASBATONED, user)) //no doublebaton abuse anon! - to_chat(user, "[L] manages to avoid the attack!") + to_chat(user, span_danger("[L] manages to avoid the attack!")) return FALSE if(iscyborg(loc)) var/mob/living/silicon/robot/R = loc @@ -228,8 +228,8 @@ if(user) L.lastattacker = user.real_name L.lastattackerckey = user.ckey - L.visible_message("[user] stuns [L] with [src]!", \ - "[user] stuns you with [src]!") + L.visible_message(span_danger("[user] stuns [L] with [src]!"), \ + span_userdanger("[user] stuns you with [src]!")) log_combat(user, L, "stunned") playsound(src, stun_sound, 50, TRUE, -1) @@ -245,7 +245,7 @@ /obj/item/melee/baton/proc/apply_stun_effect_end(mob/living/target) var/trait_check = HAS_TRAIT(target, TRAIT_STUNRESISTANCE) //var since we check it in out to_chat as well as determine stun duration if(!target.IsKnockdown()) - to_chat(target, "Your muscles seize, making you collapse[trait_check ? ", but your body quickly recovers..." : "!"]") + to_chat(target, span_warning("Your muscles seize, making you collapse[trait_check ? ", but your body quickly recovers..." : "!"]")) if(trait_check) target.Knockdown(stun_time * 0.1) @@ -373,8 +373,8 @@ /obj/item/melee/classic_baton/proc/get_on_description() . = list() - .["local_on"] = "You extend the baton." - .["local_off"] = "You collapse the baton." + .["local_on"] = span_warning("You extend the baton.") + .["local_off"] = span_notice("You collapse the baton.") return . @@ -382,8 +382,8 @@ /obj/item/melee/classic_baton/proc/get_stun_description(mob/living/target, mob/living/user) . = list() - .["visible"] = "[user] knocks [target] down with [src]!" - .["local"] = "[user] knocks you down with [src]!" + .["visible"] = span_danger("[user] knocks [target] down with [src]!") + .["local"] = span_userdanger("[user] knocks you down with [src]!") return . @@ -391,8 +391,8 @@ /obj/item/melee/classic_baton/proc/get_silicon_stun_description(mob/living/target, mob/living/user) . = list() - .["visible"] = "[user] pulses [target]'s sensors with the baton!" - .["local"] = "You pulse [target]'s sensors with the baton!" + .["visible"] = span_danger("[user] pulses [target]'s sensors with the baton!") + .["local"] = span_danger("You pulse [target]'s sensors with the baton!") return . @@ -410,7 +410,7 @@ add_fingerprint(user) if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) - to_chat(user, "You hit yourself over the head!") + to_chat(user, span_userdanger("You hit yourself over the head!")) user.Paralyze(knockdown_time_carbon * force) user.apply_damage(stamina_damage, STAMINA, BODY_ZONE_HEAD) @@ -558,7 +558,7 @@ weight_class_on = WEIGHT_CLASS_NORMAL /obj/item/melee/classic_baton/telescopic/contractor_baton/get_wait_description() - return "The baton is still charging!" + return span_danger("The baton is still charging!") /obj/item/melee/classic_baton/telescopic/contractor_baton/additional_effects_carbon(mob/living/target, mob/living/user) target.Jitter(20) From 9e429916cb3b5c022c887d591070f23cc0015326 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 11:29:41 -0500 Subject: [PATCH 056/102] oh this is transforming weapon pr now? --- .../dcs/signals/signals_obj/signals_object.dm | 5 + code/__DEFINES/traits.dm | 2 + code/datums/components/transforming.dm | 46 +++---- code/game/MapData/shuttles/srm_elder.dm | 7 +- .../game/gamemodes/clown_ops/clown_weapons.dm | 7 +- code/game/objects/items.dm | 12 ++ code/game/objects/items/hot_potato.dm | 4 +- code/game/objects/items/melee/chainsaw.dm | 8 +- code/game/objects/items/melee/dualsaber.dm | 4 +- code/game/objects/items/melee/energy.dm | 43 +++--- .../game/objects/items/melee/energyhalberd.dm | 4 +- code/game/objects/items/melee/stunbaton.dm | 8 +- code/game/objects/items/melee/sword.dm | 4 +- code/game/objects/items/melee/transforming.dm | 129 ++++++++---------- .../antagonists/slaughter/slaughter.dm | 2 +- code/modules/clothing/head/misc_special.dm | 16 +-- .../mining/lavaland/necropolis_chests.dm | 39 ++---- .../hostile/megafauna/blood_drunk_miner.dm | 14 +- shiptest.dme | 2 + 19 files changed, 155 insertions(+), 201 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm index 136b73ffb3d2..65308310bc31 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm @@ -12,3 +12,8 @@ #define COMSIG_OBJ_HIDE "obj_hide" /// from base of [/atom/proc/obj_destruction]: (damage_flag) #define COMSIG_OBJ_DESTRUCTION "obj_destruction" + +/// Sent from /obj/item/update_weight_class(). (old_w_class, new_w_class) +#define COMSIG_ITEM_WEIGHT_CLASS_CHANGED "item_weight_class_changed" +/// Sent from /obj/item/update_weight_class(), to its loc. (obj/item/changed_item, old_w_class, new_w_class) +#define COMSIG_ATOM_CONTENTS_WEIGHT_CLASS_CHANGED "atom_contents_weight_class_changed" diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index c97fa62ffc5d..921b45c1fc27 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -301,6 +301,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NO_STORAGE_INSERT "no_storage_insert" //cannot be inserted in a storage. #define TRAIT_T_RAY_VISIBLE "t-ray-visible" // Visible on t-ray scanners if the atom/var/level == 1 #define TRAIT_NO_TELEPORT "no-teleport" //you just can't +/// A transforming item that is actively extended / transformed +#define TRAIT_TRANSFORM_ACTIVE "active_transform" //quirk traits #define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance" diff --git a/code/datums/components/transforming.dm b/code/datums/components/transforming.dm index 297cf687d30e..f3ff03ba893d 100644 --- a/code/datums/components/transforming.dm +++ b/code/datums/components/transforming.dm @@ -24,14 +24,10 @@ var/sharpness_on /// Hitsound played when active var/hitsound_on - /// List of the original continuous attack verbs the item has. - var/list/attack_verb_continuous_off - /// List of the original simple attack verbs the item has. - var/list/attack_verb_simple_off - /// List of continuous attack verbs used when the weapon is enabled - var/list/attack_verb_continuous_on - /// List of simple attack verbs used when the weapon is enabled - var/list/attack_verb_simple_on + /// List of the original attack verbs the item has. + var/list/attack_verb_off + /// List of attack verbs used when the weapon is enabled + var/list/attack_verb_on /// If we get sharpened with a whetstone, save the bonus here for later use if we un/redeploy var/sharpened_bonus = 0 /// Dictate whether we change inhands or not @@ -48,8 +44,7 @@ sharpness_on = NONE, hitsound_on = 'sound/weapons/blade1.ogg', w_class_on = WEIGHT_CLASS_BULKY, - list/attack_verb_continuous_on, - list/attack_verb_simple_on, + list/attack_verb_on, inhand_icon_change = TRUE, ) @@ -67,12 +62,9 @@ src.w_class_on = w_class_on src.inhand_icon_change = inhand_icon_change - if(attack_verb_continuous_on) - src.attack_verb_continuous_on = attack_verb_continuous_on - attack_verb_continuous_off = item_parent.attack_verb_continuous - if(attack_verb_simple_on) - src.attack_verb_simple_on = attack_verb_simple_on - attack_verb_simple_off = item_parent.attack_verb_simple + if(attack_verb_on) + src.attack_verb_on = attack_verb_on + attack_verb_off = item_parent.attack_verb if(start_transformed) toggle_active(parent) @@ -173,17 +165,15 @@ if(throw_speed_on) source.throw_speed = throw_speed_on - if(LAZYLEN(attack_verb_continuous_on)) - source.attack_verb_continuous = attack_verb_continuous_on - if(LAZYLEN(attack_verb_simple_on)) - source.attack_verb_simple = attack_verb_simple_on + if(LAZYLEN(attack_verb_on)) + source.attack_verb = attack_verb_on source.hitsound = hitsound_on source.update_weight_class(w_class_on) source.icon_state = "[source.icon_state]_on" - if(inhand_icon_change && source.inhand_icon_state) - source.inhand_icon_state = "[source.inhand_icon_state]_on" - source.update_inhand_icon() + if(inhand_icon_change && source.item_state) + source.item_state = "[source.item_state]_on" + source.update_appearance() /* * Set our transformed item into its inactive state. @@ -202,18 +192,16 @@ if(throw_speed_on) source.throw_speed = initial(source.throw_speed) - if(LAZYLEN(attack_verb_continuous_on)) - source.attack_verb_continuous = attack_verb_continuous_off - if(LAZYLEN(attack_verb_simple_off)) - source.attack_verb_simple = attack_verb_simple_off + if(LAZYLEN(attack_verb_off)) + source.attack_verb = attack_verb_off source.hitsound = initial(source.hitsound) source.update_weight_class(initial(source.w_class)) source.icon_state = initial(source.icon_state) - source.inhand_icon_state = initial(source.inhand_icon_state) + source.item_state = initial(source.item_state) if(ismob(source.loc)) var/mob/loc_mob = source.loc - loc_mob.update_held_items() + loc_mob.update_inv_hands() /* * Called on [COMSIG_ITEM_SHARPEN_ACT]. diff --git a/code/game/MapData/shuttles/srm_elder.dm b/code/game/MapData/shuttles/srm_elder.dm index 97805731ec2f..a5cc6b1e8348 100644 --- a/code/game/MapData/shuttles/srm_elder.dm +++ b/code/game/MapData/shuttles/srm_elder.dm @@ -2,14 +2,11 @@ name = "old cleaving saw" desc = "This saw, old and rusted, is still an effective tool at bleeding beasts and monsters." force = 10 - force_on = 15 //force when active + active_force = 15 //force when active throwforce = 15 - throwforce_on = 15 - faction_bonus_force = 5 - nemesis_factions = list("mining", "boss") + active_throwforce = 15 bleed_stacks_per_hit = 1.5 - /obj/structure/closet/secure_closet/medicalsrm name = "hunter doctor closet" desc = "Everything the Hunter Doctor needs to heal the hurting masses." diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 3064a52a48ad..612c988db707 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -59,11 +59,10 @@ desc = "An elegant weapon, for a more civilized age." force = 0 throwforce = 0 - force_on = 0 - throwforce_on = 0 + active_force = 0 + active_throwforce = 0 hitsound = null attack_verb_on = list("slipped") - clumsy_check = FALSE sharpness = IS_BLUNT sword_color = "yellow" heat = 0 @@ -103,7 +102,7 @@ return TRUE return ..() -/obj/item/melee/transforming/energy/sword/bananium/transform_weapon(mob/living/user, supress_message_text) +/obj/item/melee/transforming/energy/sword/bananium/on_transform(obj/item/source, mob/user, active) . = ..() adjust_slipperiness() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 17d6cf96b21a..92cbc1e69c7b 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1191,6 +1191,18 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb /// Whether or not this item can be put into a storage item through attackby /obj/item/proc/attackby_storage_insert(datum/storage, atom/storage_holder, mob/user) return TRUE + +/obj/item/proc/update_weight_class(new_w_class) + if(w_class == new_w_class) + return FALSE + + var/old_w_class = w_class + w_class = new_w_class + SEND_SIGNAL(src, COMSIG_ITEM_WEIGHT_CLASS_CHANGED, old_w_class, new_w_class) + if(!isnull(loc)) + SEND_SIGNAL(loc, COMSIG_ATOM_CONTENTS_WEIGHT_CLASS_CHANGED, src, old_w_class, new_w_class) + return TRUE + /// How many different types of mats will be counted in a bite? #define MAX_MATS_PER_BITE 2 diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index e3f21a70463e..0cac490ee9f4 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -96,9 +96,9 @@ . = ..() if(!adjacent || !ismob(target)) return - force_onto(target, user) + active_forceto(target, user) -/obj/item/hot_potato/proc/force_onto(mob/living/victim, mob/user) +/obj/item/hot_potato/proc/active_forceto(mob/living/victim, mob/user) if(!istype(victim) || user != loc || victim == user) return FALSE if(!victim.client) diff --git a/code/game/objects/items/melee/chainsaw.dm b/code/game/objects/items/melee/chainsaw.dm index 494ec65cdb5a..e16d3b98c255 100644 --- a/code/game/objects/items/melee/chainsaw.dm +++ b/code/game/objects/items/melee/chainsaw.dm @@ -9,7 +9,7 @@ righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' flags_1 = CONDUCT_1 force = 13 - var/force_on = 24 + var/active_force = 24 w_class = WEIGHT_CLASS_HUGE throwforce = 13 throw_speed = 2 @@ -49,8 +49,8 @@ /obj/item/chainsaw/attack_self(mob/user) on = !on to_chat(user, "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]") - force = on ? force_on : initial(force) - throwforce = on ? force_on : initial(force) + force = on ? active_force : initial(force) + throwforce = on ? active_force : initial(force) icon_state = "chainsaw_[on ? "on" : "off"]" var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = on @@ -74,7 +74,7 @@ name = "THE GREAT COMMUNICATOR" desc = "VRRRRRRR!!!" armour_penetration = 100 - force_on = 30 + active_force = 30 /obj/item/chainsaw/doomslayer/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(attack_type == PROJECTILE_ATTACK) diff --git a/code/game/objects/items/melee/dualsaber.dm b/code/game/objects/items/melee/dualsaber.dm index 965979db215a..9247d1f86cc0 100644 --- a/code/game/objects/items/melee/dualsaber.dm +++ b/code/game/objects/items/melee/dualsaber.dm @@ -23,7 +23,7 @@ max_integrity = 200 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) resistance_flags = FIRE_PROOF - var/w_class_on = WEIGHT_CLASS_BULKY + var/active_w_class = WEIGHT_CLASS_BULKY var/saber_color = "green" var/two_hand_force = 34 var/hacked = FALSE @@ -45,7 +45,7 @@ return COMPONENT_TWOHANDED_BLOCK_WIELD wielded = TRUE sharpness = IS_SHARP - w_class = w_class_on + w_class = active_w_class hitsound = 'sound/weapons/blade1.ogg' START_PROCESSING(SSobj, src) set_light_on(TRUE) diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 34219662e53d..0ac00099aa09 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -1,6 +1,6 @@ /obj/item/melee/transforming/energy icon = 'icons/obj/weapon/energy.dmi' - hitsound_on = 'sound/weapons/blade1.ogg' + active_hitsound = 'sound/weapons/blade1.ogg' heat = 3500 max_integrity = 200 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) @@ -29,7 +29,7 @@ /obj/item/melee/transforming/energy/process() open_flame() -/obj/item/melee/transforming/energy/transform_weapon(mob/living/user, supress_message_text) +/obj/item/melee/transforming/energy/on_transform(obj/item/source, mob/user, active) . = ..() if(.) if(active) @@ -64,17 +64,17 @@ lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi' force = 40 - force_on = 150 + active_force = 150 throwforce = 25 - throwforce_on = 30 + active_throwforce = 30 hitsound = 'sound/weapons/bladeslice.ogg' throw_speed = 3 throw_range = 5 w_class = WEIGHT_CLASS_NORMAL - w_class_on = WEIGHT_CLASS_HUGE + active_w_class = WEIGHT_CLASS_HUGE flags_1 = CONDUCT_1 armour_penetration = 100 - attack_verb_off = list("attacked", "chopped", "cleaved", "torn", "cut") + attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") attack_verb_on = list() light_color = LIGHT_COLOR_LIGHT_CYAN @@ -88,7 +88,7 @@ force = 3 throwforce = 5 hitsound = "swing_hit" //it starts deactivated - attack_verb_off = list("tapped", "poked") + attack_verb = list("tapped", "poked") throw_speed = 3 throw_range = 5 sharpness = IS_SHARP @@ -96,7 +96,7 @@ armour_penetration = 35 block_chance = 50 -/obj/item/melee/transforming/energy/sword/transform_weapon(mob/living/user, supress_message_text) +/obj/item/melee/transforming/energy/sword/on_transform(obj/item/source, mob/user, active) . = ..() if(. && active && sword_color) icon_state = "[base_icon_state][sword_color]" @@ -122,12 +122,11 @@ /obj/item/melee/transforming/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs name = "energy saw" desc = "For heavy duty cutting. It has a carbon-fiber blade in addition to a toggleable hard-light edge to dramatically increase sharpness." - force_on = 30 + active_force = 30 force = 18 //About as much as a spear hitsound = 'sound/weapons/circsawhit.ogg' icon = 'icons/obj/surgery.dmi' icon_state = "esaw_0" - icon_state_on = "esaw_1" sword_color = null //stops icon from breaking when turned on. hitcost = 75 //Costs more than a standard cyborg esword w_class = WEIGHT_CLASS_NORMAL @@ -136,13 +135,8 @@ tool_behaviour = TOOL_SAW toolspeed = 0.7 //faster as a saw -/obj/item/melee/transforming/energy/sword/cyborg/saw/cyborg_unequip(mob/user) - if(!active) - return - transform_weapon(user, TRUE) - /obj/item/melee/transforming/energy/sword/cyborg/saw/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - return 0 + return FALSE /obj/item/melee/transforming/energy/sword/saber var/list/possible_colors = list("red" = COLOR_SOFT_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER, "yellow" = COLOR_YELLOW) @@ -199,7 +193,6 @@ base_icon_state = "cutlass" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - icon_state_on = "cutlass" /obj/item/melee/transforming/energy/sword/saber/pirate/red possible_colors = list("red" = COLOR_SOFT_RED) @@ -243,7 +236,7 @@ QDEL_NULL(spark_system) return ..() -/obj/item/melee/transforming/energy/blade/transform_weapon(mob/living/user, supress_message_text) +/obj/item/melee/transforming/energy/blade/on_transform(obj/item/source, mob/user, active) return /obj/item/melee/transforming/energy/blade/hardlight @@ -264,20 +257,18 @@ force = 0 throwforce = 0 hitsound = "swing_hit" //it starts deactivated - attack_verb_off = list("tapped", "poked") + attack_verb = list("tapped", "poked") throw_speed = 3 throw_range = 5 - force_on = 200 //instakill if shields are down + active_force = 200 //instakill if shields are down -/obj/item/melee/transforming/energy/ctf/transform_weapon(mob/living/user, supress_message_text) +/obj/item/melee/transforming/energy/ctf/on_transform(obj/item/source, mob/user, active) . = ..() if(. && active) icon_state = "plasmasword1" + playsound(user, active ? 'sound/weapons/SolGov_sword_arm.ogg' : 'sound/weapons/saberoff.ogg', 35, TRUE) + to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") /obj/item/melee/transforming/energy/ctf/solgov armour_penetration = 40 - force_on = 34 //desword grade, but 0 blocking - -/obj/item/melee/transforming/energy/ctf/transform_messages(mob/living/user, supress_message_text) - playsound(user, active ? 'sound/weapons/SolGov_sword_arm.ogg' : 'sound/weapons/saberoff.ogg', 35, TRUE) - to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") + active_force = 34 //desword grade, but 0 blocking diff --git a/code/game/objects/items/melee/energyhalberd.dm b/code/game/objects/items/melee/energyhalberd.dm index 62c6f5de6020..5a68c409375b 100644 --- a/code/game/objects/items/melee/energyhalberd.dm +++ b/code/game/objects/items/melee/energyhalberd.dm @@ -26,7 +26,7 @@ max_integrity = 200 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) resistance_flags = FIRE_PROOF - var/w_class_on = WEIGHT_CLASS_BULKY + var/active_w_class = WEIGHT_CLASS_BULKY var/halberd_color = "green" var/two_hand_force = 34 var/hacked = FALSE @@ -48,7 +48,7 @@ return COMPONENT_TWOHANDED_BLOCK_WIELD wielded = TRUE sharpness = IS_SHARP - w_class = w_class_on + w_class = active_w_class hitsound = 'sound/weapons/blade1.ogg' START_PROCESSING(SSobj, src) set_light_on(TRUE) diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index 26fd71f67a84..6f268acf6d81 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -361,7 +361,7 @@ var/on_icon_state // What is our sprite when turned on var/off_icon_state // What is our sprite when turned off var/on_item_state // What is our in-hand sprite when turned on - var/force_on // Damage when on - not stunning + var/active_force // Damage when on - not stunning var/force_off // Damage when off - not stunning var/weight_class_on // What is the new size class when turned on @@ -507,7 +507,7 @@ on_icon_state = "telebaton_1" off_icon_state = "telebaton_0" on_item_state = "nullrod" - force_on = 10 + active_force = 10 force_off = 0 weight_class_on = WEIGHT_CLASS_BULKY @@ -520,7 +520,7 @@ icon_state = on_icon_state item_state = on_item_state w_class = weight_class_on - force = force_on + force = active_force attack_verb = list("smacked", "struck", "cracked", "beaten") else to_chat(user, desc["local_off"]) @@ -553,7 +553,7 @@ on_icon_state = "contractor_baton_1" off_icon_state = "contractor_baton_0" on_item_state = "contractor_baton" - force_on = 16 + active_force = 16 force_off = 5 weight_class_on = WEIGHT_CLASS_NORMAL diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 21bde05c0dd3..dc6e06c2f6ba 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -153,7 +153,7 @@ var/off_icon_state = "suns-tsword" var/off_item_state = "suns-tsword" - var/force_on = 10 + var/active_force = 10 var/on_throwforce = 10 var/on_blockchance = 40 @@ -172,7 +172,7 @@ item_state = on_item_state slot_flags = 0 w_class = weight_class_on - force = force_on + force = active_force throwforce = on_throwforce block_chance = on_blockchance attack_verb = list("slashed", "cut") diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm index 8059e021b8f0..717bf9ebec1a 100644 --- a/code/game/objects/items/melee/transforming.dm +++ b/code/game/objects/items/melee/transforming.dm @@ -1,88 +1,69 @@ /obj/item/melee/transforming sharpness = IS_SHARP - stealthy_audio = TRUE //Most of these are antag weps so we dont want them to be /too/ overt. + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + var/active = FALSE - var/force_on = 30 //force when active - var/faction_bonus_force = 0 //Bonus force dealt against certain factions - var/throwforce_on = 20 - var/icon_state_on = "axe1" - var/hitsound_on = 'sound/weapons/blade1.ogg' + /// Force while active. + var/active_force = 30 + /// Throwforce while active. + var/active_throwforce = 20 + /// Sharpness while active. + var/active_sharpness = IS_SHARP + /// Hitsound played attacking while active. + var/active_hitsound = 'sound/weapons/blade1.ogg' + /// Weight class while active. + var/active_w_class = WEIGHT_CLASS_BULKY + /// The heat given off when active. + var/active_heat = 3500 + var/list/attack_verb_on = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - var/list/attack_verb_off = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - w_class = WEIGHT_CLASS_SMALL - var/bonus_active = FALSE //If the faction damage bonus is active - var/list/nemesis_factions //Any mob with a faction that exists in this list will take bonus damage/effects - var/w_class_on = WEIGHT_CLASS_BULKY - var/clumsy_check = TRUE -/obj/item/melee/transforming/Initialize() +/obj/item/melee/transforming/Initialize(mapload) . = ..() - if(active) - if(attack_verb_on.len) - attack_verb = attack_verb_on - else - if(attack_verb_off.len) - attack_verb = attack_verb_off - if(embedding) - updateEmbedding() + make_transformable() + AddElement(/datum/element/update_icon_updates_onmob) if(sharpness) AddComponent(/datum/component/butchering, 50, 100, 0, hitsound) -/obj/item/melee/transforming/attack_self(mob/living/carbon/user) - if(transform_weapon(user)) - clumsy_transform_effect(user) +/obj/item/melee/transforming/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() -/obj/item/melee/transforming/attack(mob/living/target, mob/living/carbon/human/user) - var/nemesis_faction = FALSE - if(LAZYLEN(nemesis_factions)) - for(var/F in target.faction) - if(F in nemesis_factions) - nemesis_faction = TRUE - force += faction_bonus_force - nemesis_effects(user, target) - break - . = ..() - if(nemesis_faction) - force -= faction_bonus_force - -/obj/item/melee/transforming/proc/transform_weapon(mob/living/user, supress_message_text) - active = !active - if(active) - force = force_on - throwforce = throwforce_on - hitsound = hitsound_on - throw_speed = 4 - if(attack_verb_on.len) - attack_verb = attack_verb_on - icon_state = icon_state_on - w_class = w_class_on - if(embedding) - updateEmbedding() - else - force = initial(force) - throwforce = initial(throwforce) - hitsound = initial(hitsound) - throw_speed = initial(throw_speed) - if(attack_verb_off.len) - attack_verb = attack_verb_off - icon_state = initial(icon_state) - w_class = initial(w_class) - if(embedding) - disableEmbedding() +/* + * Gives our item the transforming component, passing in our various vars. + */ +/obj/item/melee/transforming/proc/make_transformable() + AddComponent( \ + /datum/component/transforming, \ + force_on = active_force, \ + throwforce_on = active_throwforce, \ + throw_speed_on = 4, \ + sharpness_on = active_sharpness, \ + hitsound_on = active_hitsound, \ + w_class_on = active_w_class, \ + attack_verb_on = attack_verb_on, \ + ) + RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) - transform_messages(user, supress_message_text) - add_fingerprint(user) - return TRUE +/obj/item/melee/transforming/process(seconds_per_tick) + if(heat) + open_flame() -/obj/item/melee/transforming/proc/nemesis_effects(mob/living/user, mob/living/target) - return +/obj/item/melee/transforming/proc/on_transform(obj/item/source, mob/user, active) + SIGNAL_HANDLER -/obj/item/melee/transforming/proc/transform_messages(mob/living/user, supress_message_text) - playsound(user, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, TRUE) //changed it from 50% volume to 35% because deafness - if(!supress_message_text) - to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") + if(active) + heat = active_heat + START_PROCESSING(SSobj, src) + else + heat = initial(heat) + STOP_PROCESSING(SSobj, src) -/obj/item/melee/transforming/proc/clumsy_transform_effect(mob/living/user) - if(clumsy_check && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) - to_chat(user, "You accidentally cut yourself with [src], like a doofus!") - user.take_bodypart_damage(5,5) + tool_behaviour = (active ? TOOL_SAW : NONE) //Lets energy weapons cut trees. Also lets them do bonecutting surgery, which is kinda metal! + if(user) + balloon_alert(user, "[name] [active ? "enabled":"disabled"]") + playsound(src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, TRUE) + set_light_on(active) + update_appearance(UPDATE_ICON_STATE) + return COMPONENT_NO_DEFAULT_MESSAGE diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index 595fbb27f61a..40fb73f700c6 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -26,7 +26,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = INFINITY - faction = list("slaughter") + faction = list("wslaughter") attack_verb_continuous = "wildly tears into" attack_verb_simple = "wildly tear into" maxHealth = 200 diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 5b8e228b49ee..e7bca8205873 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -44,10 +44,10 @@ lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' hitsound = 'sound/weapons/tap.ogg' - var/hitsound_on = 'sound/weapons/sear.ogg' //so we can differentiate between cakehat and energyhat + var/active_hitsound = 'sound/weapons/sear.ogg' //so we can differentiate between cakehat and energyhat var/hitsound_off = 'sound/weapons/tap.ogg' - var/force_on = 15 - var/throwforce_on = 15 + var/active_force = 15 + var/active_throwforce = 15 var/damtype_on = BURN flags_inv = HIDEEARS|HIDEHAIR armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) @@ -69,10 +69,10 @@ /obj/item/clothing/head/hardhat/cakehat/turn_on(mob/living/user) ..() - force = force_on - throwforce = throwforce_on + force = active_force + throwforce = active_throwforce damtype = damtype_on - hitsound = hitsound_on + hitsound = active_hitsound START_PROCESSING(SSobj, src) /obj/item/clothing/head/hardhat/cakehat/turn_off(mob/living/user) @@ -92,10 +92,10 @@ icon_state = "hardhat_energycake" item_state = "hardhat_energycake" hitsound = 'sound/weapons/tap.ogg' - hitsound_on = 'sound/weapons/blade1.ogg' + active_hitsound = 'sound/weapons/blade1.ogg' hitsound_off = 'sound/weapons/tap.ogg' damtype_on = BRUTE - force_on = 18 //same as epen (but much more obvious) + active_force = 18 //same as epen (but much more obvious) light_range = 3 //ditto heat = 0 diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index afae0dd0a6c0..f707140f6496 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -1106,25 +1106,22 @@ name = "cleaving saw" desc = "This saw, effective at drawing the blood of beasts, transforms into a long cleaver that makes use of centrifugal force." force = 12 - force_on = 20 //force when active + active_force = 20 //force when active throwforce = 20 - throwforce_on = 20 + active_throwforce = 20 icon = 'icons/obj/lavaland/artefacts.dmi' lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' inhand_x_dimension = 64 inhand_y_dimension = 64 icon_state = "cleaving_saw" - icon_state_on = "cleaving_saw_open" slot_flags = ITEM_SLOT_BELT - attack_verb_off = list("attacked", "sawed", "sliced", "torn", "ripped", "diced", "cut") + attack_verb = list("attacked", "sawed", "sliced", "torn", "ripped", "diced", "cut") attack_verb_on = list("cleaved", "swiped", "slashed", "chopped") hitsound = 'sound/weapons/bladeslice.ogg' - hitsound_on = 'sound/weapons/bladeslice.ogg' + active_hitsound = 'sound/weapons/bladeslice.ogg' w_class = WEIGHT_CLASS_BULKY sharpness = IS_SHARP - faction_bonus_force = 30 - nemesis_factions = list("mining", "boss") var/transform_cooldown var/swiping = FALSE var/bleed_stacks_per_hit = 3 @@ -1135,7 +1132,7 @@ "Both modes will build up existing bleed effects, doing a burst of high damage if the bleed is built up high enough.\n"+\ "Transforming it immediately after an attack causes the next attack to come out faster." -/obj/item/melee/transforming/cleaving_saw/transform_weapon(mob/living/user, supress_message_text) +/obj/item/melee/transforming/cleaving_saw/on_transform(obj/item/source, mob/user, active) if(transform_cooldown > world.time) return FALSE . = ..() @@ -1143,38 +1140,20 @@ transform_cooldown = world.time + (CLICK_CD_MELEE * 0.5) user.changeNext_move(CLICK_CD_MELEE * 0.25) -/obj/item/melee/transforming/cleaving_saw/transform_messages(mob/living/user, supress_message_text) - if(!supress_message_text) - if(active) - to_chat(user, "You open [src]. It will now cleave enemies in a wide arc and deal additional damage to fauna.") - else - to_chat(user, "You close [src]. It will now attack rapidly and cause fauna to bleed.") + if(active) + to_chat(user, "You open [src]. It will now cleave enemies in a wide arc and deal additional damage to fauna.") + else + to_chat(user, "You close [src]. It will now attack rapidly and cause fauna to bleed.") playsound(user, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) -/obj/item/melee/transforming/cleaving_saw/clumsy_transform_effect(mob/living/user) - if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) - to_chat(user, "You accidentally cut yourself with [src], like a doofus!") - user.take_bodypart_damage(10) - /obj/item/melee/transforming/cleaving_saw/melee_attack_chain(mob/user, atom/target, params) ..() if(!active) user.changeNext_move(CLICK_CD_MELEE * 0.5) //when closed, it attacks very rapidly -/obj/item/melee/transforming/cleaving_saw/nemesis_effects(mob/living/user, mob/living/target) - var/datum/status_effect/stacking/saw_bleed/B = target.has_status_effect(STATUS_EFFECT_SAWBLEED) - if(!B) - target.apply_status_effect(STATUS_EFFECT_SAWBLEED,bleed_stacks_per_hit) - else - B.add_stacks(bleed_stacks_per_hit) - /obj/item/melee/transforming/cleaving_saw/attack(mob/living/target, mob/living/carbon/human/user) if(!active || swiping || !target.density || get_turf(target) == get_turf(user)) - if(!active) - faction_bonus_force = 0 ..() - if(!active) - faction_bonus_force = initial(faction_bonus_force) else var/turf/user_turf = get_turf(user) var/dir_to_target = get_dir(user_turf, get_turf(target)) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index 63519d29c7cd..b2bb0c5cb937 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -109,7 +109,7 @@ Difficulty: Medium /obj/item/melee/transforming/cleaving_saw/miner //nerfed saw because it is very murdery force = 6 - force_on = 10 + active_force = 10 /obj/item/melee/transforming/cleaving_saw/miner/attack(mob/living/target, mob/living/carbon/human/user) target.add_stun_absorption("miner", 10, INFINITY) @@ -248,14 +248,12 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/transform_weapon() if(time_until_next_transform <= world.time) miner_saw.transform_cooldown = 0 - miner_saw.transform_weapon(src, TRUE) - if(!miner_saw.active) - rapid_melee = 5 // 4 deci cooldown before changes, npcpool subsystem wait is 20, 20/4 = 5 - else - rapid_melee = 3 // same thing but halved (slightly rounded up) + miner_saw.attack_self(src) + var/saw_open = HAS_TRAIT(miner_saw, TRAIT_TRANSFORM_ACTIVE) + rapid_melee = saw_open ? 3 : 5 transform_stop_attack = TRUE - icon_state = "miner[miner_saw.active ? "_transformed":""]" - icon_living = "miner[miner_saw.active ? "_transformed":""]" + icon_state = "miner[saw_open ? "_transformed":""]" + icon_living = "miner[saw_open ? "_transformed":""]" time_until_next_transform = world.time + rand(50, 100) /obj/effect/temp_visual/dir_setting/miner_death diff --git a/shiptest.dme b/shiptest.dme index 56d7d0535450..239d4b8a6c5c 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -172,6 +172,7 @@ #include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_hydroponic.dm" #include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_implant.dm" #include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_item.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_transform.dm" #include "code\__DEFINES\dcs\signals\signals_obj\signals_machine\signals_aquarium.dm" #include "code\__DEFINES\dcs\signals\signals_obj\signals_machine\signals_machinery.dm" #include "code\__DEFINES\dcs\signals\signals_obj\signals_machine\signals_supermatter.dm" @@ -561,6 +562,7 @@ #include "code\datums\components\taped.dm" #include "code\datums\components\tether.dm" #include "code\datums\components\thermite.dm" +#include "code\datums\components\transforming.dm" #include "code\datums\components\twohanded.dm" #include "code\datums\components\udder.dm" #include "code\datums\components\uplink.dm" From 0f0c30a4238575826bc3d0f578e60a3d471bcc7a Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 11:50:59 -0500 Subject: [PATCH 057/102] the repathing... god if this conflict merges --- code/game/objects/items/melee/transforming.dm | 64 +++++++++++++++++ .../mining/lavaland/necropolis_chests.dm | 66 ------------------ icons/mob/inhands/weapons/axes_lefthand.dmi | Bin 1901 -> 4018 bytes icons/mob/inhands/weapons/axes_righthand.dmi | Bin 1826 -> 3990 bytes .../mob/inhands/weapons/chainsaw_lefthand.dmi | Bin 805 -> 1490 bytes .../inhands/weapons/chainsaw_righthand.dmi | Bin 794 -> 1680 bytes .../mob/inhands/weapons/polearms_lefthand.dmi | Bin 16228 -> 16226 bytes .../inhands/weapons/polearms_righthand.dmi | Bin 16868 -> 16862 bytes icons/mob/inhands/weapons/staves_lefthand.dmi | Bin 20728 -> 18923 bytes .../mob/inhands/weapons/staves_righthand.dmi | Bin 20034 -> 18673 bytes icons/mob/inhands/weapons/swords_lefthand.dmi | Bin 30216 -> 30335 bytes .../mob/inhands/weapons/swords_righthand.dmi | Bin 31326 -> 31241 bytes icons/obj/lavaland/artefacts.dmi | Bin 42309 -> 40186 bytes icons/obj/weapon/axe.dmi | Bin 3273 -> 3083 bytes icons/obj/weapon/baton.dmi | Bin 5584 -> 5576 bytes icons/obj/weapon/blunt.dmi | Bin 4469 -> 4016 bytes icons/obj/weapon/energy.dmi | Bin 13302 -> 13303 bytes icons/obj/weapon/knife.dmi | Bin 1567 -> 3190 bytes icons/obj/weapon/spear.dmi | Bin 2045 -> 2042 bytes icons/obj/weapon/sword.dmi | Bin 15674 -> 14720 bytes 20 files changed, 64 insertions(+), 66 deletions(-) diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm index 717bf9ebec1a..e7db277d40e5 100644 --- a/code/game/objects/items/melee/transforming.dm +++ b/code/game/objects/items/melee/transforming.dm @@ -67,3 +67,67 @@ set_light_on(active) update_appearance(UPDATE_ICON_STATE) return COMPONENT_NO_DEFAULT_MESSAGE + +/obj/item/melee/transforming/cleaving_saw + name = "cleaving saw" + desc = "This saw, effective at drawing the blood of beasts, transforms into a long cleaver that makes use of centrifugal force." + force = 12 + active_force = 20 //force when active + throwforce = 20 + active_throwforce = 20 + icon = 'icons/obj/lavaland/artefacts.dmi' + lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' + righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' + inhand_x_dimension = 64 + inhand_y_dimension = 64 + icon_state = "cleaving_saw" + slot_flags = ITEM_SLOT_BELT + attack_verb = list("attacked", "sawed", "sliced", "torn", "ripped", "diced", "cut") + attack_verb_on = list("cleaved", "swiped", "slashed", "chopped") + hitsound = 'sound/weapons/bladeslice.ogg' + active_hitsound = 'sound/weapons/bladeslice.ogg' + w_class = WEIGHT_CLASS_BULKY + sharpness = IS_SHARP + var/transform_cooldown + var/swiping = FALSE + var/bleed_stacks_per_hit = 3 + +/obj/item/melee/transforming/cleaving_saw/examine(mob/user) + . = ..() + . += "It is [active ? "open, will cleave enemies in a wide arc and deal additional damage to fauna":"closed, and can be used for rapid consecutive attacks that cause fauna to bleed"].\n"+\ + "Both modes will build up existing bleed effects, doing a burst of high damage if the bleed is built up high enough.\n"+\ + "Transforming it immediately after an attack causes the next attack to come out faster." + +/obj/item/melee/transforming/cleaving_saw/on_transform(obj/item/source, mob/user, active) + if(transform_cooldown > world.time) + return FALSE + . = ..() + if(.) + transform_cooldown = world.time + (CLICK_CD_MELEE * 0.5) + user.changeNext_move(CLICK_CD_MELEE * 0.25) + + if(active) + to_chat(user, "You open [src]. It will now cleave enemies in a wide arc and deal additional damage to fauna.") + else + to_chat(user, "You close [src]. It will now attack rapidly and cause fauna to bleed.") + playsound(user, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) + +/obj/item/melee/transforming/cleaving_saw/melee_attack_chain(mob/user, atom/target, params) + ..() + if(!active) + user.changeNext_move(CLICK_CD_MELEE * 0.5) //when closed, it attacks very rapidly + +/obj/item/melee/transforming/cleaving_saw/attack(mob/living/target, mob/living/carbon/human/user) + if(!active || swiping || !target.density || get_turf(target) == get_turf(user)) + ..() + else + var/turf/user_turf = get_turf(user) + var/dir_to_target = get_dir(user_turf, get_turf(target)) + swiping = TRUE + var/static/list/cleaving_saw_cleave_angles = list(0, -45, 45) //so that the animation animates towards the target clicked and not towards a side target + for(var/i in cleaving_saw_cleave_angles) + var/turf/T = get_step(user_turf, turn(dir_to_target, i)) + for(var/mob/living/L in T) + if(user.Adjacent(L) && L.density) + melee_attack_chain(user, L) + swiping = FALSE diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index f707140f6496..52d910e8a732 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -1100,72 +1100,6 @@ ///Bosses -//Miniboss Miner - -/obj/item/melee/transforming/cleaving_saw - name = "cleaving saw" - desc = "This saw, effective at drawing the blood of beasts, transforms into a long cleaver that makes use of centrifugal force." - force = 12 - active_force = 20 //force when active - throwforce = 20 - active_throwforce = 20 - icon = 'icons/obj/lavaland/artefacts.dmi' - lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' - righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' - inhand_x_dimension = 64 - inhand_y_dimension = 64 - icon_state = "cleaving_saw" - slot_flags = ITEM_SLOT_BELT - attack_verb = list("attacked", "sawed", "sliced", "torn", "ripped", "diced", "cut") - attack_verb_on = list("cleaved", "swiped", "slashed", "chopped") - hitsound = 'sound/weapons/bladeslice.ogg' - active_hitsound = 'sound/weapons/bladeslice.ogg' - w_class = WEIGHT_CLASS_BULKY - sharpness = IS_SHARP - var/transform_cooldown - var/swiping = FALSE - var/bleed_stacks_per_hit = 3 - -/obj/item/melee/transforming/cleaving_saw/examine(mob/user) - . = ..() - . += "It is [active ? "open, will cleave enemies in a wide arc and deal additional damage to fauna":"closed, and can be used for rapid consecutive attacks that cause fauna to bleed"].\n"+\ - "Both modes will build up existing bleed effects, doing a burst of high damage if the bleed is built up high enough.\n"+\ - "Transforming it immediately after an attack causes the next attack to come out faster." - -/obj/item/melee/transforming/cleaving_saw/on_transform(obj/item/source, mob/user, active) - if(transform_cooldown > world.time) - return FALSE - . = ..() - if(.) - transform_cooldown = world.time + (CLICK_CD_MELEE * 0.5) - user.changeNext_move(CLICK_CD_MELEE * 0.25) - - if(active) - to_chat(user, "You open [src]. It will now cleave enemies in a wide arc and deal additional damage to fauna.") - else - to_chat(user, "You close [src]. It will now attack rapidly and cause fauna to bleed.") - playsound(user, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) - -/obj/item/melee/transforming/cleaving_saw/melee_attack_chain(mob/user, atom/target, params) - ..() - if(!active) - user.changeNext_move(CLICK_CD_MELEE * 0.5) //when closed, it attacks very rapidly - -/obj/item/melee/transforming/cleaving_saw/attack(mob/living/target, mob/living/carbon/human/user) - if(!active || swiping || !target.density || get_turf(target) == get_turf(user)) - ..() - else - var/turf/user_turf = get_turf(user) - var/dir_to_target = get_dir(user_turf, get_turf(target)) - swiping = TRUE - var/static/list/cleaving_saw_cleave_angles = list(0, -45, 45) //so that the animation animates towards the target clicked and not towards a side target - for(var/i in cleaving_saw_cleave_angles) - var/turf/T = get_step(user_turf, turn(dir_to_target, i)) - for(var/mob/living/L in T) - if(user.Adjacent(L) && L.density) - melee_attack_chain(user, L) - swiping = FALSE - //Dragon /obj/structure/closet/crate/necropolis/dragon diff --git a/icons/mob/inhands/weapons/axes_lefthand.dmi b/icons/mob/inhands/weapons/axes_lefthand.dmi index 3b95d17cdc78f766b7c3d91477802abcdfd729d3..584ca2b2290e0beaa857a472386dac53b99273ff 100644 GIT binary patch delta 3959 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 H{`Efr+o`Ot delta 1825 zcmV++2j2LyAMFm18Gi!+003?FlWzb30DDkOR7C&)052{s{{R3^OG^M||5TRwnwpwa zm;0T={J_A#tgEYWkHRL&|1+8Y0L=e0|NmvV>1NFT0Ga=p|NmzH|8y5Sh8;g{H!Qj@ zO;H{o>~&R8S6To6|FX8Sk5)U2kdCl(NzRT|e``}&NJB*n3n9C)Vv$1?pO0s483Fp~ z^1nGyYSF5cA}ebr1bF`^JTu`Ug`^~f7CqnmyGnlunOi2L z{U&-I!!QiP^jRzx#ye;63)GCX?=AjWESJmb23vT4v3QM(8XUM5meb*mL@uts34Jo+4->3-ItIhqrn|+*se;3P#JMzIJyLS&u?72w1amh&y z4qI&=A0IbQ-jlknoa~bZTmpX&4-YB>bX~eF!j^cAo0`R9wcc#de-9(rY}PC1mtd*Z zY}ur%Qvy%Kn=U6cIB>mwQq8CJ+Sz_zz&!w`{;BP2#ye>+54Kb@(*ExcKsVZD8@=$^ zRQCS|0WdS8&(_6TptG8h_J4l>BR_?Ph7GEj{8P|T!TbR*48t%C!!UmgGlseA`(y35 z%kwo(WqKUA-EMu=_Oa!DzR-x*JU_p@*s5ul=WCqG^rXP|cgh8SyYqeb^MzXc+kcF} zR!yrsU*lG$$6?#u>+9?8&3jYVt?T(hE#BBy0le6%X_e={BXB9xFBV&Ww^I(h;nm-| zo-Z`wjeQK@{oPtkt2}?-XmBdi<3Qgp9eDHoONz_2cw_(h{dR?k+0Pf|E{|Wq{%8d^ z4Pfr__*LwWR&dJzn3F zz+a93O1EKh!Y_aN9fe7f9FGy9Hp6n|(DhU zSgKc3Uv|;LQA;PN8z%y_gpugj+RVey$^RjeWA}q1>Z!+U5ub6>=sGy$QIs?j6&~#t zPpnvqS1W(6X*g4QWMQis?Xt`wORb}b z5;786Za_aVfT(@39e#zu48t%C!!Qgp2nhU{+lesj2vV6k z`l?rk{uh6c=Tf;0Qsy}n*6H1=qUxE)`UpfBfymwc?dvM?l>BcpKoO+Y>D_+>k*2`k zJP!2nVFdKv3F+)_51a_)f9fdDu4AcFgAi*c-G%5i@P-#CRp);V1%9tA;Zxn)w7}{JF7Ubqi9>hG zsncr~E6*2H;W*Y8_>(ZArx>1bflakjgY0dYnywSVV^b~DS5uR^c5lp2i=w-VTt6S6 z@2sY)&CroS^BmJ-QSDB%w#V5t9}gu$7P{`CYUMzF`es^lj=Q>zXIj5>svOF6A*}2Le z2*?L2Yx4rKfFd{6I_StqOm+a+LkRaOOIIcZI?^%@PwDgwu2jq^a!s)j&fF;>nYV>7 z9#N#G;ys8Q1f4!zBLc`}R@S+4DRWt!t9gH&(}kXxC^FfcxsikDA*3j$2?8YKIUU2I zt;zlO=m4{vOhG0@mFSbn(wvK6+Om2{kb{y!ptjJ2fSocYjpZVnIEuncF}etLEMr~Ah+%+KLJ=t+^m?PRk? P00000NkvXXu0mjf&k=;* diff --git a/icons/mob/inhands/weapons/axes_righthand.dmi b/icons/mob/inhands/weapons/axes_righthand.dmi index 1f5273d20d30e59797158d8fb0bed32e9186cf83..421d99eecf369a4687fe9d6a2fc122e4059c6d36 100644 GIT binary patch literal 3990 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 M07*qoM6N<$f*Q`axc~qF delta 715 zcmV;+0yO>73#A5-8CU}V008vhk@)}s05ecbR7C&)00000As`@5PEFod0O?{F|6>4K zT3X$TF4)-D?Q zNll4|8HCG5Wd&D17qEW-{^33uW4%qj00064Nkla$#=S-sxRtoaA<4o=niAvhWkp-)|7SYk%U0 zDps{KeeX)HF4sJH&1XmyCeEIPwI&GvN=pY}UPvryZC?8nH`~G}jl|eoL000000000o-<%KR-XGW;POszx z$A{C4?+>V_@&O)1Tz-Fmp2`Qd0e{7#?+5VBLvM)!&sD{4KfYhDnWbZ`v1FxYA2F`YfI%odo x8caZ*K;iyxn?ULQnc9*GRFp4yoHXICegSPd9c9~D9>M?s002ovPDHLkV1i3eK}i4r diff --git a/icons/mob/inhands/weapons/chainsaw_righthand.dmi b/icons/mob/inhands/weapons/chainsaw_righthand.dmi index 0800a5273156cc9f46c77335a85ae1a937efde24..21035a077de9492571a7f9258815e2a1a99e9532 100644 GIT binary patch literal 1680 zcmah~do^)a#8465S zn>2amuSNoZaJ>!I!ufI@FHbL6-U^k_nCvlzj6k@kz|dFEX~L*PEk{Y)08yAS66r7x z9igTujy9X!t!=CBqOQUku7xIqsDr$cvh%LX-~+rSAs4xd}{I17Rw_f$!n$J+6xZ zs7GkshL0Tgcd?XA`ML`UI{l?fOV3pJ(}VJYY>TVqQqv{5f60_XYP98H{FH? z2aQ9uDvS#h@2@ub>ilVTHM&;L;$GdLI1hhwQ))_0(IbCG?9*%2p;P#Gahv3+Lel11 zsIj$D=G`-PX;)407TjuM>ek1eY-~_JE|GaOPpCpA9Uet)x})0~he?1iU8dG- zH|Yfu%Cwp%t>*FTD;=ln{g>Nb6>%P~t@UZH>|n&0$?AI|!WczPcYKNI>fSad&M%w+K4!_O*UY=j!3^)QY2}TrsStRIyQuA9v z4T;NA`;-diI+YFQS%GYlMTv!-afkh9Ec z5Fg$#|B&3yeAjYApSY9K*H8}GWqUQ@Up zgus?a=nc|$x2)DZCwi^$*UMBZGf%|5nPNO33=4(C&90ON;1O9w2GSjb*!H_hN`QpD zbZDV;AqAC!=A`vrQPk_?ssinnB9J#NP0q3c!xm{yi_*i5vtzM^`1Ls{U>webq@#`% z6-UjOOlySPD}KlD`rr-~_P(Kk5=D_qbH$#()f#e^9<5++bi8rhd)n zfjmU=XVv0%cP#q$F>}a56kRz6;0_%T2Ei^{j6KDsB0VV zZdR8M^2m{yJ4${a#Job>W%3!tgMT3i(FkX75SD%WbP`b9ZkPk248T1Ws$MU0CB)kE zV2>-DD5Mr?fCF0sMC!cQ9yz|fcyJbE?{KtS^P|O2G82lbnZ@_E%Wu6Hz{biRTmFk@ F{NEy+1u6gl delta 704 zcmV;x0zdtb4Vng!8CU}V008vhk@)}s05ecbR7L;){{R30As`@IT3Y{O0O?{F-d6xl zPE8~vBkgk`*x1+IiZ1_N0OwK($;rseL;%A!0J=$tB>(^b0d!JMQvg8b*k%9#0Fsd< zP=7o=KP^p(i!&v&s2HS|i!-e#F*g;&HpHel54&2REh(uviIqU6fu4yD5F<3_=9lJ` zq^88f48diavVyCh3)n9JAmu$bIwuoyoF+x2 z!>3eest6(Fs8s4+71oD7^I#xHW38e`h>ggGLiJo)@)x!$dr>n_)xtSC!SdG;sLwQc|a000000JsG50ptV72apc{ z000000002;ftU|)*YN&)puC*+nGc`&z*}F;2O5{tfzJoDzLgK;b;o>w@8|M?bfrHm z?8yf{cY4eR$|E@D17$>`e_1&R8z+~*$=|5P* z?sTlwlS6v|=dJ1)D|pNi;jxJ%DrE|6LTRP_Jo3 zhvozq;zfSxiNu+{epRw7h6j@}1&c~OJG4aURrzuaI{-VYuGF(bOB5$?0000fFDZ*Bkpc$}S-&5pt#5P;9+DTrP-n^kv@ zd)a6<9`qFql(7&gGy`h-_R?yyHQ9!#;W8xOHw?qiod0Zow|l<0!r;wlNwu#DJ&tgLQ#1~D|x`?PeOVJ2kQR* z;4E5Vn_^2&{lx!Irw5|IinbHq2C5cT0;=p14-R1j&E&5Tz`bNjdmeee8L>I18}gdk pg0+66?HLt?aTjvT{d#imgU$J7zwSS`8%JtzA(J;Y$+J5FDL#0}i9rAW delta 293 zcmV+=0owlJe&l|TB!3QiR9JLGWpiV4X>fFDZ*Bkpc$}S-L2kk@5JlJVDJe`ax380+HY_5WD4VhL-uLJ$$&!EV_JQ1P&NV}(LpsW2RTfPisa__7TOR|{51O}^7uaVDs-n}63Mu0f#6fcMX^>pWJt zT4cs{Xgamgp;Tu_mvrhMnz3u&RhkpVIoWTUzW$%h?5c^q){xoO0H>2BLFH`b$|E?V z3up2BX*Rt?No|}>ZuA2_ksd!0i3Zxvd>Oe4j6jmfJMJ9e1e(aN2+__mg}LG^vAM=K rWS-ihG43`?B^l6GOt~Kq?(ncB-<`Jo@9h_Ev29N6c!7trIRPm?q&bmx diff --git a/icons/mob/inhands/weapons/polearms_righthand.dmi b/icons/mob/inhands/weapons/polearms_righthand.dmi index b72556f0b13540fc3baf0e23dd2aac92cf233899..1fae6b8eb45d191e8f75ed3333bfe9c9b7fc2de5 100644 GIT binary patch delta 274 zcmV+t0qy?eg8|-y0gxmC2azQrf3$SjO$9K@l?y@le|aaM+_IY7 zYzySL_t(|ob8O$Dl0lq*!@c!(_=I~p5MZeJ%zEiFYJ*o~$4 zzQ0C^r}Ay}zTU{?$66eaq77cY%IC+KsE$@AlMhb|Q5m$2NvA_hkT8#vSog``Y$7Uc zDGr*bwgfE>^ZbnK5U6nw<1Or*$EwgOX6%5LQ#+e#vkkN>r+%Z1uH&xCf1Gk5=&^12 z`X83Lt1j=g1?IL+a5-5MG{G|~pTUe>1dpFLv*i*s^?7#O=wEm_-GEa_n#&PhLGxdy z(Lq0050_p;i2g29xjk~kf7EWDKMR(8q4wxpINqfaSg)?RFMm3Zy{B@uS&nbo7j%+p YeJ9S)c>n-Fl1W5CRCt{2vp)f!KnF&H&;S4c diff --git a/icons/mob/inhands/weapons/staves_lefthand.dmi b/icons/mob/inhands/weapons/staves_lefthand.dmi index da61d8df47ea9c2074343b8b81b8b8460f265518..151e9645b3716fe9e8e6449f3bd4594c3075d73d 100644 GIT binary patch literal 18923 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 literal 20728 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%0A>6bGF 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 diff --git a/icons/mob/inhands/weapons/staves_righthand.dmi b/icons/mob/inhands/weapons/staves_righthand.dmi index 3cb569627eaa277ac05c964a4e7cda0fff4a59b3..8df69b74cc36b09cc31980e91e0e4fcb62af2d4f 100644 GIT binary patch literal 18673 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 literal 20034 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�z(J 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�kkgc0AHV<;PFBZUl)bC|-hwU1-s7 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 G>^}eq7W|a} literal 30216 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 Q-300D+`C-~x&PvS0J&BZ)c^nh diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi index 9797eb3ee3669e76881910ba2c6491eeca0c2541..53777d102728da4323258169981eeb2f88d6ede5 100644 GIT binary patch literal 31241 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 literal 42309 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 aMWa@`cKa9>qCq+Y06bOFP%M+Tdh>rH28|^E diff --git a/icons/obj/weapon/axe.dmi b/icons/obj/weapon/axe.dmi index 0ff8a436483399e1968ce9d0024e92cf6a980f13..e0a97f17f3041889a3f98f1d205273720d0dea00 100644 GIT binary patch literal 3083 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 literal 3273 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 RK~#90?VSy96tfxut`v|CeP#dv diff --git a/icons/obj/weapon/blunt.dmi b/icons/obj/weapon/blunt.dmi index 480515bbd79403d8ba02016cd71120b565ef7b9e..013f4fd1db2b321e08e6946776745b85cf4e9cda 100644 GIT binary patch literal 4016 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 Op3tQ+qkpr90dO)k60sow diff --git a/icons/obj/weapon/knife.dmi b/icons/obj/weapon/knife.dmi index 2e95a915451237f8725618abfc719d55ba319d24..9cc11ed1dac39d9bd6ea1e5859293845587fe627 100644 GIT binary patch delta 3169 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 Hu0mjflg2v} delta 1533 zcmVGudjb= zQ=gA#yRl+fNJB*n3z0(=Z5aVY7#M(FMq@i7VMs4F3m}4PK{7xqADNk%E*%Kv<>j)n zvZkh{&CShdFD+8Hs_FKg^~v_LBY913X(r=)Dkij!dLu9LyxWUlrjqq)PDc@F zq+0W490TJj!-iOCG>xGOLlKl@-C90~pt8{6ra!Q15!L~}xxOoa{d&65PBcO5N9)lr znc5E?XjvdvBeTbU&P8u9FQKkI*r5f-q;k)M^XtY%3*}#Ijt~CEM>5Ic_rIU+$(A*Q z2o)Ou00eYNL_t(&f$f+JQ{q4ng!3i=B2O_G1wl|DsQ>@p-RvgdRk72vM-r*C?7FI} za>9PyGn=R5{A9V;=6gcj6&(6LDDkz^`T;cHx&c1G@k17W;)fw$Eaka@8$o+P09)h} zq{H(&FXlp)OF4reM01)3nbzk7q0I1G8@apmvBKFPeYj5gb z%uYe?uiAVjUs+W2IP}fOG?SlcfG(B>Xbi?f%;q|Qg5BNs|rv4{gVg6CC zC+z<|+W%Ei8!+}iO+0mb0qgf}dLG*U{Xw7K|5dR(|BU-D9VWCoSbuag9*@8csy_%P zQ*QtF2Ln|s&p-42PrKa|@hSh98~{EcrX7|aPRN0O-l69GpC(=9fL(udb2A=|MjmiPf

g@cZT)&|bsV6yD7Y(KZSMF(JhWk5&Q4KNs(&lfr1TXX>DC&gbfP2ll= z;Sur04hZ=jXX&5#hIh#9K3`;u2LK51y+F*rd^$NW^5^-3;q3pCx)K8ea{i}ywe-mX z-3-q8Iq{uEZn^+|2^sL#0sg?Te0u7vo}Zl#>Aad}YWfRAC*1)9>&+H^;2{2LwR~o( zi*om&4WKlez3}|aW*hMzP&9wV@#(sME3r!hYzK%Rtk-nP}KJ)wk zD7#H)?0_Bs2aAp^tq5Iv|Xw34I>+umgBR4M+k= zBdRS4AdRTD#104}s;%qqf%n5eb@u=Td>88Nc7OsNV7=`~os~vZUkBI#aYU_4 j8d2+#M%2E95nZ4^XEACbhH=JZ00000NkvXXu0mjf`kC`) diff --git a/icons/obj/weapon/spear.dmi b/icons/obj/weapon/spear.dmi index 98b3761430ed1b0c10c5eb17b2d1c47086b9d743..384f1c751bcfdaff23cc179edeecf19d4514539e 100644 GIT binary patch delta 179 zcmV;k08Ib=5Bd*~B!8ZIR9JLGWpiV4X>fFDZ*Bkpc$}5du?oU45C-5md5X~PqSe(! zTBL)0g_4l737Dqb1@rn1E$AdB+y5UQ|8ljsb@zS{?W5;!K(c-oS8+KUIg3^Ylghc_ z%z&Lt*b4<2AjK+L1dU!-oN0@cPAATuC>`wi18D(?(@PQ+&?qtH;U!@wOKk44@=lf5 hzf$=b#*Jspe(^6_i*9JQ&#hU`g#m`L!E~|CF9*VjRto?C delta 182 zcmV;n07?J)5B(32B!8iLR9JLGWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5; z&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KBSJhLb@r6@l|iHkEOv#1y- zWXQ#tR+N~V3Sq+)78j%@7NzGT78e_kpw^H$wFN-6xrsy?3@cGgq{&J7xk)4_CG3Qx k{Jhk7uzJGABGlqES6RW;&jlQF00A|FEpSqk|FO$22T?mw+5i9m diff --git a/icons/obj/weapon/sword.dmi b/icons/obj/weapon/sword.dmi index dc8fd8fd5d7d78e510c79cc23e27de0db4fbceb2..a97b7a8dd57c36a7fc8287cdea5c5191513a0563 100644 GIT binary patch literal 14720 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 E2TU{#PXGV_ From c79296a67c83a11d921d5c8c1d7e801d1adaa2ce Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 11:57:19 -0500 Subject: [PATCH 058/102] updates icon states --- code/datums/components/twohanded.dm | 3 +++ code/game/objects/items/melee/chainsaw.dm | 2 +- code/game/objects/items/melee/energy.dm | 6 +++--- code/game/objects/items/melee/fireaxe.dm | 8 ++++---- code/game/objects/items/melee/knife.dm | 2 +- code/game/objects/items/melee/spear.dm | 12 ++++++------ code/game/objects/items/melee/stunbaton.dm | 2 +- code/game/objects/items/melee/sword.dm | 4 ++-- icons/mob/inhands/weapons/axes_righthand.dmi | Bin 3990 -> 3990 bytes 9 files changed, 21 insertions(+), 18 deletions(-) diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index 51c9268d13ab..5cdd642318ea 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -256,9 +256,12 @@ if(!wielded) return NONE + /* if(!icon_wielded) return NONE source.icon_state = icon_wielded + */ + source.icon_state = "[icon_wielded]_w" return COMSIG_ATOM_NO_UPDATE_ICON_STATE /** * on_moved Triggers on item moved diff --git a/code/game/objects/items/melee/chainsaw.dm b/code/game/objects/items/melee/chainsaw.dm index e16d3b98c255..31d0579e1655 100644 --- a/code/game/objects/items/melee/chainsaw.dm +++ b/code/game/objects/items/melee/chainsaw.dm @@ -3,7 +3,7 @@ /obj/item/chainsaw name = "chainsaw" desc = "A versatile power tool. Useful for limbing trees and delimbing humans." - icon_state = "chainsaw_off" + icon_state = "chainsaw" icon = 'icons/obj/weapon/axe.dmi' lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 0ac00099aa09..be073cc12637 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -60,7 +60,7 @@ /obj/item/melee/transforming/energy/axe name = "energy axe" desc = "An energized battle axe." - icon_state = "axe0" + icon_state = "axe" lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi' force = 40 @@ -126,7 +126,7 @@ force = 18 //About as much as a spear hitsound = 'sound/weapons/circsawhit.ogg' icon = 'icons/obj/surgery.dmi' - icon_state = "esaw_0" + icon_state = "esaw" sword_color = null //stops icon from breaking when turned on. hitcost = 75 //Costs more than a standard cyborg esword w_class = WEIGHT_CLASS_NORMAL @@ -248,7 +248,7 @@ /obj/item/melee/transforming/energy/ctf name = "energy sword" desc = "That cable over there, I'm going to cut it." - icon_state = "plasmasword0" + icon_state = "plasmasword" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' sharpness = IS_SHARP diff --git a/code/game/objects/items/melee/fireaxe.dm b/code/game/objects/items/melee/fireaxe.dm index bfbed0fe361b..da0ad1d8c65c 100644 --- a/code/game/objects/items/melee/fireaxe.dm +++ b/code/game/objects/items/melee/fireaxe.dm @@ -38,7 +38,7 @@ wielded = FALSE /obj/item/melee/axe/update_icon_state() - icon_state = "[base_icon_state]0" + icon_state = "[base_icon_state]" return ..() /obj/item/melee/axe/afterattack(atom/A, mob/user, proximity) @@ -53,13 +53,13 @@ /obj/item/melee/axe/fire // DEM AXES MAN, marker -Agouri name = "fire axe" desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" - icon_state = "fireaxe0" + icon_state = "fireaxe" base_icon_state = "fireaxe" /obj/item/melee/axe/bone // Blatant imitation of the fireaxe, but made out of bone. name = "bone axe" desc = "A large, vicious axe crafted out of several sharpened bone plates and crudely tied together. Made of monsters, by killing monsters, for killing monsters." - icon_state = "bone_axe0" + icon_state = "bone_axe" base_icon_state = "bone_axe" /obj/item/melee/axe/scrap @@ -69,4 +69,4 @@ /obj/item/melee/axe/scrap/ComponentInitialize() . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=22, icon_wielded="[base_icon_state]1") + AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=22, icon_wielded="[base_icon_state]_w") diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm index 83022e7125ff..9ed144ee3d38 100644 --- a/code/game/objects/items/melee/knife.dm +++ b/code/game/objects/items/melee/knife.dm @@ -181,7 +181,7 @@ force = 20 w_class = WEIGHT_CLASS_NORMAL throwforce = 23 - icon_state = "switchblade_ext" + icon_state = "switchblade_on" attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' sharpness = IS_SHARP diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index 42717117fd8e..fc1446edd676 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -1,6 +1,6 @@ //spears /obj/item/melee/spear - icon_state = "spearglass0" + icon_state = "spearglass" icon = 'icons/obj/weapon/spear.dmi' lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' @@ -26,10 +26,10 @@ . = ..() AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad. AddComponent(/datum/component/jousting) - AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1") + AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]_w") /obj/item/melee/spear/update_icon_state() - icon_state = "[icon_prefix]0" + icon_state = "[icon_prefix]" return ..() /obj/item/melee/spear/CheckParts(list/parts_list) @@ -37,7 +37,7 @@ if (istype(tip, /obj/item/shard/plasma)) throwforce = 21 icon_prefix = "spearplasma" - AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1") + AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]_w") update_appearance() qdel(tip) ..() @@ -57,7 +57,7 @@ /obj/item/melee/spear/bone/ComponentInitialize() . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1") + AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]_w") /obj/item/melee/spear/explosive name = "explosive lance" @@ -76,7 +76,7 @@ /obj/item/melee/spear/explosive/ComponentInitialize() . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1") + AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]_w") /// triggered on wield of two handed item /obj/item/melee/spear/explosive/proc/on_wield(obj/item/source, mob/user) diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index 6f268acf6d81..4fad6961da4b 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -99,7 +99,7 @@ /obj/item/melee/baton/update_icon_state() if(turned_on) - icon_state = "[initial(icon_state)]_active" + icon_state = "[initial(icon_state)]_on" return ..() if(!cell) icon_state = "[initial(icon_state)]_nocell" diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index dc6e06c2f6ba..9f51c87d7841 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -148,8 +148,8 @@ var/extended = FALSE var/extend_sound = 'sound/weapons/batonextend.ogg' - var/on_icon_state = "suns-tsword_ext" - var/on_item_state = "suns-tsword_ext" + var/on_icon_state = "suns-tsword_on" + var/on_item_state = "suns-tsword_on" var/off_icon_state = "suns-tsword" var/off_item_state = "suns-tsword" diff --git a/icons/mob/inhands/weapons/axes_righthand.dmi b/icons/mob/inhands/weapons/axes_righthand.dmi index 421d99eecf369a4687fe9d6a2fc122e4059c6d36..8a29d67a8871f7a3de74b6914fcf2dbae8b53ae8 100644 GIT binary patch delta 42 zcmV+_0M-ANAC@1GpC5}aC#W(hKQA?&G^Mx{Dl549xqyQU04kVR5!ShaY_Y!B4p>SN AP5=M^ delta 42 zcmV+_0M-ANAC@1GpC7|%K9bU;{Jhk764l~TsI1`X=K>Be0Q5*$-JR*Gxv{?34&ikd AJ^%m! From c5f0cce6afbc4810aa77cb2efea05792020d6ab1 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 12:03:24 -0500 Subject: [PATCH 059/102] more missing icon_state --- code/game/objects/items/melee/fireaxe.dm | 2 +- code/game/objects/items/melee/spear.dm | 6 +++--- code/game/objects/items/melee/stunbaton.dm | 12 ++++++------ code/game/objects/items/melee/sword.dm | 10 +++++----- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/code/game/objects/items/melee/fireaxe.dm b/code/game/objects/items/melee/fireaxe.dm index da0ad1d8c65c..1277340c7d7c 100644 --- a/code/game/objects/items/melee/fireaxe.dm +++ b/code/game/objects/items/melee/fireaxe.dm @@ -23,7 +23,7 @@ /obj/item/melee/axe/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools - AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=24, icon_wielded="[base_icon_state]1") + AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=24, icon_wielded="[base_icon_state]_w") /// triggered on wield of two handed item /obj/item/melee/axe/proc/on_wield(obj/item/source, mob/user) diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index fc1446edd676..ddf4314d6efc 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -46,9 +46,9 @@ * Bone Spear */ /obj/item/melee/spear/bone //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. - icon_state = "bone_spear0" + icon_state = "bone_spear" name = "bone spear" - base_icon_state = "bone_spear0" + base_icon_state = "bone_spear" icon_prefix = "bone_spear" desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." //this should be a plasma spear or worse. @@ -61,7 +61,7 @@ /obj/item/melee/spear/explosive name = "explosive lance" - icon_state = "spearbomb0" + icon_state = "spearbomb" base_icon_state = "spearbomb" icon_prefix = "spearbomb" var/obj/item/grenade/explosive = null diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index 4fad6961da4b..458393918db8 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -493,7 +493,7 @@ /obj/item/melee/classic_baton/telescopic name = "telescopic baton" desc = "A compact yet robust personal defense weapon. Can be concealed when folded." - icon_state = "telebaton_0" + icon_state = "telebaton" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' item_state = null @@ -504,8 +504,8 @@ on = FALSE on_sound = 'sound/weapons/batonextend.ogg' - on_icon_state = "telebaton_1" - off_icon_state = "telebaton_0" + on_icon_state = "telebaton_on" + off_icon_state = "telebaton" on_item_state = "nullrod" active_force = 10 force_off = 0 @@ -537,7 +537,7 @@ /obj/item/melee/classic_baton/telescopic/contractor_baton name = "contractor baton" desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets." - icon_state = "contractor_baton_0" + icon_state = "contractor_baton" item_state = null slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL @@ -550,8 +550,8 @@ on_sound = 'sound/weapons/contractorbatonextend.ogg' on_stun_sound = 'sound/effects/contractorbatonhit.ogg' - on_icon_state = "contractor_baton_1" - off_icon_state = "contractor_baton_0" + on_icon_state = "contractor_baton_on" + off_icon_state = "contractor_baton" on_item_state = "contractor_baton" active_force = 16 force_off = 5 diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 9f51c87d7841..038d652188a1 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -41,7 +41,7 @@ /obj/item/melee/sword/scrap name = "scrap sword" desc = "A jagged and painful weapon only effective on targets without an armour" - icon_state = "machete0" + icon_state = "machete" force = 24 throwforce = 10 armour_penetration = -35 @@ -50,7 +50,7 @@ /obj/item/melee/sword/mass name = "mass produced machete" desc = "A middle ground between a machete and a short sword. A simple construction of stamped steel but its so cheap its hard to complain. Its right between being a one hand and two handed weapon" - icon_state = "machete0" + icon_state = "machete" base_icon_state = "machete" force = 20 throwforce = 15 @@ -75,8 +75,8 @@ /obj/item/melee/sword/chainsaw name = "sacred chainsaw sword" desc = "Suffer not a heretic to live." - icon_state = "chainswordon" - item_state = "chainswordon" + icon_state = "chainsword_on" + item_state = "chainsword_on" force = 15 throwforce = 10 armour_penetration = 25 @@ -317,7 +317,7 @@ //HF blade /obj/item/melee/sword/vibro - icon_state = "hfrequency0" + icon_state = "hfrequency" base_icon_state = "hfrequency" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' From 0b8b15fbb365e9d51895d7d72d2e126d923e5e08 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 12:35:04 -0500 Subject: [PATCH 060/102] better unit tests to help me --- code/modules/unit_tests/_unit_tests.dm | 1 + code/modules/unit_tests/icons/inhands.dm | 2 +- .../modules/unit_tests/icons/missing_icons.dm | 13 +++++++++++++ icons/obj/surgery.dmi | Bin 45133 -> 40176 bytes icons/obj/weapon/axe.dmi | Bin 3083 -> 3082 bytes 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 4b4e10edd7ac..3c1fb2aba57e 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -66,6 +66,7 @@ #ifdef BASIC_TESTS //#include "icons/inhands.dm" +#include "icons/inhands.dm" #include "icons/missing_icons.dm" #include "icons/spritesheets.dm" #include "icons/worn_icons.dm" diff --git a/code/modules/unit_tests/icons/inhands.dm b/code/modules/unit_tests/icons/inhands.dm index 858c6d2f2840..8e9b82237afe 100644 --- a/code/modules/unit_tests/icons/inhands.dm +++ b/code/modules/unit_tests/icons/inhands.dm @@ -26,7 +26,7 @@ //Add EVEN MORE paths if needed here! //generate_possible_icon_states_list("your/folder/path/inhands/") - for(var/obj/item/item_path as anything in subtypesof(/obj/item)) + for(var/obj/item/item_path as anything in subtypesof(/obj/item/melee)) if(initial(item_path.item_flags) & ABSTRACT) continue diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index f548d2844a0f..8e5dd654ec35 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -26,10 +26,18 @@ //generate_possible_icon_states_list("your/folder/path/") var/list/bad_list = list() for(var/obj/obj_path as anything in subtypesof(/obj)) + var/search_for_w = FALSE + var/search_for_on = FALSE if(ispath(obj_path, /obj/item)) var/obj/item/item_path = obj_path if(initial(item_path.item_flags) & ABSTRACT) continue + if(ispath(obj_path, /obj/item/melee)) + var/obj/item/melee/melee_item = new(item_path) + if(melee_item.GetComponent(/datum/component/two_handed)) + search_for_w = TRUE + if(melee_item.GetComponent(/datum/component/transforming)) + search_for_on = TRUE var/icon = initial(obj_path.icon) if(isnull(icon)) @@ -49,6 +57,11 @@ bad_list[icon] += list(icon_state) + if(search_for_on && icon_exists(icon, "[icon_state]_on")) + TEST_FAIL("Missing on icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"") + if(search_for_w && icon_exists(icon, "[icon_state]_on")) + TEST_FAIL("Missing wielded icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"") + var/match_message if(icon_state in possible_icon_states) for(var/file_place in possible_icon_states[icon_state]) diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 816d3671a8d991452223edcd8bcaa1f2e15e7c27..e213c294d6696b70da1b68a2be600940edb6a653 100644 GIT binary patch literal 40176 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�l=b4lD6VZM?6T3=^X$?6# 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 L=qOh{whsFrv;VRO literal 45133 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 diff --git a/icons/obj/weapon/axe.dmi b/icons/obj/weapon/axe.dmi index e0a97f17f3041889a3f98f1d205273720d0dea00..46d9982ab5f22aeb816156f21c045f2d126c88cf 100644 GIT binary patch delta 160 zcmV;R0AK%$7>XE>BmuIKB`beoo7sYEr7c$9-s140Vs{AqfB2G+q-6W<&=0IV_Vk9% zYirn!HC0VX)H0}Kwi`+m>az;7@c{xRS&Z5t+>ytE5~-a}xiuxDg9&H-NoKi|HOQB> ze4|-VK@bWgK?BmuLLB`bg8n%aVEr7c$9-s12g!|o9H|L`RtNy(1gsUKK-?&$-a z*VeEDYpR-(s6|l8?01wX)K?W|;{yatvXI&#JdwwO5}}<>xh*Bq!GyE^C9~Yc8szI* ze$gzbAdCt_mW$Skwd|-s8xN6Nv&^QG3B188$+~JbDVB<*%ue#7gZmMmHA~hF?dN-M P{#1h{hmj0avEM5TP~lRx From 85117b86d7551723a6440f1301c9ad4695767645 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 12:40:28 -0500 Subject: [PATCH 061/102] tweak to test, only fail if only 1 inhand is missing cause then its clearly a mistake --- code/modules/unit_tests/icons/inhands.dm | 6 +++--- code/modules/unit_tests/icons/missing_icons.dm | 1 + code/modules/unit_tests/outfit_sanity.dm | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/unit_tests/icons/inhands.dm b/code/modules/unit_tests/icons/inhands.dm index 8e9b82237afe..29fb76561644 100644 --- a/code/modules/unit_tests/icons/inhands.dm +++ b/code/modules/unit_tests/icons/inhands.dm @@ -26,7 +26,7 @@ //Add EVEN MORE paths if needed here! //generate_possible_icon_states_list("your/folder/path/inhands/") - for(var/obj/item/item_path as anything in subtypesof(/obj/item/melee)) + for(var/obj/item/item_path as anything in subtypesof(/obj/item)) if(initial(item_path.item_flags) & ABSTRACT) continue @@ -53,7 +53,7 @@ match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'") if(!(skip_left || skip_right) && !lefthand_file && !righthand_file) - TEST_FAIL("Missing both icon files for [item_path].\n\titem_state = \"[item_state]\"[match_message]") + log_test("Missing both icon files for [item_path].\n\titem_state = \"[item_state]\"[match_message]") continue var/missing_left @@ -80,7 +80,7 @@ if(!match_message && right_fallback && left_fallback) fallback_log_message += "\n\t[item_path] has invalid value, using fallback icon.\n\titem_state = \"[item_state]\"" continue - TEST_FAIL("Missing inhand sprites for [item_path] in both '[lefthand_file]' & '[righthand_file]'.\n\titem_state = \"[item_state]\"[match_message]") + log_test("Missing inhand sprites for [item_path] in both '[lefthand_file]' & '[righthand_file]'.\n\titem_state = \"[item_state]\"[match_message]") else if(missing_left) TEST_FAIL("Missing left inhand sprite for [item_path] in '[lefthand_file]'[left_fallback ? ", using fallback icon" : null].\n\titem_state = \"[item_state]\"[match_message]") else if(missing_right) diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index 8e5dd654ec35..2f03f923dabd 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -38,6 +38,7 @@ search_for_w = TRUE if(melee_item.GetComponent(/datum/component/transforming)) search_for_on = TRUE + qdel(melee_item) var/icon = initial(obj_path.icon) if(isnull(icon)) diff --git a/code/modules/unit_tests/outfit_sanity.dm b/code/modules/unit_tests/outfit_sanity.dm index 4dc12b4dc6e3..9cb87f60ac7a 100644 --- a/code/modules/unit_tests/outfit_sanity.dm +++ b/code/modules/unit_tests/outfit_sanity.dm @@ -67,7 +67,7 @@ if (outfit.random != TRUE) TEST_FAIL("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") else - log_world("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") + log_test("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") #undef CHECK_OUTFIT_SLOT From 8970218018be0b67fd4a3af850ffbbf666d1469a Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 12:47:40 -0500 Subject: [PATCH 062/102] tweaks to unit tests again --- code/modules/unit_tests/icons/inhands.dm | 6 +++--- code/modules/unit_tests/icons/worn_icons.dm | 2 +- code/modules/unit_tests/outfit_sanity.dm | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/unit_tests/icons/inhands.dm b/code/modules/unit_tests/icons/inhands.dm index 29fb76561644..1c75da652501 100644 --- a/code/modules/unit_tests/icons/inhands.dm +++ b/code/modules/unit_tests/icons/inhands.dm @@ -53,7 +53,7 @@ match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'") if(!(skip_left || skip_right) && !lefthand_file && !righthand_file) - log_test("Missing both icon files for [item_path].\n\titem_state = \"[item_state]\"[match_message]") + WARNING("Missing both icon files for [item_path].\n\titem_state = \"[item_state]\"[match_message]") continue var/missing_left @@ -80,7 +80,7 @@ if(!match_message && right_fallback && left_fallback) fallback_log_message += "\n\t[item_path] has invalid value, using fallback icon.\n\titem_state = \"[item_state]\"" continue - log_test("Missing inhand sprites for [item_path] in both '[lefthand_file]' & '[righthand_file]'.\n\titem_state = \"[item_state]\"[match_message]") + WARNING("Missing inhand sprites for [item_path] in both '[lefthand_file]' & '[righthand_file]'.\n\titem_state = \"[item_state]\"[match_message]") else if(missing_left) TEST_FAIL("Missing left inhand sprite for [item_path] in '[lefthand_file]'[left_fallback ? ", using fallback icon" : null].\n\titem_state = \"[item_state]\"[match_message]") else if(missing_right) @@ -90,5 +90,5 @@ TEST_FAIL("Invalid item_state values should be set to null if there isn't a valid icon.[fallback_log_message]") if(unset_inhand_var_message) - log_test("\tNotice - Possible inhand icon matches found. It is best to be explicit with inhand sprite values.[unset_inhand_var_message]") + WARNING("\tNotice - Possible inhand icon matches found. It is best to be explicit with inhand sprite values.[unset_inhand_var_message]") diff --git a/code/modules/unit_tests/icons/worn_icons.dm b/code/modules/unit_tests/icons/worn_icons.dm index eb2d84b73f68..9e3f59252d0c 100644 --- a/code/modules/unit_tests/icons/worn_icons.dm +++ b/code/modules/unit_tests/icons/worn_icons.dm @@ -23,7 +23,7 @@ var/list/already_warned_icons = list() - for(var/obj/item/item_path as anything in (subtypesof(/obj/item/clothing))) + for(var/obj/item/item_path as anything in (subtypesof(/obj/item))) var/cached_slot_flags = initial(item_path.slot_flags) if(!cached_slot_flags || (cached_slot_flags & ITEM_SLOT_LPOCKET) || (cached_slot_flags & ITEM_SLOT_RPOCKET) || initial(item_path.item_flags) & ABSTRACT) continue diff --git a/code/modules/unit_tests/outfit_sanity.dm b/code/modules/unit_tests/outfit_sanity.dm index 9cb87f60ac7a..0ba0a8f758ad 100644 --- a/code/modules/unit_tests/outfit_sanity.dm +++ b/code/modules/unit_tests/outfit_sanity.dm @@ -67,7 +67,7 @@ if (outfit.random != TRUE) TEST_FAIL("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") else - log_test("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") + WARNING("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") #undef CHECK_OUTFIT_SLOT From e1ef45bc766b15aa3e8096c6f35a6043b255bbba Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 12:53:38 -0500 Subject: [PATCH 063/102] what if i just did it again --- .../modules/unit_tests/icons/missing_icons.dm | 47 +++++----- code/modules/unit_tests/icons/worn_icons.dm | 94 ++++++++++++++++++- 2 files changed, 118 insertions(+), 23 deletions(-) diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index 2f03f923dabd..84a2e2dd961f 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -26,6 +26,7 @@ //generate_possible_icon_states_list("your/folder/path/") var/list/bad_list = list() for(var/obj/obj_path as anything in subtypesof(/obj)) + var/icons_to_find = list() var/search_for_w = FALSE var/search_for_on = FALSE if(ispath(obj_path, /obj/item)) @@ -40,32 +41,34 @@ search_for_on = TRUE qdel(melee_item) - var/icon = initial(obj_path.icon) - if(isnull(icon)) - continue - var/icon_state = initial(obj_path.icon_state) - if(isnull(icon_state)) - continue + var/icons_to_find += initial(obj_path.icon) - if(length(bad_list) && (icon_state in bad_list[icon])) - continue + for(var/icon in icons_to_find) + if(isnull(icon)) + continue + var/icon_state = initial(obj_path.icon_state) + if(isnull(icon_state)) + continue - if(icon_exists(icon, icon_state)) - continue + if(length(bad_list) && (icon_state in bad_list[icon])) + continue - if(icon_state == "nothing") - continue + if(icon_exists(icon, icon_state)) + continue - bad_list[icon] += list(icon_state) + if(icon_state == "nothing") + continue + + bad_list[icon] += list(icon_state) - if(search_for_on && icon_exists(icon, "[icon_state]_on")) - TEST_FAIL("Missing on icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"") - if(search_for_w && icon_exists(icon, "[icon_state]_on")) - TEST_FAIL("Missing wielded icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"") + if(search_for_on && icon_exists(icon, "[icon_state]_on")) + TEST_FAIL("Missing on icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"") + if(search_for_w && icon_exists(icon, "[icon_state]_on")) + TEST_FAIL("Missing wielded icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"") - var/match_message - if(icon_state in possible_icon_states) - for(var/file_place in possible_icon_states[icon_state]) - match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'") - TEST_FAIL("Missing icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"[match_message]") + var/match_message + if(icon_state in possible_icon_states) + for(var/file_place in possible_icon_states[icon_state]) + match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'") + TEST_FAIL("Missing icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"[match_message]") diff --git a/code/modules/unit_tests/icons/worn_icons.dm b/code/modules/unit_tests/icons/worn_icons.dm index 9e3f59252d0c..2c7a7333bf8d 100644 --- a/code/modules/unit_tests/icons/worn_icons.dm +++ b/code/modules/unit_tests/icons/worn_icons.dm @@ -23,7 +23,7 @@ var/list/already_warned_icons = list() - for(var/obj/item/item_path as anything in (subtypesof(/obj/item))) + for(var/obj/item/item_path as anything in (subtypesof(/obj/item/clothing))) var/cached_slot_flags = initial(item_path.slot_flags) if(!cached_slot_flags || (cached_slot_flags & ITEM_SLOT_LPOCKET) || (cached_slot_flags & ITEM_SLOT_RPOCKET) || initial(item_path.item_flags) & ABSTRACT) continue @@ -114,3 +114,95 @@ if(fail_reasons) TEST_FAIL(fail_reasons) + + for(var/obj/item/item_path as anything in (subtypesof(/obj/item) - (typesof(/obj/item/clothing) + typesof(/obj/item/mod)))) + var/cached_slot_flags = initial(item_path.slot_flags) + if(!cached_slot_flags || (cached_slot_flags & ITEM_SLOT_LPOCKET) || (cached_slot_flags & ITEM_SLOT_RPOCKET) || initial(item_path.item_flags) & ABSTRACT) + continue + + var/mob_overlay_icon = initial(item_path.mob_overlay_icon) //override icon file. where our sprite is contained if set. (ie modularity stuff) + var/mob_overlay_state = initial(item_path.mob_overlay_state) //overrides icon_state. + var/icon_state = mob_overlay_state || initial(item_path.icon_state) //icon_state. what sprite name we are looking for. + + + if(isnull(icon_state)) + continue //no sprite for the item. + if(icon_state in already_warned_icons) + continue + + var/match_message + if(icon_state in possible_icon_states) + for(var/file_place in possible_icon_states[icon_state]) + match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'") + + if(mob_overlay_icon) //easiest to check since we override everything. this automatically includes downstream support. + if(!(icon_state in icon_states(mob_overlay_icon, 1))) + TEST_FAIL("[item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in mob_overlay_icon override file, '[mob_overlay_icon]'[match_message]") + continue + + var/icon_file //checks against all the default icon locations if one isn't defined. + var/fail_reasons + var/spacer + + + if(cached_slot_flags & ITEM_SLOT_BACK) + icon_file = 'icons/mob/clothing/back.dmi' + + if(!(icon_state in icon_states(icon_file, 1))) + already_warned_icons += icon_state + fail_reasons += "[item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in '[icon_file]'[match_message]" + spacer = "\n\t" + + /* + if(cached_slot_flags & ITEM_SLOT_ID) + icon_file = 'icons/mob/clothing/id.dmi' + if(!(icon_state in icon_states(icon_file, 1))) + already_warned_icons += icon_state + fail_reasons += "[spacer][item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in '[icon_file]'[match_message]" + spacer = "\n\t" + */ + + if(cached_slot_flags & ITEM_SLOT_GLOVES) + icon_file = 'icons/mob/clothing/hands.dmi' + if(!(icon_state in icon_states(icon_file, 1))) + already_warned_icons += icon_state + fail_reasons += "[spacer][item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in '[icon_file]'[match_message]" + spacer = "\n\t" + + if(cached_slot_flags & ITEM_SLOT_EYES) + icon_file = 'icons/mob/clothing/eyes.dmi' + if(!(icon_state in icon_states(icon_file, 1))) + already_warned_icons += icon_state + fail_reasons += "[spacer][item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in '[icon_file]'[match_message]" + spacer = "\n\t" + + if(cached_slot_flags & ITEM_SLOT_EARS) + icon_file = 'icons/mob/clothing/ears.dmi' + if(!(icon_state in icon_states(icon_file, 1))) + already_warned_icons += icon_state + fail_reasons += "[spacer][item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in '[icon_file]'[match_message]" + spacer = "\n\t" + + if(cached_slot_flags & ITEM_SLOT_NECK) + icon_file = 'icons/mob/clothing/neck.dmi' + if(!(icon_state in icon_states(icon_file, 1))) + already_warned_icons += icon_state + fail_reasons += "[spacer][item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in '[icon_file]'[match_message]" + spacer = "\n\t" + + if(cached_slot_flags & ITEM_SLOT_MASK) + icon_file = 'icons/mob/clothing/mask.dmi' + if(!(icon_state in icon_states(icon_file, 1))) + already_warned_icons += icon_state + fail_reasons += "[spacer][item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in '[icon_file]'[match_message]" + spacer = "\n\t" + + if(cached_slot_flags & ITEM_SLOT_BELT) + icon_file = 'icons/mob/clothing/belt.dmi' + if(!(icon_state in icon_states(icon_file, 1))) + already_warned_icons += icon_state + fail_reasons += "[spacer][item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in '[icon_file]'[match_message]" + spacer = "\n\t" + + if(fail_reasons) + WARNING(fail_reasons) From a72ffafb4e6bfd65a1905fe306eeecba01377473 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 12:58:00 -0500 Subject: [PATCH 064/102] tweaks so that its eaiser to search for _w and _on --- code/modules/unit_tests/icons/missing_icons.dm | 15 +++++++-------- code/modules/unit_tests/icons/worn_icons.dm | 1 + 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index 84a2e2dd961f..d69a6e9d9af7 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -26,7 +26,7 @@ //generate_possible_icon_states_list("your/folder/path/") var/list/bad_list = list() for(var/obj/obj_path as anything in subtypesof(/obj)) - var/icons_to_find = list() + var/list/icons_to_find = list() var/search_for_w = FALSE var/search_for_on = FALSE if(ispath(obj_path, /obj/item)) @@ -41,7 +41,11 @@ search_for_on = TRUE qdel(melee_item) - var/icons_to_find += initial(obj_path.icon) + icons_to_find += initial(obj_path.icon) + if(search_for_w) + icons_to_find += "[initial(obj_path.icon)]_w" + if(search_for_on) + icons_to_find += "[initial(obj_path.icon)]_on" for(var/icon in icons_to_find) if(isnull(icon)) @@ -58,13 +62,8 @@ if(icon_state == "nothing") continue - - bad_list[icon] += list(icon_state) - if(search_for_on && icon_exists(icon, "[icon_state]_on")) - TEST_FAIL("Missing on icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"") - if(search_for_w && icon_exists(icon, "[icon_state]_on")) - TEST_FAIL("Missing wielded icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"") + bad_list[icon] += list(icon_state) var/match_message if(icon_state in possible_icon_states) diff --git a/code/modules/unit_tests/icons/worn_icons.dm b/code/modules/unit_tests/icons/worn_icons.dm index 2c7a7333bf8d..ce397315efec 100644 --- a/code/modules/unit_tests/icons/worn_icons.dm +++ b/code/modules/unit_tests/icons/worn_icons.dm @@ -115,6 +115,7 @@ if(fail_reasons) TEST_FAIL(fail_reasons) + //The exact same test expect this time we warn instead of fail because most items dont really NEED to apear on a player for(var/obj/item/item_path as anything in (subtypesof(/obj/item) - (typesof(/obj/item/clothing) + typesof(/obj/item/mod)))) var/cached_slot_flags = initial(item_path.slot_flags) if(!cached_slot_flags || (cached_slot_flags & ITEM_SLOT_LPOCKET) || (cached_slot_flags & ITEM_SLOT_RPOCKET) || initial(item_path.item_flags) & ABSTRACT) From c7a992ebc2cd03f3eb02f4574bc933f6528bd021 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 13:18:47 -0500 Subject: [PATCH 065/102] bad_types? --- code/game/atoms_movable.dm | 3 +++ code/modules/unit_tests/icons/missing_icons.dm | 14 ++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 79326ab9e2ad..e0312f21f836 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -75,6 +75,9 @@ /// Whether a user will face atoms on entering them with a mouse. Despite being a mob variable, it is here for performance var/face_mouse = FALSE + /// Use path Ex:(bad_type = obj/item). Generally for abstract code objects, atoms with a set bad_type can never be selected by spawner and is ignored in some tests. Examples include parent objects which should only exist within the code. + var/bad_type + /atom/movable/Initialize(mapload) . = ..() switch(blocks_emissive) diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index d69a6e9d9af7..3ae1d439fcf9 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -29,6 +29,9 @@ var/list/icons_to_find = list() var/search_for_w = FALSE var/search_for_on = FALSE + + if(obj_path == initial(obj_path.bad_type)) + continue if(ispath(obj_path, /obj/item)) var/obj/item/item_path = obj_path if(initial(item_path.item_flags) & ABSTRACT) @@ -41,16 +44,16 @@ search_for_on = TRUE qdel(melee_item) - icons_to_find += initial(obj_path.icon) + icon = initial(obj_path.icon) + var/init_icon_path = initial(obj_path.icon_state) if(search_for_w) - icons_to_find += "[initial(obj_path.icon)]_w" + icons_to_find += "[init_icon_path]_w" if(search_for_on) - icons_to_find += "[initial(obj_path.icon)]_on" + icons_to_find += "[init_icon_path]_on" - for(var/icon in icons_to_find) + for(var/icon_state in icons_to_find) if(isnull(icon)) continue - var/icon_state = initial(obj_path.icon_state) if(isnull(icon_state)) continue @@ -70,4 +73,3 @@ for(var/file_place in possible_icon_states[icon_state]) match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'") TEST_FAIL("Missing icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"[match_message]") - From 2abc862e4bed1751a3b04b6b102e32db10ecff86 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 13:27:13 -0500 Subject: [PATCH 066/102] oops! --- code/modules/unit_tests/icons/missing_icons.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index 3ae1d439fcf9..6f1062c5e05e 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -44,7 +44,7 @@ search_for_on = TRUE qdel(melee_item) - icon = initial(obj_path.icon) + var/icon = initial(obj_path.icon) var/init_icon_path = initial(obj_path.icon_state) if(search_for_w) icons_to_find += "[init_icon_path]_w" From 5aa1d01e5d95b8f191a5f3ccc86adc2f142ce02c Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 13:38:21 -0500 Subject: [PATCH 067/102] isbadpath --- code/__DEFINES/is_helpers.dm | 2 ++ code/game/objects/items.dm | 1 + code/modules/projectiles/gun.dm | 2 ++ code/modules/projectiles/guns/ballistic.dm | 2 +- code/modules/unit_tests/icons/inhands.dm | 2 +- code/modules/unit_tests/icons/missing_icons.dm | 2 +- code/modules/unit_tests/icons/worn_icons.dm | 2 +- 7 files changed, 9 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index d1db31e6a4fc..3950c75e2880 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -10,6 +10,8 @@ #define isgenerator(A) (istype(A, /generator)) +#define isbadpath(A) (A == initial(A.bad_path)) + //Turfs //#define isturf(A) (istype(A, /turf)) This is actually a byond built-in. Added here for completeness sake. diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 92cbc1e69c7b..2b8e9a820041 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -15,6 +15,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb name = "item" icon = 'icons/obj/items.dmi' blocks_emissive = EMISSIVE_BLOCK_GENERIC + bad_type = /obj/item ///icon state name for inhand overlays var/item_state = null ///Icon file for left hand inhand overlays diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index f97dc5a5ce86..fe8ee0646eb3 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -21,6 +21,8 @@ //trigger guard on the weapon, hulks can't fire them with their big meaty fingers trigger_guard = TRIGGER_GUARD_NORMAL + bad_type = /obj/item/gun + ///The manufacturer of this weapon. For flavor mostly. If none, this will not show. var/manufacturer = MANUFACTURER_NONE diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 0288813fd089..77b294c516d0 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -9,7 +9,7 @@ desc = "Now comes in flavors like GUN. Uses 10mm ammo, for some reason." name = "projectile gun" w_class = WEIGHT_CLASS_NORMAL - + bad_type = /obj/item/gun/ballistic has_safety = TRUE safety = TRUE diff --git a/code/modules/unit_tests/icons/inhands.dm b/code/modules/unit_tests/icons/inhands.dm index 1c75da652501..5927ccfb49fe 100644 --- a/code/modules/unit_tests/icons/inhands.dm +++ b/code/modules/unit_tests/icons/inhands.dm @@ -27,7 +27,7 @@ //generate_possible_icon_states_list("your/folder/path/inhands/") for(var/obj/item/item_path as anything in subtypesof(/obj/item)) - if(initial(item_path.item_flags) & ABSTRACT) + if(initial(item_path.item_flags) & ABSTRACT || isbadpath(item_path)) continue var/skip_left diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index 6f1062c5e05e..ec4c48291970 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -30,7 +30,7 @@ var/search_for_w = FALSE var/search_for_on = FALSE - if(obj_path == initial(obj_path.bad_type)) + if(isbadpath(obj_path)) continue if(ispath(obj_path, /obj/item)) var/obj/item/item_path = obj_path diff --git a/code/modules/unit_tests/icons/worn_icons.dm b/code/modules/unit_tests/icons/worn_icons.dm index ce397315efec..21623e762d31 100644 --- a/code/modules/unit_tests/icons/worn_icons.dm +++ b/code/modules/unit_tests/icons/worn_icons.dm @@ -25,7 +25,7 @@ for(var/obj/item/item_path as anything in (subtypesof(/obj/item/clothing))) var/cached_slot_flags = initial(item_path.slot_flags) - if(!cached_slot_flags || (cached_slot_flags & ITEM_SLOT_LPOCKET) || (cached_slot_flags & ITEM_SLOT_RPOCKET) || initial(item_path.item_flags) & ABSTRACT) + if(!cached_slot_flags || (cached_slot_flags & ITEM_SLOT_LPOCKET) || (cached_slot_flags & ITEM_SLOT_RPOCKET) || initial(item_path.item_flags) & ABSTRACT || isbadpath(item_path)) continue var/mob_overlay_icon = initial(item_path.mob_overlay_icon) //override icon file. where our sprite is contained if set. (ie modularity stuff) From 8767f3c8cc8f0f146b06797a8c5b0f1b560e4878 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 13:43:48 -0500 Subject: [PATCH 068/102] ah wrong name for that --- code/__DEFINES/is_helpers.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 3950c75e2880..f872239f49fd 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -10,7 +10,8 @@ #define isgenerator(A) (istype(A, /generator)) -#define isbadpath(A) (A == initial(A.bad_path)) +#define isbadpath(A) (A == initial(A.bad_type)) +#define isbadtype(A) (A.type == A.bad_type) //Turfs //#define isturf(A) (istype(A, /turf)) This is actually a byond built-in. Added here for completeness sake. From 19d712585baf8794073306ed1bc16b6c679ec56e Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 13:48:06 -0500 Subject: [PATCH 069/102] to save me some time --- code/_compile_options.dm | 1 + code/modules/unit_tests/_unit_tests.dm | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/code/_compile_options.dm b/code/_compile_options.dm index ee7638ea853d..f06a59980823 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -81,6 +81,7 @@ #ifdef ALL_TESTS #define BASIC_TESTS +#define ICON_TESTS #define CREATE_AND_DESTROY_TEST #define PLANET_GEN_TEST #define RUIN_PLACEMENT_TEST diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 3c1fb2aba57e..b0411c170d73 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -65,11 +65,6 @@ #ifdef BASIC_TESTS -//#include "icons/inhands.dm" -#include "icons/inhands.dm" -#include "icons/missing_icons.dm" -#include "icons/spritesheets.dm" -#include "icons/worn_icons.dm" #include "anchored_mobs.dm" #include "autowiki.dm" #include "bespoke_id.dm" @@ -115,6 +110,13 @@ #endif //BASIC_TESTS +#ifdef ICON_TESTS +#include "icons/inhands.dm" +#include "icons/missing_icons.dm" +#include "icons/spritesheets.dm" +#include "icons/worn_icons.dm" +#endif //ICON_TESTS + #ifdef CREATE_AND_DESTROY_TEST #include "create_and_destroy.dm" #endif //CREATE_AND_DESTROY_TEST From 5d41d1ec1d0f1b288282d5a60d3e46a65d40c423 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 13:49:52 -0500 Subject: [PATCH 070/102] oh i see --- .github/workflows/ci_suite.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 47f8b1df9941..6a49b23cda46 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -112,6 +112,7 @@ jobs: matrix: arg: [ "BASIC_TESTS", + "ICON_TESTS", "CREATE_AND_DESTROY_TEST", "PLANET_GEN_TEST", "RUIN_PLACEMENT_TEST", From c5ccfcbe4d6c1dec36ee772614806d21a19ef336 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 13:58:43 -0500 Subject: [PATCH 071/102] I have a feeling its broken --- code/modules/unit_tests/icons/missing_icons.dm | 5 +++++ code/modules/unit_tests/icons/worn_icons.dm | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index ec4c48291970..4bdb5e9f1eed 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -31,16 +31,20 @@ var/search_for_on = FALSE if(isbadpath(obj_path)) + WARNING("[obj_path] is a bad path!") continue if(ispath(obj_path, /obj/item)) var/obj/item/item_path = obj_path if(initial(item_path.item_flags) & ABSTRACT) + WARNING("[obj_path] is abstract!") continue if(ispath(obj_path, /obj/item/melee)) var/obj/item/melee/melee_item = new(item_path) if(melee_item.GetComponent(/datum/component/two_handed)) search_for_w = TRUE + WARNING("[obj_path] can be twohanded!!!!") if(melee_item.GetComponent(/datum/component/transforming)) + WARNING("[obj_path] can be transformed!!!!!") search_for_on = TRUE qdel(melee_item) @@ -52,6 +56,7 @@ icons_to_find += "[init_icon_path]_on" for(var/icon_state in icons_to_find) + WARNING("Searching for [icon_state]!!!!!") if(isnull(icon)) continue if(isnull(icon_state)) diff --git a/code/modules/unit_tests/icons/worn_icons.dm b/code/modules/unit_tests/icons/worn_icons.dm index 21623e762d31..a908d447eda1 100644 --- a/code/modules/unit_tests/icons/worn_icons.dm +++ b/code/modules/unit_tests/icons/worn_icons.dm @@ -118,7 +118,7 @@ //The exact same test expect this time we warn instead of fail because most items dont really NEED to apear on a player for(var/obj/item/item_path as anything in (subtypesof(/obj/item) - (typesof(/obj/item/clothing) + typesof(/obj/item/mod)))) var/cached_slot_flags = initial(item_path.slot_flags) - if(!cached_slot_flags || (cached_slot_flags & ITEM_SLOT_LPOCKET) || (cached_slot_flags & ITEM_SLOT_RPOCKET) || initial(item_path.item_flags) & ABSTRACT) + if(!cached_slot_flags || (cached_slot_flags & ITEM_SLOT_LPOCKET) || (cached_slot_flags & ITEM_SLOT_RPOCKET) || initial(item_path.item_flags) & ABSTRACT || isbadpath(item_path)) continue var/mob_overlay_icon = initial(item_path.mob_overlay_icon) //override icon file. where our sprite is contained if set. (ie modularity stuff) @@ -138,7 +138,7 @@ if(mob_overlay_icon) //easiest to check since we override everything. this automatically includes downstream support. if(!(icon_state in icon_states(mob_overlay_icon, 1))) - TEST_FAIL("[item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in mob_overlay_icon override file, '[mob_overlay_icon]'[match_message]") + WARNING("[item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in mob_overlay_icon override file, '[mob_overlay_icon]'[match_message]") continue var/icon_file //checks against all the default icon locations if one isn't defined. From 1a89aba261873e1f3f83408609c910983a7252c6 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 13:59:31 -0500 Subject: [PATCH 072/102] more useful test one sec --- code/modules/unit_tests/_unit_tests.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index b0411c170d73..1fb8b2171faa 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -111,10 +111,10 @@ #endif //BASIC_TESTS #ifdef ICON_TESTS -#include "icons/inhands.dm" +//#include "icons/inhands.dm" #include "icons/missing_icons.dm" #include "icons/spritesheets.dm" -#include "icons/worn_icons.dm" +//#include "icons/worn_icons.dm" #endif //ICON_TESTS #ifdef CREATE_AND_DESTROY_TEST From 33a7a17bbe7e8e4dc4ed3b14ab64486e13b91a40 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 14:04:29 -0500 Subject: [PATCH 073/102] wow i forgot that --- code/modules/unit_tests/icons/missing_icons.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index 4bdb5e9f1eed..1491e5aeaa2b 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -31,32 +31,33 @@ var/search_for_on = FALSE if(isbadpath(obj_path)) - WARNING("[obj_path] is a bad path!") + log_world("[obj_path] is a bad path!") continue if(ispath(obj_path, /obj/item)) var/obj/item/item_path = obj_path if(initial(item_path.item_flags) & ABSTRACT) - WARNING("[obj_path] is abstract!") + log_world("[obj_path] is abstract!") continue if(ispath(obj_path, /obj/item/melee)) var/obj/item/melee/melee_item = new(item_path) if(melee_item.GetComponent(/datum/component/two_handed)) search_for_w = TRUE - WARNING("[obj_path] can be twohanded!!!!") + log_world("[obj_path] can be twohanded!!!!") if(melee_item.GetComponent(/datum/component/transforming)) - WARNING("[obj_path] can be transformed!!!!!") + log_world("[obj_path] can be transformed!!!!!") search_for_on = TRUE qdel(melee_item) var/icon = initial(obj_path.icon) var/init_icon_path = initial(obj_path.icon_state) + icons_to_find += init_icon_path if(search_for_w) icons_to_find += "[init_icon_path]_w" if(search_for_on) icons_to_find += "[init_icon_path]_on" for(var/icon_state in icons_to_find) - WARNING("Searching for [icon_state]!!!!!") + log_world("Searching for [icon_state]!!!!!") if(isnull(icon)) continue if(isnull(icon_state)) From 2f95dd464673e6f3b50ec4ba3f7d8a3819709470 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 14:05:45 -0500 Subject: [PATCH 074/102] thats prob why these werent working --- code/modules/unit_tests/icons/missing_icons.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index 1491e5aeaa2b..c55a38744f99 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -39,7 +39,7 @@ log_world("[obj_path] is abstract!") continue if(ispath(obj_path, /obj/item/melee)) - var/obj/item/melee/melee_item = new(item_path) + var/obj/item/melee/melee_item = new item_path() if(melee_item.GetComponent(/datum/component/two_handed)) search_for_w = TRUE log_world("[obj_path] can be twohanded!!!!") From 5508d0b98b2bec8f844cc296e32895b5729f0579 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 14:18:36 -0500 Subject: [PATCH 075/102] only run overkill icon tests when asked --- .github/workflows/ci_suite.yml | 2 +- code/_compile_options.dm | 2 +- code/modules/unit_tests/_unit_tests.dm | 14 ++++++++++---- code/modules/unit_tests/icons/missing_icons.dm | 14 +++++--------- code/modules/unit_tests/icons/worn_icons.dm | 2 ++ 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 6a49b23cda46..35bca07e3bfb 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -112,7 +112,7 @@ jobs: matrix: arg: [ "BASIC_TESTS", - "ICON_TESTS", + "EXTRA_ICON_TESTS", "CREATE_AND_DESTROY_TEST", "PLANET_GEN_TEST", "RUIN_PLACEMENT_TEST", diff --git a/code/_compile_options.dm b/code/_compile_options.dm index f06a59980823..9fdc31cb3077 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -81,7 +81,7 @@ #ifdef ALL_TESTS #define BASIC_TESTS -#define ICON_TESTS +//#define EXTRA_ICON_TESTS #define CREATE_AND_DESTROY_TEST #define PLANET_GEN_TEST #define RUIN_PLACEMENT_TEST diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 1fb8b2171faa..6586e4a8ac68 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -65,6 +65,12 @@ #ifdef BASIC_TESTS +#ifndef EXTRA_ICON_TESTS +#include "icons/missing_icons.dm" +#include "icons/spritesheets.dm" +#include "icons/worn_icons.dm" +#endif //EXTRA_ICON_TESTS + #include "anchored_mobs.dm" #include "autowiki.dm" #include "bespoke_id.dm" @@ -110,12 +116,12 @@ #endif //BASIC_TESTS -#ifdef ICON_TESTS -//#include "icons/inhands.dm" +#ifdef EXTRA_ICON_TESTS +#include "icons/inhands.dm" #include "icons/missing_icons.dm" #include "icons/spritesheets.dm" -//#include "icons/worn_icons.dm" -#endif //ICON_TESTS +#include "icons/worn_icons.dm" +#endif //EXTRA_ICON_TESTS #ifdef CREATE_AND_DESTROY_TEST #include "create_and_destroy.dm" diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index c55a38744f99..f38e4ae4fbbb 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -31,33 +31,29 @@ var/search_for_on = FALSE if(isbadpath(obj_path)) - log_world("[obj_path] is a bad path!") continue if(ispath(obj_path, /obj/item)) var/obj/item/item_path = obj_path if(initial(item_path.item_flags) & ABSTRACT) - log_world("[obj_path] is abstract!") continue if(ispath(obj_path, /obj/item/melee)) var/obj/item/melee/melee_item = new item_path() if(melee_item.GetComponent(/datum/component/two_handed)) search_for_w = TRUE - log_world("[obj_path] can be twohanded!!!!") if(melee_item.GetComponent(/datum/component/transforming)) - log_world("[obj_path] can be transformed!!!!!") search_for_on = TRUE qdel(melee_item) var/icon = initial(obj_path.icon) var/init_icon_path = initial(obj_path.icon_state) icons_to_find += init_icon_path - if(search_for_w) - icons_to_find += "[init_icon_path]_w" - if(search_for_on) - icons_to_find += "[init_icon_path]_on" + if(!isnull(init_icon_path)) + if(search_for_w) + icons_to_find += "[init_icon_path]_w" + if(search_for_on) + icons_to_find += "[init_icon_path]_on" for(var/icon_state in icons_to_find) - log_world("Searching for [icon_state]!!!!!") if(isnull(icon)) continue if(isnull(icon_state)) diff --git a/code/modules/unit_tests/icons/worn_icons.dm b/code/modules/unit_tests/icons/worn_icons.dm index a908d447eda1..548c77cfeecb 100644 --- a/code/modules/unit_tests/icons/worn_icons.dm +++ b/code/modules/unit_tests/icons/worn_icons.dm @@ -115,6 +115,7 @@ if(fail_reasons) TEST_FAIL(fail_reasons) +#ifdef EXTRA_ICON_TESTS //The exact same test expect this time we warn instead of fail because most items dont really NEED to apear on a player for(var/obj/item/item_path as anything in (subtypesof(/obj/item) - (typesof(/obj/item/clothing) + typesof(/obj/item/mod)))) var/cached_slot_flags = initial(item_path.slot_flags) @@ -207,3 +208,4 @@ if(fail_reasons) WARNING(fail_reasons) +#endif //EXTRA_ICON_TESTS From 3f5f71e0a49edd6380b20d73e34dc0b2baedc76e Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 14:29:22 -0500 Subject: [PATCH 076/102] this looks really ugly tbh --- .../modules/unit_tests/icons/missing_icons.dm | 20 ++++++++++++------- code/modules/unit_tests/icons/worn_icons.dm | 4 ++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index f38e4ae4fbbb..56138b18787f 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -36,22 +36,28 @@ var/obj/item/item_path = obj_path if(initial(item_path.item_flags) & ABSTRACT) continue - if(ispath(obj_path, /obj/item/melee)) - var/obj/item/melee/melee_item = new item_path() - if(melee_item.GetComponent(/datum/component/two_handed)) - search_for_w = TRUE - if(melee_item.GetComponent(/datum/component/transforming)) - search_for_on = TRUE - qdel(melee_item) + +#ifdef EXTRA_ICON_TESTS + if(ispath(obj_path, /obj/item)) + if(obj_path != /obj/item/melee/sword/supermatter) + var/obj/item/melee/melee_item = new item_path() + if(melee_item.GetComponent(/datum/component/two_handed)) + search_for_w = TRUE + if(melee_item.GetComponent(/datum/component/transforming)) + search_for_on = TRUE +#endif var/icon = initial(obj_path.icon) var/init_icon_path = initial(obj_path.icon_state) icons_to_find += init_icon_path + +#ifdef EXTRA_ICON_TESTS if(!isnull(init_icon_path)) if(search_for_w) icons_to_find += "[init_icon_path]_w" if(search_for_on) icons_to_find += "[init_icon_path]_on" +#endif for(var/icon_state in icons_to_find) if(isnull(icon)) diff --git a/code/modules/unit_tests/icons/worn_icons.dm b/code/modules/unit_tests/icons/worn_icons.dm index 548c77cfeecb..5b4fd4495481 100644 --- a/code/modules/unit_tests/icons/worn_icons.dm +++ b/code/modules/unit_tests/icons/worn_icons.dm @@ -139,7 +139,7 @@ if(mob_overlay_icon) //easiest to check since we override everything. this automatically includes downstream support. if(!(icon_state in icon_states(mob_overlay_icon, 1))) - WARNING("[item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in mob_overlay_icon override file, '[mob_overlay_icon]'[match_message]") + log_world("[item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in mob_overlay_icon override file, '[mob_overlay_icon]'[match_message]") continue var/icon_file //checks against all the default icon locations if one isn't defined. @@ -207,5 +207,5 @@ spacer = "\n\t" if(fail_reasons) - WARNING(fail_reasons) + log_world(fail_reasons) #endif //EXTRA_ICON_TESTS From faf2610cd65d13772dc2a7f6e5341ff9768cf6f8 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 14:46:27 -0500 Subject: [PATCH 077/102] prob a cleaner way to do this --- .github/workflows/ci_suite.yml | 1 - code/modules/unit_tests/_unit_tests.dm | 17 +++++------------ code/modules/unit_tests/icons/inhands.dm | 6 +++--- code/modules/unit_tests/icons/missing_icons.dm | 8 +------- 4 files changed, 9 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 35bca07e3bfb..47f8b1df9941 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -112,7 +112,6 @@ jobs: matrix: arg: [ "BASIC_TESTS", - "EXTRA_ICON_TESTS", "CREATE_AND_DESTROY_TEST", "PLANET_GEN_TEST", "RUIN_PLACEMENT_TEST", diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 6586e4a8ac68..8f5923a68125 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -62,15 +62,15 @@ #define TEST_OUTPUT_GREEN(text) (text) #endif +#define EXTRA_ICON_TESTS #ifdef BASIC_TESTS - -#ifndef EXTRA_ICON_TESTS #include "icons/missing_icons.dm" #include "icons/spritesheets.dm" -#include "icons/worn_icons.dm" -#endif //EXTRA_ICON_TESTS - +#include "icons/worn_icons.dm +#ifdef EXTRA_ICON_TESTS +#include "icons/inhands.dm" +#endif //EXTRA_ICON_TESTS" #include "anchored_mobs.dm" #include "autowiki.dm" #include "bespoke_id.dm" @@ -116,13 +116,6 @@ #endif //BASIC_TESTS -#ifdef EXTRA_ICON_TESTS -#include "icons/inhands.dm" -#include "icons/missing_icons.dm" -#include "icons/spritesheets.dm" -#include "icons/worn_icons.dm" -#endif //EXTRA_ICON_TESTS - #ifdef CREATE_AND_DESTROY_TEST #include "create_and_destroy.dm" #endif //CREATE_AND_DESTROY_TEST diff --git a/code/modules/unit_tests/icons/inhands.dm b/code/modules/unit_tests/icons/inhands.dm index 5927ccfb49fe..c7181bcb3bb9 100644 --- a/code/modules/unit_tests/icons/inhands.dm +++ b/code/modules/unit_tests/icons/inhands.dm @@ -53,7 +53,7 @@ match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'") if(!(skip_left || skip_right) && !lefthand_file && !righthand_file) - WARNING("Missing both icon files for [item_path].\n\titem_state = \"[item_state]\"[match_message]") + log_world("Missing both icon files for [item_path].\n\titem_state = \"[item_state]\"[match_message]") continue var/missing_left @@ -80,7 +80,7 @@ if(!match_message && right_fallback && left_fallback) fallback_log_message += "\n\t[item_path] has invalid value, using fallback icon.\n\titem_state = \"[item_state]\"" continue - WARNING("Missing inhand sprites for [item_path] in both '[lefthand_file]' & '[righthand_file]'.\n\titem_state = \"[item_state]\"[match_message]") + log_world("Missing inhand sprites for [item_path] in both '[lefthand_file]' & '[righthand_file]'.\n\titem_state = \"[item_state]\"[match_message]") else if(missing_left) TEST_FAIL("Missing left inhand sprite for [item_path] in '[lefthand_file]'[left_fallback ? ", using fallback icon" : null].\n\titem_state = \"[item_state]\"[match_message]") else if(missing_right) @@ -90,5 +90,5 @@ TEST_FAIL("Invalid item_state values should be set to null if there isn't a valid icon.[fallback_log_message]") if(unset_inhand_var_message) - WARNING("\tNotice - Possible inhand icon matches found. It is best to be explicit with inhand sprite values.[unset_inhand_var_message]") + log_world("\tNotice - Possible inhand icon matches found. It is best to be explicit with inhand sprite values.[unset_inhand_var_message]") diff --git a/code/modules/unit_tests/icons/missing_icons.dm b/code/modules/unit_tests/icons/missing_icons.dm index 56138b18787f..29c2bb051912 100644 --- a/code/modules/unit_tests/icons/missing_icons.dm +++ b/code/modules/unit_tests/icons/missing_icons.dm @@ -36,28 +36,22 @@ var/obj/item/item_path = obj_path if(initial(item_path.item_flags) & ABSTRACT) continue - -#ifdef EXTRA_ICON_TESTS - if(ispath(obj_path, /obj/item)) + if(ispath(obj_path, /obj/item/melee)) if(obj_path != /obj/item/melee/sword/supermatter) var/obj/item/melee/melee_item = new item_path() if(melee_item.GetComponent(/datum/component/two_handed)) search_for_w = TRUE if(melee_item.GetComponent(/datum/component/transforming)) search_for_on = TRUE -#endif var/icon = initial(obj_path.icon) var/init_icon_path = initial(obj_path.icon_state) icons_to_find += init_icon_path - -#ifdef EXTRA_ICON_TESTS if(!isnull(init_icon_path)) if(search_for_w) icons_to_find += "[init_icon_path]_w" if(search_for_on) icons_to_find += "[init_icon_path]_on" -#endif for(var/icon_state in icons_to_find) if(isnull(icon)) From 071b117da1f9d51163eb12f1ef190c8224110c9f Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 14:52:18 -0500 Subject: [PATCH 078/102] this is so out of scope --- code/__DEFINES/dcs/signals/signals.dm | 5 ----- .../dcs/signals/signals_obj/signals_item/signals_item.dm | 5 +++++ code/modules/unit_tests/_unit_tests.dm | 6 ++---- code/modules/unit_tests/icons/inhands.dm | 2 +- code/modules/unit_tests/icons/worn_icons.dm | 1 - 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals.dm b/code/__DEFINES/dcs/signals/signals.dm index 38f7d8692853..aa530ada845a 100644 --- a/code/__DEFINES/dcs/signals/signals.dm +++ b/code/__DEFINES/dcs/signals/signals.dm @@ -666,11 +666,6 @@ #define COMSIG_TRY_STORAGE_RETURN_INVENTORY "storage_return_inventory" //(list/list_to_inject_results_into, recursively_search_inside_storages = TRUE) #define COMSIG_TRY_STORAGE_CAN_INSERT "storage_can_equip" //(obj/item/insertion_candidate, mob/user, silent) - returns bool -// /datum/component/two_handed signals -#define COMSIG_TWOHANDED_WIELD "twohanded_wield" //from base of datum/component/two_handed/proc/wield(mob/living/carbon/user): (/mob/user) - #define COMPONENT_TWOHANDED_BLOCK_WIELD 1 -#define COMSIG_TWOHANDED_UNWIELD "twohanded_unwield" //from base of datum/component/two_handed/proc/unwield(mob/living/carbon/user): (/mob/user) - // /datum/action signals #define COMSIG_ACTION_TRIGGER "action_trigger" //from base of datum/action/proc/Trigger(): (datum/action) #define COMPONENT_ACTION_BLOCK_TRIGGER 1 diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm index 1a562b84a4a1..d10705a1b3ff 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm @@ -66,3 +66,8 @@ #define COMSIG_ITEM_SPLIT_VALUE 1 #define COMSIG_ITEM_SPLIT_PROFIT "item_split_profits" //Called when getting the item's exact ratio for cargo's profit. #define COMSIG_ITEM_SPLIT_PROFIT_DRY "item_split_profits_dry" //Called when getting the item's exact ratio for cargo's profit, without selling the item. + +// /datum/component/two_handed signals +#define COMSIG_TWOHANDED_WIELD "twohanded_wield" //from base of datum/component/two_handed/proc/wield(mob/living/carbon/user): (/mob/user) + #define COMPONENT_TWOHANDED_BLOCK_WIELD 1 +#define COMSIG_TWOHANDED_UNWIELD "twohanded_unwield" //from base of datum/component/two_handed/proc/unwield(mob/living/carbon/user): (/mob/user) diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 8f5923a68125..fc4c819c8632 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -65,12 +65,10 @@ #define EXTRA_ICON_TESTS #ifdef BASIC_TESTS +#include "icons/inhands.dm" #include "icons/missing_icons.dm" #include "icons/spritesheets.dm" -#include "icons/worn_icons.dm -#ifdef EXTRA_ICON_TESTS -#include "icons/inhands.dm" -#endif //EXTRA_ICON_TESTS" +#include "icons/worn_icons.dm" #include "anchored_mobs.dm" #include "autowiki.dm" #include "bespoke_id.dm" diff --git a/code/modules/unit_tests/icons/inhands.dm b/code/modules/unit_tests/icons/inhands.dm index c7181bcb3bb9..0dba1e1f16e5 100644 --- a/code/modules/unit_tests/icons/inhands.dm +++ b/code/modules/unit_tests/icons/inhands.dm @@ -26,7 +26,7 @@ //Add EVEN MORE paths if needed here! //generate_possible_icon_states_list("your/folder/path/inhands/") - for(var/obj/item/item_path as anything in subtypesof(/obj/item)) + for(var/obj/item/item_path as anything in (subtypesof(/obj/item/melee) + subtypesof(/obj/item/gun))) if(initial(item_path.item_flags) & ABSTRACT || isbadpath(item_path)) continue diff --git a/code/modules/unit_tests/icons/worn_icons.dm b/code/modules/unit_tests/icons/worn_icons.dm index 5b4fd4495481..97d998afb7c0 100644 --- a/code/modules/unit_tests/icons/worn_icons.dm +++ b/code/modules/unit_tests/icons/worn_icons.dm @@ -126,7 +126,6 @@ var/mob_overlay_state = initial(item_path.mob_overlay_state) //overrides icon_state. var/icon_state = mob_overlay_state || initial(item_path.icon_state) //icon_state. what sprite name we are looking for. - if(isnull(icon_state)) continue //no sprite for the item. if(icon_state in already_warned_icons) From 198bab2b03b6da055949044619147c6c0067db66 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 19 Sep 2024 16:00:13 -0500 Subject: [PATCH 079/102] can now work on pedang --- .../lavaland_surface_lava_canyon.dmm | 2 +- _maps/shuttles/roumain/srm_elder.dmm | 2 +- code/datums/components/twohanded.dm | 3 - code/game/MapData/shuttles/srm_elder.dm | 2 +- .../game/gamemodes/clown_ops/clown_weapons.dm | 6 +- code/game/objects/items/melee/energy.dm | 62 ++++++++------- code/game/objects/items/melee/transforming.dm | 75 +++++++----------- code/modules/cargo/exports/lavaland.dm | 2 +- .../clothing/spacesuits/miscellaneous.dm | 2 +- .../hostile/megafauna/blood_drunk_miner.dm | 8 +- code/modules/unit_tests/icons/worn_icons.dm | 2 +- icons/mob/inhands/64x64_lefthand.dmi | Bin 19229 -> 18058 bytes icons/mob/inhands/64x64_righthand.dmi | Bin 14272 -> 13179 bytes icons/mob/inhands/weapons/swords_lefthand.dmi | Bin 30335 -> 29944 bytes .../mob/inhands/weapons/swords_righthand.dmi | Bin 31241 -> 31502 bytes 15 files changed, 76 insertions(+), 90 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index a5547c39e8fd..f674c2192e8c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -887,7 +887,7 @@ /area/overmap_encounter/planetoid/lava/explored) "zb" = ( /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner{ - loot = list(/obj/item/melee/transforming/cleaving_saw,/obj/item/gun/energy/kinetic_accelerator,/obj/item/keycard/gatedrop/lavacanyon); + loot = list(/obj/item/melee/cleaving_saw,/obj/item/gun/energy/kinetic_accelerator,/obj/item/keycard/gatedrop/lavacanyon); }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/overmap_encounter/planetoid/cave/explored) diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index 0e501c62ed57..e036c58e06cc 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -1453,7 +1453,7 @@ /obj/vehicle/ridden/wheelchair{ dir = 4 }, -/obj/item/melee/transforming/cleaving_saw/old, +/obj/item/melee/cleaving_saw/old, /turf/open/floor/ship/dirt/dark, /area/ship/bridge) "rj" = ( diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index 5cdd642318ea..51c9268d13ab 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -256,12 +256,9 @@ if(!wielded) return NONE - /* if(!icon_wielded) return NONE source.icon_state = icon_wielded - */ - source.icon_state = "[icon_wielded]_w" return COMSIG_ATOM_NO_UPDATE_ICON_STATE /** * on_moved Triggers on item moved diff --git a/code/game/MapData/shuttles/srm_elder.dm b/code/game/MapData/shuttles/srm_elder.dm index a5cc6b1e8348..453767e4394a 100644 --- a/code/game/MapData/shuttles/srm_elder.dm +++ b/code/game/MapData/shuttles/srm_elder.dm @@ -1,4 +1,4 @@ -/obj/item/melee/transforming/cleaving_saw/old +/obj/item/melee/cleaving_saw/old name = "old cleaving saw" desc = "This saw, old and rusted, is still an effective tool at bleeding beasts and monsters." force = 10 diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 612c988db707..99501e32b8f0 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -77,20 +77,20 @@ * is active or not. */ /obj/item/melee/transforming/energy/sword/proc/adjust_slipperiness() - if(active) + if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) AddComponent(/datum/component/slippery, 60, GALOSHES_DONT_HELP) else qdel(GetComponent(/datum/component/slippery)) /obj/item/melee/transforming/energy/sword/bananium/attack(mob/living/M, mob/living/user) ..() - if(active) + if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(src, M) /obj/item/melee/transforming/energy/sword/bananium/throw_impact(atom/hit_atom, throwingdatum) . = ..() - if(active) + if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(src, hit_atom) diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index be073cc12637..56b3945f5c34 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -1,7 +1,7 @@ /obj/item/melee/transforming/energy icon = 'icons/obj/weapon/energy.dmi' active_hitsound = 'sound/weapons/blade1.ogg' - heat = 3500 + heat = 0 max_integrity = 200 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) resistance_flags = FIRE_PROOF @@ -10,10 +10,12 @@ light_power = 1 light_on = FALSE var/sword_color + /// The heat given off when active. + var/active_heat = 3500 /obj/item/melee/transforming/energy/Initialize() . = ..() - if(active) + if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) START_PROCESSING(SSobj, src) /obj/item/melee/transforming/energy/Destroy() @@ -24,28 +26,36 @@ return FALSE /obj/item/melee/transforming/energy/get_sharpness() - return active * sharpness + return sharpness -/obj/item/melee/transforming/energy/process() - open_flame() +/obj/item/melee/transforming/energy/process(seconds_per_tick) + if(heat) + open_flame() /obj/item/melee/transforming/energy/on_transform(obj/item/source, mob/user, active) - . = ..() - if(.) - if(active) - if(sword_color) - icon_state = "[base_icon_state][sword_color]" - START_PROCESSING(SSobj, src) - else - STOP_PROCESSING(SSobj, src) - set_light_on(active) + if(active) + heat = active_heat + START_PROCESSING(SSobj, src) + if(sword_color) + icon_state = "[base_icon_state][sword_color]" + else + heat = initial(heat) + STOP_PROCESSING(SSobj, src) + + tool_behaviour = (active ? TOOL_SAW : NONE) //Lets energy weapons cut trees. Also lets them do bonecutting surgery, which is kinda metal! + if(user) + balloon_alert(user, "[name] [active ? "enabled":"disabled"]") + playsound(src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, TRUE) + set_light_on(active) + update_appearance(UPDATE_ICON_STATE) + return COMPONENT_NO_DEFAULT_MESSAGE /obj/item/melee/transforming/energy/get_temperature() - return active * heat + return heat /obj/item/melee/transforming/energy/ignition_effect(atom/A, mob/user) - if(!active) + if(!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) return "" var/in_mouth = "" @@ -96,13 +106,8 @@ armour_penetration = 35 block_chance = 50 -/obj/item/melee/transforming/energy/sword/on_transform(obj/item/source, mob/user, active) - . = ..() - if(. && active && sword_color) - icon_state = "[base_icon_state][sword_color]" - /obj/item/melee/transforming/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(active) + if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) return ..() return 0 @@ -113,7 +118,7 @@ /obj/item/melee/transforming/energy/sword/cyborg/attack(mob/M, mob/living/silicon/robot/R) if(R.cell) var/obj/item/stock_parts/cell/C = R.cell - if(active && !(C.use(hitcost))) + if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE) && !(C.use(hitcost))) attack_self(R) to_chat(R, "It's out of charge!") return @@ -177,7 +182,7 @@ sword_color = "rainbow" to_chat(user, "RNBW_ENGAGE") - if(active) + if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) icon_state = "[base_icon_state]rainbow" user.update_inv_hands() else @@ -212,12 +217,12 @@ /obj/item/melee/transforming/energy/blade name = "energy blade" desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal." - icon_state = "blade" + icon_state = "lightblade" + item_state = "lightblade" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' force = 30 //Normal attacks deal esword damage hitsound = 'sound/weapons/blade1.ogg' - active = 1 throwforce = 1 //Throwing or dropping the item deletes it. throw_speed = 3 throw_range = 1 @@ -264,10 +269,11 @@ /obj/item/melee/transforming/energy/ctf/on_transform(obj/item/source, mob/user, active) . = ..() - if(. && active) - icon_state = "plasmasword1" + if(active) + icon_state = "plasmasword_on" playsound(user, active ? 'sound/weapons/SolGov_sword_arm.ogg' : 'sound/weapons/saberoff.ogg', 35, TRUE) to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") + return COMPONENT_NO_DEFAULT_MESSAGE /obj/item/melee/transforming/energy/ctf/solgov armour_penetration = 40 diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm index e7db277d40e5..5c130b80c413 100644 --- a/code/game/objects/items/melee/transforming.dm +++ b/code/game/objects/items/melee/transforming.dm @@ -3,7 +3,6 @@ w_class = WEIGHT_CLASS_SMALL attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - var/active = FALSE /// Force while active. var/active_force = 30 /// Throwforce while active. @@ -14,8 +13,6 @@ var/active_hitsound = 'sound/weapons/blade1.ogg' /// Weight class while active. var/active_w_class = WEIGHT_CLASS_BULKY - /// The heat given off when active. - var/active_heat = 3500 var/list/attack_verb_on = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -26,10 +23,6 @@ if(sharpness) AddComponent(/datum/component/butchering, 50, 100, 0, hitsound) -/obj/item/melee/transforming/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - /* * Gives our item the transforming component, passing in our various vars. */ @@ -46,79 +39,69 @@ ) RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) -/obj/item/melee/transforming/process(seconds_per_tick) - if(heat) - open_flame() - /obj/item/melee/transforming/proc/on_transform(obj/item/source, mob/user, active) SIGNAL_HANDLER - if(active) - heat = active_heat - START_PROCESSING(SSobj, src) - else - heat = initial(heat) - STOP_PROCESSING(SSobj, src) + return - tool_behaviour = (active ? TOOL_SAW : NONE) //Lets energy weapons cut trees. Also lets them do bonecutting surgery, which is kinda metal! - if(user) - balloon_alert(user, "[name] [active ? "enabled":"disabled"]") - playsound(src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, TRUE) - set_light_on(active) - update_appearance(UPDATE_ICON_STATE) - return COMPONENT_NO_DEFAULT_MESSAGE - -/obj/item/melee/transforming/cleaving_saw +/obj/item/melee/cleaving_saw name = "cleaving saw" desc = "This saw, effective at drawing the blood of beasts, transforms into a long cleaver that makes use of centrifugal force." force = 12 - active_force = 20 //force when active + var/active_force = 20 //force when active throwforce = 20 - active_throwforce = 20 + var/active_throwforce = 20 icon = 'icons/obj/lavaland/artefacts.dmi' lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' inhand_x_dimension = 64 inhand_y_dimension = 64 icon_state = "cleaving_saw" + item_state = "cleaving_saw" slot_flags = ITEM_SLOT_BELT attack_verb = list("attacked", "sawed", "sliced", "torn", "ripped", "diced", "cut") - attack_verb_on = list("cleaved", "swiped", "slashed", "chopped") hitsound = 'sound/weapons/bladeslice.ogg' - active_hitsound = 'sound/weapons/bladeslice.ogg' - w_class = WEIGHT_CLASS_BULKY sharpness = IS_SHARP + var/transform_cooldown var/swiping = FALSE var/bleed_stacks_per_hit = 3 -/obj/item/melee/transforming/cleaving_saw/examine(mob/user) +/obj/item/melee/cleaving_saw/Initialize(mapload) . = ..() - . += "It is [active ? "open, will cleave enemies in a wide arc and deal additional damage to fauna":"closed, and can be used for rapid consecutive attacks that cause fauna to bleed"].\n"+\ - "Both modes will build up existing bleed effects, doing a burst of high damage if the bleed is built up high enough.\n"+\ - "Transforming it immediately after an attack causes the next attack to come out faster." + AddElement(/datum/element/update_icon_updates_onmob) + AddComponent(/datum/component/butchering, 50, 100, 0, hitsound) + AddComponent( \ + /datum/component/transforming, \ + transform_cooldown_time = (CLICK_CD_MELEE * 0.25), \ + force_on = active_force, \ + throwforce_on = active_throwforce, \ + attack_verb_on = list("cleave", "swipe", "slash", "chop"), \ + ) + RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) -/obj/item/melee/transforming/cleaving_saw/on_transform(obj/item/source, mob/user, active) - if(transform_cooldown > world.time) - return FALSE +/obj/item/melee/cleaving_saw/examine(mob/user) . = ..() - if(.) - transform_cooldown = world.time + (CLICK_CD_MELEE * 0.5) - user.changeNext_move(CLICK_CD_MELEE * 0.25) + . += span_notice("It is [HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE) ? "open, will cleave enemies in a wide arc and deal additional damage to fauna":"closed, and can be used for rapid consecutive attacks that cause fauna to bleed"].") + . += span_notice("Both modes will build up existing bleed effects, doing a burst of high damage if the bleed is built up high enough.") + . += span_notice("Transforming it immediately after an attack causes the next attack to come out faster.") +/obj/item/melee/cleaving_saw/proc/on_transform(obj/item/source, mob/user, active) + SIGNAL_HANDLER if(active) to_chat(user, "You open [src]. It will now cleave enemies in a wide arc and deal additional damage to fauna.") else to_chat(user, "You close [src]. It will now attack rapidly and cause fauna to bleed.") playsound(user, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) + return COMPONENT_NO_DEFAULT_MESSAGE -/obj/item/melee/transforming/cleaving_saw/melee_attack_chain(mob/user, atom/target, params) - ..() - if(!active) +/obj/item/melee/cleaving_saw/melee_attack_chain(mob/user, atom/target, params) + . = ..() + if(!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) user.changeNext_move(CLICK_CD_MELEE * 0.5) //when closed, it attacks very rapidly -/obj/item/melee/transforming/cleaving_saw/attack(mob/living/target, mob/living/carbon/human/user) - if(!active || swiping || !target.density || get_turf(target) == get_turf(user)) +/obj/item/melee/cleaving_saw/attack(mob/living/target, mob/living/carbon/human/user) + if(!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE) || swiping || !target.density || get_turf(target) == get_turf(user)) ..() else var/turf/user_turf = get_turf(user) diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm index 3ca8ec9ece05..95f920f0e11a 100644 --- a/code/modules/cargo/exports/lavaland.dm +++ b/code/modules/cargo/exports/lavaland.dm @@ -43,7 +43,7 @@ cost = 40000 unit_name = "major lava planet artifact" export_types = list(/obj/item/hierophant_club, - /obj/item/melee/transforming/cleaving_saw, + /obj/item/melee/cleaving_saw, /obj/item/organ/vocal_cords/colossus, /obj/machinery/anomalous_crystal, /obj/item/mayhem, diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 6e825e48ea4b..518cdf6b18cc 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -363,7 +363,7 @@ Contains: armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 10, "fire" = 100, "acid" = 100) max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/melee/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/melee/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/cleaving_saw) /obj/item/clothing/suit/space/hardsuit/berserker/RemoveHelmet() var/obj/item/clothing/head/helmet/space/hardsuit/berserker/helm = helmet diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index b2bb0c5cb937..fc8cbbce6d8c 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -42,7 +42,7 @@ Difficulty: Medium pixel_x = -16 base_pixel_x = -16 //mob_trophy = /obj/item/mob_trophy/miner_eye - loot = list(/obj/item/melee/transforming/cleaving_saw, /obj/item/gun/energy/kinetic_accelerator) + loot = list(/obj/item/melee/cleaving_saw, /obj/item/gun/energy/kinetic_accelerator) wander = FALSE del_on_death = TRUE blood_volume = BLOOD_VOLUME_NORMAL @@ -50,7 +50,7 @@ Difficulty: Medium achievement_type = /datum/award/achievement/boss/blood_miner_kill crusher_achievement_type = /datum/award/achievement/boss/blood_miner_crusher score_achievement_type = /datum/award/score/blood_miner_score - var/obj/item/melee/transforming/cleaving_saw/miner/miner_saw + var/obj/item/melee/cleaving_saw/miner/miner_saw var/time_until_next_transform = 0 var/dashing = FALSE var/dash_cooldown = 15 @@ -107,11 +107,11 @@ Difficulty: Medium shoot_ka() transform_weapon() -/obj/item/melee/transforming/cleaving_saw/miner //nerfed saw because it is very murdery +/obj/item/melee/cleaving_saw/miner //nerfed saw because it is very murdery force = 6 active_force = 10 -/obj/item/melee/transforming/cleaving_saw/miner/attack(mob/living/target, mob/living/carbon/human/user) +/obj/item/melee/cleaving_saw/miner/attack(mob/living/target, mob/living/carbon/human/user) target.add_stun_absorption("miner", 10, INFINITY) ..() target.stun_absorption -= "miner" diff --git a/code/modules/unit_tests/icons/worn_icons.dm b/code/modules/unit_tests/icons/worn_icons.dm index 97d998afb7c0..004f82129be1 100644 --- a/code/modules/unit_tests/icons/worn_icons.dm +++ b/code/modules/unit_tests/icons/worn_icons.dm @@ -117,7 +117,7 @@ #ifdef EXTRA_ICON_TESTS //The exact same test expect this time we warn instead of fail because most items dont really NEED to apear on a player - for(var/obj/item/item_path as anything in (subtypesof(/obj/item) - (typesof(/obj/item/clothing) + typesof(/obj/item/mod)))) + for(var/obj/item/item_path as anything in (subtypesof(/obj/item/melee) + subtypesof(/obj/item/gun))) var/cached_slot_flags = initial(item_path.slot_flags) if(!cached_slot_flags || (cached_slot_flags & ITEM_SLOT_LPOCKET) || (cached_slot_flags & ITEM_SLOT_RPOCKET) || initial(item_path.item_flags) & ABSTRACT || isbadpath(item_path)) continue diff --git a/icons/mob/inhands/64x64_lefthand.dmi b/icons/mob/inhands/64x64_lefthand.dmi index 50a17a22d470e564aa8211dec15e19dd45519b8a..64efd1262a22c9587c32929bd378a41b00d00f73 100644 GIT binary patch literal 18058 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 S2W+>7oH=E6ve48y;{O0{>k6s> literal 19229 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 diff --git a/icons/mob/inhands/64x64_righthand.dmi b/icons/mob/inhands/64x64_righthand.dmi index bbeddf915282aa96d32f96406d6fb3ecabc91d22..e91c7830c6142fa183aa728077fe9e8065928c12 100644 GIT binary patch literal 13179 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


s%d4@^PO%#$6bL@48|kI$KxX3})PE3w1TtytvH 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 diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi index 588fa0a1422df96e36006b9be255287fd1eef69b..71b47f38ce97fd7812d627459e678e03379c315a 100644 GIT binary patch literal 29944 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�z(J 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�kkgc0AHV<;PFBZUl)bC|-hwU1-s7 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 G>^}eq7W|a} diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi index 53777d102728da4323258169981eeb2f88d6ede5..d0c9a84bb274cc2d28c2ce83c0c4bd738b5f4b95 100644 GIT binary patch delta 4747 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 Z{|A8$MN+Ont|b5f002ovPDHLkV1hjZhU5SM delta 4464 zcmV-$5s&VU_5q3X0gxmX5qeZubVOxyV{&P5bZKvH004NLomP=LD}Nx6-W!ko-pp{D zJU;(=c}<>vzr^n-6%{=BnH=x-an#aWm*(UC5Jx4_qSTiUr9q>4y-}@@`Ar<P#J6R|40)&M+RL_+FjEmuEgJD6%vsL@ajg^EF{ei853>D{($mqjrs6_ zdAVkO#votG^*9p`yE4N^8fi2GrL3xrIBx+)p1nlNSLZ2k$rBILOVWlRyD1e@304-diBDQ)f<3_7W;j65kr+r1OBT z=5zcc_oB}Wj_E}b>rz$2H0`IjeFGZUnexI>DODrU5}2nWAd{#BD}-HOvjSrqGwu7l z#*g8M9){;}j==gql#K|BEX`D0HgdK_TbAN}x4-)~-S=@Mv86n}o}5fO>g8trv8|_t zSYURgL`Au1lxuUS%?ztxyIL0T7BNdV4(r;tj_&GxVn;PxeIZbLpgo}4`3x3t$1HlN z(v+O-1q`G_jp@o*_>5e`-6qekPs30BUn?VY^=)wxYybdvv$IJ8J7<6Ftjau&pX;^} zQc|X5keOOEwY8S9RI9Dw_by@7TsnW_6ZKNhtV{G!;-?e9WJH4HmJNKOD{rCMOlUpYAJm)-T zX72Bv_nljJ=@m=eoH>6>b9oZF<^KN~bNG}(y$>kiquSVi06^7DK6!Hev8}DGcFBhp zyDx3rkju;Qr|dngssF!F0TciLph{Nn=o>nGQ3%b$NvLiM82-5_e>%OXF$kal000G{ z5ISSV)J#u8=PkM5xX*1$Zf)u+B>@xw0H8qpJ)u|i_0~hE^=U`w*>9TB@)-ZHcJ12M zX955K05d0@bkb-4u=B;WSATN3yRhpWZc_WCwfdYz?XC;ETCOu8#6$o90ANcep+_IH zo=VfW1P_zlYAutlcnyEqs?|*Y4PyX6_6VRro|Pe-jb#mGSSJ8r%m|>UwjuX9snSK0{ISjIS6Ot=I89!Fp><{so-;N*XgeN zNbQ~5KA*h2^UmV+dK6ld)}}RTt+B%1c1D7N zKKMNM{O{fQ6DGK)xBkZc@s;0Ml{cd`X>D4g)*35>j;Bsl_5i@K2%ta_LTHhUCwzLw zdvVRGuh;(dz3bdBuD{cr*3nUa{K$eEElQixn$m03nzi;k)TzoI0611HNqEi$>RJg- z_`6U&G~5ea^3{K-n}W}Zhga86;x6cZvpaRl8{8SQRuuYcL6@@qsiaOB@4V~_?wk!P z>g$_z{tdy_=Ih-0CA0MHmGpuljP zgf=f$&y4rNpTsG!-G1km!k@x@v}azTFy~KoL!Np{`s6cIowDr#fW|lh1%~4!v^g;q6y`Fkm~rWhxPK759(Q?@+-&=>)91PVN+p{GEsd!t%c z-0se^s#li^p*=l4g$bf_=gzgAtHI@Q>uaw%g-ZvZqVkuoV@Ze4&~?hP2bNaNpPqc@ zqXm1>jLIrh0KI4BNoLRG-p$+wIt~!{oHE&gkCE8UsBQH(mn z_aFy|&UsH)O`MomhUKkBFAA*cq$%)BTkxLxqk@-$UEcl69ZBsg zU!7PFqA{ok>P5OYQ3?&?>t*4=%VsB?Jr{qwsZ-yU3`}>q{{9!uH+EnS)svP2sKTH^ zp@pm8^RZ;jzkkeiEPmSk=3DW8z@`Jw_U+qi=@423jly8)km$pw`V(V(Ph)PK=br1k z&t-G`ag;)+K8h0PVxAOc-2?O63sMw5-@g1jxAday<}ez)jnN+(%G<>Zd!%78v1i)d!hS4moKk}QS;h4;lt;G1qG&}roS$9mo1=EvPz*By#B*HAra>3u*i zoqc(-cHB;uFBIx@ z%6H8Z2i*^T_>g<~mJd6fGG;ZOk>~{Ut|e{txyB62p?cENCHQj=&vEmY&99w*-kaT} zS1hfE#a6}}PA8vV+PGmTeCl(PPo5mI#E^9O^okljrO{<^t-1_h-t9SGTZ)`3DPXL;~){(x4QtJ$LPi2hpbG;W8 zKLHiOC(0@>fhV*ghR}aJ??v82XcorXla>N#It(f#hB^uLC!aHBOg$!i#*pj46F`wd zXrsN*f0t!10OV7i15XG=3ZX^V3k9ylcR$73Go_5DCqdr_RAEt}al9v?3ahWk#9nXJ z`UwE2t^)@SB<))V*ElzGQ*LvPwXyUh+CRmqlTd|D{}`)I2vrM9vDaI*egXihOQ(JZ z+SYS9K4mODDb&9O4*&p=H~!M|Pb1!ATQsBfWP?hMQP$1Z_;hUxFll8jNp{L0G)H-5O zU(_G$*ek2S0o$Y7GF@(o_H)nC>!tA}C4#>Rf-byEeG_ag$n>J$dH^f3+$# z6nK96nf^SRHvm8<%q)&UynnlmraN7nPGvMG}~6Mcjpx2XX7V%O}@^+%+WL?5u$ z&23LC1JHkXX`Xug+0zrFjGtvsw5Iy$t^pr-E_v_!UC~15OE3MZ_UfPa*J6#YeyA_% zkNOm=PMSj1T}#?5O4X%9&*Ukm4$Z-A0^_7P`uU315u=74RY(0%pJLQWyZ-uXYq4vT zL6J}EM`QJ~Kg|cv!9Dw|OSi--G%sED!KgJfzSe)yIel7`@tX>u*F161^b}MliC5l! zk<;bu6+Nd$3w0sQKC`|4jrzjg15w7$vL|~M_qkmQ?>DKH4m{6n`(Klqq51n5LyznG zq5fEeGS$#!-cS5bV)_K@LyrRe)TwXF{S&(npVwWtI(jYjLw!+y)TihLGoqiRI^{3I z{>y)Y^WW}bUzJcVRKqe5s$OT$#a89&e7Kr6ZKjJAfMU^{C1ya>*!%YFidMsqFIvwl zhX#ZHoEdWf)sv|%_bl1p5qb_Io4KieIa@*NjJ|tv{|fWUhhL~EB;K_BK)fe~40@vd zzy6<|aSIpCkN#wr4m>*D`SFjQh+Q%$fBS!c=C5^x4vFfA`VwpWG>!f0j?3M-U!CAK zfBRmSRoLn1nCfPobygOo$4v9nJY)CB*C{(6dVaBez@0O9e%8|&6TLXpe0^|^QA00q zR71V7xCKWw-u3P!_2-?~wLBkw6nq}ta)0glUp`x?7g?IK<{mR3#;lRB+_Jl(WC@LSL4TJ$`yGwr~HLYj1Ba>|UT)eCSb_*PpF!H3>mKFEwvH>cwJ= zxm(omb*z5&d&9%0RoxgY))KmgW&b@#Jps*C_>?2B!isPbYARw+H0HI}zRx^-D)8jy zYi^u0f2~97(YivPRK^_NpF$HpVNE}CZn*K|Lnp~alkj#Le=Z{|zWb@%1p&=Rp@hIC9Jd!jMU>UxV=_$+ha@gY&`(>h~? z&`{&+UT=+8f5yE)eq|AQELa?vgskEB!SZ{*tl`tM2%$yPIDqcz&2{+nG(UwTLg;Hk z^u#iJN)-Z+4~hDS@rK?Z$JdjY#w+VyAb+w5J(m38K+F&tq6XnJ9zy8xjt`(m!smgu z^@aICKnOivD?PCepHh{;}_wJPD$i}6cCMKu&a6+Vh^+5JQap~q{sC;lWd z_PhYVtJ;aZ#d?d>(<+5euZnAKWK8b^3IG5Agfb!P2_Rej{ry=_0RRA0OjG|BJOBUy z&?*8blhA59ldgC$e~l@CcFmcW=p*)IaAH#?btd}AdL94(0IeD|fcoG$xMyGd*#u-2 znwKv7VAL8KU+d_cJ}qV$0000pBL+|(uBJ_!>53MBG-rt!5HL7@Z*ct^U9&Y zT8ugX005Rw7(jjaQSf9pzf3M!FR><)I006SmFn|sZ zpVpHKrKlmaEd2)n0BGd609v;2V;Mq2Dog(X004%oCCO`8lg z02MQI0$TQfW^ob<004l|)dOhR!>30G1polZ-s`FoK0QJx002O?>L;L837=k!Um5}c z0KnMP189}PDyLV)H3I+u Date: Thu, 19 Sep 2024 16:01:03 -0500 Subject: [PATCH 080/102] pedang wip --- code/game/objects/items/melee/bladeatheon.dm | 27 ++++++++++++------- code/game/objects/items/melee/transforming.dm | 7 +++-- shiptest.dme | 1 + 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/code/game/objects/items/melee/bladeatheon.dm b/code/game/objects/items/melee/bladeatheon.dm index 1237dc202c64..f621950b453e 100644 --- a/code/game/objects/items/melee/bladeatheon.dm +++ b/code/game/objects/items/melee/bladeatheon.dm @@ -12,13 +12,15 @@ /obj/item/melee/sword/pedang name = "pedang" desc = "an electrically-charged fencing sword." + icon_state = "suns-tsword" + + force = 0 + var/active_force = 10 var/obj/item/stock_parts/cell/cell var/preload_cell_type = /obj/item/stock_parts/cell/pedang //if not empty the sabre starts with this type of cell var/cell_hit_cost = 1000 - var/can_remove_cell = TRUE - var/turned_on = FALSE var/activate_sound = "sparks" /obj/item/stock_parts/cell/pedang @@ -27,22 +29,29 @@ /obj/item/melee/sword/pedang/Initialize() . = ..() if(preload_cell_type) - if(!ispath(preload_cell_type,/obj/item/stock_parts/cell)) - log_mapping("[src] at [AREACOORD(src)] had an invalid preload_cell_type: [preload_cell_type].") - else + if(ispath(preload_cell_type, /obj/item/stock_parts/cell/pedang)) cell = new preload_cell_type(src) - update_appearance() + + AddComponent( \ + /datum/component/transforming, \ + force_on = active_force, \ + ) + RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) + +/obj/item/melee/sword/pedang/proc/on_transform() + SIGNAL_HANDLER + + playsound(src, activate_sound, 75, TRUE, -1) /obj/item/melee/sword/pedang/Destroy() if(cell) QDEL_NULL(cell) - UnregisterSignal(src, COMSIG_PARENT_ATTACKBY) return ..() -/obj/item/melee/baton/examine(mob/user) +/obj/item/melee/sword/pedang/examine(mob/user) . = ..() if(cell) - . += span_noitce("\The [src] is [round(cell.percent())]% charged.") + . += span_notice("\The [src] is [round(cell.percent())]% charged.") else . += span_warning("\The [src] does not have a power source installed.") diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm index 5c130b80c413..1028c4cdbec7 100644 --- a/code/game/objects/items/melee/transforming.dm +++ b/code/game/objects/items/melee/transforming.dm @@ -88,10 +88,9 @@ /obj/item/melee/cleaving_saw/proc/on_transform(obj/item/source, mob/user, active) SIGNAL_HANDLER - if(active) - to_chat(user, "You open [src]. It will now cleave enemies in a wide arc and deal additional damage to fauna.") - else - to_chat(user, "You close [src]. It will now attack rapidly and cause fauna to bleed.") + user.changeNext_move(CLICK_CD_MELEE * 0.25) + if(user) + balloon_alert(user, "[active ? "opened" : "closed"] [src]") playsound(user, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) return COMPONENT_NO_DEFAULT_MESSAGE diff --git a/shiptest.dme b/shiptest.dme index 239d4b8a6c5c..1faa32766932 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1312,6 +1312,7 @@ #include "code\game\objects\items\implants\implanter.dm" #include "code\game\objects\items\implants\implantpad.dm" #include "code\game\objects\items\implants\implantuplink.dm" +#include "code\game\objects\items\melee\bladeatheon.dm" #include "code\game\objects\items\melee\chainsaw.dm" #include "code\game\objects\items\melee\dualsaber.dm" #include "code\game\objects\items\melee\energy.dm" From 4137a8276799b855fc13d3e39156ef34c0a1f763 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sun, 22 Sep 2024 17:53:19 -0500 Subject: [PATCH 081/102] yea --- .../signals_item/signals_transform.dm | 2 + code/datums/components/transforming.dm | 6 ++ code/game/objects/items/melee/bladeatheon.dm | 46 +++------- code/game/objects/items/melee/charged.dm | 87 +++++++++++++++++++ code/game/objects/items/melee/knife.dm | 36 +++----- code/game/objects/items/melee/stunbaton.dm | 2 +- code/game/objects/items/melee/sword.dm | 1 - shiptest.dme | 1 + 8 files changed, 121 insertions(+), 60 deletions(-) create mode 100644 code/game/objects/items/melee/charged.dm diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_transform.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_transform.dm index a70e4c0b1963..f7c0b4d5f232 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_transform.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_transform.dm @@ -8,3 +8,5 @@ #define COMSIG_TRANSFORMING_ON_TRANSFORM "transforming_on_transform" /// Return COMPONENT_NO_DEFAULT_MESSAGE to prevent the transforming component from displaying the default transform message / sound. #define COMPONENT_NO_DEFAULT_MESSAGE (1<<0) + +#define COMSIG_ITEM_FORCE_TRANSFORM "item_force_transform" diff --git a/code/datums/components/transforming.dm b/code/datums/components/transforming.dm index f3ff03ba893d..ce43533cc005 100644 --- a/code/datums/components/transforming.dm +++ b/code/datums/components/transforming.dm @@ -73,6 +73,7 @@ var/obj/item/item_parent = parent RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(on_attack_self)) + RegisterSignal(parent, COMSIG_ITEM_FORCE_TRANSFORM, PROC_REF(force_transform)) if(item_parent.sharpness || sharpness_on) RegisterSignal(parent, COMSIG_ITEM_SHARPEN_ACT, PROC_REF(on_sharpen)) @@ -222,3 +223,8 @@ if(force_on + increment > max) return COMPONENT_BLOCK_SHARPEN_MAXED sharpened_bonus = increment + +/datum/component/transforming/proc/force_transform(obj/item/source) + if(isnum(transform_cooldown_time)) + COOLDOWN_START(src, transform_cooldown, transform_cooldown_time) + set_inactive(soruce) diff --git a/code/game/objects/items/melee/bladeatheon.dm b/code/game/objects/items/melee/bladeatheon.dm index f621950b453e..d073afec88de 100644 --- a/code/game/objects/items/melee/bladeatheon.dm +++ b/code/game/objects/items/melee/bladeatheon.dm @@ -9,49 +9,23 @@ /obj/item/melee/fimbo_stick name = "fimbo" -/obj/item/melee/sword/pedang +/obj/item/melee/charged/pedang name = "pedang" desc = "an electrically-charged fencing sword." + icon = 'icons/obj/weapon/sword.dmi' + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' icon_state = "suns-tsword" - force = 0 - var/active_force = 10 + pickup_sound = 'sound/items/unsheath.ogg' + drop_sound = 'sound/items/handling/metal_drop.ogg' + hitsound = 'sound/weapons/bladeslice.ogg' - var/obj/item/stock_parts/cell/cell - var/preload_cell_type = /obj/item/stock_parts/cell/pedang //if not empty the sabre starts with this type of cell - var/cell_hit_cost = 1000 + allowed_cells = list(/obj/item/stock_parts/cell/pedang) + preload_cell_type = /obj/item/stock_parts/cell/pedang //if not empty the sabre starts with this type of cell + cell_hit_cost = 1000 var/activate_sound = "sparks" /obj/item/stock_parts/cell/pedang name = "compact pedang cell" - -/obj/item/melee/sword/pedang/Initialize() - . = ..() - if(preload_cell_type) - if(ispath(preload_cell_type, /obj/item/stock_parts/cell/pedang)) - cell = new preload_cell_type(src) - - AddComponent( \ - /datum/component/transforming, \ - force_on = active_force, \ - ) - RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) - -/obj/item/melee/sword/pedang/proc/on_transform() - SIGNAL_HANDLER - - playsound(src, activate_sound, 75, TRUE, -1) - -/obj/item/melee/sword/pedang/Destroy() - if(cell) - QDEL_NULL(cell) - return ..() - -/obj/item/melee/sword/pedang/examine(mob/user) - . = ..() - if(cell) - . += span_notice("\The [src] is [round(cell.percent())]% charged.") - else - . += span_warning("\The [src] does not have a power source installed.") - diff --git a/code/game/objects/items/melee/charged.dm b/code/game/objects/items/melee/charged.dm new file mode 100644 index 000000000000..32a536108a5d --- /dev/null +++ b/code/game/objects/items/melee/charged.dm @@ -0,0 +1,87 @@ +/obj/item/melee/charged + force = 0 + var/active_force = 10 + + var/obj/item/stock_parts/cell/cell + var/allowed_cells = list() + var/preload_cell_type = /obj/item/stock_parts/cell/melee //if not empty the sabre starts with this type of cell + var/cell_hit_cost = 1000 + var/activate_sound = "sparks" + +/obj/item/melee/charged/Initialize() + . = ..() + if(preload_cell_type) + if(preload_cell_type in allowed_cells) + cell = new preload_cell_type(src) + +/obj/item/melee/charged/ComponentInitialize() + AddComponent( \ + /datum/component/transforming, \ + force_on = active_force, \ + ) + RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) + +/obj/item/melee/charged/Destroy() + if(cell) + QDEL_NULL(cell) + return ..() + +/obj/item/melee/charged/proc/on_transform() + SIGNAL_HANDLER + + playsound(src, activate_sound, 75, TRUE, -1) + +/obj/item/melee/charged/proc/deductcharge(chrgdeductamt) + if(cell) + //Note this value returned is significant, as it will determine + //if a stun is applied or not + . = cell.use(chrgdeductamt) + if(turned_on && cell.charge < cell_hit_cost) + //we're below minimum, turn off + SEND_SIGNAL(src, COSMIG_ITEM_FORCE_TRANSFORM, src) + update_appearance() + playsound(src, activate_sound, 75, TRUE, -1) + +/obj/item/melee/charged/update_icon_state() + if(turned_on) + icon_state = "[initial(icon_state)]_on" + return ..() + if(!cell) + icon_state = "[initial(icon_state)]_nocell" + return ..() + icon_state = "[initial(icon_state)]" + return ..() + +/obj/item/melee/charged/examine(mob/user) + . = ..() + if(cell) + . += span_notice("\The [src] is [round(cell.percent())]% charged.") + else + . += span_warning("\The [src] does not have a power source installed.") + +/obj/item/melee/charged/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/stock_parts/cell)) + var/obj/item/stock_parts/cell/C = W + if(cell) + to_chat(user, span_notice("[src] already has a cell!")) + else + if(C.maxcharge < cell_hit_cost) + to_chat(user, span_notice("[src] requires a higher capacity cell.")) + return + if(!user.transferItemToLoc(W, src)) + return + cell = W + to_chat(user, span_notice("You install a cell in [src].")) + update_appearance() + else + return ..() + +/obj/item/melee/charged/screwdriver_act(mob/living/user, obj/item/I) + . = ..() + if(cell && can_remove_cell) + cell.update_appearance() + cell.forceMove(get_turf(src)) + cell = null + to_chat(user, span_notice("You remove the cell from [src].")) + turned_on = FALSE + update_appearance() diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm index 9ed144ee3d38..88c280c49594 100644 --- a/code/game/objects/items/melee/knife.dm +++ b/code/game/objects/items/melee/knife.dm @@ -20,7 +20,6 @@ item_flags = EYE_STAB tool_behaviour = TOOL_KNIFE - /obj/item/melee/knife/ComponentInitialize() . = ..() set_butchering() @@ -165,6 +164,7 @@ flags_1 = CONDUCT_1 force = 3 w_class = WEIGHT_CLASS_SMALL + sharpness = IS_BLUNT throwforce = 5 throw_speed = 3 throw_range = 6 @@ -172,27 +172,19 @@ hitsound = 'sound/weapons/genhit.ogg' attack_verb = list("stubbed", "poked") resistance_flags = FIRE_PROOF - var/extended = 0 - -/obj/item/melee/knife/switchblade/attack_self(mob/user) - extended = !extended - playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) - if(extended) - force = 20 - w_class = WEIGHT_CLASS_NORMAL - throwforce = 23 - icon_state = "switchblade_on" - attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - else - force = 3 - w_class = WEIGHT_CLASS_SMALL - throwforce = 5 - icon_state = "switchblade" - attack_verb = list("stubbed", "poked") - hitsound = 'sound/weapons/genhit.ogg' - sharpness = IS_BLUNT + +/obj/item/melee/knife/switchblade/ComponentInitialize() + . = ..() + AddComponent( \ + /datum/component/transforming, \ + force_on = 20, \ + throwforce_on = 23, \ + throw_speed_on = 4, \ + sharpness_on = IS_SHARP, \ + hitsound_on = 'sound/weapons/bladeslice.ogg', \ + w_class_on = WEIGHT_CLASS_NORMAL, \ + attack_verb_on = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut"), \ + ) /obj/item/melee/knife/letter_opener name = "letter opener" diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index 458393918db8..f1d475eca3b6 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -191,7 +191,7 @@ user.do_attack_animation(M) return else - to_chat(user, span_danger("The baton is still charging!")) + to_chat(user, span_danger("The [src] is still charging!")) else M.visible_message(span_warning("[user] prods [M] with [src]. Luckily it was off."), \ span_warning("[user] prods you with [src]. Luckily it was off.")) diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 038d652188a1..45732f0622db 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -8,7 +8,6 @@ flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK w_class = WEIGHT_CLASS_BULKY - obj_flags = UNIQUE_RENAME block_chance = 25 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") sharpness = IS_SHARP diff --git a/shiptest.dme b/shiptest.dme index 1faa32766932..44df7cb8f132 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1314,6 +1314,7 @@ #include "code\game\objects\items\implants\implantuplink.dm" #include "code\game\objects\items\melee\bladeatheon.dm" #include "code\game\objects\items\melee\chainsaw.dm" +#include "code\game\objects\items\melee\charged.dm" #include "code\game\objects\items\melee\dualsaber.dm" #include "code\game\objects\items\melee\energy.dm" #include "code\game\objects\items\melee\energyhalberd.dm" From 16d57a69e32ef9354a74c99b67d4f93c9c463c6a Mon Sep 17 00:00:00 2001 From: fallcon Date: Mon, 23 Sep 2024 12:15:10 -0500 Subject: [PATCH 082/102] component based behavior --- code/__DEFINES/dcs/signals/signals.dm | 3 + code/datums/components/melee/charged.dm | 105 ++++++++++++++++++ .../components/{ => melee}/transforming.dm | 0 .../components/{ => melee}/twohanded.dm | 0 code/game/atoms_movable.dm | 4 +- shiptest.dme | 5 +- 6 files changed, 114 insertions(+), 3 deletions(-) create mode 100644 code/datums/components/melee/charged.dm rename code/datums/components/{ => melee}/transforming.dm (100%) rename code/datums/components/{ => melee}/twohanded.dm (100%) diff --git a/code/__DEFINES/dcs/signals/signals.dm b/code/__DEFINES/dcs/signals/signals.dm index aa530ada845a..8ac936b9992a 100644 --- a/code/__DEFINES/dcs/signals/signals.dm +++ b/code/__DEFINES/dcs/signals/signals.dm @@ -187,6 +187,9 @@ #define COMSIG_ATOM_TOOL_ACT(tooltype) "tool_act_[tooltype]" #define COMPONENT_BLOCK_TOOL_ATTACK (1<<0) +///from base of atom/get_cell(): (atom) +#define COMSIG_ATOM_GET_CELL "atom_get_cell" + ///called when teleporting into a protected turf: (channel, turf/origin) #define COMSIG_ATOM_INTERCEPT_TELEPORT "intercept_teleport" #define COMPONENT_BLOCK_TELEPORT (1<<0) diff --git a/code/datums/components/melee/charged.dm b/code/datums/components/melee/charged.dm new file mode 100644 index 000000000000..9f84dae26b03 --- /dev/null +++ b/code/datums/components/melee/charged.dm @@ -0,0 +1,105 @@ +/* + * Charged weapon component. For weapons that swap between states but require a cell for function. + * For example: Stun batons. + * + * Used to easily make an item that can be attack_self'd to gain force or change mode. + * + * Only values passed on initialize will update when the item is activated (except the icon_state). + * The icon_state of the item will swap between "[icon_state]" and "[icon_state]_on". + */ +/datum/component/transforming/charged + var/obj/item/stock_parts/cell/cell + var/allowed_cells + var/preload_cell_type + var/cell_hit_cost + var/can_remove_cell + +/datum/component/transforming/charged/Initialize( + start_transformed = FALSE, + transform_cooldown_time = 0 SECONDS, + force_on = 0, + throwforce_on = 0, + throw_speed_on = 2, + sharpness_on = NONE, + hitsound_on = 'sound/weapons/blade1.ogg', + w_class_on = WEIGHT_CLASS_BULKY, + list/attack_verb_on, + inhand_icon_change = TRUE, + _allowed_cells = list(), + _preload_cell_type = /obj/item/stock_parts/cell/melee, + _cell_hit_cost = 1000 + _can_remove_cell = FALSE +) + . = ..() + + allowed_cells = _allowed_cells + preload_cell_type = _preload_cell_type + cell_hit_cost = _cell_hit_cost + can_remove_cell = _can_remove_cell + + if(preload_cell_type in allowed_cells) + cell = new preload_cell_type(parent) + +/datum/component/transforming/charged/RegisterWithParent() + RegisterSignal(parent, COMSIG_ATOM_SCREWDRIVER_ACT, proc_ref(on_screwdriver_act)) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, proc_ref(on_attackby)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, proc_ref(on_examine)) + +/datum/component/transforming/charged/on_attack_self(obj/item/source, mob/user) + if(cell && cell.charge > cell_hit_cost) + return ..() + else + set_inactive(source) + if(!cell) + to_chat(user, span_warning("[source] does not have a power source!")) + else + to_chat(user, span_warning("[source] is out of charge.")) + +/datum/component/transforming/charged/proc/on_screwdriver_act(obj/item/source, mob/user, obj/item/screwdriver) + if(cell && can_remove_cell) + cell.update_appearance() + cell.forceMove(get_turf(parent)) + cell = null + to_chat(user, span_notice("You remove the cell from [parent].")) + set_inactive(source) + parent.update_appearance() + return COMPONENT_CANCEL_ATTACK_CHAIN + +/datum/component/transforming/charged/proc/on_attackby(obj/item/source, obj/item/attacking_item, mob/user, params) + SIGNAL_HANDLER + + if(istype(attacking_item, /obj/item/stock_parts/cell)) + var/obj/item/stock_parts/cell/attacking_cell = attacking_item + if(cell) + to_chat(user, span_notice("[parent] already has a cell!")) + else + if(attacking_cell.maxcharge < cell_hit_cost) + to_chat(user, span_notice("[parent] requires a higher capacity cell.")) + return + if(!user.transferItemToLoc(attacking_item, parent)) + return + cell = attacking_item + to_chat(user, span_notice("You install a cell in [parent].")) + parent.update_appearance() + return COMPONENT_CANCEL_ATTACK_CHAIN + +/datum/component/transforming/charged/proc/on_examine(datum/source, mob/user, list/examine_list) + SIGNAL_HANDLER + + if(cell) + examine_list += span_notice("\The [source] is [round(cell.percent())]% charged.") + else + examine_list += span_warning("\The [source] does not have a power source installed.") + +/datum/component/transforming/charged/proc/set_active_state(active_state = -1) + switch(active_state) + //We didnt pass a specific state to set it to so just toggle it + if(-1) + toggle_active(parent) + if(FALSE) + set_inactive(parent) + if(TRUE) + set_active(parent) + + + diff --git a/code/datums/components/transforming.dm b/code/datums/components/melee/transforming.dm similarity index 100% rename from code/datums/components/transforming.dm rename to code/datums/components/melee/transforming.dm diff --git a/code/datums/components/twohanded.dm b/code/datums/components/melee/twohanded.dm similarity index 100% rename from code/datums/components/twohanded.dm rename to code/datums/components/melee/twohanded.dm diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index e0312f21f836..f1095fa6fbe1 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -1224,7 +1224,9 @@ //Returns an atom's power cell, if it has one. Overload for individual items. /atom/movable/proc/get_cell() - return + var/component_cell = SEND_SIGNAL(src, COSMIG_ATOM_GET_CELL) + if(istype(component_cell, /obj/item/stock_parts/cell)) + return component_cell /atom/movable/proc/can_be_pulled(user, grab_state, force) if(src == user || !isturf(loc)) diff --git a/shiptest.dme b/shiptest.dme index 44df7cb8f132..ba4b8fed7145 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -562,8 +562,6 @@ #include "code\datums\components\taped.dm" #include "code\datums\components\tether.dm" #include "code\datums\components\thermite.dm" -#include "code\datums\components\transforming.dm" -#include "code\datums\components\twohanded.dm" #include "code\datums\components\udder.dm" #include "code\datums\components\uplink.dm" #include "code\datums\components\wearertargeting.dm" @@ -583,6 +581,9 @@ #include "code\datums\components\fantasy\suffixes.dm" #include "code\datums\components\food\edible.dm" #include "code\datums\components\food\food_storage.dm" +#include "code\datums\components\melee\charged.dm" +#include "code\datums\components\melee\transforming.dm" +#include "code\datums\components\melee\twohanded.dm" #include "code\datums\components\plumbing\_plumbing.dm" #include "code\datums\components\plumbing\chemical_acclimator.dm" #include "code\datums\components\plumbing\filter.dm" From ad27e30cf4e8a30199c75ff82602558a54ffed6e Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 23 Sep 2024 13:13:04 -0500 Subject: [PATCH 083/102] no longer doing charged parent type. we all in with the componenet --- code/datums/components/melee/charged.dm | 5 +++++ code/game/objects/items/melee/bladeatheon.dm | 16 ++++------------ shiptest.dme | 1 - 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/code/datums/components/melee/charged.dm b/code/datums/components/melee/charged.dm index 9f84dae26b03..e5d6916f9943 100644 --- a/code/datums/components/melee/charged.dm +++ b/code/datums/components/melee/charged.dm @@ -101,5 +101,10 @@ if(TRUE) set_active(parent) +/datum/component/transforming/charged/set_inactive(datum/source) + . = ..() + if(!cell) + source.icon_state = "[initial(source.icon_state)]_nocell" + source.item_state = "[initial(source.icon_state)]_nocell" diff --git a/code/game/objects/items/melee/bladeatheon.dm b/code/game/objects/items/melee/bladeatheon.dm index d073afec88de..13eee2d290a5 100644 --- a/code/game/objects/items/melee/bladeatheon.dm +++ b/code/game/objects/items/melee/bladeatheon.dm @@ -9,22 +9,14 @@ /obj/item/melee/fimbo_stick name = "fimbo" -/obj/item/melee/charged/pedang +/obj/item/melee/sword/pedang name = "pedang" desc = "an electrically-charged fencing sword." - icon = 'icons/obj/weapon/sword.dmi' - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' icon_state = "suns-tsword" - pickup_sound = 'sound/items/unsheath.ogg' - drop_sound = 'sound/items/handling/metal_drop.ogg' - hitsound = 'sound/weapons/bladeslice.ogg' - - allowed_cells = list(/obj/item/stock_parts/cell/pedang) - preload_cell_type = /obj/item/stock_parts/cell/pedang //if not empty the sabre starts with this type of cell - cell_hit_cost = 1000 - + var/allowed_cells = list(/obj/item/stock_parts/cell/pedang) + var/preload_cell_type = /obj/item/stock_parts/cell/pedang //if not empty the sabre starts with this type of cell + var/cell_hit_cost = 1000 var/activate_sound = "sparks" /obj/item/stock_parts/cell/pedang diff --git a/shiptest.dme b/shiptest.dme index 7a51c28ca513..89ece3381718 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1316,7 +1316,6 @@ #include "code\game\objects\items\implants\implantuplink.dm" #include "code\game\objects\items\melee\bladeatheon.dm" #include "code\game\objects\items\melee\chainsaw.dm" -#include "code\game\objects\items\melee\charged.dm" #include "code\game\objects\items\melee\dualsaber.dm" #include "code\game\objects\items\melee\energy.dm" #include "code\game\objects\items\melee\energyhalberd.dm" From 7523426835ce625ea05af1bbf89a643c57bdb52e Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 23 Sep 2024 14:19:30 -0500 Subject: [PATCH 084/102] more stuff working as charged comp --- code/datums/components/melee/charged.dm | 31 ++++++++++++-------- code/datums/components/melee/transforming.dm | 8 ++++- code/game/atoms_movable.dm | 2 +- code/game/objects/items/melee/bladeatheon.dm | 31 ++++++++++++++++---- code/game/objects/items/melee/stunbaton.dm | 2 +- 5 files changed, 54 insertions(+), 20 deletions(-) diff --git a/code/datums/components/melee/charged.dm b/code/datums/components/melee/charged.dm index e5d6916f9943..6fe8bce38d6c 100644 --- a/code/datums/components/melee/charged.dm +++ b/code/datums/components/melee/charged.dm @@ -13,6 +13,7 @@ var/preload_cell_type var/cell_hit_cost var/can_remove_cell + var/no_cell_icon /datum/component/transforming/charged/Initialize( start_transformed = FALSE, @@ -27,8 +28,9 @@ inhand_icon_change = TRUE, _allowed_cells = list(), _preload_cell_type = /obj/item/stock_parts/cell/melee, - _cell_hit_cost = 1000 - _can_remove_cell = FALSE + _cell_hit_cost = 1000, + _can_remove_cell = FALSE, + _no_cell_icon = FALSE ) . = ..() @@ -36,14 +38,17 @@ preload_cell_type = _preload_cell_type cell_hit_cost = _cell_hit_cost can_remove_cell = _can_remove_cell + no_cell_icon = _no_cell_icon if(preload_cell_type in allowed_cells) cell = new preload_cell_type(parent) /datum/component/transforming/charged/RegisterWithParent() - RegisterSignal(parent, COMSIG_ATOM_SCREWDRIVER_ACT, proc_ref(on_screwdriver_act)) - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, proc_ref(on_attackby)) - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, proc_ref(on_examine)) + . = ..() + RegisterSignal(parent, COMSIG_ATOM_SCREWDRIVER_ACT, PROC_REF(on_screwdriver_act)) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(on_attackby)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(parent, COMSIG_ATOM_GET_CELL, PROC_REF(on_get_cell)) /datum/component/transforming/charged/on_attack_self(obj/item/source, mob/user) if(cell && cell.charge > cell_hit_cost) @@ -62,13 +67,13 @@ cell = null to_chat(user, span_notice("You remove the cell from [parent].")) set_inactive(source) - parent.update_appearance() + source.update_appearance() return COMPONENT_CANCEL_ATTACK_CHAIN /datum/component/transforming/charged/proc/on_attackby(obj/item/source, obj/item/attacking_item, mob/user, params) SIGNAL_HANDLER - if(istype(attacking_item, /obj/item/stock_parts/cell)) + if(attacking_item.type in allowed_cells) var/obj/item/stock_parts/cell/attacking_cell = attacking_item if(cell) to_chat(user, span_notice("[parent] already has a cell!")) @@ -80,10 +85,10 @@ return cell = attacking_item to_chat(user, span_notice("You install a cell in [parent].")) - parent.update_appearance() + source.update_appearance() return COMPONENT_CANCEL_ATTACK_CHAIN -/datum/component/transforming/charged/proc/on_examine(datum/source, mob/user, list/examine_list) +/datum/component/transforming/charged/proc/on_examine(obj/item/source, mob/user, list/examine_list) SIGNAL_HANDLER if(cell) @@ -91,6 +96,9 @@ else examine_list += span_warning("\The [source] does not have a power source installed.") +/datum/component/transforming/charged/proc/on_get_cell(obj/item/source) + return cell + /datum/component/transforming/charged/proc/set_active_state(active_state = -1) switch(active_state) //We didnt pass a specific state to set it to so just toggle it @@ -101,10 +109,9 @@ if(TRUE) set_active(parent) -/datum/component/transforming/charged/set_inactive(datum/source) +/datum/component/transforming/charged/set_inactive(obj/item/source) . = ..() if(!cell) source.icon_state = "[initial(source.icon_state)]_nocell" source.item_state = "[initial(source.icon_state)]_nocell" - - + source.update_appearance() diff --git a/code/datums/components/melee/transforming.dm b/code/datums/components/melee/transforming.dm index ce43533cc005..744d75de34b3 100644 --- a/code/datums/components/melee/transforming.dm +++ b/code/datums/components/melee/transforming.dm @@ -174,7 +174,11 @@ source.icon_state = "[source.icon_state]_on" if(inhand_icon_change && source.item_state) source.item_state = "[source.item_state]_on" + source.update_appearance() + if(ismob(source.loc)) + var/mob/loc_mob = source.loc + loc_mob.update_inv_hands() /* * Set our transformed item into its inactive state. @@ -200,6 +204,8 @@ source.update_weight_class(initial(source.w_class)) source.icon_state = initial(source.icon_state) source.item_state = initial(source.item_state) + + source.update_appearance() if(ismob(source.loc)) var/mob/loc_mob = source.loc loc_mob.update_inv_hands() @@ -227,4 +233,4 @@ /datum/component/transforming/proc/force_transform(obj/item/source) if(isnum(transform_cooldown_time)) COOLDOWN_START(src, transform_cooldown, transform_cooldown_time) - set_inactive(soruce) + set_inactive(source) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index f1095fa6fbe1..20c2ad43460f 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -1224,7 +1224,7 @@ //Returns an atom's power cell, if it has one. Overload for individual items. /atom/movable/proc/get_cell() - var/component_cell = SEND_SIGNAL(src, COSMIG_ATOM_GET_CELL) + var/component_cell = SEND_SIGNAL(src, COMSIG_ATOM_GET_CELL) if(istype(component_cell, /obj/item/stock_parts/cell)) return component_cell diff --git a/code/game/objects/items/melee/bladeatheon.dm b/code/game/objects/items/melee/bladeatheon.dm index 13eee2d290a5..2dae77953077 100644 --- a/code/game/objects/items/melee/bladeatheon.dm +++ b/code/game/objects/items/melee/bladeatheon.dm @@ -13,11 +13,32 @@ name = "pedang" desc = "an electrically-charged fencing sword." icon_state = "suns-tsword" + attack_verb = list("pierced", "swipe", "slash", "chop") - var/allowed_cells = list(/obj/item/stock_parts/cell/pedang) - var/preload_cell_type = /obj/item/stock_parts/cell/pedang //if not empty the sabre starts with this type of cell - var/cell_hit_cost = 1000 - var/activate_sound = "sparks" +/obj/item/melee/sword/pedang/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) -/obj/item/stock_parts/cell/pedang +/obj/item/melee/sword/pedang/ComponentInitialize() + . = ..() + AddComponent( \ + /datum/component/transforming/charged, \ + force_on = 15, \ + throwforce_on = 20, \ + _allowed_cells = list(/obj/item/stock_parts/cell/melee/pedang), \ + _preload_cell_type = /obj/item/stock_parts/cell/melee/pedang, \ + _cell_hit_cost = 1000, \ + _can_remove_cell = TRUE, \ + ) + +/obj/item/melee/sword/pedang/proc/on_transform(obj/item/source, mob/user, active) + SIGNAL_HANDLER + + playsound(src, SFX_SPARKS, 75, TRUE, -1) + return COMPONENT_NO_DEFAULT_MESSAGE + +/obj/item/stock_parts/cell/melee + maxcharge = 5000 + +/obj/item/stock_parts/cell/melee/pedang name = "compact pedang cell" diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index f1d475eca3b6..152bc76d5f80 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -23,7 +23,7 @@ var/can_remove_cell = TRUE var/turned_on = FALSE - var/activate_sound = "sparks" + var/activate_sound = SFX_SPARKS var/attack_cooldown_check = 0 SECONDS var/attack_cooldown = 2.5 SECONDS From 0edcf0720fbe81c19559b87d39bd0cf889ca8002 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 23 Sep 2024 18:00:01 -0500 Subject: [PATCH 085/102] get_best_shield needs to be refactored but whatever. --- code/__DEFINES/combat.dm | 5 + code/datums/components/melee/charged.dm | 5 + code/datums/components/melee/parry.dm | 119 ++++++++++++++++++ code/game/objects/items.dm | 13 +- code/game/objects/items/melee/sword.dm | 5 +- code/game/objects/items/shields.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 42 +++++-- shiptest.dme | 1 + sound/weapons/effects/ric1.ogg | Bin 0 -> 9288 bytes sound/weapons/effects/ric2.ogg | Bin 0 -> 8092 bytes sound/weapons/effects/ric3.ogg | Bin 0 -> 8803 bytes sound/weapons/effects/ric4.ogg | Bin 0 -> 8328 bytes sound/weapons/effects/ric5.ogg | Bin 0 -> 10055 bytes 13 files changed, 177 insertions(+), 15 deletions(-) create mode 100644 code/datums/components/melee/parry.dm create mode 100644 sound/weapons/effects/ric1.ogg create mode 100644 sound/weapons/effects/ric2.ogg create mode 100644 sound/weapons/effects/ric3.ogg create mode 100644 sound/weapons/effects/ric4.ogg create mode 100644 sound/weapons/effects/ric5.ogg diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 6fa77815ff2b..3e1b00be8e8f 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -74,6 +74,11 @@ #define PROJECTILE_ATTACK 3 #define THROWN_PROJECTILE_ATTACK 4 #define LEAP_ATTACK 5 +#define ALL_ATTACK_TYPES list(MELEE_ATTACK, UNARMED_ATTACK, PROJECTILE_ATTACK, THROWN_PROJECTILE_ATTACK, LEAP_ATTACK) +#define NON_PROJECTILE_ATTACKS list(MELEE_ATTACK, UNARMED_ATTACK, LEAP_ATTACK) + +// the standard parry time out time +#define PARRY_DEFAULT_TIMEOUT 0.75 SECONDS //attack visual effects #define ATTACK_EFFECT_PUNCH "punch" diff --git a/code/datums/components/melee/charged.dm b/code/datums/components/melee/charged.dm index 6fe8bce38d6c..d2f84807d1b1 100644 --- a/code/datums/components/melee/charged.dm +++ b/code/datums/components/melee/charged.dm @@ -50,6 +50,11 @@ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) RegisterSignal(parent, COMSIG_ATOM_GET_CELL, PROC_REF(on_get_cell)) +/datum/component/transforming/charged/Destroy(force, silent) + if(cell) + QDEL_NULL(cell) + . = ..() + /datum/component/transforming/charged/on_attack_self(obj/item/source, mob/user) if(cell && cell.charge > cell_hit_cost) return ..() diff --git a/code/datums/components/melee/parry.dm b/code/datums/components/melee/parry.dm new file mode 100644 index 000000000000..225de193fc95 --- /dev/null +++ b/code/datums/components/melee/parry.dm @@ -0,0 +1,119 @@ +/datum/component/parry + /// the world.time we last parried at + var/time_parried + /// the max time since `time_parried` that the shield is still considered "active" + var/parry_time_out_time + + /// the flat amount of damage the shield user takes per non-perfect parry + var/stamina_constant + /// stamina_coefficient * damage * time_since_time_parried = stamina damage taken per non perfect parry + var/stamina_coefficient + /// the attack types that are considered for parrying + var/parryable_attack_types + /// the time between parry attempts + var/parry_cooldown + + /// Text to be shown to users who examine the parent. Will list which type of attacks it can parry. + var/examine_text + +/datum/component/parry/RegisterWithParent() + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(equipped)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(dropped)) + RegisterSignal(parent, COMSIG_ITEM_HIT_REACT, PROC_REF(attempt_parry)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_parent_examined)) + +/datum/component/parry/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_ITEM_EQUIPPED) + UnregisterSignal(parent, COMSIG_ITEM_DROPPED) + UnregisterSignal(parent, COMSIG_ITEM_HIT_REACT) + var/obj/item/I = parent + if(ismob(I.loc)) + UnregisterSignal(I.loc, COMSIG_LIVING_RESIST) + +/datum/component/parry/Initialize(_stamina_constant = 0, _stamina_coefficient = 0, _parry_time_out_time = PARRY_DEFAULT_TIMEOUT, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = 0.75 SECONDS) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + parry_time_out_time = _parry_time_out_time + stamina_constant = _stamina_constant + stamina_coefficient = _stamina_coefficient + parry_cooldown = _parry_cooldown + if(islist(_parryable_attack_types)) + parryable_attack_types = _parryable_attack_types + else + parryable_attack_types = list(_parryable_attack_types) + + var/static/list/attack_types_english = list( + MELEE_ATTACK = "melee attacks", + UNARMED_ATTACK = "unarmed attacks", + PROJECTILE_ATTACK = "projectiles", + THROWN_PROJECTILE_ATTACK = "thrown projectiles", + LEAP_ATTACK = "leap attacks" + ) + var/list/attack_list = list() + for(var/attack_type in parryable_attack_types) + attack_list += attack_types_english[attack_type] + + examine_text = span_notice("It's able to parry [english_list(attack_list)].") + +/datum/component/parry/proc/equipped(datum/source, mob/user, slot) + SIGNAL_HANDLER + if(slot == ITEM_SLOT_HANDS) + RegisterSignal(user, COMSIG_LIVING_RESIST, PROC_REF(start_parry)) + else + UnregisterSignal(user, COMSIG_LIVING_RESIST) + +/datum/component/parry/proc/dropped(datum/source, mob/user) + SIGNAL_HANDLER + + UnregisterSignal(user, COMSIG_LIVING_RESIST) + +/datum/component/parry/proc/start_parry(mob/living/L) + SIGNAL_HANDLER + var/time_since_parry = world.time - time_parried + if(time_since_parry < parry_cooldown) // stops spam + return + + time_parried = world.time + //L.do_attack_animation(L, used_item = parent) + +/datum/component/parry/proc/attempt_parry(datum/source, mob/living/carbon/human/owner, atom/movable/hitby, damage = 0, attack_type = MELEE_ATTACK) + SIGNAL_HANDLER + if(!(attack_type in parryable_attack_types)) + return + var/time_since_parry = world.time - time_parried + if(time_since_parry > parry_time_out_time) + return + + var/armour_penetration_percentage = 0 + + if(isitem(hitby)) + var/obj/item/I = hitby + armour_penetration_percentage = I.armour_penetration + + if(isanimal(hitby)) + var/mob/living/simple_animal/animal = hitby + armour_penetration_percentage = animal.armour_penetration + + if(armour_penetration_percentage >= 100) + return + + var/stamina_damage = (stamina_coefficient * (((time_since_parry / parry_time_out_time) + armour_penetration_percentage / 100) * damage)) + stamina_constant + + var/sound_to_play + if(attack_type == PROJECTILE_ATTACK) + sound_to_play = pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg') + else + sound_to_play = 'sound/weapons/parry.ogg' + + playsound(owner, sound_to_play, clamp(stamina_damage, 40, 120)) + + to_chat(owner, "stamina_damage [stamina_damage] time_since_part [time_since_parry] parry_time_out_time [parry_time_out_time] armour_pen [armour_penetration_percentage] damage [damage] stam_const [stamina_constant] stam_coef [stamina_coefficient]") + owner.adjustStaminaLoss(stamina_damage) + if(owner.getStaminaLoss() < 100) + return COMPONENT_HIT_REACTION_BLOCK + +/datum/component/parry/proc/on_parent_examined(datum/source, mob/user, list/examine_list) + SIGNAL_HANDLER + + examine_list += examine_text diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 2b8e9a820041..8c8032296cca 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -508,14 +508,21 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb // afterattack() and attack() prototypes moved to _onclick/item_attack.dm for consistency /obj/item/proc/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - SEND_SIGNAL(src, COMSIG_ITEM_HIT_REACT, args) + //Mostly shields if((prob(final_block_chance) && COOLDOWN_FINISHED(src, block_cooldown)) || (prob(final_block_chance) && istype(src, /obj/item/shield))) owner.visible_message("[owner] blocks [attack_text] with [src]!") playsound(src, 'sound/weapons/effects/deflect.ogg', 100) if(!istype(src, /obj/item/shield)) COOLDOWN_START(src, block_cooldown, block_cooldown_time) - return 1 - return 0 + return TRUE + + //Mostly parrying + var/signal_result = (SEND_SIGNAL(src, COMSIG_ITEM_HIT_REACT, owner, hitby, damage, attack_type)) + prob(final_block_chance) + if(!signal_result) + return FALSE + if(hit_reaction_chance >= 0) + owner.visible_message("[owner] blocks [attack_text] with [src]!") + return signal_result /obj/item/proc/talk_into(mob/M, input, channel, spans, datum/language/language, list/message_mods) return ITALICS | REDUCE_RANGE diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 45732f0622db..1e8c86f98193 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -92,15 +92,16 @@ item_state = "sabre" force = 15 throwforce = 10 - block_chance = 60 + block_chance = 0 armour_penetration = 75 attack_verb = list("slashed", "cut") hitsound = 'sound/weapons/rapierhit.ogg' custom_materials = list(/datum/material/iron = 1000) -/obj/item/melee/sword/sabre/Initialize() +/obj/item/melee/sword/sabre/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results. + AddComponent(/datum/component/parry, _stamina_constant = 5, _stamina_coefficient = 0.5, _parryable_attack_types = NON_PROJECTILE_ATTACKS) /obj/item/melee/sword/sabre/on_enter_storage(datum/component/storage/concrete/S) var/obj/item/storage/belt/sabre/B = S.real_location() diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 685bfeae8a8a..81484bc4e13e 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -35,7 +35,7 @@ final_block_chance += 30 if(attack_type == LEAP_ATTACK) final_block_chance = 100 - . = ..() + . = .() if(.) on_shield_block(owner, hitby, attack_text, damage, attack_type) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 7a7bc349b26c..be89996876f4 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -105,29 +105,53 @@ /mob/living/carbon/human/proc/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) var/block_chance_modifier = round(damage / -3) - for(var/obj/item/I in held_items) - if(!istype(I, /obj/item/clothing) || I == get_active_held_item() || istype(I ,/obj/item/shield)) - var/final_block_chance = I.block_chance - (clamp((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example - if(I.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) - return TRUE + var/obj/item/shield = get_best_shield() + var/shield_result = shield?.hit_reaction(src, AM, attack_text, 0, damage, attack_type) + if(shield_result >= 1) + return TRUE + if(shield_result == -1) + return -1 + if(wear_suit) - var/final_block_chance = wear_suit.block_chance - (clamp((armour_penetration-wear_suit.armour_penetration)/2,0,100)) + block_chance_modifier + var/final_block_chance = wear_suit.block_chance - (clamp((armour_penetration - wear_suit.armour_penetration)/2,0,100)) + block_chance_modifier if(wear_suit.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) return TRUE if(w_uniform) - var/final_block_chance = w_uniform.block_chance - (clamp((armour_penetration-w_uniform.armour_penetration)/2,0,100)) + block_chance_modifier + var/final_block_chance = w_uniform.block_chance - (clamp((armour_penetration - w_uniform.armour_penetration)/2,0,100)) + block_chance_modifier if(w_uniform.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) return TRUE if(wear_neck) - var/final_block_chance = wear_neck.block_chance - (clamp((armour_penetration-wear_neck.armour_penetration)/2,0,100)) + block_chance_modifier + var/final_block_chance = wear_neck.block_chance - (clamp((armour_penetration - wear_neck.armour_penetration)/2,0,100)) + block_chance_modifier if(wear_neck.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) return TRUE if(head) - var/final_block_chance = head.block_chance - (clamp((armour_penetration-head.armour_penetration)/2,0,100)) + block_chance_modifier + var/final_block_chance = head.block_chance - (clamp((armour_penetration - head.armour_penetration)/2,0,100)) + block_chance_modifier if(head.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) return TRUE + return FALSE + +/mob/living/carbon/human/proc/get_best_shield() + var/l_hand = M.held_items[0] + var/r_hand = M.held_items[1] + var/datum/component/parry/left_hand_parry = l_hand?.GetComponent(/datum/component/parry) + var/datum/component/parry/right_hand_parry = r_hand?.GetComponent(/datum/component/parry) + if(!right_hand_parry && !left_hand_parry) + if(!(r_hand || l_hand)) + return r_hand || l_hand + else if(r_hand?.block_chance > l_hand?.block_chance) + return r_hand + else + return l_hand + + if(right_hand_parry && left_hand_parry) + if(right_hand_parry.stamina_coefficient > left_hand_parry.stamina_coefficient) // try and parry with your best item + return left_hand_parry.parent + else + return right_hand_parry.parent + return right_hand_parry?.parent || left_hand_parry?.parent // parry with whichever hand has an item that can parry + /mob/living/carbon/human/proc/check_block() if(mind) if(mind.martial_art && prob(mind.martial_art.block_chance) && mind.martial_art.can_use(src) && throw_mode && !incapacitated(FALSE, TRUE)) diff --git a/shiptest.dme b/shiptest.dme index 89ece3381718..a4ff20a2d2a7 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -583,6 +583,7 @@ #include "code\datums\components\food\edible.dm" #include "code\datums\components\food\food_storage.dm" #include "code\datums\components\melee\charged.dm" +#include "code\datums\components\melee\parry.dm" #include "code\datums\components\melee\transforming.dm" #include "code\datums\components\melee\twohanded.dm" #include "code\datums\components\plumbing\_plumbing.dm" diff --git a/sound/weapons/effects/ric1.ogg b/sound/weapons/effects/ric1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b7f7bd99ca5adb5805710dc37bad2633a186cf05 GIT binary patch literal 9288 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/effects/ric2.ogg b/sound/weapons/effects/ric2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..dcd44b07329ee933dd8556eb2edd176710b3db81 GIT binary patch literal 8092 zcmaiZ2|Sc-_y0Ziv1M;W8X`spV{K&L${-9QOZI)u9)-w~JG_qly~cuRAAXobu2@6k&1z$0`d){4`v$*q+YCCRM|)eo!EA?rsmI;aU_yXqHI z7Qw!Q=#|{R2I#RKaPTauRGjuqsx&0_F^G~(ACT3FT5uo?R1>(8!lqTr)?ds0c7$K= zyNCg+^oXQ}p^+{QZ2lJ40~{s;{3ioKOf#d*pNE(}k20T%viKQg1B?Ev?}p6&B=uv} z;SeDIJUU|mQOI|u@FTjAJTkhH46rAe1P)E*L!=gIl{mUqyW})FKWX&nuM_F7qd$HH z^eF}DG(f&fcFF(fj;0w7|94k*?hyu*L0fivb9a05Yhd}ieMG2_E!+cuK2^qwboxkL z@s;ZKl?VG3KlNU`&f6b4r~Y;V$?X83jNn)lwdnv!1Eoba?tWl0& zb9rXYu?O7;ITt`*BKopA^RtGteFwGZvk51&AeJ2Js`62AjdLZJv5V6Ne9vVxo4S13 z1l(&noV{Gu%m&V4@i~GG%|<8u{(?ohW$xf>^gOsD_Fax!Gt>f{?b+vUzJ-$3{u4gR zpx~K0Q-z*5`0vQ^X6sJj z?oHv>uH)Ao6?ywzN^eVQgjK^pO4pFxVuam)jKjfD#$rs`VGQRm5#TW0=wRLyV%qpu zz?_85?4q=9&TFOeo2Fg}%5aL!F3-waD=(z|kH~S3 zE6t26jfq={NfL_9aEZ;XXfAZ`tKMk&Kl{HT=ZX(M*ulur@ZtYQ3=!^0NRr2wU6_N0Twxdm7c&NaYhRNJz_xWgp}@>6lmCV0N@0G^PrO> znc{qsRXr6^Hg*P{ni{-h+SPLB2hp#3C_@7 zazktB5)GL4C;$Th2t)Ot-oShYwR-c_2T{;R_#U(%A#GF(fy{tOA_PiU>=ts1Mzwm2 z@i6VUN5w35u~pzEfExVK6$~e{LzLM7z?L3Mi-^Kw2NBE3*gn(}Hx`2~%{3fE)0~a$ zLs317U_ubM4F?h3+>rw+OSuulDnbANZ-an8RUs*R4S-1ynDgQvN|VxN6VPVW7-Dmn zWYwKamwGEDZD54!XT?nz;ofuT;u-~XS#@=P7~xnoaO}9T3|(A<$B>l6v=MHG12@s= z@SY>|dWQe3q^>FWNCc_=lNljaL=TJ1zgX$A9kY_bO*Tp!_~8t24yHyp(*Ot4pSbJ9 z5N(iZs5{M$!!_cjw>@wfA@hDXi|Y>4KXIlUq2`lO^E)B)FcRm<34f4kLv*ld@}CuQ z$#!uqEUU;Cs;DThX!NM4t}-uNtthPMt8=QTuI#IO`lQ-@1Ef}$Rn&=8RERvOtK6>; z*=Q`QXsPO}tI4T;veEd3u0v#_#jB#a`bpg<61Amjqsx1vMLf6!(O>dpy`{XR#dD*@ zd!W&SyQpIQrEq_HO<&!YjTW(be_jKe{|w$@;X0^?ht;h-^Pf?59+zKL?e~EUMt9Le zH@Ta^ZO=Tpz_qTei%K?^k_b-O;7Kd0aw?u|)OlX)sN7IBz=c?(JIu;jn4b2Wl}$3A zOf0NeZxQZ)2?|1e=(@?>D$Z^3UIrvQs;i<4vFrH>9ddi$<-ISru;X9!lpfms0K^7_ zgbmg{9{+DsKQ;5sEpqF{nm1b59hJ8{ARMVy=bgVl(tW zc4eRMf`hDjNy3k1EM?+BR#_3L7)(`qDs~_@jl?P<38RH*OvUJcr@~-rqp)V~C}J+w zT^c+U$SM`%j_fis*J1UC|rO5)5g>`aJYG*md{{Zsz}1iJ2}jg zK;edN(j`P!62aU)Jc&<4K{z7LwWjlrxFMh+;4K^^i* zDTEZZDlynWEf*%A0kkkwbpS0`?xUlMK;Q;cXapJt(FjB*5ltgN;LsLEb{e}O5TF)F zuGSkv3mqoUz{MiRozkvbT`@^H|iRsJ9p z2%Q6Fu2uC@$~09`LR&v#75S^J|jZ*?6l^)XDlYh^k|BDjkV4cNm z41TSTq2_J3FJ|7~XORs}-tp97%$ik2EUqUJKbatU#U zPK2Z*6C+sYb!37kraBuLjaV&?1l?1hhCvGnfG9yAK=^KHe} zAVJ>L0t6z~6_g@JL#Q7oiJDTmiXafp;*ns;VZcY*1nFoj_)6!LZ6&IB6br^D%&rm) zATu}c=x#_v1JO320kl7uA&9o|(nK>lV9wJE2)kP29i3kMtbJte*w?&Zv8{S+ZPLX6 z3;H6Tgce?P42UWcMtCDZH=L|RCjV=VNp9r?S|FfSPTs@os~$s(rT|<+oCQH9bUYIP zXV8-Z?ih@bEMO^z2RWat;aNZ#$K@R!OF|@Q8WQ0cs>d@ZFUefTFY})4CDno;M9E26 z`1~q=Q6HbX)Or?Men0K8GcX#jC1UdeD}2pg;i6ckB;0P<_v zhEX>tC>B{HXz6LYBYj6*$N{Fv9{Q9R6M7cbits{PIl$zGbq{qIePUvLJl(298>Phu ze|RLEf;XlU!j>Es!Ri_KkwNeIYp9$Cf$`)53;}omAe8~m$Cr&xVtjBanJI-il_iZ8 z55gA!<{)9GfG~c_n3x#Hq@s=ma(;FD$l^DP6avR&(m+FVa#f)?o*!S3DayeJCNfKwsyp@mJ3qtDPYKXl$ZETX1GKl}l?+62|8q zJ1I4Je!>Q$kUs(rr_Wb=ZnzjbS+@9nO7R;}CR=oLDVkb4r7d@zlO^X+pARnlQ0v~}$YU$7GJDG=DL`Ocr=*8KbTJ=yt18LCRTgKW*~%R(+9zlO^) z?*%*jdeA&6vgb&t9XBWRpjN@9Jk#a37u_sRU;2csJiXKGw%$#VxG$-hka1%J46nh? z@ZyhN=6th!-e#C+>fn^@`2+V$KYKEJM}+yVOpeTo#)wTMn#evdVp?NWIFg&CP7^{? zzrj+zWmMU^;8J0~-^yS#Fx*C5G6)Y}8`)pqEV-|3YQ<=AitCX_1a0Xw%0O6wVVDJI>%h%^Zn)HA6janPc6<3} z{N14@#>e*Dx6ibDed>P=*?6I6!HyvpZP`0`asK`&qe%QyQLBV|=Na2dYBg^VBt_yc zf8oeF3{;YHpi{D6d@WWeL}tCyWuW|6bB)6}SYo9$<%Z#;#YpkiFG4-lK~1LyeSU^= zN7Ol___k^TLP>W|{ug`DShbimPO+nPUqJHR>j$STr8#Y;FS5S8uIECbSLsA^{BvN)u+F*p@2O}tq3lRfB-RWs?y3l^~fRo%w|QF99LgNJ5z%+ z(UI`x@Mc|x&$`A)W}6vmfU1O&C|)UkaN|KbGU8mr>p#q4U$}EU;uWIBf)pO&Q0aVS zJY8*?zoD=TQr1^ookAZzv3#_eC!ul_7M^WKU-0=7HN~#Jw?CctIZxxgAck{T8Lfw@ zx1`A>_5N(hzoOWX92u*i%z2M*lq?>2X=)Uh!oega5N!6Q%c~&$UGpld&U@iz`{^hM z{MAjg{BDQ;h5I{)eMHlz?vEAkp3UiY8QX_`p6={dOB}DeR>uF6x1f}sIf{1@-w?^RC5kpiy)tI}u(Q7SejMqAxKOks*o>d$K& zhEr0U$LW+Zb-yxeO>c+2QDSfG8tu1Q6{b9}pb(UCrIPWQ7g*xW46k(Mb@fqL8}o&F zBwF4)yI`y)>TCJyyqAl8@Ey_B$NHEHidu{4N6zYp7T@P-#JlLsOKRj_(YDXW>1tGU z05x5=za8f8?NxC}>&X83UMYETxicaAv@P1-UQYg6tkI~iviIFp-%F@D;CGmDVakfe z^*#hWs@8qj`Zn{m#czB(74bnrG&0ce&r$65735T|BHu4dzuJj_Tz$4U!?QfqAbW0+ zY(Mc;SwEy;@6Y+d2)`F@ehvporq8&q{0c6*#;|`e-0h%Ev8BtWgt*e%uV5S2Tg4fj zK%7*YE|vHx4!gSZ;mc9kiWS{qppn*T@0cG2L6n=5FdO`lcUe1EhS%tp@t!1=OD`CP~TQV;i5)z1qwvg^_SpUh!SlG`}G-o7fGr^SyQScaFM5uIEz)P9ja*iP8+cxnelN$gTqt<-hPP%`!^?-q|Dfd?MMYNEs#xacFz-J%s_PXt z_0q+C`<>^zov`&nrS;jKDbr88>yO$(f5=Vko$O;<7pssXI}}_*r-xKh! z!CoJ0#eVAe7VPEp%UTUR^H^A4|0%7ur18s)>e(o7U=Ekv@X}Jii>hwpCUVPDMgnvc-xVLBA3&LFt+lB?X=BKbo1yf!E^~ zd4J4=LQzr|T;D&Xt`805Aj=b6H2QEOdEnlCzJza2s6M4J>W5Rdu~>5-NNMG2L-Iuf zxw7ehI9_fYT9#)|KPx*Gu<2Q_y~TOicdpkM{%)q&|0W}k?I+@l<`G}0?={!S{dJpH zykou>wcSsb9gYR!O_NS7Xdmdys($cOx!WH8wQ&2}@Ty@V@1Pim_2YB=mfv2-eq9W< zCoEe=*#+chO}pIltTYjs{~3%#d@s>a330h957|>tEY;T^LCfCfUWJX@H1xR36N-hE zi#Yq>frz-G=+{;GcWd)$tHoQmfI~rkw5ct5<^w)h$Mx`Z{#C>>ii?gYoZr6GpGQ;y z#Mu{Je{nqS?%;|_l!OZAAuT7Gj%eO(iHSn7`_#jRXvdA*JA2!o$To*+n)jP03S6>w z8Rcugi1tA;_9Rcm+4k%_$U#|G<=m_*OPfB(|DL=QeTiPEslJfoZZBYtWc^XDnHfoY zvG2m&pYl3|)uD&#>+4*|qD!LPsvDvAE;#XqXSEUKKlin&ntnb%1qbTm)qOuqo2bWc zoux0rJ+yjqOJR#vEiJ^H3;>-&lcgPp`U(s^rKMj>2%B{$->ty>{_Y?~19UMY>^{6T za}zss_p3s4H&@WNw%HDj-qzg%K_{-#NMTQa@p9EikyeAF#+Ru6QMCrjeJM?!JoDmqV3KvS|C;~RS|VcS z*Qh6}&Z9D@y`R9d&deY<)uDp*I*%+%T~lGJnvI%{Wlx~g8KKXQYfRjXiz~{UFT>J> zIv?Yfgqf-FQkE`2p6p^e%(;y&;Tuk67|IW=cxQYqVGIEbP;Za*54a&O`x%E@iAhxt zez~c$Ht%G$*jc8Ru(Qwm!gK8H%@;loy#z~?a91_ zQtr^PS{eOPGJ9Qycvt*vGO*A21JQ}fNX)Ksw}{ScOL5|;nO=mz| zQNT;tMHO1MIS6_i2fVdSbYduW5wKj~{7kNVAhax9-l?P8+&Xf@>-A9o^WFBt;6Ji> zJbb4m84kz1xOV&4REu$P_imoH9Y19KKue1f-Y=QpbDYZ%GYR#jrs<_0n<&ef&2xX+ zHki(5YFs`WU zS_un09+k7sI2LG;QDsSL1$0%8TrwU>FFlZi=2v#Ltpt6r-#Vq znhdw!w*H(hbThurlaW7;6w}?}AKDksKXWj9{pD#hYTzZD3a)u-kWO?{@P-jFijeUB z8?tH7J4&xJME$nIpL)gP_<)PD@u6#`7shs9OC))|$14m@a0)43Bg3z+QofWiQieK` z8TUY6YDLtXRw=#KqGOV298_0XNe6^!xo3IJ_@|b)bWn|z@A;AazG@?QI%D&js zX^NXp5nr0y8v7Y1K61#CXGuX{e9yA!a;Mv@>pthvHm76i70JBtCVazf2|GhYCsh+) zo7W_x_H3^E;|1WN+t&MsRZEufTtO82b35EC%BK>-r~?lNH5ZH{t>K)TR4Vx_ zN_sk~>Suv4I)fLzoK8`-*+1UxGUt*R%T#^U;+Knssh+cBW8oEPZaVXIywTdrrIXI~gza7l;ly56(<}2HK{Eujpv_ zPV^S9yS)tgXGzUF>X+|~_?cM5hu#{y8zpO#)9&F&v&+r*h0b_GT1Be;d(GF6RxjbI zo7O0o!LQp&9r7kz;$Ow_v;HF?Vp)D&WjU0hPfp!8BcLx9N$o#WsJt(L3l`55*L%}T zd2L>X>}s&ga(0dPnZ5XwGv*Td{otQ?2V}c^-`RkhByRPC}_jqUMC}SD-{^W=1!eTHZ`^`e$;13W~#moyx#86Q*nXL^)Ep_~cABwY-gKX9L{x$R^ z0K9bg?YnbX$XN#NYIHA40=(#da!cB|b6@7x{tN04JEChlO2)#Gy9TWu&5Rfhx*V`9ozfAo~QH&j1)n-jZd(* z%DK?<2!9_pt9|weBZRsdN?lD|?Jz?ATtJ{taHwaPXJ9yz#v8(TFcoQV(h34V!5)+e zqL(n1g$DpG0C15;a^!j$At|I{`6x2!EUne6mO>__^upcKQGNfa5E>r*0Kfnccr%BoON6wj(YfJiV=e^;7odh}gIN#@b_@{MB#Y|4!j7!%Z#m3!?& zCdcToQS^Gj-xbULJ`mtq448yGxD22)_Q}XHawy2^U|R@)0B#dFlg(#T&o@*rIx;SO z?z56PujcsSQx=w3JorR7T1R@$L`KX+#@Lb*?OS7PTNCYP6CJ-Ly26wGF5hF8ztPJ6 z))5e(ND7_z3VByj`0h*eU3y|t4ISV?Qwf44M-rJ+VpQhkTkCVH*}J+qV5mW9r~$S= z1hgpwZ8boVPk!0|Q@m{RJpcEi?>(RZ=!3fK4-xGTkv@f!?hjRB-q-K|0NPX^r_>v& zaVAWoKTHQKXTlAil1xUvm~j5f2sE<;fIdpJH$?O)s12O*WT>WfnC?s%b_P@hO(XyF z6St2Sa3d0hUU|L*=;18aeYFrkw(w%;N!WoTa6oeLYefE7{`Lr(BmYfNCEu;d$0?S# zWTAD}{7RuBpxPfZyM+sB|hAeT-fOXQaHi<=4jI2)2HB6nq$Aq4oVY zeDp!Pxz57-3gZzmnM`hc5@iy(;^Egga*I#{$Wrl)%+r|41T&nF93?z{f9D7QAad=a z_+QmNln+o`nv<$9D1U!geMpH`)jSzJx>5Ip>m&>XqF6~2L~%yb+U>Af^jSYj)3lu; zg@nT(DF+?}8WrJ@b%IG~-$|0lp@YbB&@29FxR27$xW&f*QJ#GgHRq85%ecC-#bI5% zCEhwR!1hMOd`qI^Y{c?R%<@czvtZJH1MAmt<-oxI@|+O9 z{%p~w+0w=h(%1>5kZ<&d`f=h&D-xP@3Q`v z=Xj@ujCR7?Mpy!+lmHvn4bfH8~g5K1i zgxx;aqwYAU(C|}&|1o5$>E*YM6LQc0e2mJ)Ly@HeHH#AAekU5fx zVDBz-FnXg61;ZW#U=9ET)Bvgn9y)6Dw8(H2#ZpKbK+92bCybEFdGNzXnKB;tR|O># zMo&vgaO2d%QXcmdDmV#X27heDV_EzVeLetigW*__i6q=8axDuthHNfEUeMfQslhflmINEkaI4*-ZR2>3IQ*YG$6aLEBH!P3uiHH`UWjCoHz zjrTkv%nq(;o-#W+s~IFkQnh2`64rG=kq)-(^to8vugE%COIp0?lc z*3&V@Ak_jp$B)N1Dm&p zEbo)=<9oNFDqp^;sR?0Nt=j61<}J1-N*nFLRkgL%4VyG-J9VQkWTRazx(qo~R{g%cvb{ZU zqdjD}IY6|e>V2oePSu5*q@JJ)-^^1Q|?x zM?VV^Z3Cy>4-^6W`nDC1yJ}}r&gX+Gt)kwls@`Y_RD4piVPKAralG!ie8kaKFmU-u zru|ID-KzKP3PYWsAk;!%kmv(7QO9{LkWkn_Ws7ki_{Q?gZ@w?&*U?uy5heFvEdAF& zY(Qw(;2qR2mQbW4XhQ%diFG~;E`?r1I2Z0cqSO+_BoStc=@liJVSFV>&lUO*mYGHa z1-U#JZzO2~$6QP?!}t}Grg47tWzXIILX-+%e3VHOcD|K;&+XE=-MQ4)OFc%7SSXD& z0?2B;sFcG1Ln-Am#wc42gFr5sIB~YJl*huTvI%5GDHSlrpqlyY15wkW;EYlpdn05Y zpGAOjU%pfy0%Y}+CVXGU8!`!Gbu%FcgP~r}!3`JW(pV*AVvLZ@IT#agRTxZtBF@eq zHC=%7*92DuvdY2uEBD#in>0mm*|F`firQr5=S%Gah09Rj#+dph0lz@hnlQ$PN)uk$ zD`1}q3b*jnESvVF5$pqWr}M)w)amEA43OX+@Ng>s^47n0?&ho9H|<8H30J7Uo&ySB zdtsN3CQZ13ta5Pa;0$~Jwz525kdTi{Yg&5|=C8T)+^&Wu!x;QRgk5XM_gcTFjNvE+)`bEn`nZOtBeCR zN{s-aKO-lC)9S`DAQZf)J!CsDgWUudw7DNgWPmJYKp$QL%0-{&avMg! z71aPEqbQL>p|2o;!vM+;E(82l4Wq$|%K#*R`Cf4XSW!q5Gy)Fu4gvNdDd98%3C9Wm z3c+ATRA=rH7N1=N#!NaOiWW05Xy#(lX=ERQl!F7sfm^B!g@L;3wW1M7cAE$g8vdG* zTp+Ca>`r2+y*7Te5|nAT8qFCH#7%4Yei)G8H_`?G3yjP_9lgjYEjc)gf`-TbCI|>n zjp?W)KDSiVdcjF3vX>0zIAw5J>H&UaY57MwNC02^KmvMQlvWjlW&S5I`A>`G|Felo zFwf$)0>9RMa1rQ1R(_gi|JB|9?=ofkS#{-D*&!6FAU6 z;qEn{1KIh3OZQVoHch*wH-Y*GBgC{@n&z|}8?X`>3=q!Ng(O`sz27~)vTth%FxfWP z*Ea27fCFt&L_>>&AqGSh4I>gn&E`DO-7%;qH6$yHe0KaqXiZb(FnFRwKmj!_iNkUF5I*<-D2T{_ z1d8gq#!wCn46k|ASz)aG#IOk;dVq^K0LxCcf${KG#ocu~3fMTf3@{U585xafY;V=O z7#$ZP5JUunL~<{LFN=`C8+h?0`?=P~EJsgKI1UcL5I`INa@Y})lKJRNj%%D*T-n?? zJh{9i5WWDg0wHh$1Zl?P(!xuLGS?okKzUTs-*Sw&&V&D*yN$rXhKMWy_LjI0vs;a~Rx=zLrw zjK^*hsHDeSVuc!Ms(n3w`X7W^@7C|`JS*tkebxg21&o}S%eT|@vdgQd+L>G=#Z|RK zg7?&Kop7AOBZ-^1>)`NJFlgTZUAla1BzyPq@FD&tM> z^Fy6)Y9>v$ljwdfa*|mSemmW*OOwfUdR&exVhE=aXYN6gL36}bEwUI{O*J~YmZO?J(^7l{vYwmoF&c8b~{`eR44MG8}$Q>8@ zF2Oem+r6Rl)7`LrS!lP*kEH9-|v;%)A8 z1}&z=J(Rz~%y&+u_t@E@jjsYire4+(opUg14M!A0s`?@K2ZT`OYA*_BEH{+~1ZBMO zXc@tvxm0&67Ai8jS-XN<);o;@ockGGH(5FfDQm+4fFs5f+je7ZtL&TBdEd($aaUhA zF<%-oY2zAJ@3~aw@`mA~7pH#AAxS^O9pX_t@avr5mx1hHppPQw>GNpE=eU> ztqTiS+1Nd}Kcefq*j`Quji$fd21DzKu%^a+I{$P>^5&FxfTSM>6O5VgZCvz=o-3^V z+a;R`i>-Nx901h8moHYnSFrAXloqtHyfOLH_KIoXnXcSb=GqPPJ4Y8z$~oyUzq`fB zE3D2B%kpF*8>1D*e_0QIk=1CQZvOSajQ7%sPVO3C3w_iGZ){rhHs;58I4_s>i*YTw zr7GAQtKw(&-`23$JBt`L_~Mr>j{!xJSNn-Vy$W9CW7Zn4l0Tnf5U+a8=of z(ioG7xLV5W>&V(`tKG+2p_w+#r{9QqP=qFn#-vmpR*&5qh<=nPcX`#DogUu*yA)*?3O>9QpJ=3wr?zX9UC#~z)D{` z<>~LOkjtOPo<)ZRdKSzDE$*heW{PZ=xMogjQ(Jl&%O@{o(IZW#sV(PmUoJ~+;s#oS zzo5Tzp5ZFkh~PF&#{4)YS7fdzqIa?wjkJvJlJS-*Gr?YnWd-qdwpNmmdBD@uf zHg>uRC_V|XsBpg4+*U4xjAVofR{3h^(oeonEVfsCO%X4}Zuq5}q}H5)P4Dg6j^k0V z1jKEJtF_OuRd98|&qbwwgADjpdSm1#A^O|pdB$xrB3Xu=uI=68Qi?0PFEFgsoP_#>NuwMl=f+1Tz7<4D#`Vv_UV zV_P~k<;k-~apk_3yf4j#K1rNpYk2}Ka1xEBTV`}aWYh*F$9dqKj<7_YENd$KGbP-U zeR0gEBh7PU5~2f07y^5=;Jsu6b87dK0m$tQ|+&?!i>fk5c-A5}CSQ~XT-@$;xano((~ol=cfUr=hE*NAT2>viban&CBM@6x z(q6W(0=pM2`MEwFmxuOw7_H+Q-gKI>^e#XMKNTx)@c8TmQtX2&@7yX~ng1HtR@rmu zA(vUo9kth&;;Tiv`rTd$Fs zAI{*}pRvrTq%VuozOp7E=;CObhxYT2S`WWb+@k6?#Y&oz6^=gj*|T+H{L?_58(u`@POBX%i^OE-=S>u>q zg(F7%rZ)AAfXlGn55EuGmNw?&nyRXQ8l)#?P3L)D-TG|&<{p`885L_zj6M(R$g>~dH<^M^-*dTPgxJ%0Mq#$hg6mu;Ce znlRCx=STGEjupCcLyo||&A%9uiqtf3#!3idL`GPF+h>PERlKnBP=Q#Ln+rD>_3g70 zy*L2E&z26=>2t>(eev>h-aIp&Tyc37$6501sxf2H%ksE589i$J%aD??3ENHg6YXzE z>KslAkKbK*bTO)}bvJBptsKz#acDE7t4+K6>ob;xj5rrgtrO%%_P=a-t;)q?>TT-E zqjZlmdz_qJiCwaKl=|d*mzk_1Y|(E@s3*E<)b2yaEHu?dd3gjz8J@kv;Cg%1aLrn13{f zJzs!26j%^zFFbD+^;W)MGqcfCa;n&K>Lm8EHutLKX}qwJ0n$6bRKlqPU_PSV&+PPl zZNB=ah{nsq{RHBymR?2bhtbsf*1v|dvM@uJl&w=Ll0)J5&D5K$b{rK8I4hXG1~e-k zK89uicFzpYN_MM?e-}%?=gw^~UW~nNWq@L)2LOlJEB7ZbI%Pqr|Gk?O(cD;bc@&R+vx6HhXu#$(OPAlFG5Q>(+s} ztWS4y_lmS;G#nv=YYWHT&ZIpQPmFw9B;R_y)a+rzYfMy7hgx0orovY-Gn(;#U=6fziLfCi8VHOgKVgczqBN9e~V7>twCm*Nbr$& zDq#i!#WMl9}bgkR=w06#3g?y_c-fHsig;n4-G(o^zqm}HC3lu!v1<5 z3yW)l-7U9?g5eBazzRE1LpUA$OA~(Y5I;3uY-`9k;pGZ-tW$2NvGk~Rx>E|)Dc|_K zmG;jd`e1^WuvDtpM8fE$^JiW}Wlu~#fdmhVDDSv5)rR2_)1f=58M3+F3{TK3%4)|l zeX-bk@4@T?NCw2=jc9>aY5b3j`o7z!hm1Gd-Krob#L)r7%YVrACV}c-cW0*{O2PCW z*_Hmf@W<-3_#5z~CfCZYz%SmNmL`1T;jygK!d3jI2u)rSw}hHr-*m05Ya-DbWJlK0 z3%-0&eKL#ViOzOWdZ_$IR0B}|JTTs~cN#Dfl3N`CD!rMOXMoXz0@QSO=;Fp4G^gTKAHz+!#m!j+HOWK~j*?Opgokl$Pa={8X zd(LAo{31ifvhij0SNF_Vt+MZtT3|W-UrxLi?@6TQTscG9ewd1?Zkv74SeHTG-0qsY zvcM1<{;U?#&lQL%QE0jDWbDsHI=D>^q(ge^l8S*I1y@9CKfetP9lDlVi_}Ok(vm z)3424L_6KOqu%e?NYR%uP?yM{r+o*gSJBh@(!gQ8M%jY2K^tP-A#_C z#HWnZabA#kxK`30<+RiZ%Q~S&%mlMtRo;@Z+jmn| zi_rT+o8vq54i2lwmboB6tX1Q4o^RZW+l+DBQY>93ft;KY1b-U%cV_T;@{le{Rp{xr zsD;q&-*NAJ++RH&XA;Rpwhjbre7SZbOrj#j>3-*QJb_N}W6N~IN>-vuq43tCdqOHa z{;i$Q2an^cx&06Zhj50+Y36G_qhALjwN%WqIEZ&Hua0fK)pZ!z`C<9afX}=!Dzy6M z+BGjy)^@mfbi((hh4|rnu9XeH#y&P$1Dy~cna;_}@@dXm_S z5(N18^I1!RU`@&R@|UyUs@;n1Jwzr;ShlwXeco(5BOAZe#PapA0L7R2|NA z%#Cyj%X>XCRCN5PKfq&#*Q5$_RUm|arskw!8`l1UZp<4P(LEM^XR#>D_n|&jQ|yC1 zOlJ<}diAHRa^zgvM0EL2Pft^mRGCs<2B7Ok%4;!TNz?K>4>je6nG$CK_$4;QWv{^e&m9NcPzIQKL;82vwAtZ~+&Y6PIfZ0#%dF(yx zS03Nj>ht1MUmz2Zr`-`Qz7|h@1AtRB?H}vC<-Komou0%&8_ilb2^~U-rV71T+~)$G zP4+AV03>L3bjV%ynZ0&|h3Wcu{`EEoHI-r2NhyFJ2IzZl7y^P?vagd%D22~6)ZfpI zR=+LbtML@NzU3GE^ea)d>(eH&>yLy(p_3lN$Cc}Q)A|Y48e&es3>H_P0()Pjp!P&< z#j7e>DOACg4YUr?*$Z3fx+f^V8i21SbU^JwqOaljbe+7u2+`ZCptY zBXiBg5`wTKK|H4pVJ3)h0hG7oY2u%!z14TMbW-@E7~6Xe{mD!gpPTeyA6)?8LXhbN zYJy?^t7g=xZ*qsII>JmhYRCYf1_@p{wzA5~k^mkmW5&T4Ea8x_$`tTRp>Eu{zc8_x zLF*_?Yu?9Ss(Yn5bUy7>5!9`k$E%fC$SVApGnbr5^(3freqZ~Fb!h(UwBmVBoLb$L z`#BH8qqVnLy}?x(Lf|ehfQwL|(^F^Yr~RtIMG1;WY5gxXH+BT_-q17pL2lsVun7d{ z@*eW@fAQx$W7d(&fVMwf=2;fHml1TyI{<+1iI3+1c1MFPIRS^@r0rL{EM$+j5_M;S z-pGy+hVRm+w(q|5px7y&v0!@OI)o+7a$TDR|E zO61h0mf}*sLht5-bWU-ZX}LEh=%V~#c2I-Ax0IYQ5Rnz{M$aK|O|9bi%!K(dS>-$z zpMcqWP7JLmh#KROi?v3Nqh5I?ue)MmePpA2$e)kTl-}npa=mj^w``rqMszTfBn{rz6w-+kS=ulu>@-gE9f=Y7uS+|L-fxR?S4@K@>7+wRDi z{b7gLg$O+BYwzkuA3|tX{52&AvDIln7|~b$tI$`{DasndvzR}A|9|Bv<2EB%NI&7~ zeP*wbuM5t@)!uxIJx&j&q)1RwR8riBlQ#17a`pCg@^kX?$J2Qun6{VVwT_r001A!} z3~+7Kfg}n57y#@f@SG{mdiY{mzH~@BO_$zlQ;bWe#kFA_5(w>oH#lWSegKewDveGo zoYQmbBf4Ov5`FWCuE*6%aV(cjrikdrU-vk8mDHBFd-dTZQ5=>`0P00US2UWBOmFOC zMPsnAxg_G-DO#HC%PMm-FM?I66BlWqv{00C{J_G^!o&mbrE3SY*yL-6NCt!vbBC(? z%(kI^eZ=|fzZ&$`IdE_lm}PpjbwikCL$vjHwC!5-X>812bvInO`Bsd{9{|zp4Aak{s$eH;zuZ%Bi_)(l$mQ-U| zde)W&J^FUcLR;dyGTQPo1~UEn^w=|tw|gNxSuB-hLvU=zd^TtMj?-|S>rf_3*~AIB z)^Z?o?q(w&?8VWtr0N>Yw)y=9i?Wm1eUFIKa7EnnEcZsVE$n@F%wFzA)5rc3J{r(& zr^m7FIT5(9L}q(F(Gt;=UH(@&Q}PI%_@Z4`5|5I~B8|yAq>B9`woZ-%APTdE;=h|M zC~u>obzFqiI=oSAo+=@g$_s+q8)c#K*COnd`4l2o;?mI{^qgVub zT3!!$aWC3-JYaGxY;x?%DZ!Zk1lGSi2SBHZ+VV-7eFC8)JMy>|dfUK%dyWrZ$2F0s z*Ch07Bn*e-dOs^0ttt=l>X;}Sn)2HY@&^nHIGOIZ9aeD~rZ|lRI!)9&S>Fq@tpCel zw%ulOEZ`rWLw6A|V&bfBGVnKyeA~hB`&ipBX^;!fb~B-=gj5O z^vk8Om*-;>rQ_0E<1)(|3p~227MuRh`Y+Ep<|_d!^c)>uiGO%b3qj-v^rjj)!`1CG z9vp-U_16*nrvU(HNn+REiX$du`4O_p2w9$DcJRM@45W@I8xAW&#ijzV0|0SoR>}Mv6X#wiY(2qZ4h}yQZ*6B@wmiB z@2wgNhCL)O0f0*ABs{_T_US#%)9xdnb7-AJsp6C&J-mDxb{}4{gvVhvyKqSFX%P*p ze>ta!$04o~E&?p@$Cf{k#E;P61Hhi0%!-euk^As-N#riVTM;seSek9xM?~$6>LM`b zL}Kv8BBp)#4w0xH&9~W+1DetR;93yyrzNfIr~@!kV9HyfKSf!ePg0*(r=QPhjMs21 zRk>GL#l(!#%}W_Eqr4C>q|{3q@){a`F{AM6Q1~gsX@-c#mUl)Vj1XUxkj-V4bz8I zQ^N^<3ZD=(M3Ra3E1F1J{J zv%IOYtEM`u>egcYN48eE#U}6as;XNxAL!Jk%Efk{#U{nj5`1^bt@ll3O-){lO+G#K zo+5?i?;pr?Kd$bo`MB7mP#Yj>LJ4?9vz@ho=kPoglxw{fUE}%3!^({=$Y5xl*nd`} z5iYyyB@D;fS7i^MR!b~)$%H#CugogHwOHdN+gh=xWkLzFO?8@7wY3!Vnp91+9=lRd z{=P}3`vDY0c-ekdkQ0Pc!Jx)V*d@*s?6lRZ@6 zt{|&ql81b|m9;@#0LF@KYgd(Z=I(Bl?NGR6F;<^+r%u4#i!dida;>BbFKZL9PK3fu z-Bn6P-RJ~s&x50xex%CLXXGo8;NW?GB=h{ozfW%OCf`14Ur84(b0;+!3ZHv!l|ZBo z*+W*zm%avZKFh#WU+w0jC`B9J01^DArJG8 zEw^PhjB7)%a#*5)HuU0l9E>~6JBqQ91K1)y2aH%T7TTql&jIQd>&K}jv%{fJQyL#- zOp?JzV@P_E#W2BT6@mGj#{lhw2;9(i9I<1!XD7tq{LPePxT6e6Qf1*#qm=;=3dLS=ustoNeBh!$|vboFoXR7H}qjEj!1$e7NCJGgmQ^482cXLI}v3V8AYNv zW!keNIkiyya2xPl)kB00Mhg;PzLy^fn_}7!oj@in;NTd(*q=_Iky!zd@rD^uwTYu& z#I-yaGZ{b#J!X=KEcvvf_;wsEnGD6jBbE8GL*2ER(+M=I4>$-750yX+gjKuM5mIH_ z3HK_|;!*nwl`#n7y17hu5+u0yHUjXHi3L!gP9|@2EAKM{;I4?qPvi%bOotXT)hyGsD!P0$l3p$z5lnKwR$j@sO1T{ALk0KcNEDG|h^X;YTLRNEWBjL&q~Kl04+iB3V32 zc7sw5po(js(M64G>f(z>t>WdO%aP!teS%618BS>%x33@+4UwULVjU`=16jGlt-H(P z>qhMp>Y)B%gc!AtR~fZp15;k!fT~;V6O&qW_wnG=maRo$vaPkHZTiK43~iA|M~kR7 z38IRQ5z#1UhV8Maq<@WJ4$N;u3j%6>dmhbLYYSSad^m>R2|*^k)suuh^mYQb1;!{I zn99*0=j|~X50tT$-qFZ(L_*cj30qLz>Y+vH>e`wty1ka33qpu8(xb5WJBh+BF%RYG z$Bf2jI!S=a4uH?N+ai9n6W5jwi619LgGPQb;|(328n#bqr}S2 z+7ab9nsZ7hnX~1wb+fPE0J5n8Yrz!ZYY1*j5C zv9YnviG{7Rj1t<8QAJPQASJiR^ah36zN#R%`r8*|jZ@oX`UROTW>@g?Nnu3=rHAE> z)wk*zONt9_c9azq=awdC+{n(mo?UyiIN!GOi(?;t<69vEm|HzN_O|9YhwzW53_)(W zKkk_xsdsh^`V~IP+h}gp_0G=Ui;V)Dv>Kz|g@q&|)Y2#Gb>^>d47;(lEX1XJ zlB7-8W^lZito!Mr%F=V3+coyvMD&+~y~C==PXJ#jJ+-K3<#O(Q%QGdX^zlcFE6hp8 zQ)?Ku%`5D>8E+_z=Nd(jAeM{$VR%me{p){5+An`p^{Xvmey5)!b*z$x1mja=o9}Wr z9=fymyb!8%=Dc6I%)Z+o=I4Z-)KR_e*E3+~qT`(y&Qon6mUZ)8PF|c|lm6Gz4Q9Fz zzTv;E*Yt3I@yyV&*W|g(d-1E1CS`tVJqcDt8S#(x3e4_g5InfD8#t@6)l5 z$7Jo*{^X>wm-MP`R~l>P?S#qtysHg{p0BpKO zbw=ztWV4R^qr+A-k)P?Nnfs{KT}QBp$QI|WQCWGH`k?3^uIvK*uAgP^){{va_8E6p@AvkpqE+dwA^#% z-jpcR9VTBJm=uHdc7Ls6evd`=3H*+v;4pUh9fg^j=)GJ!!LS^LA?dHh8UuRKI2| z{XIWzGC?s$Fv&*AF(8eI3^eE0#V#_`2%a!DFc|VM}w1U5^Bn+vekzlaejFGlEkI)RyH}m z+58az)jab3BD>UntZx1>dB}l#*f%9h(VozIZ!$0oP>0drL1SY}o8YktA$8v-2J2jl+UH!$pnZNZq1-*1MftL9I1741h?$aUA^%0& zRAb~EB6mF!>6WGVt?MUK`#Qsy%H!3b_(c-Fl!ygDt1}>M?$`XOBz^njtCg*;O1sh> z_F2t0I%K;cfSM&D_-9Pe@u<1YZln=W>f##P8KD<^hO!UScfQp=tXtcz>NbK&94_6x zHz(z#pi!=P!@48VE8^kVtj^QZvgbEXu05eqc)-mcXQz)e!ftVytQ5z0jpe{UEF$lF^Psoz_kbb9X-AC3lW0u?Rdzh~d9_{FgyfAe17 zoVvN3Gc3vwW<;2Oi{dNe{#fNIv)&oWaQOa#t`0(h1&tqna!@9T}5?}j~!AoShOXjhy7;|MUmdLNze zb?1}e9NwtvP)Q!EFqLv6d;_y6Ub?>xw=f)c&&r#N^^EFJfa1fB^M+x?KSPx2gPOB! z0~rpfs?8Yv45tnd8}4DXnTw1)Ho5!;-TBAuDQut1--f@^94H?YxVGa})z8njGm2{y z&wxC{1!--Kq78-(LF_D>TsxIPw`sq&)gux1bfAGYKkHoe#{6hY^-8JHs?~e@3#Z%c zq85C1RWqnF*v)HCo$*eWR}KBsE%W@d@k6+K9C;}}z6oV;0M)!N;eL~Gdt!C({HQ62 zzkY1DzqI!6J5`QZh8NDVQ9~Clo_~LjnZ3PC#dKlzRdDxbzi&umi*)m++4s$=HkKNQ zg&#itlHH*@{|==b&YCM_#-Fp?_T(o=!c$r51qQX2bhl&vq&rB^qiA{F!o}SnF|G9O z!btzV#p1WhENS1ryS^-3(&TzWIj{$NM4p-=To=%ENYL}hm_k{83DsjM1*x&{TC3z+ zm%W^PrDp5Fgu(3Lm)@4Axo7U!d#>F?Q03KSIWLud7YNaja6!zVLhR1oXNt(li5!-9 z<4d&u;&J}=%A@0bvWX29z+o1sKl+LU+7B2vrI1CPgHLVzHw1$pw7A&?Gm;z23%(^F zfd?V9Ir+c@ZEexm`JM0__0_MySBfR`*FPm93R{gc$!miwjV}d)hu$#uX|{Yy zm-@)%mB@%fQ-v=C1%IA;(#yxI81w0*@u)>nO>N$D(QA}9SB(ST>2t767=Evm$&!

;dtp;lav+9K)Zq#{^8^jeVUG+Udsvfj|SSNaV|6h%k~OQzPrzb_7YbAR-0EoW)md zx5tbY7?;NHsvS+wE}nMUF^bL~#5_>g*#tz6DfE3A)=7P$L2IV6C^RS?1LXIDCZ*lN zw3*)g*5&|8B%8+9)jV$?^pCTC-M*aBCzvXAb$(oMt`Sw3Lh=$i=Tu#+De_NOHFz)A zTF(pGw*4+zmVI~ncKGAb_-Do-9^(vQSH{82w^B`r!aeOhT){(q| zRD-|3*P3p;WcwD%o{qzvmXh{_03E2zQ?(}t*-0@w(n6-K;<&D&Ip{9tOpUu0E8a0@ zB&I;4iH$uhtoM^wu33${U8qhX*UFlr=V6h9jIlV$k4|Oj)5$)%Y3{rqp7_7D|D!3{iutw1gmcb>+|~DTJVGBlecse59#^V>(3tDUd#?X0tU8>FX}Q) zO>6oytOk$FUiBzfSP#qIHOrN5GN8d~&EW-9CB^~1JvEydLg~Q(9ajpVp;hRmm&=5A zH^SgyrrphWSOm&DL}xv5buG`5FZ}Suhc9owjJ&k*6Yavczh1cPox>9EeBn=CbzZ#tGVPO_ z#>0E|vI{})^E34D|Nf_~?~4oprf#6{IfCOtehnpL8*Uu-EPR+izrhK1l03}I^gkMS z(Y`ftL04nF@9)8zo0FU~sM^{aq<^Ko5OMRc>u0a0-FOkEBaO-_ z_8zDhn~nH9aIMF$*|%$$Ry}>wJc<}L9N}D?>1b+^Wg6wMw7Kiqj#$Oz@vOlhSwuoW zydOTEO(Q;>X3)qx;(;2%b4~fGW#mZ|Y$wPMrd>o>_P5+@^32p9%BumYt{%1Kov4Oi zTApn7IG)6=@Qx|a`UsD+qR*ekpAL7fP2o{vhtY5vt18_6IM!wj^r)qLhX?EKhz|B{ zVB{I_Ua)x|Z*XN?Lt&J2>XXE9b$6G&hg~)`nm}f?NvQ7J#~3Afi5IrlocW9L;PU7Y zG`1I&I`MlBxzYc z`E?swF=deMqGO+tu@MM?O=x$gE}S3Xf4}yFp@D_iE583c>YMK$zxOA1hNgAdnt)g# zdu=Q!WC|-jhC_AoAerzh^p)NLr_ts|xRrP41V;(6|6W({vD*L}IL4Y?7JI;6?$_ zxWp6{Gm3^FYO0B*O){MyMj&RhZY0JuQ?oQNOWWx(`){V-F>U9a_xD}b`(EEa-?^T1 zIOjRbbIyJ4``p`M*S>wZ5EA+^+?D^3aVG1pAhsfE->y=YR&TsQ3P*paIoR*{GV>8) z*GA8OhmD>HP*RlE_7L`c|G$S^)DI)Yf(G)^iv8PmRqdmdl`3T~$ET&yqS?`G_G|1| zT3AkT(V@c9@_jT>d2MOc+vNv~%WJ|n=I0BdBuyd~?Wj0ZUbw&D7co8?Z*l}lJ2Ryj ziK3hxF$j+zJ`<6cBtt-0P|Xq3oa*^DDForc)R^JEoh51Er;ZPV9WfqH-N-rFI^%Jj z6D~AxTt6kW*dj6np&@mcSL@*8G}T=EJ~*_ssz1IolXsftsn1@E_qzP2kiv4yq~$>Q zTzD|nC(i?b2;!&Gn@BkuiBe0~z#w^#S~W{QZL0ESS^Mj~qi1Oi;^?PCotX(wt%I!z z&%!3>6E{UoE~bk)Zdu`(k1>0HRXrE~#Pnn0^>Q6FFqcG(e-SyA$yY}5YW7D3G-p%`{ zY0pa2-oG>zz?vVQzrOp~UpAhXOQ#{A{-F3155vuj0P}-*GpbQDiiCt}HT&VS@5HbCvU!Lm93hhQ(muXQ{7yXSkV=hARJr+&yC z@$2;*8(swO{GXV7UH%22UFl+v=kOgl=$kj+^VoWU1ai9Ly`fVVBtMMzBU%in3n4~*i)F#IZdR7 z6OC7liPy3-&4u3d&)KIJ<28o%Ri$@#bYkAuJ8BK|_jbU2iR(-ZIQGy`HUweP7-`I_ z-)uLhd>8r2L)~_Q`q7ctmM3W^Q@%aC6-xW=@YamZ?d?w%Vgchp0RDiWBo5FckZK+R zYGxkUn)c214$vWkMAx6N=(c`B6rBvw3zuRCdQMo5FhH>lv7WAB4?+#h2ky?gr zZ|0q#Upg7u6S5@P3yMX%PtdOevX9&qlhIS6kG&bIGnZbDjk*bnAw548cVtU8`igU< z7tTDtd}zmlL~8zDMKHJ2lO-FCOMAloL`#jO`91r7DDHn*JZf3DiI=3^W?RnQ+fC1p znujlfp>!5ol@t^K>zfxZ9MYLb{6x~?o-^KVw{Qs*pS>*FHc83S+}du-^XQD*r)+07 z-63bVyM8QQJhN#x2F(6tP+NP>-iY1%e(A++?n8S&ISX1h4P z@fy$_;8^>6EIM;okHvOzTWrR+!faATu5|C_A6q`Vcow&P*UMM84{gXC|62g(GL;9; zJXjFwFQpU=dTrjS{t2Pf94*IbEbvYb502Ff!h?@v6H|wWj;EzYP2GwP3kL^Q@To~z z{zEqpcM=u@w3K*>s48g47%gy$F{$3pZ|v6^(d52x6}R zDM^v&9~N5_47GVfe0Y#lIG2_-9Gx8ggm!!}zql=DP7ro#swDiBsi7n1z|EZW_|V`} zw|c_;8?w^V$GBb5n1SQR^AF7F@QLYT&J`1p-grE}c_KcvFg$z;F09UU<>aV1uE(a_ zGgFkpn?L}2^FWj@-iZa8xTs68wkEd6c-A6u{PF- z2S)}xbG#ZXD!9v=?xNLftU`(fplJm2i~@ommVO*8bOAKMZmg`?)|3Ts=hUtIny8wb z^t9nAc{! zK5%d@{`4=)IJe{n0L%XEp60O)FtCqQKamUj)Dt_3)#4vwQ;rT;FV^;dpe^-FHFUCKi{kYYM;iop%^JBZ5^q+EI6o8yB zvEgL``1Vgd02p%8y?*S0PYgSC-0#PB!Qewcj0SxNHX09XuzLW#jRX%q1jY+{S+Owy zDEcM7tl0R_M)8NQz0856F$)a(Q$<*Cqu<7dHrlCe0`sS_J1&(kLKi0CJG{ zF^5?3*y5{RASV0e?DLleR6g{A8Er2SrW66F8z2l^gHHz(=1m7XpP9%Sb5aT$+W@YF zZJ=Z`=dkYvv=?*AI4=424XoKfUAPc;b_2!1QK&RbQSNN)06=@rt^5W+e*nA3-15Rv zCrnIF1<+I80P$C&!Kao1io4_oIIi=g99n$&E+C`5^AHGI(Wx{OOv9VuR^H(GcXwyBUAQ6!BFd%HOQY7*Rwcfs=T!XNo)^F4X(B_vmcW-F*?4F+flb0tZH}b#T zNM5C0U98AWd#kZUbdG(g8@D;pa*KD3)P&?x%P!8T8Wrc{W0YohIS;nDx5^@Oa`HvE znaS%%ljZI^cScGNP4?RQGxzR$`@>tGzr(mWDUPt)asL{|cBxH`w>yhNxTiiY8vb;z z^wux`x$VE+rk!>l{X6CNe8khq*X{+{5r(VXzr(MqE%&a zvnPxUnRI4c@tSj7?#vdEc4!nvjT1^*RvWqVYh#lIwA)C&Y3F#@LLOo983-_tz!vl9e(B zr0iF~a-87Gq?t0~tI_(B- zHdKFSUN@zNi8&VR{92fDOD}KTU5gD27W_Q%=vAXCo~PbS+u1S6uRc-U)q@ zpBMdY%V5e^{%?icsQ+7X`GGHnJP>;582uYLmrxUMxY1p4gq6EOBJcQKMg8j$d7I~3 zOobukJ0c--u%p^A*5(}^`0aZhm&c119DA_((7*XVsBF2~YOX|{5BcQ2d&_TKOyn`^ zcI@x`nj`AVZc5Kp6+GVb#1w@(a{6KH;X^nwA=|kfHC_1m?1dl~D(=X$p(3(w`#5V z7{MuiAO0?a<-N;sb7o<`)+Z!buFpquo$r5m@!S#JpGW_D>ARRus073B4NubJ+hYEu zNqBO3Z`Zcm=h~VJj}Dt;bJc&-_MdjZt$z>s&30PKiGk(VkchE7c+ntV7aynGGJWu9 z{OMn3e<2IHx{Ej+vGj+A)2EEv4q#TdM!q9Gyw)8v6&3PHDY0-@T5$NN^T->~J0tdu z;6GG-tISIGNq^t_14l*i{&fLNmSyzA7bD z`T4s{pWs?gR-e1xB10nIT{;b$F1G2Q(T{Jff3WSyS9d6%2b5*}%hqvw?&IAf(X1G9 z)4c}@y*oD1Cq;BH?$EfUG&cxm%8zQ^HhywIHPNV@&}NJ&$y>%V5B{keQ;W)VuQ&Nn zg*rMSdY=b1`f3O7XS4Em9?u-Tw0LCY>#s`Z?NX|L3u3paLP_Yh;xQ=h3`+5D^No^R=P#P^$SjlL3Ittj&xx0P}|TDTFd zmg5#j-lXHs1w-(tYNGjs%+sM-&G5p{*t4hN27Xs?DB|-B&r448>ru%ySLPDy1N^ZV z0^+v@$K)>`eP4b2dXlx*I&wZ}ldZGYs#% zqwM8lWpU5NR}NiKXg~kJ^NmmA&z7U7e+?U;UwwS`+iUzCJ3cD-fciW1H%}LD9N473 zS+K(~e&wj1PDy$}N&oGkr~u8Gn6c-wDA^W^Q{$hWH|PKd7k;M3?5DJ@I7c0MV;GtE z1^qRYC?>+sKl&5s%N^z#WamA~`JG#GB0ss3Xh}NfKmXC!m$q~~`C~@#2j#4vcdAZo zJ#ha;zLzae_O$vbC#>@62mNzAaty9F-=WOoj>$O7<-&tAD!5+sg)%?t zfrD^pta<9IxSMMgsa0M)fuMMyo^@ig)lAZh->HWXbx(Bb%ihl8R%!U6Jdwgr% z*7>(q^&P)E$8?cty+eMOw0F`~v;v!Z;pE9l*I+OH&0$*EmGtCeNYZ58Dbva`KTXHT^PH?^hv=+)5L| z4QtvkjAwPL3Bkr0Ad*Ni=O60AZ%R5$a?U``1>tr|vV=!!$|Au?&qRfZn4+}Dr_7a# z6E<BP)P%O@xHqd zq}by{yzSl;-; zwNAD?3Tzmq!5)UJV5jr3&@nqN5}~PNBkb(@ z6grZEIIMOS>d@HfX*>a?z_n^U<`7y!5OYl{_HLQ88(Rrk!!_bCbV&&^KY$vFRhk@| z&`T#USG?-s(65oxlOM<~t&|!mxyx)H?x?1e<5W&@%6xE3^9MYf4Da?+>K3DB;c{wM{P8{V9rPH;9^4`1@ucq~okI{0qY zlpM!hzQy+7_&mSsoSXErQNh3y@wTCiNN82=0qm)nFaqFDZ&lLIs!Ke(?Twoh; zH3x)HI8iK3fxv?+wyUfjWk;6GW;4a14_8e~NX=N5(!K>&PRrafk+a@R5r~{fWx(xg zVL{Q?X0;N9w@P1XR+EoRO-!K5q&^eYsM>%y<>rxLOQ2>zw&nHDK`hEF^}3MB-+Ijq0_pv5nK0@#&2S8XsyFAqej|1#Akcuu>f}SI0}? z3+D(Zf=);}Ci+^fP5C1atN0owz4sm##!f#Zp!w`Xp_dREU=xxY;OJ@6@u-MhkQz&< zU?UiQ<9Od!3ZN6Ib~7(h2+3iLkeW!d!)gYa>g!CzqY2r5NMwLtqj!>KFxc@Bucq6v zdQle1vp_4vUS6Ak>Iz6M1uYW&FblcW6R&Q-vMHAtJaotdEe{P2u48Km&j(a&drTsd z#!RNRaawU$FF2CoiG^_lCyj?iBx`Z)bWf!nWLWDLH2l>dLMLbkH;6hU+tq9k@z=;q9rwRo% ztiHN%QoRt}ls>rRuhpl8kUL`&+L&E){V}N_eRgq310RMZw044D=v+GrrNJc-!*Gyc zKThamHe^DOAf*OV=MUqj(c-LOblyMC$!He??5U)lsfG=I&5B>6minyfYOhY8X(t;$Lz#aF#t~#X3 zP0AwAm{mp^lS*$Vnq=kx`+mlB`f zD!E~!EA<7i%Ba7WK$$LI6>~WmA~rjUk}F1WoEna$AwP<;q+HF)UfL#i2&5j_Gm?bb zN)k@AJn5Z2@_f-y@PLLfD&JxIY%(in5KF@uWa4$BD&Nhp4C@ zXTkd}S;I5|79SFUSO(`sy)8oL;<%33<@y5KsBIJx_KQmP$G`q%V9@IMBI-rXZUcEH zR*25cPQD(b9Mumr(?=p~TG&!&tsD5fMK$I7&&AW!vGr?3zl}jhoR_^?*YfKRUp+FD z7`6}6@`WZ|P$CjDtELyus)MQ$F~U?FFKJE4p8&KlP2?Qbs;8AO>XD<4lW8Jw&>9l~ zVz*MYJOauEsVjw<+F4$x?<`h}_4i}o@yJS-|30mHwk-w%0>l#&-4l~ag{#&K1Wybk z>CdW5JDoLbbSZLR90K1S<7?n3aUoe)mS8beJpUAp^5Rt~Q%xM`fq`DhfPAqgo+nbH zoz+#&`6Fpn45m_OkFP>2(85N$KRqc~?eNkCK_y5tLePOu8$c3}`)2*4`AS0&{-KEw zlngae)x@7&#d{(0a*A=fbNK^)g^hLuOsI5R9>k**k-T7h!zgaJgueBCp2T}`>$Z@R z=)m&+k=#IBeL=yY1nZ@`WD&fS`W~^M;-gR1(}I{DRl~*HzO=9Z2+^#wUz{bdCufGe zHuEAkd%XLq{axr-Pu8?DG1r|YtRB9!w|w;EA5g!PUoRLv`ydc~uR)jkO1*IPsf9N< zcIDl({qNm=QQI|dikMO8cWJTdGZ%b?1!HhP<{K49<~MHq|MIYgVmew*=z-_LiKF;6})Hy%ksJG8&u zJR}t3@WE*B1iu_Xk>5P6X&SAxI&dDe5L&vH_TljKX6(-Q{N9_Eyb>Moy6mus{OXTZ zB>IL8=?5zk3jA&lJ!&NZlhHRIu7P+5L=%YmKm3K^;k6RTUVHw__ImUSU-*wL4L!WFW`uA|IpqW4`_Y1w%@3|*%~OF>X$8z z2WVUAW{p`{shTF`I+X&6n2YNz;J$98X$Jc>diq#-LM0ocva%@4HOki<4z`FP+aLDQ&x znr+T)D`Jkw`4qMU^lRLjhI{qHA(n>H8AhC#yyr?ufLy%EQpe-oz(yP_UPToanol2! z^EX?Kaa<3w)WsJ0%&1Tt0?vufg(Q(HuUoYNna**B_QD0!*p|B=#%1J2$~@6de$<~S zFKRnkW{a0%`b$MuHp)J(52#J@Ak3GB20=%!$R5t5Z!uL~#j=djb9BupiwF`+^kb2wM|Y)Pfx&rsYGgmjfz?)Ou&GpSJ1ImU zBGq5BOZtg8J~P=~SFKQ+fN+tDYlp!h9OR3JeA}v-ih4EOk6x*iK=tW4rdS+bAgOoJ zypRMeq7PGpagkVcoUY8!{bH6+CyU&f#t2c)ufy5H=uV&5xuJz&W(hltPubiJtKWNpyC!0B%_N?xWzoU+Rw^{M=QOU=Oy*qSX z%p#O9GM4+%)x1;;rah~>G2OwO_Cwpdp%57#hp`LFzCxYbUAGn58X6R~UX%s(H+K?9 zHPKjBM51i0?rG?)SYQ1 z$2sm_PghKJV_1VMieN)`8e`P2W>4hfBUJJm)8i~l0fAsL>JxYg6R@QqUp%dhw%m&q zbEQsIkHuZW6)%%=136Ao@tvn*QcJ$!bu2b;V+P2ze8rTFP_{pt#un1cB``3X`$35Rd)H(E;S;V+^5D+dzx7Ckm0Rm6`Tp_o+rd`>FCH%SA2>l)kH_KeQ{od^%`N2QG!MXX785- zbYV!|ft@5w+NoS@NE<}*OI6@&0#Hj{9ccx439D%+dRWq-=%~S=n=(ZE9LCF|x4UN!O*9~UTiDQ}DVhvv2Nr5q54hb=~1EE#0Qad1VP%!JB zQ^5|$)qCSu0tQ)+|2xa}hR;#yj-f;Eaua|4u1*ke!X`;`@BdQ}VtD@)vw!#74BJWT z)?4&c88oaKx6$+HIb<*7uv(0o93yyZf}%K zDrUdX$}^TqKGCk<6o^G0?B#LB>e;*6@+AH;FfyDA2${87_XgrpE|qGf!VJQ+L(&{L zQF#8vQ|8RD(QGNu4*Mz$x!GBpC|r?nRLNb=hO#;00cBxmHL_g^XrC+UDbC2de}8fC z^eL9cCK3w;Q>X5{@H4MW=#|;I&YZocxqapTxYu?kZt&-m=GSnS^6^vkI)&kW7)_<^ zXKAESHcCPX3LXh2|UM;i|{7hmzfP>taOj<^pO&snp3X*r2}UmT>ZL?VSnR30I8jT%o! zB%y__ctW2dCpr*%2rb~KU1qV@t`LLz`mnhY6K8P2++e+z8&Iu zK7wWuI@CTxj0P;M?RAJ5tU(L4v;OhP*kyl+=kibeoY@kS70h@H2R+55UN!QG)WE75 zyU$02c<4(pP5()<@qu(a+doMv0?$m#SeZz|`RqkO-Jcn?n#vr6L-hd#va z$6#qqLPn(4RQ)9{C6jNTMnyxkxwOPUl(~an0QnGASXhi9gEJwGvAJt#ejSJD6C`1= zA%dW8F>6MUJ73p^ZyL(A))?3=muddnI=o^n;-EYH+hTHtUyTl8bx{l7j81g%+DVx3 zVJ2<3C;8mEI*(&U?Jc3nVwZGBxt@_tsp&D9ebkC}0^% z+8c%m(Og)L758dO^@BH6dMTcOmQHB(wG!&VR_#-@mc`jSNmb&A5tP@pI=4#7eW7x) zN0loXZIvnl(B_xQ~1s zHt9iFJ`qFfm-PZpndPWAGUBquGf<&qqORavzfmr6w9?EWEK2kFnH%}dtlCNy#~E88 zsUEeg28uc3s}A!s;TLk;lu}9Hims^0Wy&6_-nN&6c8i>`LUuOcl5{ckZ2o(kEtaK2VbiPYSFzVL_D3cA zY9z~MmMUNPf}%VcH~6BaFXQ#ziR|#&Uq+vQ#oTPwdzoc~C1v!Z%({EB$H_MezGv7@T3PgAYeBFw!F`-MbIANV8TO(8Wm&) z46!rK57#)1Cg!#wq956@{z;jpAVwt(a`Au+9gpMy89uSd5M#x~(`b15J_nGmUGYz_ zxOQU7nhA!$&~QqX8ff}n@zGawgeT}ejlaDpnjmnJI=oD%DkZQE6owIT{W(u130-KR zXMHQDDJ_LR-;M4>3kQN|oQ5IJa9QHjA%an71*ef<#^@UAz%FqFL`jGu!DFG6R8fEl z=|-mo9SjMy#?ngB2y8g4E(Nwh4mPDe#&v>O}u^f_c_1$=XV|3u2}zI z*t(woabn9*&a2W_J1R6;Y1vUJ82|9hM6$O%iLdU=>XhQ98zb-Lp=d~>kVp#)aHM?l zB@&kvM|eZH#dTe=ITp3B#q9I2czjb&-FnMPBu0i33lsHHc)`bi%n%tXU){b8u_$)9>;$~SyV=S9; zqB&garB8eAduQ-9{0Lp;naw`c^i;{t!VyNaHmjgGwD3~kos7rlzep(=kN1Wxu!fv8 z(K-+}f-(buP2`ugni)!cI74}Akdo_W1GQgMV2m!CT-K)rHh-~aY6)@fa@OZ02;w{Z z>7hl2HU#GZj^~$3L!t+1ax5wrO9)Y5@r_O-nhsIh)mH|D#vlX)R8}DC7AZp#naG4R zwiU}`yMWHCKm#`wVV?n&#AIkpF-3;T%vmoi3$?HgBgm zX9>KZRuc@^3BezTdTSpb#D4LRr%TJD1Cmt3l`a;b z*-A)=#^CT?FdcQq4!AA^6zw8Y8@&U`=r$^#d1EX~FvCpB(V%hKn7Mc)9RmMe5TcoL z2o4_G4o4?4GEG{-LjxAb>F|?OtpST~8R`(z_Sb9{PQP z(LS7TCfle@Z!^TSn&=h62d2W_{=$%%G|zsdm*fF8KL7Js9-jSZXrVozi!Xiw9`z1AQpy*Xfzs3aLv2wxQm6$(uoe1Z3jbWm;Eb?C?OyPMpt_yZ{;RIX!>n z;{D@@%&?lC;NuZDsjp{C(LWlzxPW7VuyJi_;|^8{?nKIl!K)I)qaZ3kj0chX2VpLH zOJRT@8h;}rRy5AB5SXax?V6_wG7guUMFO_%z!$a6=CHtJHpl0Xa>`2E`Q5v7fDx{a z`da17l4+&n8{ z-j_79p008NGkcV#fpM=~E^aPR<~#8Yb65O@b9hOV9CXvK5=O9CYyV}MCEsn)!&q9q zNaT?8>K8@QgBG2fv^<&o>c#T>dwQ$K)D~@kc3l{8s4!cAPhz|6K`V~`5lO@|P@RHCQLGnxk%L_X*VeE?;G@w(@hvC)6Eool~d zbffmIWbIW|;6-}zXDyQ%e|~YEJ-$U7NXV5?U6c9Fk`M2Yvzy7}sUGEPqJ!4{qE0`u zIn;AyY*s#h@UuPBIp7*|YAW#52 z-Oi&I+TnfncC0_);Vhiw@~;AH4;aHV_SA$X=6(|9vQdyziiM-sfNA<+BMzUfRpWJR zLPGgZBHU&Y2jb!-Ath!wp(B&b|?AX5Ps8@UNHUy7sTghfJE zS~!_}amnYnUuE5&mE+myxyBEgLc?Eq0O2@k`#OB>^@;Q*Z!9G&yk9f?CcXyK@~pN4 z*9c4WH}mcU$o>8HwA8IL-355vr`sHL>7C(z_o8vK_i`AGvh`=7-(^eo?g)5)elWz4 z)t4$*k646?GKYjNk8;TGkTf?HspG+OclBjw8~@(YcdrQ}Ab2sl@( zk~2}L2Ue+ir^>kE(_HXjd?2y80Jem$;3lj(y;kpqm7hA_RDR;=#p7-cUG#RT8 zSApSOHqoup4p^+MbKecihpv86_>Zse{zZPD=>g27a45#4&O&m8!nH^p$CZcAL)Q`D zx=J~fk|cyvn2DeGSGv^N7<3|FFO?AA*MU_Npb&ahvWYWShd`lebJ|L%Ff~;Y(o%1Y z?T_)71oWlTyR~*K0bVf1IvkF+HhMHIl3J&(X3*A599k=14gT*z_!h@wR47bZ)IMN* zN^%7Q&(JJ0VR|U*Y3z+50<#ZzwSX&%E}9@nBFyBbA^_Dwa=kqiza6|GIQd$no9{gPb3^n{*+Jv|u7SgIC}=T-8f6NL}f z5bX#ALbFEIRVo}ul=pEk?HzF&Itt=(HP&th>ouYkFgNGrZrCHd*uUWet%8eRihW^`eg~-v0jC?W_A4hM7#1E@-xKvs+r5I@HIo4> zo^6=IapzYW@15B8&RAKCbXhXNTNOL)ctEbM&h{BmPAFpn#mze7 zL&a-&&cuqq{a_iv#d9*aPLex&lp-aMc#yYP!fdq!ktFLWYbBBiq0xa5YQsb@MzUY6{G3O9+D@E4}+gYnmeqC6%~qYS^9*34uH_tQYy-3hi7==A{#PR1qrk@L@^&yK7t1eX=n>VN-QYT~O?v-2(Fgg|LE=f+uM zh~;K_?FczGa0fmsdm;=|+mNUx9Nof71-dxH1^I{inh2gQ0z!vCR4KHPZIzftTw4hJ;ODi2Hfet!l}Kg9Uq5@JI;0@- zP~x=euEEc;DMUvtKizA2x~<66QxwCkt@Erx%t-&-k90O|pB%YC3uE0VI@B<8pV7W2 zb*m)w9-DO#GsECRf|;TRlY1kJqYq-_@k=xFB((c4NWZV{_#XP|jDsZ)kCT1keRVj5 zD0v&xmpt!v_dILw*@Miq;SxJ^A}BZh0Bfa2_%-otLK9b-0mNS0{k1>$mu60Tx4pT$ z?i%;qqNw7!p5Lc!BkT=)^>_11h4L6_WnrWy z!_Kk|s*D=_+J2aln?VraxoFP``N4Z^x009rI!o&gd6euj48tqHusKt1RO&q`-Cqxf08MYAS7TGkMPr(Kq^Z>tfWn|><99NdOr_35Pnui6ZbCvqyBuxR3~pmiXYI_Loh?B`kfkN_-WdfdSR77ms+WDCQ=!B`D3)|NV+>XS+)}T*rnQ3_E%6fD3LT zd#A^>PDJ%e%S0H(V`_yX9mTTD+MZfrQ;>JJHa$`(SnG>aq{A0Do`RN#>%@*(5ZA0D_OaeWz0q=pnvE*1qN8-zTmHw0-B`}nvv z4r7fU#7>(wJ`E`~*5M~uJVH8412FCK4s|HWQ6kvj~~2w0RP?jRS~JsAz3#FHAKRX1rqWMtfi}UC97{ zi7?3*+oVSAe6*(HJhFS~P;3{W{s<&}_%)XBUMHPo-h>e_`m>+nI?_aHQ&4o~x)<*g zM~wmBrNlQ03Rz)8Nf`cYFrl4Ld8N(Hdk1(K-!w0F)m+rO?8f^2H6Hj17eO18pdjnu z!rxVBsOn8Ox^V$SRIi65A<^4^9v!dH+T-hE=)s(FQ#KPnnC;WqzcBG0xS}*b@4)-@ z%?)jm$vTFReOKAB32qBJJXug!j77(CnPS^-EB)8=D9I=6or837{d8H#fERPzud%~| zrkw5e*5^cUvbxminQ>011<~%sdSy%Di|=TkM%HAHkdDK-rt?1O9Zwl)`i41v$G+)q z@^|LNG}Rr7A+pc+(~=l`&aSfl0I7iKrQER!dz627&2O;uR(X|0TpaB_echt}@^_O@ zdApNieQyq3iq6|{>di-sqK4s{F>x4eKBU@si{iv{zeVIu=rGeFodYDjU#UMbduyci!r{aBUqydw-Rr=Q*z`7VgU_3# z%sph6tjjjp>hqT!x}LWD_SaS3alKNXB(@KEq#stwGtfzY;)tZnNTfzb9>FRh79;sN zuCZS^Gv2MV)$QNiEbo&?DNp2tkDb!q`tvV=o6=eu6F#C0Z+4b!9#vft^cjl<6Ni$P z&006hS~ojzJ6(w%2j)$l-uz4foC9$wxwvsdDL2xnO0u)T^*W#2z!%m4#%czEnBA+i zLH}GV9(kMH+2<~~lC_K{tIN%l*D=-tF4gDUJN)nBX_o5^gv(p(Tg0z61-C`)J9pv) zeNX9FZe|()kO03=YvOSfXnWWH)6|*2rFpOG9u*BD8c;AuG#gP75mQhwYLc~4(TJjD zG=#(~L^O&+9W%5|i#Q<;aSj?y6%_%|h*J}7yByG}F&0HrGqsvoW72d;S9jK4YaP0; zea>~>Uta!z_qo2`=f3aHjWlnoAx{JWzi7{kpo*rHN?9nNqtcII*ZikFrFqiMEQWm` zm0P6t2GEob6|fHkMB429OoJPkpg3=dEwYR{d$BtzQfUpO@3X^!@ZXkF6Ei}8Q0A@N zV;>yI`xodh2sN|u_y*s$N>d-uyH0BYF>DWYUz*N1f<5C~qF!8I6)xPQXV%^XxUAjA zQ0yDq2gwa6tM--p*)409lXWh3sDVt+LE{>lXdMoL#0c!F+qVtNRGe2hsMCmq`d}uu zjD@C$K*y0aKA^Cg9#P{>oTe(vl~Z-}CVMB4J@ANiLkFqvD?mO?AKBrx_(M0C`y*E#NjXLYwK`e}7ew1%FKBQC5aWkonp`W$Y7 zz>U);rB$$Fh)Pry{r&aQ#$;*pG?&S5`sCxA_RX?b-KiclWc#l7HEHSY3L5|N&?cfc zy0uIf-zh28Q{p}vWqt8+H|$P&&kyM}V*>8ny9$rcu#*u!3B`r8?6?}!mt;_S!x#|9 zUrReTX#S${J)9e#z5Q_Sj3k9XYH7l7 z7T;=C{kuHHY;|OMk(*nrOg-{c!?Yfa?zs~nmsbt&;quf&XYs%65@9K5`~0p|)cJGH z)b5(Iz#j@;4MyFd9J>BP;5FjkHzzVzGpj24`j)ZFPmIKP?gkY`F=%APTD;``dNN}j z$|Q&=Sqi^$Yl-MSFa&2wzyrf=5iHiU<@1lPXIa5$S>=4k{$$o(@Eka}e-1BrY^w0M z_fgy%v}R7EQ@YyN0JsdxcRkP&?l?I|CT>{G;mb1&ib_5SLfG9T87n#01c*84Hjx-T zWVtdiU?jbS6kpY)E_o!PFe7`bx&h^nm}Y2k$KX$W*Ourb8SfK6f9XbAA3Eri$YK$> z8hF}A`QZ9M9OLWe6@O#!(ai76Pqf_Yf7(dIcY#*k!RBl-%yyuH8X3|PC@`QLn?gu-u5*oKs zS>RN??`%_hVe6`?f-4-k=a>{d|li$02PFNm&RzfvKGWx!B7+ecu|Pa<6=w$1h2g z|Nbuo*dN5GhY`GqE^d*`@RTqY{`Q(2nb#w@gy}h9Ei7%fIQ(w3h*%krT8=zCqiP`Z zNU9dWjJ`WU6UnZV+1e(v$2YF@Xtc?|7!foEo!bdoC=ShUKNk7HvQ^8>x@)V|Ib%|C z{qy!s0@IFS3v$JuqW0p=9kK`#5}pW^pR7%yt|5_4rBFhXpJbu^7O;G3=7b;lIV4ue z4@y$jDD_URru4uxX*I4eUU-^rO9+i2OlC-?Mr~b7+2Kdpz?e%MPPX@cN_aQ@Fp9Y;Nw~`C<9tO}Yv~#} zo?2nLaO1rZi}jBFsXC|U*8P}UZ65{h7#}DH@!IdeAgx(gcH*~)?_aXSL6XZqIADfP zifes&0ep58NH&t z-~YMW{gbFWB@9;%&&xuE2_=A--GH?m?K^_MrK?h0J`a#r5G}_PM*AJ7d{nfE8szX$1*) z=*lbxIPV4sd^}9F*fz}((`2JC1c9#%NN<;Oe4c=xhB#P*stFEff@^Z)z%(C(e7c87 z*pKb<)-Wpc&vf@QzouEW|1+c-Bx4$k{PYXw3(OTBN_J)Ei+?w*lzg&1iUuYAnvEln-mt>kT8q{e1COu_jsm_I&^9fBQ* zGh{3<)8XI}#mk&KKrjmzQ^9#O9pUq>R09^{8g4%emeJt05#`_<@P<#nXZb4pK$#sG z3Qs)1IX^7eoGl6WtRJAkKUS$ir1PC&;o*0@NeDlF=wQ=vU~HcU>mR#Z?_mB-%L9a+}*_)`EA|pxESj4#hVTCDn8*qE?*cPZ@8rHV)>@i zId`u7s9R*%w;3aV^*IskvC$P(^pez!kgjk148pSVD64Sy1+qm}Y~e*)BVzWA6Q5$b z%t`gu=g?5p!|Gs<1AgVX2R$W#>nRVGLPcSR>Cxw3Y>wwUnGLal!;>kp3|&SfiI&}; zxwEXf1K>DL!B2Uq5?LIB;{JN+^e9SHM21+at(3IQ4fU}CP|K@fc~mEwQJJ+j<*jxhclsfn zu(uTp@_ld!648Bef3>tT_rnE?H%c>>6wLFbK#(uY-#2>uq9<;_Mf`J9uYfn7=W^A( z(&c1qEngh+5dh#`S@Cz7wEYOa{nD}k0lMToB+AlqN>TI%YyS)eVc&j0^>i1e`hW<5 z4ZSt9?2JrN9vjLkL};yZ55taXl(A?OdS7#R^6;<-UzT8tfRc}J9%Y9r14~SHEI&xA z4B=G7v}O7~V1Tv4rNGuXH{3Q2-&*zwQw!1}TV#vY`;TY`AsOxV&z#N>Z<*SH@v-%luz{x>3Wmc1Xq$npcuIFHj(v59-PL1vrt)by zp`oq)3G|gVy5zXe8d+Xacu>`&TzBy)lRPeU7)V&ZX%%%VG*L0so*SR*Lg60nd5iR7 znvW#+;&S-=^J=>bCq^u}X#vn=Z_e;{$(vWC*Oob2Bmdxyi!C>Lyc(`&oD9b^sV{nX%;t|?-&k6aP)YM@Jpp#wV%ea z=EE&hVX1dO)heQ*+}mo8?M)LM{exkakYOQ!0^c_)5+bYVs~*vW+Ve0N(Siq>sjz9) zEri>cwv;6}w^dkGd(V!@a#f9xj+j%|2pl@RP}vc-jH11|%4HE}c4Iiq-x2nQ!rD zdf$_8X!XlfyO}a^3;+<8x3bUm!{WbyAmJy!5PoVCh&K7tpX|B+) zh9jU;?Mmo%#y_Pdx!ad-W26h6z!Oi?q})nUgqS<~Uo&Um6_(&@D4yO81J1=`?1Ys< zpK`u?Tz;7gFhwk+49T3W+~UiWTwBL0RQmX9{~CXUc0 zZJgtRDNz6zW)`<#ef%~)B5_6hy8Rht+CS%MS^bMa{_#y@@suqM6ul65Wnp`@9oW#+ znZVDX&FRm*fxR$}SQYm29{yHX)x2XOmtEc2Ru@6p6Lqq1oZ(t$f85~%2V;6~J4)oX zPGRPdf!M^SYF)aMD=TJVA}*D4swYq%T%+nVpeqPfHAl}qmxFcm?pFt4pYHtF1Y$-O+Byb3gpW5IUP|=> zHpYHWu0ux8Syxn8$iCNI1g(F}OqJW=##*@FheA8WL=;POWTo&_>RZaTsCT%jF8d%i zjP-TIF3v1w{btB`{Ift}s$@PMLuSt{={_=bX>I3+8#rS`mY8fbNgP2z$LGQ~`YCW>ezlGe!^5|opgXM|RH znBi^~oaTU8(m*PDaoutsq)|u&PPT?t*05%G1&L_mFZ=bu=9o2lse&zWw-B$a3_m30(5(PdH?9YX^=ROUv&XQ!7|gs3 z!Pts1f{H!8R$wE36{I_es|eM>T`0wOA!W^Z#A!u zE`2RLlmA_)UwG$LAnVnDH0uLasIKa9XJg=r*rLeZNhPGHXurB7Ax}^!d(&wp#QIm+ z`m51|k-CWcaxb*iaH1x5X_0%2@^@w*i|)F~kO7PK&WG~1JcFi662_1cd9QGKhc(!P zg8TuM#Wf|0Q`HR`g4oJ|MacG%CRw*oF*_E>uPY&GfoHYK+ntW1$T|Y zgF{Ar71WgC2=+Zlm718q4YAKI5Ogu?>`taPsH0P@IHrf(eWyFHN3+#hOJY3C+(MW5 zfG#&{%6mTxD`+FP-lwuukMu{98x7{sB2nk1@`Z^Z_&fA!GY%^j%HT&9JKk}%CYMay3}NHc)ShzU$raM zqTpDbKh-Wf%lpOWx0n7@yDTc#zXSgFO|ZNV{rlhF|By2I%1^N!&6>XT?Rhf?{%x5G z^&;npC3DWxE28!$8y{ruKks$L=K#wZj-Pgt!R5XgvY&Mx67H!ql+!Ib5Pbnj1J8l zYP=^Z8o873dAeg%e1H4~z%sX);FI~rfW2Cc^RyE{c(nI)VG-Z>w> zoR%l7KDWrUx+Rx_7XMt?VOIIpVsLdqdGX^225N?kohPH~ZBihXh1#h-2qZKS8lutG zFS$>x-U4K3WN%&wY6@3;F$zl;_nwT)8hiM&i_h11*k5_PKhA#s55*JAw{QRcM=bx? zP^aQdQ{oTW+^#q5zdRk-$ou?~=YUgX!}l&Xz6TzPJ)0Tvd~h+dNS}XV?CvKLZPD<5 z)6N8aXZu(FHv%(Bmhba4wRd=C(c>psS@i9~?QzOnMvx7sH75_%yc>S4mD7 zT-||S(~4Hz$>r8ZJM>PysK#84Lpf~&Zb6`B+kOYJmBn2vF$b98Ho+l}W_El|$w`rO zI4_^X81kB3vjEHchq5DHYj$5?OR(m(;Mhy}+gqb`!8O`f2vdJWk%)5A`_aq(JQ&-{ zxsO{fEGxREebEz~b9by>0QPSG?vvf;0qkd^xWMSE&I30ZOsU=;fv(l}`8LI$=J0l7 zXexVF1tt1YXXTb$)W*$H(1Y zA!#qkdN7JzH%Jt>Guyv44z)@w^$AgPyJ$RCB|)iG!DF>u5)x_o7uWs`kzxbhkL+a} zpb(=9r$z^gM*StcSxX@l%YYQtzl*9ilqdj$Y;&OA=y z@0ZfuDEeI?QnNvhA`vX@5*jo*c-Ec7n3Y*flS+dtqCW#23}cQhAYBm<{urOAPt3yy zM_JN4R+90-S6(&CrBd0D~ z4l9t`=(6JgpNBBQiCH3QYS_zXif!m;3ybYv`6c>dA_tkxP1b-Zq$Q*V%`FEA7vv|Y z^TcY;7he(2=Fa{5=pVnw+#J4qqy?M;i4B%!-^qtRu;dPfA8t!C z=Vl->^!-uU~Ssr{KpFH+29o8Ym+iKTO`&-IeC`x-;-tlfvYN~bvaiN}J-wwW{3hazh;&DkQmVmzeWv9R{@x67vD~K#QiQn>hX}4KR77r~`_F0m zPX%Jq$$j4EKz)pEJ~f<>s$;pqj<)LI`zaMuRxsD_wNW#j2TicuCj584u-E$OIcEE8 zC6a6Fko2f+$~oR6$j^Dh{$Zl;8Se+p8NCl@25AU}&p600t~ax&4QsgOg^C&p=s7NC z#0<~mC*NSJ>SL1AE;mr-QmR+)lnorZ63JlEE^{fS|Cm@ru4a+#qi>vjq;HH74RSY- z1A~LrcQc!ynexXeh+a)EnT|Fa?;mfj?jC)0P4A-6hukAKZ0d{Gn>@ar(4W>iW1TX> zsT?2mSF8qkJx`+#D=G754N>}=)artD@8@ZaLd-PYum{L3#{*SM?!Q>kkNxNCyh0iB z>X^dM#QpSB%VP83J>{kiIOOk}uH+pPSHqJTOxudhPYTx(Nl~$_@s;vowWqRJvdw%a8h2JY>@FG z2DxsoR&x)tAYW04f{f%SNYtIciNZ}~sFEl_7=)I)8alyomPlgqs-!RF8?{~X45bLK zP=x9HB#0_c9by1(meeHLRXkj3rEvD9Yg1hi6Omu?^HYmjlQ5vi%vZTe8$k?<1j>`U z(yt@q%2WOn0Je;EB)fLfW2rk70D{`PVXQ3>P^5)bN-QIv@p9dPZX*)@)9beQ@3VT$Ig4 zKXf>U+SK$*sKc8qb!fp$R$|6h`-oJiJ|qu`9ya@9f65^DhDH?VLZ!ep%U9focw@2eUhxgVs4yP7oinW)kR_ z$;QDiVLfnJy-V}5E{t=Swxb7~wSv~hj075D)1vSV;ax0d?0H?NA=^PEdy_gcoH6{^ zn0l1tMhdfkcce1E(RA$2@R5G)1n1;y);ktd@+b~+em$i7_E=lkl{9e)|FR23zDj8= zuB)PFtI3CP;HGvLgx5=w+vL#6G1JsP%SMB>U*g8GupswLrtoHN@)B=a^igS~Sf z^`%3wWlScGK5LGMD7P1f9t028=V%%pds}>bnU2FE8p)7~W+#$bq*LIP>PMr=2DzL! zCHYcFR3uy4U2JB#5F19MZU43f6XMUy_;WPJGu=496?oLm!T!`UMUDu{q~9iD_AsBT zk9cJoo2br#(z4H2q12vJ!E*M4)&q}X7fgx5i{=}p#_1K&)$>!TtW#CL{7ZP`IYeH z=RaM&Ef_LyKFthRL@&rkq^}ok8sUevay{c_hma5Q^ZD^-$vcFukNv}~vDD6X{Go5$79|5k{>Nk1Xh7#vS)b3DZ_B|feI zwbzePeGPCy?Y6i7H~USPu^eDT+y)f_P7B;7`<5$4sKa<48X+)1TzEKIo*q)T~ zx>JqU(l&liwW}OjKN$4E4+s9acm9n@{L{^L<*iuEd)k9Piatyd^-t*gc`2xo)$j4^ zbzHSz>Ujq+lI&KP6|li`IZb2eKYKWJzfBeU_Rt-qx-vbmk%xKz?Zh1}3`H>zPCRD)jKR!dNZW|T^*hD_z?;%O( zlO}!?{owvqcE&D_(Z#{tsL6W>_$=l0Gt|RymOk$r!$7{{n@-$#$d|K)v_nRbNiGK$lk7pg)J0yZfQjM!rS`_G`_|tkMDBM>D?!N+le^=dG6+E1$brr zD)L(gaWVj%%Feee>dd+zo2l?dB#pl4;aaa9Hh?wY|5&zZtYkRaobj8{(Q^0$apWdUWY0g zb9F8{T$}G1F{77EZSal4g67*qs!C^w)0Yw%_6}DomQCO^RCs_*NwZHtd6=L7&Aztf z=iufUwXI#V*$v;f*ZB!fv%@H=dOhE|Ib`y)2RBEDwK|oD`Tu?oE*3A;D9ZKe4a}wW}+Tv4EIm43D*VMBgdNezmns%?J9wfaB zeB9ev_~tV9m5a;w3{hd=+(i~jSDdPmgKM8<~qWP<3N^&F)s_-swcX`dE+ zLQ{b$;>2ymp?I?3#(ZF(F6XU45XYcIWA?G65Lf9O z+4iU4uUG#CHnesmy&u^Bb@WHp|4Nzc4ZT^cmi~I>b<6WDr#8!7OJQMGEu;!qs8qRf zqPTOTq4($Ee~Mb`&(r0}-&(Se0SbjY$*CMsRjE*-vB<=#3?W!_gmAvQ=-x;Fc@T^_ zAIXhBcz!nh9;qS(DMBSySrp*e98R`*HJg~N1Bob8@Yy|;Yrh3Y(xXp~wW_Uf zmU#OcB+N?~OK5#!tfPNt!qpdihqMN*tcHY$LBxx#ceigLF$om_YtPQG z2x|h8X~ieiB&;FzVDNMg%C6DpuCtXM`h?luBj$|73krj`_qDNi0GWTxAfUi=*JBqX zg+&J~A`ez5(^K0|g+xUsR=Xr$meq|gSkiQ)c_?a{Un!0LwKFgWatj5r{iWS}FZMRm zJ%JWNu}G^iD+*!z(Wj+Gqy@tY?%1%$Z%?DGNc7t!EAxlJW)X2m*32!yb-1~4_wTET z9V7S4gsDDA2(~%G1`xK0_H$ORRoAUG>&dp#inx4iR<+ouwqi?a>5A9F_X@2fL`~Sw*u&qbue7Yw3LACh zKER+|RO5q=k6D4X!#|_w@P27(1K1V`y;`G9HIlD~Hl_Un4ZV17z$Y`JzuS2vI?glN z$IqP&T*P>{$=4CyR_O_Gz9v8^e#@~AlAGcQ!&q7VLCS6q+mc*TlR}IlhyYeGfd7%O ufdBaaB&>ZF3F}J8HD4>A>zq&aUOR$uTkZe%2g7ou_?(QDkhd^+L;O;KLeRjzA?cTdT z_UxXs_vh`?^GN{ z|Md9r!2BheU=&|Q{;%>f@})=GAP5da4Dz2#3EV$=IH27c7WU@MijHRF))q!;f3=fK zle4{Nd;gyMJqI}*$mFw&v4yP}xwx&Xg`=IVjft%@@MR7dgnx8Uh={5|r-1?Q(OAyOtMwj#|Gj6^i+@>@K-!2R0N4oIULv%50Vi#6ldZL2uR`t0$G0CgH9>ZKpuepZ9H1_ zv0(^gBE0PNTfEX->U7yXj7$j;5^UP`Pv` zY=2YWKUC(gosU+fFT7sfB7X-70;pVS-Ofi#t{EurO{gDv{= z5tsA2sm#$FQA#B9@?t;-dbu1{*N*ZXz5j(NidIpFEh}F?tzlfzyqj+IdQ!`xqJBmOSOB#$@GpLT zQ1c)WevbYq@uE4HqA=ZY5LlcI`xj1V=gS8~V8BUC()mAXpOb)OyqGk!*2xY1mQ%!2 zolelzo-tXzwlTzaUA}Qyy>Z!`{cfn4X!5_+f0hnii65p2(mx9+ATSkwf6R!M}inzM7_;Q{2e7yXuv;4fXs%E{e zW`oWAjE#Px&FYQ!f2uAdf0rl)0PIOc=1YagoxZ2?e(cPAC*gn79&*q2));-G$mNcV3@F;K#lh2D;T zp+zd42sG5-=2&E!rH*rqvC9YN?xxTPj9tj#6aqs_QJ~v70sw%^1Ks}TvVlK%grSiI z#t#}7{qr;u3q3M-Lvk%j={ZI&{>FF?RlL+4k6gM?sNzx-`3r$hxZ+bPs;b|il60X^ z$6!JD?j202G9~2sAP^8QKm|lkofiwT z1e#!ifWQP45nw@r3IH(o6%P9Pu4LXX10cr$_>qeNdkLHrWJ++2p-D=CN+|1YdK`$Y zH`!@a8c1k7%)6T(AO4bUfMj}K@(EzU-=qS%kwbY3GC=BpmtpafP!SveKxGZOuN&m` z@4!=j{2o{i4*g{FSCNZo}(nOaCA4Fx)rHnecyLO>B$e1bzY?xo`e zWBOS8yXYnt0-+`tWd1z=g1-r2gH3AbK}!vqiaHd<#II$g zrPd2jS3QGA1Z2Y!sY&tx-=Z?U_)Ii3fy4Y34ML$Pz!i}J2E>Dqpzcjz4*(#&&q2d| zTZ0Xdg8B(s3^YA~u7wAR;|t{=_ixJbPxCMDzvO}dU{>V;>XHI!PJw9G5>_-tUA3d=C zjrM7Keyo-iQ}2o=3h?)gR(Si3nliNc*7KCN0b915^?JoKs=jB==&1dMR9m)wTLSkctAxkk!~k7eyk_kT&A;z4XXe<|vK z7k}`7ErJB4KnLkgFLD7&GQbQcD31b4$&|eCC;~8{K2q?T7djT&grfVG2fZZ3f?j$> z=nCRhpoV#wr~s-;2KXIQ=0(Aa0YEayFAAU(E|dpV@M4dDcv2<#@gV8H!=RQUe))tG ze555*ePfu1j8EzZO=DmIpPK-304Y7QxPb|OItC6&6`i$^Y&d~d|aZ)s}zu& z3^J2*xU?*=0h>>%1p4fO^z!uc4H|K9gbn<%*H9_Qd!ec+*hHyt)qcYIvzgl`BLXlm zv9Mu;jlR7*-hgdEv;TE4ZFYyVB*QwiMPe8K?WhX?=! zzy=4K@6a-56k5?)zR z%|4sBHe?7+a~}ZE#KFlK$uw6ON}nblx7rY<(i>;hr_(!*gvioJD_JamXWazV7tF3p z@uk?D&d@m#2T=^X7c2aVfgmujwzjHae{{1d)Y>FGfJ<{|-ZJuMyJ@0f%}8>uAesIW z_{Q=4)b4U|xl*@LwOkqRvts0o9i#ZbgOL{rDHrvZCIwBQMz`7KHW%C2!`s2xN=`88 zO|}MxILliS_O}sswg9+oG2#2q zs^Elt9{H=Mir3vqcIw4jJ10(wGv61h3Q8WCJf3##Ka{uXVQ4-J;!5=9EX<#NEoh?r zJRAAD`$s&CkRQdn2_B5EXx<&ce1t~o=r@OjF^}=(anH5`{m%}Ro>y%~S@Z*epR`63 z3!G<#9YE zZXPzmz$>fTmO$j2=FQpMDk2yA`KsNAk>?G>x_yQbqu-A6S$~*gaxVG70u_d;*D#;8 zN4knMh4;t|q&YHHuAH#+|M;9=AztX-)eWCGZIG zaji8QCh+h`eaU)?%~u#xx=d!iyp_u2#%IS{(G3{8?n$_XP(Hg{VziTiqd2Z0z9zU{ zx*tXv-imt73Vpb5D=IeWrhc@}UO&IFTCI;Fvbh9x#TPcNYy|e=@5newfMx5scNsxx zJp@xkeMf4c!a3^+Va2p->@c^F>Ar$qj~gaeQ_ub0TwC+wE)|Y9kaX~U-!z4FcYge< zF$j1?eL-$$!K3+v%ck&0Cio`#xnt)Lys@u9bk~H_lQCGYFZ98~_fJ94$kk4+O`f!N zZXEgBRWs6@Q(B*K?Z<5mI2N(LJys_2vZ@FVoLaoRV$u=W9Iv_zi3#fBj z3Iy1l&9Ihzmb5Is&K_(Y5K*mrp$-+-tR=aqJ2k^Gn}-@Lk{rhm-)#hHrE3oz5=lC? z9?p<6QDs}bO!a1SsF&b6{39N$RWOnm0to4~hv|aH4 zzJ9T-J`pCu_S4JF^~Q^7AWi02DtVsi-6@aQ4F|$0j^C%3rJ=4v-G5L7bmeftjEj4S z#Ur{tKl=Rc)S5Cz*qa4M%GS?49`tWFx^OZiu%8y3zJ713(@nju?wfdW%9FR(#Qjnx zt}#W_iVhFktohpf{?Y;!vl!mz_NhJyA50wi%1SqJx*OAQ&f#Woy>;jAX-!HwQ6!oc zf^u>2_6Fjea;PY)p|;IuTtqtr3%)O9;qKl%S|3+;@$xB>_ay*Zfb!Jx_t-P&_r;LJ zF!(FE2QI4TS=N$Yo&V;pig=_v5OY*`RA89#wfzD#3f+*|$~b z&xEAE-7o7g_&QFik-Aqq<7ALBg$~u}+CZbN%zA0N_$0@MJkBoYr{?!r?p2lD1%~*! zMIZg`!RL&7H@#z=^ZaZ^wZeTfNo_W5jMn5aKcHsASR=Bs(kfRbs+wPbu@5HeF!wNZ zvY)Ljpi`b37WV$+@Y#cGM^2mw^pSe<9>OV?X?d%Aa`?b-{JlHt7hP{1qu$$!gX`FQ zh*49xXC;|F__VQarcJC!51&?gCTxi;P)QnFD^?WS?(lNX=r%iXdj7!l&5<&g8fHll z(`Q6l14&0Q7inSSt{-w0E7HlpF`>QDK%yEOP$&bdH(4HoOYtqy{l*Y0+JLGQ)$Xb% zMaY*`Q_$at;79T|G(RvB`8Rz6WM8;S;Q_B`#UFq6-iiF+w017?Uz8UYz?zvTOC|fF zAI&OcF1W9U_UyGIM?5l3N>zTBG!+_Ukwb2{elz;Y@368pnTDPqMj+s^Pg#tgwGpG< zG57Vk0TRWg?O(QjdAi#>n*ciA&U2A?BJ57%%0eWCbI=YkxlxNaPX<%;YFjEVHb2B8o1UWH?tgE0K=@ zK^%!3GLU@2U<)d_js@SSFn-N7Gj4e$ZpD&715R15a{j4Qdh8nz>nyE})EfjrV|e`j zia4D>rzEBBU~x(Pxi5f>cII~3nS z!%HplaRRiyZAJToT9PXcAs$)6D2pr@oZ-|Iz-j17+LO0EV z<|Ie#upZn`%ga9n_~WJq?pUQqPFrmpuWvqF5=ipO46)Uo)kK0v?%`oQvGgS#fwQPp zy3LIYxn4<1$U+y0W~@GFom!>1vL-htpIX3Z2i#xd2WZCSM&4A}+z7Pp!hBiW!7Q!@ zI-{@}dYArcO}FuTWFBsK9G!V;6Z5e4K#WLkG5G*wGrs@){Ym-k=(XcX zCyalQgT=(&q~P0T<3%!!gz&(HgqY!7qfCBH42^N65c6CDGI(q&Vb+dh5m`o>Iqs~f zLO%Mj1rN3AH#Rl0<~jnyVqDkgTU`nV!lAdnO)Jc2>)~O;3MCD%xGMEI^kt^bd0Ab7 zKDOpC+`8VfTm>M3Da(*A21&-I#dGW7jJ<)Pmu8E^-}6t9@zuO6xmS3`WlKyQriz}h z;E>5sc!+}5Mltk8T!(Mo2`FOZJ~(8}iwu7BV>Ls}eQN5^S?nbAt9sp2n8!}1q83AV z$8u0|6vdKesFV|=>6riIa^qZg?RmO&4P&(`6*XMwPX5F=4^i`@_OuLN?qdWSbCS4pB=S#kO|UGZAZee;1r9>v zxjh#`b3&LQ)_qemWWd5}-28aQcmQepwH#xQS2wK4Mdtk5unO4lQ;m<-!xwdchIrTl zrSH{dklYP{FH*}Z7wZQ%V%s6n!;2#|WBhmWiOolQ1qdedF2?;dDTHpGiAQORjNNjh z3ZE;p7rLm5l1C$hx2S9a7{h2jF(D1Ne%8mA+7H-?*7&WFh4l2rjx(xM?~kkABZ6Zs zvGk=Q+5o@BLb5Ia&%p-*iMNG2#gpoH59qs1XOAh?D7No?cCNh6Zf}c9Z65rZwb*0F zdsrFD>8d~7Egt+~x8MOrI~M$`34849JMI5e^y+*5Q71Y;FG3-*QlbgQed2)5T)(%y z8{w?2rr)nIvyU|&m&5YF{}X^HN{~@vQKGLbYD?xjoww0&Fp+ckgK;`a;9m z$b{PAgIUP{#S; z=B7-Tn`rWJ6E1p*FZ;EBfSw}?&JXngC$**R^Dp98uP{;iaQit{!nr`d{oUUgU_FhP zvsmb}r6UC(3EG*DceV^=G~{Fl&>)DjJqfKu^JoO?&Rac6G=wjnqJ&v|lw7}cYbOnf2wkCBO9y;8lwIWm8dJkSfN@`g6?S_G<8^p9A!-(gr@QVWLl!`4 zF0}ogT_kCbU*W)yF~fL93TdoulBZVE320WLhFi*l^wF3K!y&7pL5neUUw(%7I**dm z%IVE!hV<8mY{VVQmh{1isRQ4x;IdCT)qLNIf~9){-tOBrQf}!uBo3Vsy&|WHRy&3* z7BZ9%E+-6brs4u*dcD!YCvo%#aIT-vOKak9p$qS3)QXV_=w~%r;KEAZqHa-WKVux+ zTeQuJkpA(BqW;;oA&xB{cb)x!>9=41%rr^`X?wm;>iF=wuMbiQ0g-t*lk1G<`oGG(T_!(g_3QVG=jgaG*-7<&t3|Pya=j`FUfc9;G`fBM4qkS@ zIXDyeU^de}E5(|+Y*D5VRGQ>{`d<2ztU`)`5fB(sImO9kp(FEE?&egf=8-~QZ>yPG z(`clsf;y3D4yWREx^JCgbB6-fw2vI+AddU6(pEug_5wclJhiG|aQKkygvL$Tpp%*) ztQQ(*hgG8WFKo^xMTM!@`}?`7gWSD84>7*BjSXWOw6SNUf?3-V;lP+Xo+(&8ftlzl zbrD4dVSeHnjcnQHm11&8$K<_$_A7QmnCHBcI(gtHE$JsRb&89Jyr7CUT{&v=p)VQ7 zA*a(39oJDt8we2^r?dLMdN%zV7AUToh$|I;y5Q)XdbXDc&*YSJ3mlRx_(ePg3TkscYq7> zozVby!UE_qzEQ~zT1CgrL4SivA4aq{iq9)@c(oLP(9vG&CX4xv@A&%T4W8iED7>U?5}Ddf zhVNz*N*wkbRtyzc=6(&%r9MK`P!(fy4c-mSpJl_(ob(Gtb(2f6sf$n4>aM09n8Ca! z5ez?j*K4EcB#a?asiP&L=bh`q#JHJ$=>HyAME=Kt1@tT#pcKQog|oS_v@&zLd2+L{ zx;4KsKfOP{@yuYVlGo^aEuz1^FZ4#Xa3W(2$8S}hZv)Zv)nP~5TKmHvfG9yR=n;~z zz&=J?*X*)p*qz4vZG^#tFN&IS&cyM)f)0GX*uTQsY@(bI}*Yn38#JWJ4~!TeC$ zU}m4#zg0XlWQ9)gk#UcxDP2t6UMw3|SPV3>8aYy-kCGfizc?T1OtjVBdMG$>;TVy#B$S1cwxiJa)`Ub9<|JcqK-4_Do%piWPG|52^UveTqL zK(D#CdhjM}Y+&y}a{edU-1(Fk052_*pSBK`RNzfA9;!1NX0VVuW3?DQ*gx}|=7L9t z+Xigr&JXkwPWk?^=VaKYjHR%Xifna!DMk*TIia+Q?WBwj-=_>B!>-S9IRb477)tgJKBVT!^*h$kPD}wJiT4t0+GQgRb&q5h#@jhX2oJTbIhxV z?zf~UohJ%>8@JjiXuAm9vL* z_tsiV8eXO(!_ymb-n<$@k`Rq^o5=NvnF*|g#<#cfjwpn|hDbsPYD&#D?XW8hfg)yn z--5pjxepi9xn}ReW?!YA+QVK^tj>ufTY!>%uT6x!J3dRWw9Kp{AjN-ZSLx~uOMHfe zE%DXOX_Jnr zVUxgUc4QRsyVTo)GphdL0sO&g>ssAQd2zJbaWn6R0Hyk&L)-IQX|ZQP<85OdPMs~o zF(O|eb~wy4k!kcaf-}G!Y((RHEDQ&8+txtYgBqhiWeVvo(x⃛-o@#zG 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/ripper_hit2.ogg b/sound/weapons/melee/ripper_hit2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ed903d2f8cf0647bf0526fab2ec45298936d2afe GIT binary patch literal 15014 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/ripper_hit3.ogg b/sound/weapons/melee/ripper_hit3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..095b41d0fb6856efaeb9035ecbfbe2ee5d4d8c0f GIT binary patch literal 14311 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 J@?{$#`7fJhUzz{_ literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/saw_start.ogg b/sound/weapons/melee/saw_start.ogg new file mode 100644 index 0000000000000000000000000000000000000000..69c5857a9bbe2e32c3c4671461a780a57a9997a9 GIT binary patch literal 21772 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 Sa$=YPD8RA<_yTPIQT`Y6)DKz! literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/shishkebab_hit2.ogg b/sound/weapons/melee/shishkebab_hit2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ae7cee9e813261bccf34f751482e888212a62fe8 GIT binary patch literal 13381 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 Z3tdmz*#L|n6c`gygU+2D5cZn@{uh<=o!$Td literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/slam.ogg b/sound/weapons/melee/slam.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1696dc8a50f99feb45da18ec751564437f941b48 GIT binary patch literal 11505 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/stab_hit.ogg b/sound/weapons/melee/stab_hit.ogg new file mode 100644 index 0000000000000000000000000000000000000000..22f275745e604e4b417fb591b11722ac0ae13467 GIT binary patch literal 12398 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 HcYyx_RIBu^ literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/wooden_hit3.ogg b/sound/weapons/melee/wooden_hit3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3c7e322028aa95785b46135c26ab79dfd3c2ff93 GIT binary patch literal 7862 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

Cmo}p`jR;IS6&@o9@`gnG{3|3uo}<}!x7*{h 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 W;mK_kDj-!+rWe@F*M%^Vum1-jaZf$~ literal 0 HcmV?d00001 From 5fd0bae7f0f4f8b4b1959e0941a00ccac31c2800 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 23 Sep 2024 18:35:02 -0500 Subject: [PATCH 086/102] riposte! --- code/__DEFINES/combat.dm | 3 ++- code/datums/components/melee/parry.dm | 9 +++++++-- code/game/objects/items/melee/bladeatheon.dm | 3 +++ code/game/objects/items/melee/sword.dm | 16 +++++++++++----- code/modules/antagonists/slaughter/slaughter.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 16 +++++++++------- 6 files changed, 33 insertions(+), 16 deletions(-) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 3e1b00be8e8f..50f2031db795 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -46,7 +46,7 @@ #define CLICK_CD_CLICK_ABILITY 6 #define CLICK_CD_BREAKOUT 100 #define CLICK_CD_HANDCUFFED 10 -#define CLICK_CD_RESIST 20 +#define CLICK_CD_RESIST 1 #define CLICK_CD_GRABBING 10 #define CLICK_CD_LOOK_UP 5 @@ -79,6 +79,7 @@ // the standard parry time out time #define PARRY_DEFAULT_TIMEOUT 0.75 SECONDS +#define PARRY_RIPOST 0.50 SECONDS //attack visual effects #define ATTACK_EFFECT_PUNCH "punch" diff --git a/code/datums/components/melee/parry.dm b/code/datums/components/melee/parry.dm index 225de193fc95..d71372b087ac 100644 --- a/code/datums/components/melee/parry.dm +++ b/code/datums/components/melee/parry.dm @@ -12,6 +12,8 @@ var/parryable_attack_types /// the time between parry attempts var/parry_cooldown + /// the cooldown you get when you parry an attack + var/riposte /// Text to be shown to users who examine the parent. Will list which type of attacks it can parry. var/examine_text @@ -30,7 +32,7 @@ if(ismob(I.loc)) UnregisterSignal(I.loc, COMSIG_LIVING_RESIST) -/datum/component/parry/Initialize(_stamina_constant = 0, _stamina_coefficient = 0, _parry_time_out_time = PARRY_DEFAULT_TIMEOUT, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = 0.75 SECONDS) +/datum/component/parry/Initialize(_stamina_constant = 0, _stamina_coefficient = 0, _parry_time_out_time = PARRY_DEFAULT_TIMEOUT, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = 0.75 SECONDS, _riposte = PARRY_RIPOST) if(!isitem(parent)) return COMPONENT_INCOMPATIBLE @@ -38,6 +40,7 @@ stamina_constant = _stamina_constant stamina_coefficient = _stamina_coefficient parry_cooldown = _parry_cooldown + ripost = _riposte if(islist(_parryable_attack_types)) parryable_attack_types = _parryable_attack_types else @@ -75,7 +78,7 @@ return time_parried = world.time - //L.do_attack_animation(L, used_item = parent) + L.do_attack_animation(L, used_item = parent) /datum/component/parry/proc/attempt_parry(datum/source, mob/living/carbon/human/owner, atom/movable/hitby, damage = 0, attack_type = MELEE_ATTACK) SIGNAL_HANDLER @@ -107,6 +110,8 @@ sound_to_play = 'sound/weapons/parry.ogg' playsound(owner, sound_to_play, clamp(stamina_damage, 40, 120)) + //Riposte! + owner.changeNext_move(PARRY_RIPOST) to_chat(owner, "stamina_damage [stamina_damage] time_since_part [time_since_parry] parry_time_out_time [parry_time_out_time] armour_pen [armour_penetration_percentage] damage [damage] stam_const [stamina_constant] stam_coef [stamina_coefficient]") owner.adjustStaminaLoss(stamina_damage) diff --git a/code/game/objects/items/melee/bladeatheon.dm b/code/game/objects/items/melee/bladeatheon.dm index 2dae77953077..c7a64030e576 100644 --- a/code/game/objects/items/melee/bladeatheon.dm +++ b/code/game/objects/items/melee/bladeatheon.dm @@ -14,6 +14,9 @@ desc = "an electrically-charged fencing sword." icon_state = "suns-tsword" attack_verb = list("pierced", "swipe", "slash", "chop") + self_stam_const = 5 + self_stam_coef = 0.5 + riposte = 0.1 SECONDS /obj/item/melee/sword/pedang/Initialize() . = ..() diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 1e8c86f98193..6aa9808dfa6c 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -13,6 +13,14 @@ sharpness = IS_SHARP armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF + var/self_stam_const = 10 + var/self_stam_coef = 1 + var/riposte = PARRY_RIPOST + +/obj/item/melee/sword/ComponentInitialize() + . = ..() + AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results. + AddComponent(/datum/component/parry, _stamina_constant = self_stam_const, _stamina_coefficient = self_stam_coef, _parryable_attack_types = NON_PROJECTILE_ATTACKS, _ripost = ripost) /obj/item/melee/sword/claymore name = "claymore" @@ -97,11 +105,9 @@ attack_verb = list("slashed", "cut") hitsound = 'sound/weapons/rapierhit.ogg' custom_materials = list(/datum/material/iron = 1000) - -/obj/item/melee/sword/sabre/ComponentInitialize() - . = ..() - AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results. - AddComponent(/datum/component/parry, _stamina_constant = 5, _stamina_coefficient = 0.5, _parryable_attack_types = NON_PROJECTILE_ATTACKS) + self_stam_const = 5 + self_stam_coef = 0.5 + riposte = 0.25 SECONDS /obj/item/melee/sword/sabre/on_enter_storage(datum/component/storage/concrete/S) var/obj/item/storage/belt/sabre/B = S.real_location() diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index 40fb73f700c6..595fbb27f61a 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -26,7 +26,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = INFINITY - faction = list("wslaughter") + faction = list("slaughter") attack_verb_continuous = "wildly tears into" attack_verb_simple = "wildly tear into" maxHealth = 200 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index be89996876f4..b32974d8bded 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -106,11 +106,13 @@ var/block_chance_modifier = round(damage / -3) var/obj/item/shield = get_best_shield() - var/shield_result = shield?.hit_reaction(src, AM, attack_text, 0, damage, attack_type) - if(shield_result >= 1) - return TRUE - if(shield_result == -1) - return -1 + if(shield) + var/final_block_chance = shield.block_chance - (clamp((armour_penetration - shield.armour_penetration)/2,0,100)) + block_chance_modifier + var/shield_result = shield.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type) + if(shield_result >= 1) + return TRUE + if(shield_result == -1) + return -1 if(wear_suit) var/final_block_chance = wear_suit.block_chance - (clamp((armour_penetration - wear_suit.armour_penetration)/2,0,100)) + block_chance_modifier @@ -133,8 +135,8 @@ /mob/living/carbon/human/proc/get_best_shield() - var/l_hand = M.held_items[0] - var/r_hand = M.held_items[1] + var/obj/item/l_hand = held_items[1] + var/obj/item/r_hand = held_items[2] var/datum/component/parry/left_hand_parry = l_hand?.GetComponent(/datum/component/parry) var/datum/component/parry/right_hand_parry = r_hand?.GetComponent(/datum/component/parry) if(!right_hand_parry && !left_hand_parry) From cd9e666ace01447c3125315648933d7ebc93b391 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 23 Sep 2024 19:21:07 -0500 Subject: [PATCH 087/102] holy crap i love reposte --- code/datums/components/melee/parry.dm | 40 ++++++++++--- code/game/objects/items/melee/sword.dm | 78 +++++++++++--------------- 2 files changed, 66 insertions(+), 52 deletions(-) diff --git a/code/datums/components/melee/parry.dm b/code/datums/components/melee/parry.dm index d71372b087ac..4193df349364 100644 --- a/code/datums/components/melee/parry.dm +++ b/code/datums/components/melee/parry.dm @@ -17,6 +17,10 @@ /// Text to be shown to users who examine the parent. Will list which type of attacks it can parry. var/examine_text + /// Does this item have a require a condition to meet before being able to parry? This is for two handed weapons that can parry. (Default: FALSE) + var/requires_two_hands = FALSE + /// Does this item require activation? This is for activation based items or energy weapons. + var/requires_activation = FALSE /datum/component/parry/RegisterWithParent() RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(equipped)) @@ -32,15 +36,27 @@ if(ismob(I.loc)) UnregisterSignal(I.loc, COMSIG_LIVING_RESIST) -/datum/component/parry/Initialize(_stamina_constant = 0, _stamina_coefficient = 0, _parry_time_out_time = PARRY_DEFAULT_TIMEOUT, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = 0.75 SECONDS, _riposte = PARRY_RIPOST) +/datum/component/parry/Initialize( + _stamina_constant = 0, + _stamina_coefficient = 0, + _parry_time_out_time = PARRY_DEFAULT_TIMEOUT, + _parry_cooldown = 0.75 SECONDS, + _riposte = PARRY_RIPOST, + _requires_two_hands = FALSE, + _requires_activation = FALSE, + _parryable_attack_types = ALL_ATTACK_TYPES +) + if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - parry_time_out_time = _parry_time_out_time stamina_constant = _stamina_constant stamina_coefficient = _stamina_coefficient + parry_time_out_time = _parry_time_out_time parry_cooldown = _parry_cooldown - ripost = _riposte + riposte = _riposte + requires_two_hands = _requires_two_hands + requires_activation = _requires_activation if(islist(_parryable_attack_types)) parryable_attack_types = _parryable_attack_types else @@ -59,14 +75,14 @@ examine_text = span_notice("It's able to parry [english_list(attack_list)].") -/datum/component/parry/proc/equipped(datum/source, mob/user, slot) +/datum/component/parry/proc/equipped(obj/item/source, mob/user, slot) SIGNAL_HANDLER if(slot == ITEM_SLOT_HANDS) RegisterSignal(user, COMSIG_LIVING_RESIST, PROC_REF(start_parry)) else UnregisterSignal(user, COMSIG_LIVING_RESIST) -/datum/component/parry/proc/dropped(datum/source, mob/user) +/datum/component/parry/proc/dropped(obj/item/source, mob/user) SIGNAL_HANDLER UnregisterSignal(user, COMSIG_LIVING_RESIST) @@ -74,13 +90,19 @@ /datum/component/parry/proc/start_parry(mob/living/L) SIGNAL_HANDLER var/time_since_parry = world.time - time_parried + if(L.stat != CONSCIOUS) + return + //if(requires_two_hands && !HAS_TRAIT(parent, TRAIT_WIELDED)) // If our item has special conditions before being able to parry. + // return + if(requires_activation && !HAS_TRAIT(parent, TRAIT_TRANSFORM_ACTIVE)) // If our item requires an activation to be able to parry. [E-sword / Teleshield, etc.] + return if(time_since_parry < parry_cooldown) // stops spam return time_parried = world.time L.do_attack_animation(L, used_item = parent) -/datum/component/parry/proc/attempt_parry(datum/source, mob/living/carbon/human/owner, atom/movable/hitby, damage = 0, attack_type = MELEE_ATTACK) +/datum/component/parry/proc/attempt_parry(obj/item/source, mob/living/carbon/human/owner, atom/movable/hitby, damage = 0, attack_type = MELEE_ATTACK) SIGNAL_HANDLER if(!(attack_type in parryable_attack_types)) return @@ -111,14 +133,16 @@ playsound(owner, sound_to_play, clamp(stamina_damage, 40, 120)) //Riposte! - owner.changeNext_move(PARRY_RIPOST) + if(riposte != -1) + source.balloon_alert(owner, "Riposte!") + owner.changeNext_move(riposte) to_chat(owner, "stamina_damage [stamina_damage] time_since_part [time_since_parry] parry_time_out_time [parry_time_out_time] armour_pen [armour_penetration_percentage] damage [damage] stam_const [stamina_constant] stam_coef [stamina_coefficient]") owner.adjustStaminaLoss(stamina_damage) if(owner.getStaminaLoss() < 100) return COMPONENT_HIT_REACTION_BLOCK -/datum/component/parry/proc/on_parent_examined(datum/source, mob/user, list/examine_list) +/datum/component/parry/proc/on_parent_examined(obj/item/source, mob/user, list/examine_list) SIGNAL_HANDLER examine_list += examine_text diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 6aa9808dfa6c..c0137b153626 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -8,7 +8,7 @@ flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK w_class = WEIGHT_CLASS_BULKY - block_chance = 25 + block_chance = 10 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") sharpness = IS_SHARP armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) @@ -16,11 +16,20 @@ var/self_stam_const = 10 var/self_stam_coef = 1 var/riposte = PARRY_RIPOST + /// Lock parrying to only work while transformed + var/parry_transformed = FALSE /obj/item/melee/sword/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results. - AddComponent(/datum/component/parry, _stamina_constant = self_stam_const, _stamina_coefficient = self_stam_coef, _parryable_attack_types = NON_PROJECTILE_ATTACKS, _ripost = ripost) + AddComponent( \ + /datum/component/parry, \ + _stamina_constant = self_stam_const, \ + _stamina_coefficient = self_stam_coef, \ + _parryable_attack_types = NON_PROJECTILE_ATTACKS, \ + _riposte = riposte, \ + _requires_activation = parry_transformed, \ + ) /obj/item/melee/sword/claymore name = "claymore" @@ -29,7 +38,7 @@ item_state = "claymore" force = 30 throwforce = 10 - block_chance = 40 + block_chance = 20 max_integrity = 200 /obj/item/melee/sword/claymore/Initialize() @@ -151,50 +160,31 @@ w_class = WEIGHT_CLASS_SMALL attack_verb = list("smacked", "prodded") - var/extended = FALSE + parry_transformed = TRUE var/extend_sound = 'sound/weapons/batonextend.ogg' - var/on_icon_state = "suns-tsword_on" - var/on_item_state = "suns-tsword_on" - var/off_icon_state = "suns-tsword" - var/off_item_state = "suns-tsword" - - var/active_force = 10 - var/on_throwforce = 10 - var/on_blockchance = 40 - - var/force_off = 0 - var/off_throwforce = 0 - var/off_blockchance = 0 - - var/weight_class_on = WEIGHT_CLASS_BULKY - -/obj/item/melee/sword/sabre/suns/telescopic/attack_self(mob/user) - extended = !extended - - if(extended) - to_chat(user, "You extend the [src].") - icon_state = on_icon_state - item_state = on_item_state - slot_flags = 0 - w_class = weight_class_on - force = active_force - throwforce = on_throwforce - block_chance = on_blockchance - attack_verb = list("slashed", "cut") + var/on_block_chance = 40 + +/obj/item/melee/sword/sabre/suns/telescopic/ComponentInitialize() + . = ..() + AddComponent( \ + /datum/component/transforming, \ + force_on = 10, \ + throwforce_on = 10, \ + attack_verb_on = list("slashed", "cut"), \ + w_class_on = WEIGHT_CLASS_BULKY, \ + ) + RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) + +/obj/item/melee/sword/sabre/suns/telescopic/proc/on_transform(obj/item/source, mob/user, active) + SIGNAL_HANDLER + + if(active) + block_chance = on_block_chance else - to_chat(user, "You collapse the [src].") - icon_state = off_icon_state - item_state = off_item_state - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - force = force_off - throwforce = off_throwforce - block_chance = off_blockchance - attack_verb = list("smacked", "prodded") - - playsound(get_turf(src), extend_sound, 50, TRUE) - add_fingerprint(user) + block_chance = initial(block_chance) + playsound(user, extend_sound, 50, TRUE) + return COMPONENT_NO_DEFAULT_MESSAGE /obj/item/melee/sword/supermatter name = "supermatter sword" From bfd353afd005a07f0a139c433575babf817ce2ec Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 23 Sep 2024 20:41:22 -0500 Subject: [PATCH 088/102] more improvments to charged. --- code/__DEFINES/dcs/signals/signals.dm | 3 --- .../signals_obj/signals_item/signals_item.dm | 2 ++ code/datums/components/melee/charged.dm | 11 ++++++++--- code/game/atoms_movable.dm | 4 +--- code/game/machinery/recharger.dm | 4 ++-- code/game/objects/items/melee/bladeatheon.dm | 13 ++++++++++--- code/game/objects/items/melee/misc.dm | 16 +++++++++------- code/game/objects/items/melee/sword.dm | 6 ++++++ 8 files changed, 38 insertions(+), 21 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals.dm b/code/__DEFINES/dcs/signals/signals.dm index 8ac936b9992a..aa530ada845a 100644 --- a/code/__DEFINES/dcs/signals/signals.dm +++ b/code/__DEFINES/dcs/signals/signals.dm @@ -187,9 +187,6 @@ #define COMSIG_ATOM_TOOL_ACT(tooltype) "tool_act_[tooltype]" #define COMPONENT_BLOCK_TOOL_ATTACK (1<<0) -///from base of atom/get_cell(): (atom) -#define COMSIG_ATOM_GET_CELL "atom_get_cell" - ///called when teleporting into a protected turf: (channel, turf/origin) #define COMSIG_ATOM_INTERCEPT_TELEPORT "intercept_teleport" #define COMPONENT_BLOCK_TELEPORT (1<<0) diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm index d10705a1b3ff..8b6f79c507e7 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm @@ -36,6 +36,8 @@ #define COMPONENT_BLOCK_SHARPEN_BLOCKED 2 #define COMPONENT_BLOCK_SHARPEN_ALREADY 4 #define COMPONENT_BLOCK_SHARPEN_MAXED 8 + +#define COMSIG_ITEM_USE_CELL "item_use_cell" #define COMSIG_TOOL_IN_USE "tool_in_use" ///from base of [/obj/item/proc/tool_check_callback]: (mob/living/user) #define COMSIG_TOOL_START_USE "tool_start_use" ///from base of [/obj/item/proc/tool_start_check]: (mob/living/user) diff --git a/code/datums/components/melee/charged.dm b/code/datums/components/melee/charged.dm index d2f84807d1b1..27ecac223930 100644 --- a/code/datums/components/melee/charged.dm +++ b/code/datums/components/melee/charged.dm @@ -48,7 +48,7 @@ RegisterSignal(parent, COMSIG_ATOM_SCREWDRIVER_ACT, PROC_REF(on_screwdriver_act)) RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(on_attackby)) RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) - RegisterSignal(parent, COMSIG_ATOM_GET_CELL, PROC_REF(on_get_cell)) + RegisterSignal(parent, COMSIG_ITEM_USE_CELL, PROC_REF(deduct_charge)) /datum/component/transforming/charged/Destroy(force, silent) if(cell) @@ -101,8 +101,13 @@ else examine_list += span_warning("\The [source] does not have a power source installed.") -/datum/component/transforming/charged/proc/on_get_cell(obj/item/source) - return cell +/datum/component/transforming/charged/proc/deduct_charge(obj/item/source) + SIGNAL_HANDLER + if(cell) + . = cell.use(cell_hit_cost) + if(active && cell.charge < cell_hit_cost) + playsound(src, SFX_SPARKS, 75, TRUE, -1) + set_inactive(source) /datum/component/transforming/charged/proc/set_active_state(active_state = -1) switch(active_state) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 20c2ad43460f..43dd61509aa1 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -1224,9 +1224,7 @@ //Returns an atom's power cell, if it has one. Overload for individual items. /atom/movable/proc/get_cell() - var/component_cell = SEND_SIGNAL(src, COMSIG_ATOM_GET_CELL) - if(istype(component_cell, /obj/item/stock_parts/cell)) - return component_cell + return null /atom/movable/proc/can_be_pulled(user, grab_state, force) if(src == user || !isturf(loc)) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 1e1718623816..a008822e8f08 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/stationobjs.dmi' icon_state = "recharger" base_icon_state = "recharger" - desc = "A charging dock for energy based weaponry." + desc = "A charging dock for energy based weaponry. However someones modified it to work with most things with cells." use_power = IDLE_POWER_USE idle_power_usage = IDLE_DRAW_MINIMAL active_power_usage = ACTIVE_DRAW_LOW @@ -74,7 +74,7 @@ G.play_tool_sound(src) return - var/allowed = is_type_in_typecache(G, allowed_devices) + var/allowed = G.get_cell() if(allowed) if(anchored) diff --git a/code/game/objects/items/melee/bladeatheon.dm b/code/game/objects/items/melee/bladeatheon.dm index c7a64030e576..cc7ef45821e3 100644 --- a/code/game/objects/items/melee/bladeatheon.dm +++ b/code/game/objects/items/melee/bladeatheon.dm @@ -13,6 +13,7 @@ name = "pedang" desc = "an electrically-charged fencing sword." icon_state = "suns-tsword" + force = 10 attack_verb = list("pierced", "swipe", "slash", "chop") self_stam_const = 5 self_stam_coef = 0.5 @@ -26,11 +27,11 @@ . = ..() AddComponent( \ /datum/component/transforming/charged, \ - force_on = 15, \ - throwforce_on = 20, \ + force_on = 5, \ + throwforce_on = 10, \ _allowed_cells = list(/obj/item/stock_parts/cell/melee/pedang), \ _preload_cell_type = /obj/item/stock_parts/cell/melee/pedang, \ - _cell_hit_cost = 1000, \ + _cell_hit_cost = 250, \ _can_remove_cell = TRUE, \ ) @@ -40,6 +41,12 @@ playsound(src, SFX_SPARKS, 75, TRUE, -1) return COMPONENT_NO_DEFAULT_MESSAGE +/obj/item/melee/sword/pedang/attack(mob/living/M, mob/living/user) + . = ..() + if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) + SEND_SIGNAL(src, COMSIG_ITEM_USE_CELL) + M.apply_damage(25, STAMINA, BODY_ZONE_CHEST) + /obj/item/stock_parts/cell/melee maxcharge = 5000 diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index afb4bfe2ec33..13d4ac99fe18 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -5,11 +5,7 @@ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' var/projectile_block_chance = 0 -/obj/item/melee/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = projectile_block_chance //Don't bring a sword to a gunfight - return ..() - +//cruft /obj/item/melee/proc/check_martial_counter(mob/living/carbon/human/target, mob/living/carbon/human/user) if(target.check_block()) target.visible_message("[target.name] blocks [src] and twists [user]'s arm behind [user.p_their()] back!", @@ -17,6 +13,12 @@ user.Stun(40) return TRUE +//This is only pathed here because there is currently only melee using it, the second you want to add charged to something just make it /obj/item/get_cell() +/obj/item/melee/get_cell() + var/datum/component/transforming/charged/charged_comp = GetComponent(/datum/component/transforming/charged) + if(charged_comp) + return charged_comp.cell + /obj/item/melee/chainofcommand name = "chain of command" desc = "A tool used by great men to placate the frothing masses." @@ -101,8 +103,8 @@ attack_verb = list("beat", "smacked") custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 3.5) w_class = WEIGHT_CLASS_HUGE - var/homerun_ready = 0 - var/homerun_able = 0 + var/homerun_ready = FALSE + var/homerun_able = FALSE /obj/item/melee/baseball_bat/homerun name = "home run bat" diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index c0137b153626..6cf0739e87cf 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -31,6 +31,12 @@ _requires_activation = parry_transformed, \ ) +//cruft +/obj/item/melee/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(attack_type == PROJECTILE_ATTACK) + final_block_chance = projectile_block_chance //Don't bring a sword to a gunfight + return ..() + /obj/item/melee/sword/claymore name = "claymore" desc = "What are you standing around staring at this for? Get to killing!" From a3e8fe63b90d3c44c83fcc40af6fe59f9c31b45f Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 23 Sep 2024 21:05:27 -0500 Subject: [PATCH 089/102] shocking --- code/game/objects/items/melee/bladeatheon.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/items/melee/bladeatheon.dm b/code/game/objects/items/melee/bladeatheon.dm index cc7ef45821e3..d019163bc774 100644 --- a/code/game/objects/items/melee/bladeatheon.dm +++ b/code/game/objects/items/melee/bladeatheon.dm @@ -14,6 +14,7 @@ desc = "an electrically-charged fencing sword." icon_state = "suns-tsword" force = 10 + hitsound = 'sound/weapons/rapierhit.ogg' attack_verb = list("pierced", "swipe", "slash", "chop") self_stam_const = 5 self_stam_coef = 0.5 @@ -29,6 +30,7 @@ /datum/component/transforming/charged, \ force_on = 5, \ throwforce_on = 10, \ + hitsound_on = hitsound, \ _allowed_cells = list(/obj/item/stock_parts/cell/melee/pedang), \ _preload_cell_type = /obj/item/stock_parts/cell/melee/pedang, \ _cell_hit_cost = 250, \ @@ -45,6 +47,7 @@ . = ..() if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) SEND_SIGNAL(src, COMSIG_ITEM_USE_CELL) + playsound(src, 'sound/weapons/egloves.ogg', 75, TRUE) M.apply_damage(25, STAMINA, BODY_ZONE_CHEST) /obj/item/stock_parts/cell/melee From 05f5697b80926f8801081c25750d2399b0918fe0 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Sun, 29 Sep 2024 18:36:29 -0500 Subject: [PATCH 090/102] attack_cooldown --- code/__DEFINES/combat.dm | 3 +++ code/_onclick/item_attack.dm | 6 +++--- code/game/objects/items.dm | 2 ++ code/game/objects/items/melee/fireaxe.dm | 3 ++- code/game/objects/items/melee/knife.dm | 14 ++++++++------ code/game/objects/items/melee/stunbaton.dm | 6 +++--- code/game/objects/items/tools/wrench.dm | 1 + code/game/turfs/closed/_closed.dm | 2 +- 8 files changed, 23 insertions(+), 14 deletions(-) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 50f2031db795..08e31bd58c2e 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -50,6 +50,9 @@ #define CLICK_CD_GRABBING 10 #define CLICK_CD_LOOK_UP 5 +#define HEAVY_WEAPON_CD 10 +#define LIGHT_WEAPON_CD 6 + //Cuff resist speeds #define FAST_CUFFBREAK 1 #define INSTANT_CUFFBREAK 2 diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 58b9604e585a..18edbfd60303 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -72,7 +72,6 @@ if((I.item_flags & SURGICAL_TOOL) && user.a_intent == INTENT_HELP) if(attempt_initiate_surgery(I, src, user)) return TRUE - user.changeNext_move(CLICK_CD_MELEE) return I.attack(src, user) /mob/living/attack_hand(mob/living/user) @@ -94,6 +93,8 @@ * * mob/living/user - The mob hitting with this item */ /obj/item/proc/attack(mob/living/M, mob/living/user) + user.changeNext_move(attack_cooldown) + if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, M, user) & COMPONENT_ITEM_NO_ATTACK) return SEND_SIGNAL(user, COMSIG_MOB_ITEM_ATTACK, M, user) @@ -126,14 +127,13 @@ log_combat(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") add_fingerprint(user) - /// The equivalent of the standard version of [/obj/item/proc/attack] but for object targets. /obj/item/proc/attack_obj(obj/O, mob/living/user) if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_OBJ, O, user) & COMPONENT_NO_ATTACK_OBJ) return if(item_flags & NOBLUDGEON) return - user.changeNext_move(CLICK_CD_MELEE) + user.changeNext_move(attack_cooldown) user.do_attack_animation(O) O.attacked_by(src, user) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 8c8032296cca..4a0feb2d7402 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -209,6 +209,8 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb var/inventory_state var/world_state + var/attack_cooldown = CLICK_CD_MELEE + /obj/item/Initialize() if(attack_verb) diff --git a/code/game/objects/items/melee/fireaxe.dm b/code/game/objects/items/melee/fireaxe.dm index 1277340c7d7c..56ab4f2d2d13 100644 --- a/code/game/objects/items/melee/fireaxe.dm +++ b/code/game/objects/items/melee/fireaxe.dm @@ -13,6 +13,7 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) resistance_flags = FIRE_PROOF species_exception = list(/datum/species/kepori) + attack_cooldown = HEAVY_WEAPON_CD var/wielded = FALSE // track wielded status on item /obj/item/melee/axe/Initialize() @@ -23,7 +24,7 @@ /obj/item/melee/axe/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools - AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=24, icon_wielded="[base_icon_state]_w") + AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=30, icon_wielded="[base_icon_state]_w") /// triggered on wield of two handed item /obj/item/melee/axe/proc/on_wield(obj/item/source, mob/user) diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm index 88c280c49594..f0836e3e8c7d 100644 --- a/code/game/objects/items/melee/knife.dm +++ b/code/game/objects/items/melee/knife.dm @@ -14,6 +14,7 @@ throw_speed = 3 throw_range = 6 custom_materials = list(/datum/material/iron=12000) + attack_cooldown = LIGHT_WEAPON_CD attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") sharpness = IS_SHARP_ACCURATE armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) @@ -82,6 +83,7 @@ force = 15 throwforce = 10 custom_materials = list(/datum/material/iron=18000) + attack_cooldown = CLICK_CD_MELEE attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") w_class = WEIGHT_CLASS_NORMAL custom_price = 600 @@ -101,7 +103,7 @@ item_state = "combatknife" desc = "A military combat utility survival knife." embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) - force = 20 + force = 15 throwforce = 20 attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") @@ -111,7 +113,7 @@ item_state = "survivalknife" embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) desc = "A hunting grade survival knife." - force = 15 + force = 12 throwforce = 15 attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") @@ -123,7 +125,7 @@ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' desc = "A sharpened bone. The bare minimum in survival." embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) - force = 15 + force = 12 throwforce = 15 custom_materials = null @@ -177,8 +179,8 @@ . = ..() AddComponent( \ /datum/component/transforming, \ - force_on = 20, \ - throwforce_on = 23, \ + force_on = 14, \ + throwforce_on = 20, \ throw_speed_on = 4, \ sharpness_on = IS_SHARP, \ hitsound_on = 'sound/weapons/bladeslice.ogg', \ @@ -192,7 +194,7 @@ icon_state = "letter_opener" desc = "A military combat utility survival knife." embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) - force = 15 + force = 10 throwforce = 15 unique_reskin = list("Traditional" = "letter_opener", "Boxcutter" = "letter_opener_b", diff --git a/code/game/objects/items/melee/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm index 152bc76d5f80..3d01a51b9eb1 100644 --- a/code/game/objects/items/melee/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -26,7 +26,7 @@ var/activate_sound = SFX_SPARKS var/attack_cooldown_check = 0 SECONDS - var/attack_cooldown = 2.5 SECONDS + var/baton_attack_cooldown = 2.5 SECONDS var/stun_sound = 'sound/weapons/egloves.ogg' var/confusion_amt = 10 @@ -234,10 +234,10 @@ playsound(src, stun_sound, 50, TRUE, -1) - attack_cooldown_check = world.time + attack_cooldown + attack_cooldown_check = world.time + baton_attack_cooldown ADD_TRAIT(L, TRAIT_IWASBATONED, user) - addtimer(TRAIT_CALLBACK_REMOVE(L, TRAIT_IWASBATONED, user), attack_cooldown) + addtimer(TRAIT_CALLBACK_REMOVE(L, TRAIT_IWASBATONED, user), baton_attack_cooldown) return 1 diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 3e9898d87508..0874a3d314c6 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -15,6 +15,7 @@ drop_sound = 'sound/items/handling/wrench_drop.ogg' pickup_sound = 'sound/items/handling/wrench_pickup.ogg' + attack_cooldown = 7 attack_verb = list("bashed", "battered", "bludgeoned", "whacked") tool_behaviour = TOOL_WRENCH toolspeed = 1 diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index dc410d027504..2d997212d9f2 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -210,7 +210,7 @@ add_fingerprint(user) /turf/closed/attackby(obj/item/W, mob/user, params) - user.changeNext_move(CLICK_CD_MELEE) + user.changeNext_move(W.attack_cooldown) if (!user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") return From 43b0223fdd21973a2f284e94f4025751e55fd3c0 Mon Sep 17 00:00:00 2001 From: fallcon Date: Sun, 29 Sep 2024 22:31:34 -0500 Subject: [PATCH 091/102] diffrent cd's pending balance --- code/__DEFINES/combat.dm | 5 ++--- code/game/objects/items/melee/chainsaw.dm | 1 + code/game/objects/items/melee/dualsaber.dm | 1 + code/game/objects/items/melee/energyhalberd.dm | 1 + code/game/objects/items/melee/fireaxe.dm | 2 +- code/game/objects/items/tools/screwdriver.dm | 1 + code/game/objects/items/tools/wrench.dm | 2 +- 7 files changed, 8 insertions(+), 5 deletions(-) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 08e31bd58c2e..09dd28f1911d 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -40,7 +40,9 @@ //Actual combat defines //click cooldowns, in tenths of a second, used for various combat actions +#define HEAVY_WEAPON_CD 10 #define CLICK_CD_MELEE 8 +#define LIGHT_WEAPON_CD 6 #define CLICK_CD_RANGE 4 #define CLICK_CD_RAPID 2 #define CLICK_CD_CLICK_ABILITY 6 @@ -50,9 +52,6 @@ #define CLICK_CD_GRABBING 10 #define CLICK_CD_LOOK_UP 5 -#define HEAVY_WEAPON_CD 10 -#define LIGHT_WEAPON_CD 6 - //Cuff resist speeds #define FAST_CUFFBREAK 1 #define INSTANT_CUFFBREAK 2 diff --git a/code/game/objects/items/melee/chainsaw.dm b/code/game/objects/items/melee/chainsaw.dm index 31d0579e1655..4e4a948da44f 100644 --- a/code/game/objects/items/melee/chainsaw.dm +++ b/code/game/objects/items/melee/chainsaw.dm @@ -15,6 +15,7 @@ throw_speed = 2 throw_range = 4 custom_materials = list(/datum/material/iron=13000) + attack_cooldown = HEAVY_WEAPON_CD attack_verb = list("sawed", "torn", "cut", "chopped", "diced") hitsound = "swing_hit" sharpness = IS_SHARP diff --git a/code/game/objects/items/melee/dualsaber.dm b/code/game/objects/items/melee/dualsaber.dm index 9247d1f86cc0..5cc7f8f8d3ab 100644 --- a/code/game/objects/items/melee/dualsaber.dm +++ b/code/game/objects/items/melee/dualsaber.dm @@ -19,6 +19,7 @@ light_range = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD light_color = LIGHT_COLOR_ELECTRIC_GREEN light_on = FALSE + attack_cooldown = HEAVY_WEAPON_CD attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "lacerated", "ripped", "diced", "cut") max_integrity = 200 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) diff --git a/code/game/objects/items/melee/energyhalberd.dm b/code/game/objects/items/melee/energyhalberd.dm index 5a68c409375b..abb97075f8f2 100644 --- a/code/game/objects/items/melee/energyhalberd.dm +++ b/code/game/objects/items/melee/energyhalberd.dm @@ -22,6 +22,7 @@ light_range = 4 light_color = LIGHT_COLOR_ELECTRIC_GREEN light_on = FALSE + attack_cooldown = HEAVY_WEAPON_CD attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "lacerated", "ripped", "diced", "cut") max_integrity = 200 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) diff --git a/code/game/objects/items/melee/fireaxe.dm b/code/game/objects/items/melee/fireaxe.dm index 56ab4f2d2d13..d935c66c2cf7 100644 --- a/code/game/objects/items/melee/fireaxe.dm +++ b/code/game/objects/items/melee/fireaxe.dm @@ -6,6 +6,7 @@ throwforce = 15 w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK + attack_cooldown = HEAVY_WEAPON_CD attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") hitsound = 'sound/weapons/bladeslice.ogg' sharpness = IS_SHARP @@ -13,7 +14,6 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) resistance_flags = FIRE_PROOF species_exception = list(/datum/species/kepori) - attack_cooldown = HEAVY_WEAPON_CD var/wielded = FALSE // track wielded status on item /obj/item/melee/axe/Initialize() diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 7c35ddd67d62..8ebac3ec14de 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -14,6 +14,7 @@ throw_speed = 3 throw_range = 5 custom_materials = list(/datum/material/iron=75) + attack_cooldown = LIGHT_WEAPON_CD attack_verb = list("stabbed") hitsound = 'sound/weapons/bladeslice.ogg' usesound = list('sound/items/screwdriver.ogg', 'sound/items/screwdriver2.ogg') diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 0874a3d314c6..260dfb458514 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -15,7 +15,7 @@ drop_sound = 'sound/items/handling/wrench_drop.ogg' pickup_sound = 'sound/items/handling/wrench_pickup.ogg' - attack_cooldown = 7 + attack_cooldown = LIGHT_WEAPON_CD attack_verb = list("bashed", "battered", "bludgeoned", "whacked") tool_behaviour = TOOL_WRENCH toolspeed = 1 From 289250942cf86f33ce881b933a5927ab70fab550 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 30 Sep 2024 10:39:18 -0500 Subject: [PATCH 092/102] better force string and readds world icons i somehow removed. --- code/game/objects/items.dm | 17 +++++++++++------ code/game/objects/items/melee/knife.dm | 15 +++++++++++++++ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 4a0feb2d7402..02eb5e22139c 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -899,20 +899,25 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb /obj/item/proc/set_force_string() switch(force) - if(0 to 4) + if(0 to 3) + force_string = "pitiful" + if(3 to 6) force_string = "very low" - if(4 to 7) + if(6 to 9) force_string = "low" - if(7 to 10) + if(10 to 13) //12 is the force of a toolbox force_string = "medium" - if(10 to 11) + if(13 to 16) force_string = "high" - if(11 to 20) //12 is the force of a toolbox + if(16 to 20) force_string = "robust" if(20 to 25) force_string = "very robust" - else + if(25 to 30) force_string = "exceptionally robust" + else + force_string = "unfair" + last_force_string_check = force /obj/item/proc/openTip(location, control, params, user) diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm index f0836e3e8c7d..ffbffca1415d 100644 --- a/code/game/objects/items/melee/knife.dm +++ b/code/game/objects/items/melee/knife.dm @@ -99,6 +99,7 @@ /obj/item/melee/knife/combat name = "combat knife" + icon = 'icons/obj/world/melee.dmi' icon_state = "combatknife" item_state = "combatknife" desc = "A military combat utility survival knife." @@ -107,8 +108,13 @@ throwforce = 20 attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") +/obj/item/melee/knife/combat/Initialize() + . = ..() + AddElement(/datum/element/world_icon, null, icon, 'icons/obj/weapon/knife.dmi') + /obj/item/melee/knife/survival name = "survival knife" + icon = 'icons/obj/world/melee.dmi' icon_state = "survivalknife" item_state = "survivalknife" embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) @@ -117,8 +123,13 @@ throwforce = 15 attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") +/obj/item/melee/knife/survival/Initialize() + . = ..() + AddElement(/datum/element/world_icon, null, icon, 'icons/obj/weapon/knife.dmi') + /obj/item/melee/knife/bone name = "bone dagger" + icon = 'icons/obj/world/melee.dmi' item_state = "bone_dagger" icon_state = "bone_dagger" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' @@ -129,6 +140,10 @@ throwforce = 15 custom_materials = null +/obj/item/melee/knife/bone/Initialize() + . = ..() + AddElement(/datum/element/world_icon, null, icon, 'icons/obj/weapon/knife.dmi') + /obj/item/melee/knife/combat/cyborg name = "cyborg knife" icon = 'icons/obj/items_cyborg.dmi' From 21cf5f07cb14cbcb8cedbb4b0b08297dbf92421d Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 30 Sep 2024 10:46:51 -0500 Subject: [PATCH 093/102] energy weapons dont need the transforming parent type --- .../BeachRuins/beach_treasure_cove.dmm | 2 +- .../JungleRuins/jungle_cavecrew.dmm | 2 +- .../LavaRuins/lavaland_crashed_starwalker.dmm | 2 +- _maps/map_files/generic/CentCom.dmm | 12 +- _maps/shuttles/pirate/pirate_noderider.dmm | 2 +- .../game/gamemodes/clown_ops/clown_weapons.dm | 18 +-- code/game/objects/items/melee/dualsaber.dm | 2 +- code/game/objects/items/melee/energy.dm | 128 ++++++++++++------ .../game/objects/items/melee/energyhalberd.dm | 2 +- code/game/objects/items/melee/knife.dm | 2 +- code/game/objects/items/melee/transforming.dm | 46 ------- code/game/objects/items/sharpener.dm | 2 +- .../game/objects/items/storage/uplink_kits.dm | 4 +- code/game/objects/items/toys.dm | 2 +- .../crates_lockers/closets/gimmick.dm | 4 +- .../awaymissions/mission_code/snowdin.dm | 2 +- code/modules/clothing/factions/clip.dm | 2 +- .../clothing/outfits/ert/nanotrasen_ert.dm | 2 +- code/modules/clothing/outfits/standard.dm | 4 +- code/modules/clothing/spacesuits/hardsuit.dm | 6 +- .../clothing/spacesuits/miscellaneous.dm | 4 +- code/modules/clothing/spacesuits/plasmamen.dm | 2 +- code/modules/clothing/spacesuits/syndi.dm | 2 +- code/modules/clothing/suits/miscellaneous.dm | 2 +- .../recipes/tablecraft/recipes_cake.dm | 2 +- code/modules/mining/abandoned_crates.dm | 2 +- .../mob/living/silicon/robot/robot_modules.dm | 6 +- .../living/simple_animal/bot/SuperBeepsky.dm | 2 +- .../living/simple_animal/bot/construction.dm | 4 +- .../simple_animal/hostile/human/pirate.dm | 2 +- code/modules/mod/mod_theme.dm | 6 +- code/modules/projectiles/guns/ballistic.dm | 2 +- code/modules/surgery/advanced/lobotomy.dm | 2 +- code/modules/surgery/gastrectomy.dm | 2 +- code/modules/surgery/hepatectomy.dm | 2 +- code/modules/surgery/lobectomy.dm | 2 +- code/modules/surgery/mechanical.dm | 4 +- code/modules/surgery/organic_steps.dm | 2 +- code/modules/surgery/organs/augments_arms.dm | 4 +- code/modules/uplink/uplink_items.dm | 4 +- 40 files changed, 148 insertions(+), 156 deletions(-) diff --git a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm index 997f6bb56703..a5c05462086a 100644 --- a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm @@ -1106,7 +1106,7 @@ pixel_x = -6; pixel_y = 10 }, -/obj/item/melee/transforming/energy/sword/saber/pirate/red{ +/obj/item/melee/energy/sword/saber/pirate/red{ pixel_y = 8; pixel_x = 10 }, diff --git a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm index dec4c65755f9..90143e7e3a90 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm @@ -2416,7 +2416,7 @@ pixel_y = -8; pixel_x = 5 }, -/obj/item/melee/transforming/energy/sword/saber/pirate/red, +/obj/item/melee/energy/sword/saber/pirate/red, /turf/open/floor/wood, /area/ruin/jungle/cavecrew/dormitories) "Dh" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm index f9be78af5b89..6013006659ce 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm @@ -2482,7 +2482,7 @@ icon_state = "gib3-old"; pixel_x = -6 }, -/obj/item/melee/transforming/energy/sword/saber/pirate/yellow{ +/obj/item/melee/energy/sword/saber/pirate/yellow{ pixel_x = -5; pixel_y = 16 }, diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index e25bceb1dd44..59c844e1be4a 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2661,7 +2661,7 @@ /obj/item/clothing/suit/armor/tdome/red, /obj/item/clothing/head/helmet/thunderdome, /obj/item/melee/baton/loaded, -/obj/item/melee/transforming/energy/sword/saber/red, +/obj/item/melee/energy/sword/saber/red, /obj/effect/turf_decal/industrial/warning{ dir = 4 }, @@ -3962,7 +3962,7 @@ /obj/item/clothing/suit/armor/tdome/green, /obj/item/clothing/head/helmet/thunderdome, /obj/item/melee/baton/loaded, -/obj/item/melee/transforming/energy/sword/saber/green, +/obj/item/melee/energy/sword/saber/green, /obj/effect/turf_decal/industrial/warning{ dir = 8 }, @@ -6922,7 +6922,7 @@ /obj/effect/turf_decal/corner/opaque/blue{ dir = 8 }, -/obj/item/melee/transforming/energy/ctf, +/obj/item/melee/energy/ctf, /turf/open/floor/plasteel/dark, /area/ctf) "cEn" = ( @@ -7850,7 +7850,7 @@ /obj/effect/turf_decal/corner/opaque/red{ dir = 8 }, -/obj/item/melee/transforming/energy/ctf, +/obj/item/melee/energy/ctf, /turf/open/floor/plasteel/dark, /area/ctf) "eDS" = ( @@ -8401,7 +8401,7 @@ /obj/item/clothing/suit/armor/tdome/green, /obj/item/clothing/head/helmet/thunderdome, /obj/item/melee/baton/loaded, -/obj/item/melee/transforming/energy/sword/saber/green, +/obj/item/melee/energy/sword/saber/green, /obj/effect/turf_decal/industrial/warning{ dir = 8 }, @@ -14416,7 +14416,7 @@ /obj/item/clothing/suit/armor/tdome/red, /obj/item/clothing/head/helmet/thunderdome, /obj/item/melee/baton/loaded, -/obj/item/melee/transforming/energy/sword/saber/red, +/obj/item/melee/energy/sword/saber/red, /obj/effect/turf_decal/industrial/warning{ dir = 4 }, diff --git a/_maps/shuttles/pirate/pirate_noderider.dmm b/_maps/shuttles/pirate/pirate_noderider.dmm index 6861f971143f..5af3efbe556d 100644 --- a/_maps/shuttles/pirate/pirate_noderider.dmm +++ b/_maps/shuttles/pirate/pirate_noderider.dmm @@ -1502,7 +1502,7 @@ /obj/item/storage/box/handcuffs, /obj/item/clothing/glasses/meson, /obj/item/megaphone, -/obj/item/melee/transforming/energy/sword/saber/red, +/obj/item/melee/energy/sword/saber/red, /obj/item/pinpointer/crew, /obj/item/clothing/mask/gas/atmos, /obj/item/clothing/mask/whistle, diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 99501e32b8f0..0c2315c4e103 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -54,7 +54,7 @@ //BANANIUM SWORD -/obj/item/melee/transforming/energy/sword/bananium +/obj/item/melee/energy/sword/bananium name = "bananium sword" desc = "An elegant weapon, for a more civilized age." force = 0 @@ -69,44 +69,44 @@ light_color = COLOR_YELLOW var/next_trombone_allowed = 0 -/obj/item/melee/transforming/energy/sword/bananium/Initialize() +/obj/item/melee/energy/sword/bananium/Initialize() . = ..() adjust_slipperiness() /* Adds or removes a slippery component, depending on whether the sword * is active or not. */ -/obj/item/melee/transforming/energy/sword/proc/adjust_slipperiness() +/obj/item/melee/energy/sword/proc/adjust_slipperiness() if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) AddComponent(/datum/component/slippery, 60, GALOSHES_DONT_HELP) else qdel(GetComponent(/datum/component/slippery)) -/obj/item/melee/transforming/energy/sword/bananium/attack(mob/living/M, mob/living/user) +/obj/item/melee/energy/sword/bananium/attack(mob/living/M, mob/living/user) ..() if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(src, M) -/obj/item/melee/transforming/energy/sword/bananium/throw_impact(atom/hit_atom, throwingdatum) +/obj/item/melee/energy/sword/bananium/throw_impact(atom/hit_atom, throwingdatum) . = ..() if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(src, hit_atom) -/obj/item/melee/transforming/energy/sword/bananium/attackby(obj/item/I, mob/living/user, params) - if((world.time > next_trombone_allowed) && istype(I, /obj/item/melee/transforming/energy/sword/bananium)) +/obj/item/melee/energy/sword/bananium/attackby(obj/item/I, mob/living/user, params) + if((world.time > next_trombone_allowed) && istype(I, /obj/item/melee/energy/sword/bananium)) next_trombone_allowed = world.time + 50 to_chat(user, "You slap the two swords together. Sadly, they do not seem to fit!") playsound(src, 'sound/misc/sadtrombone.ogg', 50) return TRUE return ..() -/obj/item/melee/transforming/energy/sword/bananium/on_transform(obj/item/source, mob/user, active) +/obj/item/melee/energy/sword/bananium/on_transform(obj/item/source, mob/user, active) . = ..() adjust_slipperiness() -/obj/item/melee/transforming/energy/sword/bananium/ignition_effect(atom/A, mob/user) +/obj/item/melee/energy/sword/bananium/ignition_effect(atom/A, mob/user) return "" //BANANIUM SHIELD diff --git a/code/game/objects/items/melee/dualsaber.dm b/code/game/objects/items/melee/dualsaber.dm index 5cc7f8f8d3ab..2e9cab8a1ae8 100644 --- a/code/game/objects/items/melee/dualsaber.dm +++ b/code/game/objects/items/melee/dualsaber.dm @@ -133,7 +133,7 @@ return 1 /obj/item/dualsaber/ignition_effect(atom/A, mob/user) - // same as /obj/item/melee/transforming/energy, mostly + // same as /obj/item/melee/energy, mostly if(!wielded) return "" var/in_mouth = "" diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 56b3945f5c34..cf9ccc625bc3 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -1,4 +1,7 @@ -/obj/item/melee/transforming/energy +/obj/item/melee/energy + sharpness = IS_SHARP + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") icon = 'icons/obj/weapon/energy.dmi' active_hitsound = 'sound/weapons/blade1.ogg' heat = 0 @@ -13,26 +16,51 @@ /// The heat given off when active. var/active_heat = 3500 -/obj/item/melee/transforming/energy/Initialize() + /// Force while active. + var/active_force = 30 + /// Throwforce while active. + var/active_throwforce = 20 + /// Sharpness while active. + var/active_sharpness = IS_SHARP + /// Hitsound played attacking while active. + var/active_hitsound = 'sound/weapons/blade1.ogg' + /// Weight class while active. + var/active_w_class = WEIGHT_CLASS_BULKY + + var/list/attack_verb_on = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + +/obj/item/melee/energy/Initialize(mapload) . = ..() + make_transformable() + AddElement(/datum/element/update_icon_updates_onmob) + if(sharpness) + AddComponent(/datum/component/butchering, 50, 100, 0, hitsound) if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) START_PROCESSING(SSobj, src) -/obj/item/melee/transforming/energy/Destroy() +/* + * Gives our item the transforming component, passing in our various vars. + */ +/obj/item/melee/energy/proc/make_transformable() + AddComponent( \ + /datum/component/transforming, \ + force_on = active_force, \ + throwforce_on = active_throwforce, \ + throw_speed_on = 4, \ + sharpness_on = active_sharpness, \ + hitsound_on = active_hitsound, \ + w_class_on = active_w_class, \ + attack_verb_on = attack_verb_on, \ + ) + RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) + +/obj/item/melee/energy/Destroy() STOP_PROCESSING(SSobj, src) return ..() -/obj/item/melee/transforming/energy/add_blood_DNA(list/blood_dna) - return FALSE - -/obj/item/melee/transforming/energy/get_sharpness() - return sharpness - -/obj/item/melee/transforming/energy/process(seconds_per_tick) - if(heat) - open_flame() +/obj/item/melee/energy/proc/on_transform(obj/item/source, mob/user, active) + SIGNAL_HANDLER -/obj/item/melee/transforming/energy/on_transform(obj/item/source, mob/user, active) if(active) heat = active_heat START_PROCESSING(SSobj, src) @@ -51,10 +79,20 @@ return COMPONENT_NO_DEFAULT_MESSAGE -/obj/item/melee/transforming/energy/get_temperature() +/obj/item/melee/energy/add_blood_DNA(list/blood_dna) + return FALSE + +/obj/item/melee/energy/get_sharpness() + return sharpness + +/obj/item/melee/energy/process(seconds_per_tick) + if(heat) + open_flame() + +/obj/item/melee/energy/get_temperature() return heat -/obj/item/melee/transforming/energy/ignition_effect(atom/A, mob/user) +/obj/item/melee/energy/ignition_effect(atom/A, mob/user) if(!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) return "" @@ -67,7 +105,7 @@ playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) add_fingerprint(user) -/obj/item/melee/transforming/energy/axe +/obj/item/melee/energy/axe name = "energy axe" desc = "An energized battle axe." icon_state = "axe" @@ -88,7 +126,7 @@ attack_verb_on = list() light_color = LIGHT_COLOR_LIGHT_CYAN -/obj/item/melee/transforming/energy/sword +/obj/item/melee/energy/sword name = "energy sword" desc = "For when a katana isn't enough. While Nanotrasen and the Syndicate both produce the so-called e-swords, they are visually and functionaly identical." icon_state = "sword" @@ -106,16 +144,16 @@ armour_penetration = 35 block_chance = 50 -/obj/item/melee/transforming/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) +/obj/item/melee/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) return ..() return 0 -/obj/item/melee/transforming/energy/sword/cyborg +/obj/item/melee/energy/sword/cyborg sword_color = "red" var/hitcost = 50 -/obj/item/melee/transforming/energy/sword/cyborg/attack(mob/M, mob/living/silicon/robot/R) +/obj/item/melee/energy/sword/cyborg/attack(mob/M, mob/living/silicon/robot/R) if(R.cell) var/obj/item/stock_parts/cell/C = R.cell if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE) && !(C.use(hitcost))) @@ -124,7 +162,7 @@ return return ..() -/obj/item/melee/transforming/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs +/obj/item/melee/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs name = "energy saw" desc = "For heavy duty cutting. It has a carbon-fiber blade in addition to a toggleable hard-light edge to dramatically increase sharpness." active_force = 30 @@ -140,42 +178,42 @@ tool_behaviour = TOOL_SAW toolspeed = 0.7 //faster as a saw -/obj/item/melee/transforming/energy/sword/cyborg/saw/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) +/obj/item/melee/energy/sword/cyborg/saw/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) return FALSE -/obj/item/melee/transforming/energy/sword/saber +/obj/item/melee/energy/sword/saber var/list/possible_colors = list("red" = COLOR_SOFT_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER, "yellow" = COLOR_YELLOW) var/hacked = FALSE -/obj/item/melee/transforming/energy/sword/saber/Initialize(mapload) +/obj/item/melee/energy/sword/saber/Initialize(mapload) . = ..() if(LAZYLEN(possible_colors)) var/set_color = pick(possible_colors) sword_color = set_color set_light_color(possible_colors[set_color]) -/obj/item/melee/transforming/energy/sword/saber/process() +/obj/item/melee/energy/sword/saber/process() . = ..() if(hacked) var/set_color = pick(possible_colors) set_light_color(possible_colors[set_color]) -/obj/item/melee/transforming/energy/sword/saber/red +/obj/item/melee/energy/sword/saber/red possible_colors = list("red" = COLOR_SOFT_RED) -/obj/item/melee/transforming/energy/sword/saber/blue +/obj/item/melee/energy/sword/saber/blue possible_colors = list("blue" = LIGHT_COLOR_LIGHT_CYAN) -/obj/item/melee/transforming/energy/sword/saber/green +/obj/item/melee/energy/sword/saber/green possible_colors = list("green" = LIGHT_COLOR_GREEN) -/obj/item/melee/transforming/energy/sword/saber/purple +/obj/item/melee/energy/sword/saber/purple possible_colors = list("purple" = LIGHT_COLOR_LAVENDER) -/obj/item/melee/transforming/energy/sword/saber/yellow +/obj/item/melee/energy/sword/saber/yellow possible_colors = list("yellow" = COLOR_YELLOW) -/obj/item/melee/transforming/energy/sword/saber/attackby(obj/item/W, mob/living/user, params) +/obj/item/melee/energy/sword/saber/attackby(obj/item/W, mob/living/user, params) if(W.tool_behaviour == TOOL_MULTITOOL) if(!hacked) hacked = TRUE @@ -191,7 +229,7 @@ return ..() -/obj/item/melee/transforming/energy/sword/saber/pirate +/obj/item/melee/energy/sword/saber/pirate name = "energy cutlass" desc = "Arrrr matey." icon_state = "cutlass" @@ -199,22 +237,22 @@ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' -/obj/item/melee/transforming/energy/sword/saber/pirate/red +/obj/item/melee/energy/sword/saber/pirate/red possible_colors = list("red" = COLOR_SOFT_RED) -/obj/item/melee/transforming/energy/sword/saber/pirate/blue +/obj/item/melee/energy/sword/saber/pirate/blue possible_colors = list("blue" = LIGHT_COLOR_LIGHT_CYAN) -/obj/item/melee/transforming/energy/sword/saber/pirate/green +/obj/item/melee/energy/sword/saber/pirate/green possible_colors = list("green" = LIGHT_COLOR_GREEN) -/obj/item/melee/transforming/energy/sword/saber/pirate/purple +/obj/item/melee/energy/sword/saber/pirate/purple possible_colors = list("purple" = LIGHT_COLOR_LAVENDER) -/obj/item/melee/transforming/energy/sword/saber/pirate/yellow +/obj/item/melee/energy/sword/saber/pirate/yellow possible_colors = list("yellow" = COLOR_YELLOW) -/obj/item/melee/transforming/energy/blade +/obj/item/melee/energy/blade name = "energy blade" desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal." icon_state = "lightblade" @@ -231,26 +269,26 @@ sharpness = IS_SHARP //Most of the other special functions are handled in their own files. aka special snowflake code so kewl -/obj/item/melee/transforming/energy/blade/Initialize() +/obj/item/melee/energy/blade/Initialize() . = ..() spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) -/obj/item/melee/transforming/energy/blade/Destroy() +/obj/item/melee/energy/blade/Destroy() QDEL_NULL(spark_system) return ..() -/obj/item/melee/transforming/energy/blade/on_transform(obj/item/source, mob/user, active) +/obj/item/melee/energy/blade/on_transform(obj/item/source, mob/user, active) return -/obj/item/melee/transforming/energy/blade/hardlight +/obj/item/melee/energy/blade/hardlight name = "hardlight blade" desc = "An extremely sharp blade made out of hard light. Packs quite a punch." icon_state = "lightblade" item_state = "lightblade" -/obj/item/melee/transforming/energy/ctf +/obj/item/melee/energy/ctf name = "energy sword" desc = "That cable over there, I'm going to cut it." icon_state = "plasmasword" @@ -267,7 +305,7 @@ throw_range = 5 active_force = 200 //instakill if shields are down -/obj/item/melee/transforming/energy/ctf/on_transform(obj/item/source, mob/user, active) +/obj/item/melee/energy/ctf/on_transform(obj/item/source, mob/user, active) . = ..() if(active) icon_state = "plasmasword_on" @@ -275,6 +313,6 @@ to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") return COMPONENT_NO_DEFAULT_MESSAGE -/obj/item/melee/transforming/energy/ctf/solgov +/obj/item/melee/energy/ctf/solgov armour_penetration = 40 active_force = 34 //desword grade, but 0 blocking diff --git a/code/game/objects/items/melee/energyhalberd.dm b/code/game/objects/items/melee/energyhalberd.dm index abb97075f8f2..bfcb6c654297 100644 --- a/code/game/objects/items/melee/energyhalberd.dm +++ b/code/game/objects/items/melee/energyhalberd.dm @@ -135,7 +135,7 @@ return 1 /obj/item/energyhalberd/ignition_effect(atom/A, mob/user) - // same as /obj/item/melee/transforming/energy, mostly + // same as /obj/item/melee/energy, mostly if(!wielded) return "" var/in_mouth = "" diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm index ffbffca1415d..19e577933ce7 100644 --- a/code/game/objects/items/melee/knife.dm +++ b/code/game/objects/items/melee/knife.dm @@ -136,7 +136,7 @@ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' desc = "A sharpened bone. The bare minimum in survival." embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) - force = 12 + force = 10 throwforce = 15 custom_materials = null diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm index 1028c4cdbec7..af574085a158 100644 --- a/code/game/objects/items/melee/transforming.dm +++ b/code/game/objects/items/melee/transforming.dm @@ -1,49 +1,3 @@ -/obj/item/melee/transforming - sharpness = IS_SHARP - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - - /// Force while active. - var/active_force = 30 - /// Throwforce while active. - var/active_throwforce = 20 - /// Sharpness while active. - var/active_sharpness = IS_SHARP - /// Hitsound played attacking while active. - var/active_hitsound = 'sound/weapons/blade1.ogg' - /// Weight class while active. - var/active_w_class = WEIGHT_CLASS_BULKY - - var/list/attack_verb_on = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - -/obj/item/melee/transforming/Initialize(mapload) - . = ..() - make_transformable() - AddElement(/datum/element/update_icon_updates_onmob) - if(sharpness) - AddComponent(/datum/component/butchering, 50, 100, 0, hitsound) - -/* - * Gives our item the transforming component, passing in our various vars. - */ -/obj/item/melee/transforming/proc/make_transformable() - AddComponent( \ - /datum/component/transforming, \ - force_on = active_force, \ - throwforce_on = active_throwforce, \ - throw_speed_on = 4, \ - sharpness_on = active_sharpness, \ - hitsound_on = active_hitsound, \ - w_class_on = active_w_class, \ - attack_verb_on = attack_verb_on, \ - ) - RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) - -/obj/item/melee/transforming/proc/on_transform(obj/item/source, mob/user, active) - SIGNAL_HANDLER - - return - /obj/item/melee/cleaving_saw name = "cleaving saw" desc = "This saw, effective at drawing the blood of beasts, transforms into a long cleaver that makes use of centrifugal force." diff --git a/code/game/objects/items/sharpener.dm b/code/game/objects/items/sharpener.dm index f9d429b55a3e..00217a8550a4 100644 --- a/code/game/objects/items/sharpener.dm +++ b/code/game/objects/items/sharpener.dm @@ -21,7 +21,7 @@ if(requires_sharpness && !I.get_sharpness()) to_chat(user, "You can only sharpen items that are already sharp, such as knives!") return - if(istype(I, /obj/item/melee/transforming/energy)) + if(istype(I, /obj/item/melee/energy)) to_chat(user, "You don't think \the [I] will be the thing getting modified if you use it on \the [src]!") return diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 39e533f2a4a3..8c69be76f4bf 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -56,7 +56,7 @@ new /obj/item/encryptionkey/syndicate(src) if("murder") - new /obj/item/melee/transforming/energy/sword/saber(src) + new /obj/item/melee/energy/sword/saber(src) new /obj/item/clothing/glasses/thermal/syndi(src) new /obj/item/card/emag(src) new /obj/item/clothing/shoes/chameleon/noslip(src) @@ -179,7 +179,7 @@ new /obj/item/dnainjector/geladikinesis(src) new /obj/item/dnainjector/cryokinesis(src) new /obj/item/gun/energy/temperature/security(src) - new /obj/item/melee/transforming/energy/sword/saber/blue(src) //see see it fits the theme bc its blue and ice is blue + new /obj/item/melee/energy/sword/saber/blue(src) //see see it fits the theme bc its blue and ice is blue if("made_man") new /obj/effect/spawner/lootdrop/mafia_outfit(src) // 0 TC, just an outfit for the new 'don of this family diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index f1ce47a8f8fd..2f044443c2e2 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -296,7 +296,7 @@ w_class = WEIGHT_CLASS_SMALL add_fingerprint(user) -// Copied from /obj/item/melee/transforming/energy/sword/attackby +// Copied from /obj/item/melee/energy/sword/attackby /obj/item/toy/sword/attackby(obj/item/W, mob/living/user, params) if(istype(W, /obj/item/toy/sword)) if(HAS_TRAIT(W, TRAIT_NODROP) || HAS_TRAIT(src, TRAIT_NODROP)) diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index cfea37148e55..6e2b58ad4ceb 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -56,7 +56,7 @@ for(var/i in 1 to 3) new /obj/item/clothing/suit/armor/tdome/red(src) for(var/i in 1 to 3) - new /obj/item/melee/transforming/energy/sword/saber(src) + new /obj/item/melee/energy/sword/saber(src) for(var/i in 1 to 3) new /obj/item/gun/energy/laser(src) for(var/i in 1 to 3) @@ -75,7 +75,7 @@ for(var/i in 1 to 3) new /obj/item/clothing/suit/armor/tdome/green(src) for(var/i in 1 to 3) - new /obj/item/melee/transforming/energy/sword/saber(src) + new /obj/item/melee/energy/sword/saber(src) for(var/i in 1 to 3) new /obj/item/gun/energy/laser(src) for(var/i in 1 to 3) diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 0f76623f617c..e025fc6cd427 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -488,7 +488,7 @@ /obj/item/shield/riot/tele = 12, /obj/item/dnainjector/lasereyesmut = 7, /obj/item/pneumatic_cannon = 15, - /obj/item/melee/transforming/energy/sword = 7, + /obj/item/melee/energy/sword = 7, /obj/item/book/granter/spell/knock = 15, /obj/item/book/granter/spell/summonitem = 20, /obj/item/book/granter/spell/forcewall = 17, diff --git a/code/modules/clothing/factions/clip.dm b/code/modules/clothing/factions/clip.dm index 7ac3668aaf77..3a29168ee0e9 100644 --- a/code/modules/clothing/factions/clip.dm +++ b/code/modules/clothing/factions/clip.dm @@ -215,7 +215,7 @@ armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 80) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/clip_spotter - allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) + allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) resistance_flags = null slowdown = 1 diff --git a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm index 1ca40cd640e3..971b1ecf0d4f 100644 --- a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm +++ b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm @@ -48,7 +48,7 @@ backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\ /obj/item/melee/baton/loaded=1,\ /obj/item/gun/energy/pulse/pistol=1) - l_pocket = /obj/item/melee/transforming/energy/sword/saber + l_pocket = /obj/item/melee/energy/sword/saber /datum/outfit/centcom/ert/security name = "ERT Security" diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 1754e84c7e8e..f1b3055b44f2 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -164,7 +164,7 @@ mask = /obj/item/clothing/mask/gas/sechailer/swat glasses = /obj/item/clothing/glasses/hud/toggle/thermal back = /obj/item/storage/backpack/security - l_pocket = /obj/item/melee/transforming/energy/sword/saber + l_pocket = /obj/item/melee/energy/sword/saber r_pocket = /obj/item/shield/energy suit_store = /obj/item/tank/internals/emergency_oxygen/double belt = /obj/item/gun/ballistic/revolver/mateba @@ -223,7 +223,7 @@ box = /obj/item/storage/box/debugtools internals_slot = ITEM_SLOT_SUITSTORE backpack_contents = list( - /obj/item/melee/transforming/energy/axe=1,\ + /obj/item/melee/energy/axe=1,\ /obj/item/storage/part_replacer/bluespace/tier4=1,\ /obj/item/debug/human_spawner=1,\ /obj/item/debug/omnitool=1 diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 25788f4556ae..f806beca1e02 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -411,7 +411,7 @@ item_state = "syndie_hardsuit" hardsuit_type = "syndi" armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) - allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) + allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi jetpack = /obj/item/tank/jetpack/suit supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION @@ -917,7 +917,7 @@ item_state = "syndie_hardsuit" hardsuit_type = "syndi" armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100) - allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) + allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi slowdown = 0.5 shield_state = "shield-red" @@ -1199,7 +1199,7 @@ item_state = "hardsuit_solgov" armor = list("melee" = 50, "bullet" = 45, "laser" = 40, "energy" = 30, "bomb" = 60, "bio" = 100, "rad" = 60, "fire" = 90, "acid" = 75) //intentionally the fucking strong, this is master chief-tier armor //is this really what you call the strong?? is this the best solgov has to offer?????? helmettype = /obj/item/clothing/head/helmet/space/hardsuit/solgov - allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) + allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) slowdown = 0.5 supports_variations = DIGITIGRADE_VARIATION diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 518cdf6b18cc..8cf3da8547cd 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -153,7 +153,7 @@ Contains: desc = "Yarr." w_class = WEIGHT_CLASS_NORMAL flags_inv = 0 - allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/transforming/energy/sword/saber/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/food/drinks/bottle/rum) + allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/energy/sword/saber/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/food/drinks/bottle/rum) slowdown = 0 armor = list("melee" = 30, "bullet" = 50, "laser" = 30,"energy" = 40, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 60, "acid" = 75) strip_delay = 40 @@ -525,7 +525,7 @@ Contains: icon_state = "vacsuit_solgov" desc = "Originally designed by independent contractors on Luna for the purposes of survival in hazardous environments, the lightweight Tortoise Microlite Armored Suit now sees widespread use by SolGov's exploration teams." item_state = "vacsuit_solgov" - allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy, /obj/item/tank/internals) + allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy, /obj/item/tank/internals) armor = list("bio" = 100, "rad" = 50, "fire" = 60, "acid" = 75) slowdown = 0.5 w_class = WEIGHT_CLASS_NORMAL diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 895dea5156aa..6f8269357eb2 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -4,7 +4,7 @@ /obj/item/clothing/suit/space/eva/plasmaman name = "EVA plasma envirosuit" desc = "A special plasma containment suit designed to be space-worthy, as well as worn over other clothing. Like its smaller counterpart, it can automatically extinguish the wearer in a crisis, and holds twice as many charges." - allowed = list(/obj/item/gun, /obj/item/ammo_casing, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword, /obj/item/restraints/handcuffs, /obj/item/tank) + allowed = list(/obj/item/gun, /obj/item/ammo_casing, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword, /obj/item/restraints/handcuffs, /obj/item/tank) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 100, "acid" = 75) resistance_flags = FIRE_PROOF icon_state = "plasmaman_suit" diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index e2a405176c21..67dc2201d60c 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -13,7 +13,7 @@ item_state = "space_suit_syndicate" desc = "A space suit made of high-grade ballistic fabric with integrated armor plates. More compact than a normal space suit while almost matching powered hardsuits for protection. Almost." w_class = WEIGHT_CLASS_NORMAL - allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) + allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) armor = list("melee" = 30, "bullet" = 15, "laser" = 15, "energy" = 40, "bomb" = 20, "bio" = 100, "rad" = 30, "fire" = 75, "acid" = 75) //Green syndicate space suit diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 6e8b87b06285..2fc8d3e953e8 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -51,7 +51,7 @@ desc = "Yarr." icon_state = "pirate" item_state = "pirate" - allowed = list(/obj/item/melee/transforming/energy/sword/saber/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/food/drinks/bottle/rum) + allowed = list(/obj/item/melee/energy/sword/saber/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/food/drinks/bottle/rum) /obj/item/clothing/suit/pirate/captain name = "pirate captain coat" diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm index c79d4cea8474..993c75246c6c 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm @@ -81,7 +81,7 @@ name = "Energy cake" reqs = list( /obj/item/food/cake/birthday = 1, - /obj/item/melee/transforming/energy/sword = 1, + /obj/item/melee/energy/sword = 1, ) blacklist = list(/obj/item/food/cake/birthday/energy) result = /obj/item/food/cake/birthday/energy diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index ea43fe78f176..cfc28bf438ef 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -204,7 +204,7 @@ if(88) new /obj/item/reagent_containers/food/drinks/bottle/lizardwine(src) if(89) - new /obj/item/melee/transforming/energy/sword/bananium(src) + new /obj/item/melee/energy/sword/bananium(src) if(90) new /obj/item/dnainjector/wackymut(src) if(91) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 27819d97cf15..2d1430296fe7 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -258,7 +258,7 @@ /obj/item/restraints/handcuffs/cable/zipties, /obj/item/soap/nanotrasen, /obj/item/borg/cyborghug) - emag_modules = list(/obj/item/melee/transforming/energy/sword/cyborg) + emag_modules = list(/obj/item/melee/energy/sword/cyborg) cyborg_base_icon = "robot" moduleselect_icon = "standard" hat_offset = -3 @@ -976,7 +976,7 @@ name = "Syndicate Assault" basic_modules = list( /obj/item/assembly/flash/cyborg, - /obj/item/melee/transforming/energy/sword/cyborg, + /obj/item/melee/energy/sword/cyborg, /obj/item/gun/energy/printer, /obj/item/gun/ballistic/revolver/grenadelauncher/cyborg, /obj/item/card/emag/borg, @@ -1041,7 +1041,7 @@ /obj/item/cautery, /obj/item/surgicaldrill, /obj/item/scalpel, - /obj/item/melee/transforming/energy/sword/cyborg/saw, + /obj/item/melee/energy/sword/cyborg/saw, /obj/item/roller/robo, /obj/item/card/emag/borg, /obj/item/crowbar/cyborg, diff --git a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm index 52346fd7cddd..0f8d8e5cd432 100644 --- a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm +++ b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm @@ -5,7 +5,7 @@ icon_state = "grievous" health = 150 maxHealth = 150 - baton_type = /obj/item/melee/transforming/energy/sword/saber + baton_type = /obj/item/melee/energy/sword/saber base_speed = 4 //he's a fast fucker var/block_chance = 50 weapon_force = 30 diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index 4a072df3ab8b..1f3c2ba24aa7 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -404,7 +404,7 @@ new /obj/item/toy/sword(Tsec) if(ASSEMBLY_FIFTH_STEP) - if(istype(I, /obj/item/melee/transforming/energy/sword/saber)) + if(istype(I, /obj/item/melee/energy/sword/saber)) if(swordamt < 3) if(!user.temporarilyRemoveItemFromInventory(I)) return @@ -429,7 +429,7 @@ icon_state = initial(icon_state) to_chat(user, "You unbolt [src]'s energy swords.") for(var/IS in 1 to swordamt) - new /obj/item/melee/transforming/energy/sword/saber(Tsec) + new /obj/item/melee/energy/sword/saber(Tsec) //Firebot Assembly diff --git a/code/modules/mob/living/simple_animal/hostile/human/pirate.dm b/code/modules/mob/living/simple_animal/hostile/human/pirate.dm index df10cfa6a2b4..fbcdcdfc56f3 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/pirate.dm @@ -8,7 +8,7 @@ atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) speak_emote = list("yarrs") loot = list(/obj/effect/mob_spawn/human/corpse/pirate, - /obj/item/melee/transforming/energy/sword/saber/pirate) + /obj/item/melee/energy/sword/saber/pirate) faction = list("pirate") /mob/living/simple_animal/hostile/human/pirate/melee diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm index 2e6325df919f..4643fa939206 100644 --- a/code/modules/mod/mod_theme.dm +++ b/code/modules/mod/mod_theme.dm @@ -682,7 +682,7 @@ /obj/item/restraints/handcuffs, /obj/item/assembly/flash, /obj/item/melee/baton, - /obj/item/melee/transforming/energy/sword, + /obj/item/melee/energy/sword, /obj/item/shield/energy, ) skins = list( @@ -733,7 +733,7 @@ /obj/item/restraints/handcuffs, /obj/item/assembly/flash, /obj/item/melee/baton, - /obj/item/melee/transforming/energy/sword, + /obj/item/melee/energy/sword, /obj/item/shield/energy, ) skins = list( @@ -947,7 +947,7 @@ /obj/item/restraints/handcuffs, /obj/item/assembly/flash, /obj/item/melee/baton, - /obj/item/melee/transforming/energy/sword, + /obj/item/melee/energy/sword, /obj/item/shield/energy, ) skins = list( diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 77b294c516d0..be96d982d79c 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -336,7 +336,7 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( /obj/item/gun/energy/plasmacutter, - /obj/item/melee/transforming/energy, + /obj/item/melee/energy, ))) ///Handles all the logic of sawing off guns, diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm index 0807e1e5c8cc..501cad86da4e 100644 --- a/code/modules/surgery/advanced/lobotomy.dm +++ b/code/modules/surgery/advanced/lobotomy.dm @@ -25,7 +25,7 @@ name = "perform lobotomy" implements = list( TOOL_SCALPEL = 85, // there is no way this should be reasonable to do basically at all without a real surgery. ghetto lobotomy, for real? - /obj/item/melee/transforming/energy/sword = 25, + /obj/item/melee/energy/sword = 25, /obj/item/melee/knife = 15, /obj/item/shard = 10, /obj/item = 5) diff --git a/code/modules/surgery/gastrectomy.dm b/code/modules/surgery/gastrectomy.dm index 6d00f5ae7588..201e9125c06f 100644 --- a/code/modules/surgery/gastrectomy.dm +++ b/code/modules/surgery/gastrectomy.dm @@ -24,7 +24,7 @@ name = "remove lower duodenum" implements = list( TOOL_SCALPEL = 95, - /obj/item/melee/transforming/energy/sword = 33, + /obj/item/melee/energy/sword = 33, /obj/item/melee/knife = 40, /obj/item/shard = 10) time = 52 diff --git a/code/modules/surgery/hepatectomy.dm b/code/modules/surgery/hepatectomy.dm index 0571cf9b2397..b5b017831d77 100644 --- a/code/modules/surgery/hepatectomy.dm +++ b/code/modules/surgery/hepatectomy.dm @@ -23,7 +23,7 @@ name = "remove damaged liver section" implements = list( TOOL_SCALPEL = 95, - /obj/item/melee/transforming/energy/sword = 33, + /obj/item/melee/energy/sword = 33, /obj/item/melee/knife = 40, /obj/item/shard = 25) time = 52 diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm index 79d3d79bcee5..9e9b8e5241a0 100644 --- a/code/modules/surgery/lobectomy.dm +++ b/code/modules/surgery/lobectomy.dm @@ -22,7 +22,7 @@ name = "excise damaged lung node" implements = list( TOOL_SCALPEL = 95, - /obj/item/melee/transforming/energy/sword = 33, + /obj/item/melee/energy/sword = 33, /obj/item/melee/knife = 40, /obj/item/shard = 25) time = 4.2 SECONDS diff --git a/code/modules/surgery/mechanical.dm b/code/modules/surgery/mechanical.dm index 0c73c34bd0c7..2cf72dab1731 100644 --- a/code/modules/surgery/mechanical.dm +++ b/code/modules/surgery/mechanical.dm @@ -33,14 +33,14 @@ TOOL_CAUTERY = 60, TOOL_HEMOSTAT = 60, TOOL_RETRACTOR = 60, - /obj/item/melee/transforming/energy = 40, + /obj/item/melee/energy = 40, /obj/item/gun/energy/laser = 20) time = 2 SECONDS missinghpbonus = 10 /datum/surgery_step/heal/mechanic/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) var/repairtype - if(tool.tool_behaviour == TOOL_WELDER || tool.tool_behaviour == TOOL_CAUTERY || istype(tool, /obj/item/melee/transforming/energy) || istype(tool, /obj/item/gun/energy/laser)) + if(tool.tool_behaviour == TOOL_WELDER || tool.tool_behaviour == TOOL_CAUTERY || istype(tool, /obj/item/melee/energy) || istype(tool, /obj/item/gun/energy/laser)) brutehealing = 5 burnhealing = 0 repairtype = "dents" diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm index 8959a7f99715..64e39a06353b 100644 --- a/code/modules/surgery/organic_steps.dm +++ b/code/modules/surgery/organic_steps.dm @@ -4,7 +4,7 @@ name = "make incision" implements = list( TOOL_SCALPEL = 100, - /obj/item/melee/transforming/energy/sword = 40, + /obj/item/melee/energy/sword = 40, /obj/item/melee/knife = 40, /obj/item/shard = 25, /obj/item = 15) //any sharp item diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 665086d1981d..27ccf1421a3f 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -242,7 +242,7 @@ /obj/item/organ/cyberimp/arm/esword name = "arm-mounted energy blade" desc = "An illegal and highly dangerous cybernetic implant that can project a deadly blade of concentrated energy." - items_to_create = list(/obj/item/melee/transforming/energy/blade/hardlight) + items_to_create = list(/obj/item/melee/energy/blade/hardlight) /obj/item/organ/cyberimp/arm/medibeam name = "integrated medical beamgun" @@ -280,7 +280,7 @@ /obj/item/organ/cyberimp/arm/combat name = "combat cybernetics implant" desc = "A powerful cybernetic implant that contains combat modules built into the user's arm." - items_to_create = list(/obj/item/melee/transforming/energy/blade/hardlight, /obj/item/gun/medbeam, /obj/item/borg/stun, /obj/item/assembly/flash/armimplant) + items_to_create = list(/obj/item/melee/energy/blade/hardlight, /obj/item/gun/medbeam, /obj/item/borg/stun, /obj/item/assembly/flash/armimplant) /obj/item/organ/cyberimp/arm/combat/Initialize() . = ..() diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index ef4630109543..e99d0c078442 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -360,7 +360,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "Bananium Energy Sword" desc = "An energy sword that deals no damage, but will slip anyone it contacts, be it by melee attack, thrown \ impact, or just stepping on it. Beware friendly fire, as even anti-slip shoes will not protect against it." - item = /obj/item/melee/transforming/energy/sword/bananium + item = /obj/item/melee/energy/sword/bananium cost = 3 surplus = 0 include_modes = list(/datum/game_mode/nuclear/clown_ops) @@ -417,7 +417,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "Energy Sword" desc = "The energy sword is an edged weapon with a blade of pure energy. The sword is small enough to be \ pocketed when inactive. Activating it produces a loud, distinctive noise." - item = /obj/item/melee/transforming/energy/sword/saber + item = /obj/item/melee/energy/sword/saber cost = 8 exclude_modes = list(/datum/game_mode/nuclear/clown_ops) From 57de0bf71ec0cee0b0add36207f4df4be712d0b8 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 30 Sep 2024 11:00:50 -0500 Subject: [PATCH 094/102] tweaks to two handed stuff to make it more maintaiable --- .../items/melee/{fireaxe.dm => axe.dm} | 9 +++--- code/game/objects/items/melee/energy.dm | 17 +++------- code/game/objects/items/melee/spear.dm | 31 ++++--------------- .../melee/{transforming.dm => trickweapon.dm} | 0 shiptest.dme | 4 +-- 5 files changed, 17 insertions(+), 44 deletions(-) rename code/game/objects/items/melee/{fireaxe.dm => axe.dm} (89%) rename code/game/objects/items/melee/{transforming.dm => trickweapon.dm} (100%) diff --git a/code/game/objects/items/melee/fireaxe.dm b/code/game/objects/items/melee/axe.dm similarity index 89% rename from code/game/objects/items/melee/fireaxe.dm rename to code/game/objects/items/melee/axe.dm index d935c66c2cf7..472b37eff354 100644 --- a/code/game/objects/items/melee/fireaxe.dm +++ b/code/game/objects/items/melee/axe.dm @@ -14,6 +14,7 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) resistance_flags = FIRE_PROOF species_exception = list(/datum/species/kepori) + var/force_wielded = 25 var/wielded = FALSE // track wielded status on item /obj/item/melee/axe/Initialize() @@ -24,7 +25,7 @@ /obj/item/melee/axe/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools - AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=30, icon_wielded="[base_icon_state]_w") + AddComponent(/datum/component/two_handed, force_unwielded = force, force_wielded = force_wielded, icon_wielded="[base_icon_state]_w") /// triggered on wield of two handed item /obj/item/melee/axe/proc/on_wield(obj/item/source, mob/user) @@ -56,6 +57,7 @@ desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" icon_state = "fireaxe" base_icon_state = "fireaxe" + force_wielded = 30 /obj/item/melee/axe/bone // Blatant imitation of the fireaxe, but made out of bone. name = "bone axe" @@ -66,8 +68,5 @@ /obj/item/melee/axe/scrap name = "scrap axe" desc = "Oversided and with a pretty dull blade, its decent against armour" + force_wielded = 22 armour_penetration = 10 - -/obj/item/melee/axe/scrap/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=22, icon_wielded="[base_icon_state]_w") diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index cf9ccc625bc3..1985c3d7ebfa 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -3,7 +3,6 @@ w_class = WEIGHT_CLASS_SMALL attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") icon = 'icons/obj/weapon/energy.dmi' - active_hitsound = 'sound/weapons/blade1.ogg' heat = 0 max_integrity = 200 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) @@ -31,17 +30,6 @@ /obj/item/melee/energy/Initialize(mapload) . = ..() - make_transformable() - AddElement(/datum/element/update_icon_updates_onmob) - if(sharpness) - AddComponent(/datum/component/butchering, 50, 100, 0, hitsound) - if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) - START_PROCESSING(SSobj, src) - -/* - * Gives our item the transforming component, passing in our various vars. - */ -/obj/item/melee/energy/proc/make_transformable() AddComponent( \ /datum/component/transforming, \ force_on = active_force, \ @@ -53,6 +41,11 @@ attack_verb_on = attack_verb_on, \ ) RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) + AddElement(/datum/element/update_icon_updates_onmob) + if(sharpness) + AddComponent(/datum/component/butchering, 50, 100, 0, hitsound) + if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) + START_PROCESSING(SSobj, src) /obj/item/melee/energy/Destroy() STOP_PROCESSING(SSobj, src) diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index ddf4314d6efc..0e40eff21684 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -21,12 +21,13 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) species_exception = list(/datum/species/kepori) var/icon_prefix = "spearglass" + var/force_wielded = 18 /obj/item/melee/spear/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad. AddComponent(/datum/component/jousting) - AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]_w") + AddComponent(/datum/component/two_handed, force_unwielded = force, force_wielded = force_wielded, icon_wielded = "[icon_prefix]_w") /obj/item/melee/spear/update_icon_state() icon_state = "[icon_prefix]" @@ -36,8 +37,9 @@ var/obj/item/shard/tip = locate() in parts_list if (istype(tip, /obj/item/shard/plasma)) throwforce = 21 + force_wielded = 19 icon_prefix = "spearplasma" - AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]_w") + AddComponent(/datum/component/two_handed, force_unwielded = force, force_wielded = force_wielded, icon_wielded = "[icon_prefix]_w") update_appearance() qdel(tip) ..() @@ -53,11 +55,8 @@ desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." //this should be a plasma spear or worse. force = 11 - throwforce = 21 - -/obj/item/melee/spear/bone/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]_w") + throwforce = 19 + force_wielded = 17 /obj/item/melee/spear/explosive name = "explosive lance" @@ -70,26 +69,8 @@ /obj/item/melee/spear/explosive/Initialize(mapload) . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) set_explosive(new /obj/item/grenade/iedcasing/spawned()) //For admin-spawned explosive lances -/obj/item/melee/spear/explosive/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]_w") - -/// triggered on wield of two handed item -/obj/item/melee/spear/explosive/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/melee/spear/explosive/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - /obj/item/melee/spear/explosive/proc/set_explosive(obj/item/grenade/G) if(explosive) QDEL_NULL(explosive) diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/trickweapon.dm similarity index 100% rename from code/game/objects/items/melee/transforming.dm rename to code/game/objects/items/melee/trickweapon.dm diff --git a/shiptest.dme b/shiptest.dme index a4ff20a2d2a7..9dcece1b986a 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1315,12 +1315,12 @@ #include "code\game\objects\items\implants\implanter.dm" #include "code\game\objects\items\implants\implantpad.dm" #include "code\game\objects\items\implants\implantuplink.dm" +#include "code\game\objects\items\melee\axe.dm" #include "code\game\objects\items\melee\bladeatheon.dm" #include "code\game\objects\items\melee\chainsaw.dm" #include "code\game\objects\items\melee\dualsaber.dm" #include "code\game\objects\items\melee\energy.dm" #include "code\game\objects\items\melee\energyhalberd.dm" -#include "code\game\objects\items\melee\fireaxe.dm" #include "code\game\objects\items\melee\knife.dm" #include "code\game\objects\items\melee\misc.dm" #include "code\game\objects\items\melee\powerfist.dm" @@ -1328,7 +1328,7 @@ #include "code\game\objects\items\melee\stunbaton.dm" #include "code\game\objects\items\melee\sword.dm" #include "code\game\objects\items\melee\teleprod.dm" -#include "code\game\objects\items\melee\transforming.dm" +#include "code\game\objects\items\melee\trickweapon.dm" #include "code\game\objects\items\melee\weaponry.dm" #include "code\game\objects\items\robot\ai_upgrades.dm" #include "code\game\objects\items\robot\robot_items.dm" From e551a82d6a02362c4dd6dac5ff85ac01f1f99e55 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 30 Sep 2024 16:26:52 -0500 Subject: [PATCH 095/102] better duel energy weapon path --- .../IceRuins/icemoon_crashed_holemaker.dmm | 2 +- _maps/RandomRuins/SpaceRuins/spacemall.dmm | 4 +- _maps/shuttles/solgov/solgov_chronicle.dmm | 4 +- code/game/objects/items/melee/dualenergy.dm | 283 ++++++++++++++++++ code/game/objects/items/melee/dualsaber.dm | 171 ----------- .../game/objects/items/melee/energyhalberd.dm | 171 ----------- .../game/objects/items/storage/uplink_kits.dm | 2 +- code/game/objects/items/tools/weldingtool.dm | 4 +- code/game/objects/items/toys.dm | 8 +- .../awaymissions/mission_code/snowdin.dm | 2 +- .../clothing/outfits/ert/solgov_ert.dm | 2 +- code/modules/projectiles/gun.dm | 2 +- code/modules/uplink/uplink_items.dm | 2 +- code/modules/vending/liberation_toy.dm | 2 +- code/modules/vending/toys.dm | 2 +- shiptest.dme | 7 +- 16 files changed, 302 insertions(+), 366 deletions(-) create mode 100644 code/game/objects/items/melee/dualenergy.dm delete mode 100644 code/game/objects/items/melee/dualsaber.dm delete mode 100644 code/game/objects/items/melee/energyhalberd.dm diff --git a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm index 707be4573d13..bdd328fe39b9 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm @@ -1016,7 +1016,7 @@ /obj/effect/turf_decal/spline/fancy/transparent/neutral/corner{ dir = 1 }, -/obj/item/dualsaber/toy, +/obj/item/melee/duelenergy/saber/toy, /turf/open/floor/plasteel/icemoon, /area/ruin/unpowered/crashed_holemaker) "rm" = ( diff --git a/_maps/RandomRuins/SpaceRuins/spacemall.dmm b/_maps/RandomRuins/SpaceRuins/spacemall.dmm index 3be5be2fdce0..65af1869eaae 100644 --- a/_maps/RandomRuins/SpaceRuins/spacemall.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacemall.dmm @@ -6318,7 +6318,7 @@ "xM" = ( /obj/structure/rack, /obj/effect/turf_decal/corner/transparent/black/diagonal, -/obj/item/dualsaber/toy, +/obj/item/melee/duelenergy/saber/toy, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop2) "xN" = ( @@ -11448,7 +11448,7 @@ /turf/open/floor/plating/grass, /area/ruin/space/has_grav/spacemall) "QO" = ( -/obj/item/dualsaber/toy, +/obj/item/melee/duelenergy/saber/toy, /obj/item/toy/redbutton{ pixel_x = 14 }, diff --git a/_maps/shuttles/solgov/solgov_chronicle.dmm b/_maps/shuttles/solgov/solgov_chronicle.dmm index bacabd6cc23c..16e216fe0296 100644 --- a/_maps/shuttles/solgov/solgov_chronicle.dmm +++ b/_maps/shuttles/solgov/solgov_chronicle.dmm @@ -1947,8 +1947,8 @@ /turf/open/floor/plasteel/freezer, /area/ship/crew/dorm) "ti" = ( -/obj/item/energyhalberd/purple, -/obj/item/energyhalberd/purple, +/obj/item/melee/duelenergy/halberd/purple, +/obj/item/melee/duelenergy/halberd/purple, /obj/effect/turf_decal/techfloor{ dir = 1 }, diff --git a/code/game/objects/items/melee/dualenergy.dm b/code/game/objects/items/melee/dualenergy.dm new file mode 100644 index 000000000000..599b5a56a6b2 --- /dev/null +++ b/code/game/objects/items/melee/dualenergy.dm @@ -0,0 +1,283 @@ +/obj/item/melee/duelenergy + icon = 'icons/obj/weapon/energy.dmi' + icon_state = "halberd" + icon = 'icons/obj/weapon/energy.dmi' + lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' + name = "energy halberd" + desc = "For when a normal halberd just isnt enough." + force = 3 + throwforce = 5 + throw_speed = 3 + throw_range = 5 + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK + hitsound = "swing_hit" + armour_penetration = 35 + light_system = MOVABLE_LIGHT + light_range = 4 + light_color = LIGHT_COLOR_ELECTRIC_GREEN + light_on = FALSE + attack_cooldown = HEAVY_WEAPON_CD + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "lacerated", "ripped", "diced", "cut") + max_integrity = 200 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) + resistance_flags = FIRE_PROOF + var/active_w_class = WEIGHT_CLASS_BULKY + var/two_hand_force = 34 + var/sword_color = "green" + var/hacked = FALSE + var/list/possible_colors = list("red", "blue", "green", "purple", "yellow") + +/obj/item/melee/duelenergy/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) + if(LAZYLEN(possible_colors)) + sword_color = pick(possible_colors) + switch(sword_color) + if("red") + set_light_color(COLOR_SOFT_RED) + if("green") + set_light_color(LIGHT_COLOR_GREEN) + if("blue") + set_light_color(LIGHT_COLOR_LIGHT_CYAN) + if("purple") + set_light_color(LIGHT_COLOR_LAVENDER) + if("yellow") + set_light_color(COLOR_YELLOW) + +/obj/item/melee/duelenergy/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded = force, force_wielded = two_hand_force, wieldsound = 'sound/weapons/saberon.ogg', unwieldsound = 'sound/weapons/saberoff.ogg') + +/obj/item/melee/duelenergy/Destroy() + STOP_PROCESSING(SSobj, src) + . = ..() + +/// Triggered on wield of two handed item +/// Specific hulk checks due to reflection chance for balance issues and switches hitsounds. +/obj/item/melee/duelenergy/proc/on_wield(obj/item/source, mob/living/carbon/user) + SIGNAL_HANDLER + + sharpness = IS_SHARP + w_class = active_w_class + hitsound = 'sound/weapons/blade1.ogg' + START_PROCESSING(SSobj, src) + set_light_on(TRUE) + + +/// Triggered on unwield of two handed item +/// switch hitsounds +/obj/item/melee/duelenergy/proc/on_unwield(obj/item/source, mob/living/carbon/user) + SIGNAL_HANDLER + + sharpness = initial(sharpness) + w_class = initial(w_class) + hitsound = "swing_hit" + STOP_PROCESSING(SSobj, src) + set_light_on(FALSE) + +/obj/item/melee/duelenergy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(HAS_TRAIT(src, TRAIT_WIELDED)) + return ..() + return FALSE + +/obj/item/melee/duelenergy/IsReflect() + if(HAS_TRAIT(src, TRAIT_WIELDED)) + return TRUE + +/obj/item/melee/duelenergy/process() + if(HAS_TRAIT(src, TRAIT_WIELDED)) + if(hacked) + set_light_color(pick(COLOR_SOFT_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER)) + open_flame() + else + STOP_PROCESSING(SSobj, src) + +/* + * Double-Bladed Energy Swords - Cheridan + */ +/obj/item/melee/duelenergy/saber + icon = 'icons/obj/weapon/energy.dmi' + icon_state = "dualsaber" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + name = "double-bladed energy sword" + desc = "For when simply killing someone isn't enough." + force = 3 + throwforce = 5 + throw_speed = 3 + throw_range = 5 + w_class = WEIGHT_CLASS_SMALL + hitsound = "swing_hit" + armour_penetration = 35 + light_system = MOVABLE_LIGHT + light_range = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD + light_color = LIGHT_COLOR_ELECTRIC_GREEN + light_on = FALSE + attack_cooldown = HEAVY_WEAPON_CD + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "lacerated", "ripped", "diced", "cut") + max_integrity = 200 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) + resistance_flags = FIRE_PROOF + +/obj/item/melee/duelenergy/saber/update_icon_state() + icon_state = HAS_TRAIT(src, TRAIT_WIELDED) ? "dualsaber[sword_color]" : "dualsaber" + return ..() + +/obj/item/melee/duelenergy/saber/attack(mob/target, mob/living/carbon/human/user) + ..() + if(HAS_TRAIT(src, TRAIT_WIELDED) && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) + impale(user) + return + if(HAS_TRAIT(src, TRAIT_WIELDED) && prob(50)) + INVOKE_ASYNC(src, PROC_REF(jedi_spin), user) + +/obj/item/melee/duelenergy/saber/proc/jedi_spin(mob/living/user) + dance_rotate(user, CALLBACK(user, TYPE_PROC_REF(/mob, dance_flip))) + +/obj/item/melee/duelenergy/saber/proc/impale(mob/living/user) + to_chat(user, "You twirl around a bit before losing your balance and impaling yourself on [src].") + if(HAS_TRAIT(src, TRAIT_WIELDED)) + user.take_bodypart_damage(20,25,check_armor = TRUE) + else + user.adjustStaminaLoss(25) + +/obj/item/melee/duelenergy/saber/ignition_effect(atom/A, mob/user) + // same as /obj/item/melee/transforming/energy, mostly + if(!HAS_TRAIT(src, TRAIT_WIELDED)) + return "" + var/in_mouth = "" + if(iscarbon(user)) + var/mob/living/carbon/C = user + if(C.wear_mask) + in_mouth = ", barely missing [user.p_their()] nose" + . = "[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process." + playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) + add_fingerprint(user) + // Light your candles while spinning around the room + INVOKE_ASYNC(src, PROC_REF(jedi_spin), user) + +/obj/item/melee/duelenergy/saber/green + possible_colors = list("green") + +/obj/item/melee/duelenergy/saber/red + possible_colors = list("red") + +/obj/item/melee/duelenergy/saber/blue + possible_colors = list("blue") + +/obj/item/melee/duelenergy/saber/purple + possible_colors = list("purple") + +/obj/item/melee/duelenergy/saber/yellow + possible_colors = list("yellow") + +/obj/item/melee/duelenergy/saber/attackby(obj/item/W, mob/user, params) + if(W.tool_behaviour == TOOL_MULTITOOL) + if(!hacked) + hacked = TRUE + to_chat(user, "2XRNBW_ENGAGE") + sword_color = "rainbow" + update_appearance() + else + to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.") + else + return ..() + +/* + * Energy Halberds - TetraZeta, Imaginos and Zevo. + */ +/obj/item/melee/duelenergy/halberd + icon = 'icons/obj/weapon/energy.dmi' + icon_state = "halberd" + icon = 'icons/obj/weapon/energy.dmi' + lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' + name = "energy halberd" + desc = "For when a normal halberd just isnt enough." + force = 3 + throwforce = 5 + throw_speed = 3 + throw_range = 5 + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK + hitsound = "swing_hit" + armour_penetration = 35 + light_system = MOVABLE_LIGHT + light_range = 4 + light_color = LIGHT_COLOR_ELECTRIC_GREEN + light_on = FALSE + attack_cooldown = HEAVY_WEAPON_CD + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "lacerated", "ripped", "diced", "cut") + max_integrity = 200 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) + resistance_flags = FIRE_PROOF + +/obj/item/melee/duelenergy/halberd/update_icon_state() + if(HAS_TRAIT(src, TRAIT_WIELDED)) + icon_state = "halberd[sword_color]" + return ..() + else + icon_state = "halberd" + return ..() + +/obj/item/melee/duelenergy/halberd/attack(mob/target, mob/living/carbon/human/user) + ..() + if(HAS_TRAIT(src, TRAIT_WIELDED) && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) + impale(user) + return + +/obj/item/melee/duelenergy/halberd/proc/impale(mob/living/user) + to_chat(user, "You swing around a bit before losing your balance and impaling yourself on [src].") + if(HAS_TRAIT(src, TRAIT_WIELDED)) + user.take_bodypart_damage(20,25,check_armor = TRUE) + else + user.adjustStaminaLoss(25) + + +/obj/item/melee/duelenergy/halberd/IsReflect() + if(HAS_TRAIT(src, TRAIT_WIELDED)) + return 1 + +/obj/item/melee/duelenergy/halberd/ignition_effect(atom/A, mob/user) + // same as /obj/item/melee/transforming/energy, mostly + if(!HAS_TRAIT(src, TRAIT_WIELDED)) + return "" + var/in_mouth = "" + if(iscarbon(user)) + var/mob/living/carbon/C = user + if(C.wear_mask) + in_mouth = ", barely missing [user.p_their()] nose" + . = "[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process." + playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) + add_fingerprint(user) + + +/obj/item/melee/duelenergy/halberd/green + possible_colors = list("green") + +/obj/item/melee/duelenergy/halberd/red + possible_colors = list("red") + +/obj/item/melee/duelenergy/halberd/blue + possible_colors = list("blue") + +/obj/item/melee/duelenergy/halberd/purple + possible_colors = list("purple") + +/obj/item/melee/duelenergy/halberd/yellow + possible_colors = list("yellow") + +/obj/item/melee/duelenergy/halberd/attackby(obj/item/W, mob/user, params) + if(W.tool_behaviour == TOOL_MULTITOOL) + if(!hacked) + hacked = TRUE + to_chat(user, "HLBRDRNBW_ENGAGE") + sword_color = "rainbow" + update_appearance() + else + to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.") + else + return ..() diff --git a/code/game/objects/items/melee/dualsaber.dm b/code/game/objects/items/melee/dualsaber.dm deleted file mode 100644 index 4372ac8d25e3..000000000000 --- a/code/game/objects/items/melee/dualsaber.dm +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Double-Bladed Energy Swords - Cheridan - */ -/obj/item/dualsaber - icon = 'icons/obj/weapon/energy.dmi' - icon_state = "dualsaber" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - name = "double-bladed energy sword" - desc = "For when simply killing someone isn't enough." - force = 3 - throwforce = 5 - throw_speed = 3 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - hitsound = "swing_hit" - armour_penetration = 35 - light_system = MOVABLE_LIGHT - light_range = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD - light_color = LIGHT_COLOR_ELECTRIC_GREEN - light_on = FALSE - attack_cooldown = HEAVY_WEAPON_CD - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "lacerated", "ripped", "diced", "cut") - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) - resistance_flags = FIRE_PROOF - var/active_w_class = WEIGHT_CLASS_BULKY - var/saber_color = "green" - var/two_hand_force = 34 - var/hacked = FALSE - var/list/possible_colors = list("red", "blue", "green", "purple", "yellow") - -/obj/item/dualsaber/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=force, force_wielded=two_hand_force, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg') - -/// Triggered on wield of two handed item -/// Specific hulk checks due to reflection chance for balance issues and switches hitsounds. -/obj/item/dualsaber/proc/on_wield(obj/item/source, mob/living/carbon/user) - SIGNAL_HANDLER - - if(user && user.has_dna()) - if(user.dna.check_mutation(HULK)) - to_chat(user, "You lack the grace to wield this!") - return COMPONENT_TWOHANDED_BLOCK_WIELD - sharpness = IS_SHARP - w_class = active_w_class - hitsound = 'sound/weapons/blade1.ogg' - START_PROCESSING(SSobj, src) - set_light_on(TRUE) - - -/// Triggered on unwield of two handed item -/// switch hitsounds -/obj/item/dualsaber/proc/on_unwield(obj/item/source, mob/living/carbon/user) - SIGNAL_HANDLER - - sharpness = initial(sharpness) - w_class = initial(w_class) - hitsound = "swing_hit" - STOP_PROCESSING(SSobj, src) - set_light_on(FALSE) - -/obj/item/dualsaber/update_icon_state() - icon_state = HAS_TRAIT(src, TRAIT_WIELDED) ? "dualsaber[saber_color]" : "dualsaber" - return ..() - -/obj/item/dualsaber/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - if(LAZYLEN(possible_colors)) - saber_color = pick(possible_colors) - switch(saber_color) - if("red") - set_light_color(COLOR_SOFT_RED) - if("green") - set_light_color(LIGHT_COLOR_GREEN) - if("blue") - set_light_color(LIGHT_COLOR_LIGHT_CYAN) - if("purple") - set_light_color(LIGHT_COLOR_LAVENDER) - if("yellow") - set_light_color(COLOR_YELLOW) - -/obj/item/dualsaber/Destroy() - STOP_PROCESSING(SSobj, src) - . = ..() - -/obj/item/dualsaber/attack(mob/target, mob/living/carbon/human/user) - if(user.has_dna()) - if(user.dna.check_mutation(HULK)) - to_chat(user, "You grip the blade too hard and accidentally drop it!") - if(HAS_TRAIT(src, TRAIT_WIELDED)) - user.dropItemToGround(src, force=TRUE) - return - ..() - if(HAS_TRAIT(src, TRAIT_WIELDED) && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) - impale(user) - return - if(HAS_TRAIT(src, TRAIT_WIELDED) && prob(50)) - INVOKE_ASYNC(src, PROC_REF(jedi_spin), user) - -/obj/item/dualsaber/proc/jedi_spin(mob/living/user) - dance_rotate(user, CALLBACK(user, TYPE_PROC_REF(/mob, dance_flip))) - -/obj/item/dualsaber/proc/impale(mob/living/user) - to_chat(user, "You twirl around a bit before losing your balance and impaling yourself on [src].") - if(HAS_TRAIT(src, TRAIT_WIELDED)) - user.take_bodypart_damage(20,25,check_armor = TRUE) - else - user.adjustStaminaLoss(25) - -/obj/item/dualsaber/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(HAS_TRAIT(src, TRAIT_WIELDED)) - return ..() - return 0 - -/obj/item/dualsaber/process() - if(HAS_TRAIT(src, TRAIT_WIELDED)) - if(hacked) - set_light_color(pick(COLOR_SOFT_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER)) - open_flame() - else - STOP_PROCESSING(SSobj, src) - -/obj/item/dualsaber/IsReflect() - if(HAS_TRAIT(src, TRAIT_WIELDED)) - return 1 - -/obj/item/dualsaber/ignition_effect(atom/A, mob/user) - // same as /obj/item/melee/transforming/energy, mostly - if(!HAS_TRAIT(src, TRAIT_WIELDED)) - return "" - var/in_mouth = "" - if(iscarbon(user)) - var/mob/living/carbon/C = user - if(C.wear_mask) - in_mouth = ", barely missing [user.p_their()] nose" - . = "[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process." - playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) - add_fingerprint(user) - // Light your candles while spinning around the room - INVOKE_ASYNC(src, PROC_REF(jedi_spin), user) - -/obj/item/dualsaber/green - possible_colors = list("green") - -/obj/item/dualsaber/red - possible_colors = list("red") - -/obj/item/dualsaber/blue - possible_colors = list("blue") - -/obj/item/dualsaber/purple - possible_colors = list("purple") - -/obj/item/dualsaber/yellow - possible_colors = list("yellow") - -/obj/item/dualsaber/attackby(obj/item/W, mob/user, params) - if(W.tool_behaviour == TOOL_MULTITOOL) - if(!hacked) - hacked = TRUE - to_chat(user, "2XRNBW_ENGAGE") - saber_color = "rainbow" - update_appearance() - else - to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.") - else - return ..() diff --git a/code/game/objects/items/melee/energyhalberd.dm b/code/game/objects/items/melee/energyhalberd.dm deleted file mode 100644 index b56b6169ba94..000000000000 --- a/code/game/objects/items/melee/energyhalberd.dm +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Energy Halberds - TetraZeta, Imaginos and Zevo - * Copied mostly from dualsaber.dm to avoid inhertance issues - */ -/obj/item/energyhalberd - icon = 'icons/obj/weapon/energy.dmi' - icon_state = "halberd" - icon = 'icons/obj/weapon/energy.dmi' - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "energy halberd" - desc = "For when a normal halberd just isnt enough." - force = 3 - throwforce = 5 - throw_speed = 3 - throw_range = 5 - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - hitsound = "swing_hit" - armour_penetration = 35 - light_system = MOVABLE_LIGHT - light_range = 4 - light_color = LIGHT_COLOR_ELECTRIC_GREEN - light_on = FALSE - attack_cooldown = HEAVY_WEAPON_CD - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "lacerated", "ripped", "diced", "cut") - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) - resistance_flags = FIRE_PROOF - var/active_w_class = WEIGHT_CLASS_BULKY - var/halberd_color = "green" - var/two_hand_force = 34 - var/hacked = FALSE - var/list/possible_colors = list("red", "blue", "green", "purple", "yellow") - -/obj/item/energyhalberd/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=force, force_wielded=two_hand_force, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg') - - -/// Specific hulk checks due to reflection chance for balance issues and switches hitsounds. -/obj/item/energyhalberd/proc/on_halberdwield(obj/item/source, mob/living/carbon/user) - SIGNAL_HANDLER - - if(user && user.has_dna()) - if(user.dna.check_mutation(HULK)) - to_chat(user, "You lack the grace to wield this!") - return COMPONENT_TWOHANDED_BLOCK_WIELD - sharpness = IS_SHARP - w_class = active_w_class - hitsound = 'sound/weapons/blade1.ogg' - START_PROCESSING(SSobj, src) - set_light_on(TRUE) - - -/// switch hitsounds -/obj/item/energyhalberd/proc/on_halberdunwield(obj/item/source, mob/living/carbon/user) - SIGNAL_HANDLER - sharpness = initial(sharpness) - w_class = initial(w_class) - hitsound = "swing_hit" - STOP_PROCESSING(SSobj, src) - set_light_on(FALSE) - - -/obj/item/energyhalberd/update_icon_state() - if(HAS_TRAIT(src, TRAIT_WIELDED)) - icon_state = "halberd[halberd_color]" - return ..() - else - icon_state = "halberd" - return ..() - -/obj/item/energyhalberd/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_halberdwield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_halberdunwield)) - if(LAZYLEN(possible_colors)) - halberd_color = pick(possible_colors) - switch(halberd_color) - if("red") - set_light_color(COLOR_SOFT_RED) - if("green") - set_light_color(LIGHT_COLOR_GREEN) - if("blue") - set_light_color(LIGHT_COLOR_LIGHT_CYAN) - if("purple") - set_light_color(LIGHT_COLOR_LAVENDER) - if("yellow") - set_light_color(COLOR_YELLOW) - -/obj/item/energyhalberd/Destroy() - STOP_PROCESSING(SSobj, src) - . = ..() - -/obj/item/energyhalberd/attack(mob/target, mob/living/carbon/human/user) - if(user.has_dna()) - if(user.dna.check_mutation(HULK)) - to_chat(user, "You grip the blade too hard and accidentally drop it!") - if(HAS_TRAIT(src, TRAIT_WIELDED)) - user.dropItemToGround(src, force=TRUE) - return - ..() - if(HAS_TRAIT(src, TRAIT_WIELDED) && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) - impale(user) - return - -/obj/item/energyhalberd/proc/impale(mob/living/user) - to_chat(user, "You swing around a bit before losing your balance and impaling yourself on [src].") - if(HAS_TRAIT(src, TRAIT_WIELDED)) - user.take_bodypart_damage(20,25,check_armor = TRUE) - else - user.adjustStaminaLoss(25) - -/obj/item/energyhalberd/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(HAS_TRAIT(src, TRAIT_WIELDED)) - return ..() - return 0 - -/obj/item/energyhalberd/process() - if(HAS_TRAIT(src, TRAIT_WIELDED)) - if(hacked) - set_light_color(pick(COLOR_SOFT_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER)) - open_flame() - else - STOP_PROCESSING(SSobj, src) - -/obj/item/energyhalberd/IsReflect() - if(HAS_TRAIT(src, TRAIT_WIELDED)) - return 1 - -/obj/item/energyhalberd/ignition_effect(atom/A, mob/user) - // same as /obj/item/melee/transforming/energy, mostly - if(!HAS_TRAIT(src, TRAIT_WIELDED)) - return "" - var/in_mouth = "" - if(iscarbon(user)) - var/mob/living/carbon/C = user - if(C.wear_mask) - in_mouth = ", barely missing [user.p_their()] nose" - . = "[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process." - playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) - add_fingerprint(user) - - -/obj/item/energyhalberd/green - possible_colors = list("green") - -/obj/item/energyhalberd/red - possible_colors = list("red") - -/obj/item/energyhalberd/blue - possible_colors = list("blue") - -/obj/item/energyhalberd/purple - possible_colors = list("purple") - -/obj/item/energyhalberd/yellow - possible_colors = list("yellow") - -/obj/item/energyhalberd/attackby(obj/item/W, mob/user, params) - if(W.tool_behaviour == TOOL_MULTITOOL) - if(!hacked) - hacked = TRUE - to_chat(user, "HLBRDRNBW_ENGAGE") - halberd_color = "rainbow" - update_appearance() - else - to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.") - else - return ..() diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 8c69be76f4bf..2a155b94e61e 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -138,7 +138,7 @@ new /obj/item/chameleon(src) // 7 tc if("darklord") - new /obj/item/dualsaber(src) + new /obj/item/melee/duelenergy/saber(src) new /obj/item/dnainjector/telemut/darkbundle(src) new /obj/item/card/id/syndicate(src) new /obj/item/clothing/shoes/chameleon/noslip(src) //because slipping while being a dark lord sucks diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index f953a3604367..a0bd9588b3ed 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -75,7 +75,7 @@ /obj/item/weldingtool/process() switch(welding) - if(0) + if(FALSE) force = 3 damtype = "brute" update_appearance() @@ -83,7 +83,7 @@ STOP_PROCESSING(SSobj, src) return //Welders left on now use up fuel, but lets not have them run out quite that fast - if(1) + if(TRUE) force = 15 damtype = "fire" ++burned_fuel_for diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 2f044443c2e2..ff8146f3632d 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -304,7 +304,7 @@ return else to_chat(user, "You attach the ends of the two plastic swords, making a single double-bladed toy! You're fake-cool.") - var/obj/item/dualsaber/toy/newSaber = new /obj/item/dualsaber/toy(user.loc) + var/obj/item/melee/duelenergy/saber/toy/newSaber = new /obj/item/melee/duelenergy/saber/toy(user.loc) if(hacked) // That's right, we'll only check the "original" "sword". newSaber.hacked = TRUE newSaber.saber_color = "rainbow" @@ -388,7 +388,7 @@ /* * Subtype of Double-Bladed Energy Swords */ -/obj/item/dualsaber/toy +/obj/item/melee/duelenergy/saber/toy name = "double-bladed toy sword" desc = "A cheap, plastic replica of TWO energy swords. Double the fun!" force = 0 @@ -398,10 +398,10 @@ two_hand_force = 0 attack_verb = list("attacked", "struck", "hit") -/obj/item/dualsaber/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) +/obj/item/melee/duelenergy/saber/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) return 0 -/obj/item/dualsaber/toy/IsReflect() //Stops Toy Dualsabers from reflecting energy projectiles +/obj/item/melee/duelenergy/saber/toy/IsReflect() //Stops Toy Dualsabers from reflecting energy projectiles return 0 /obj/item/toy/katana diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index e025fc6cd427..fcfb81fc08b7 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -509,7 +509,7 @@ name = "dungeon heavy" loot = list(/obj/item/melee/axe/fire = 25, /obj/item/organ/brain/alien = 17, - /obj/item/dualsaber = 15, + /obj/item/melee/duelenergy/saber = 15, /obj/item/organ/heart/demon = 7, /obj/item/gun/ballistic/automatic/smg/cobra = 16, /obj/item/uplink/old = 2, diff --git a/code/modules/clothing/outfits/ert/solgov_ert.dm b/code/modules/clothing/outfits/ert/solgov_ert.dm index d6830b751498..f7e5cf57d802 100644 --- a/code/modules/clothing/outfits/ert/solgov_ert.dm +++ b/code/modules/clothing/outfits/ert/solgov_ert.dm @@ -15,7 +15,7 @@ back = /obj/item/storage/backpack box = /obj/item/storage/box/survival - l_hand = /obj/item/energyhalberd + l_hand = /obj/item/melee/duelenergy/halberd /datum/outfit/job/solgov/ert/inspector diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index f506c775f4f2..f17f5e5b31da 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -1116,7 +1116,7 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( /obj/item/gun/energy/plasmacutter, - /obj/item/melee/transforming/energy, + /obj/item/melee/energy, ))) ///Handles all the logic of sawing off guns, diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index e99d0c078442..ca430df33059 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -405,7 +405,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "Double-Bladed Energy Sword" desc = "The double-bladed energy sword does slightly more damage than a standard energy sword and will deflect \ all energy projectiles, but requires two hands to wield." - item = /obj/item/dualsaber + item = /obj/item/melee/duelenergy/saber player_minimum = 25 cost = 16 exclude_modes = list(/datum/game_mode/nuclear/clown_ops) diff --git a/code/modules/vending/liberation_toy.dm b/code/modules/vending/liberation_toy.dm index 06069e4db764..c4e85d361ad8 100644 --- a/code/modules/vending/liberation_toy.dm +++ b/code/modules/vending/liberation_toy.dm @@ -19,7 +19,7 @@ /obj/item/gun/ballistic/shotgun/toy/crossbow = 10, //Congrats, you unlocked the +18 setting! /obj/item/ammo_box/foambox/riot = 20, /obj/item/toy/katana = 10, - /obj/item/dualsaber/toy = 5, + /obj/item/melee/duelenergy/saber/toy = 5, /obj/item/toy/cards/deck/syndicate = 10) //Gambling and it hurts, making it a +18 item armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm index 08af917aa86a..a40bbd456cee 100644 --- a/code/modules/vending/toys.dm +++ b/code/modules/vending/toys.dm @@ -19,7 +19,7 @@ /obj/item/clothing/head/syndicatefake = 5, /obj/item/gun/ballistic/shotgun/toy/crossbow = 10, /obj/item/toy/katana = 10, - /obj/item/dualsaber/toy = 5) + /obj/item/melee/duelenergy/saber/toy = 5) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/donksoft diff --git a/shiptest.dme b/shiptest.dme index 7a73c1f40a94..c137712a4aee 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1318,13 +1318,8 @@ #include "code\game\objects\items\implants\implantchair.dm" #include "code\game\objects\items\implants\implanter.dm" #include "code\game\objects\items\implants\implantpad.dm" -#include "code\game\objects\items\implants\implantuplink.dm" -#include "code\game\objects\items\melee\axe.dm" -#include "code\game\objects\items\melee\bladeatheon.dm" -#include "code\game\objects\items\melee\chainsaw.dm" -#include "code\game\objects\items\melee\dualsaber.dm" +#include "code\game\objects\items\melee\dualenergy.dm" #include "code\game\objects\items\melee\energy.dm" -#include "code\game\objects\items\melee\energyhalberd.dm" #include "code\game\objects\items\melee\knife.dm" #include "code\game\objects\items\melee\misc.dm" #include "code\game\objects\items\melee\powerfist.dm" From ca0606d70b670a9dde564e7c114758e8cfae1e7c Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 30 Sep 2024 16:34:28 -0500 Subject: [PATCH 096/102] 70 lines only for halberds. not bad --- code/game/objects/items/melee/dualenergy.dm | 58 +++------------------ 1 file changed, 6 insertions(+), 52 deletions(-) diff --git a/code/game/objects/items/melee/dualenergy.dm b/code/game/objects/items/melee/dualenergy.dm index 599b5a56a6b2..10773784d0fd 100644 --- a/code/game/objects/items/melee/dualenergy.dm +++ b/code/game/objects/items/melee/dualenergy.dm @@ -1,21 +1,12 @@ /obj/item/melee/duelenergy icon = 'icons/obj/weapon/energy.dmi' - icon_state = "halberd" - icon = 'icons/obj/weapon/energy.dmi' - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "energy halberd" - desc = "For when a normal halberd just isnt enough." force = 3 throwforce = 5 throw_speed = 3 throw_range = 5 - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK hitsound = "swing_hit" armour_penetration = 35 light_system = MOVABLE_LIGHT - light_range = 4 light_color = LIGHT_COLOR_ELECTRIC_GREEN light_on = FALSE attack_cooldown = HEAVY_WEAPON_CD @@ -95,36 +86,22 @@ else STOP_PROCESSING(SSobj, src) +/obj/item/melee/duelenergy/update_icon_state() + icon_state = HAS_TRAIT(src, TRAIT_WIELDED) ? "[base_icon_state][sword_color]" : base_icon_state + return ..() + /* * Double-Bladed Energy Swords - Cheridan */ /obj/item/melee/duelenergy/saber - icon = 'icons/obj/weapon/energy.dmi' icon_state = "dualsaber" + base_icon_state = "dualsaber" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' name = "double-bladed energy sword" desc = "For when simply killing someone isn't enough." - force = 3 - throwforce = 5 - throw_speed = 3 - throw_range = 5 w_class = WEIGHT_CLASS_SMALL - hitsound = "swing_hit" - armour_penetration = 35 - light_system = MOVABLE_LIGHT light_range = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD - light_color = LIGHT_COLOR_ELECTRIC_GREEN - light_on = FALSE - attack_cooldown = HEAVY_WEAPON_CD - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "lacerated", "ripped", "diced", "cut") - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) - resistance_flags = FIRE_PROOF - -/obj/item/melee/duelenergy/saber/update_icon_state() - icon_state = HAS_TRAIT(src, TRAIT_WIELDED) ? "dualsaber[sword_color]" : "dualsaber" - return ..() /obj/item/melee/duelenergy/saber/attack(mob/target, mob/living/carbon/human/user) ..() @@ -190,38 +167,15 @@ * Energy Halberds - TetraZeta, Imaginos and Zevo. */ /obj/item/melee/duelenergy/halberd - icon = 'icons/obj/weapon/energy.dmi' icon_state = "halberd" + base_icon_state = "halberd" icon = 'icons/obj/weapon/energy.dmi' lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' name = "energy halberd" desc = "For when a normal halberd just isnt enough." - force = 3 - throwforce = 5 - throw_speed = 3 - throw_range = 5 w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - hitsound = "swing_hit" - armour_penetration = 35 - light_system = MOVABLE_LIGHT light_range = 4 - light_color = LIGHT_COLOR_ELECTRIC_GREEN - light_on = FALSE - attack_cooldown = HEAVY_WEAPON_CD - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "lacerated", "ripped", "diced", "cut") - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) - resistance_flags = FIRE_PROOF - -/obj/item/melee/duelenergy/halberd/update_icon_state() - if(HAS_TRAIT(src, TRAIT_WIELDED)) - icon_state = "halberd[sword_color]" - return ..() - else - icon_state = "halberd" - return ..() /obj/item/melee/duelenergy/halberd/attack(mob/target, mob/living/carbon/human/user) ..() From 274188a0f46a6ee4c50cbc8647e72321d89182ef Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 30 Sep 2024 16:43:39 -0500 Subject: [PATCH 097/102] oh its just a varedit --- code/game/objects/items/melee/dualenergy.dm | 138 +++++++------------- 1 file changed, 45 insertions(+), 93 deletions(-) diff --git a/code/game/objects/items/melee/dualenergy.dm b/code/game/objects/items/melee/dualenergy.dm index 10773784d0fd..b53427503639 100644 --- a/code/game/objects/items/melee/dualenergy.dm +++ b/code/game/objects/items/melee/dualenergy.dm @@ -19,6 +19,8 @@ var/sword_color = "green" var/hacked = FALSE var/list/possible_colors = list("red", "blue", "green", "purple", "yellow") + var/impale_flavor_text "twirl" + var/hack_flavor_text = "" /obj/item/melee/duelenergy/Initialize() . = ..() @@ -69,6 +71,24 @@ STOP_PROCESSING(SSobj, src) set_light_on(FALSE) +/obj/item/melee/duelenergy/attackby(obj/item/W, mob/user, params) + if(W.tool_behaviour == TOOL_MULTITOOL) + if(!hacked) + hacked = TRUE + to_chat(user, "[hack_flavor_text]") + sword_color = "rainbow" + update_appearance() + else + to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.") + else + return ..() + +/obj/item/melee/duelenergy/attack(mob/target, mob/living/carbon/human/user) + ..() + if(HAS_TRAIT(src, TRAIT_WIELDED) && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) + impale(user) + return + /obj/item/melee/duelenergy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(HAS_TRAIT(src, TRAIT_WIELDED)) return ..() @@ -90,38 +110,7 @@ icon_state = HAS_TRAIT(src, TRAIT_WIELDED) ? "[base_icon_state][sword_color]" : base_icon_state return ..() -/* - * Double-Bladed Energy Swords - Cheridan - */ -/obj/item/melee/duelenergy/saber - icon_state = "dualsaber" - base_icon_state = "dualsaber" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - name = "double-bladed energy sword" - desc = "For when simply killing someone isn't enough." - w_class = WEIGHT_CLASS_SMALL - light_range = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD - -/obj/item/melee/duelenergy/saber/attack(mob/target, mob/living/carbon/human/user) - ..() - if(HAS_TRAIT(src, TRAIT_WIELDED) && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) - impale(user) - return - if(HAS_TRAIT(src, TRAIT_WIELDED) && prob(50)) - INVOKE_ASYNC(src, PROC_REF(jedi_spin), user) - -/obj/item/melee/duelenergy/saber/proc/jedi_spin(mob/living/user) - dance_rotate(user, CALLBACK(user, TYPE_PROC_REF(/mob, dance_flip))) - -/obj/item/melee/duelenergy/saber/proc/impale(mob/living/user) - to_chat(user, "You twirl around a bit before losing your balance and impaling yourself on [src].") - if(HAS_TRAIT(src, TRAIT_WIELDED)) - user.take_bodypart_damage(20,25,check_armor = TRUE) - else - user.adjustStaminaLoss(25) - -/obj/item/melee/duelenergy/saber/ignition_effect(atom/A, mob/user) +/obj/item/melee/duelenergy/ignition_effect(atom/A, mob/user) // same as /obj/item/melee/transforming/energy, mostly if(!HAS_TRAIT(src, TRAIT_WIELDED)) return "" @@ -133,8 +122,25 @@ . = "[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process." playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) add_fingerprint(user) - // Light your candles while spinning around the room - INVOKE_ASYNC(src, PROC_REF(jedi_spin), user) + +/obj/item/melee/duelenergy/proc/impale(mob/living/user) + to_chat(user, "You [impale_flavor_text] around a bit before losing your balance and impaling yourself on [src].") + if(HAS_TRAIT(src, TRAIT_WIELDED)) + user.take_bodypart_damage(20,25,check_armor = TRUE) + else + user.adjustStaminaLoss(25) +/* + * Double-Bladed Energy Swords - Cheridan + */ +/obj/item/melee/duelenergy/saber + name = "double-bladed energy sword" + desc = "For when simply killing someone isn't enough." + icon_state = "dualsaber" + base_icon_state = "dualsaber" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + w_class = WEIGHT_CLASS_SMALL + light_range = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD /obj/item/melee/duelenergy/saber/green possible_colors = list("green") @@ -151,63 +157,20 @@ /obj/item/melee/duelenergy/saber/yellow possible_colors = list("yellow") -/obj/item/melee/duelenergy/saber/attackby(obj/item/W, mob/user, params) - if(W.tool_behaviour == TOOL_MULTITOOL) - if(!hacked) - hacked = TRUE - to_chat(user, "2XRNBW_ENGAGE") - sword_color = "rainbow" - update_appearance() - else - to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.") - else - return ..() - /* * Energy Halberds - TetraZeta, Imaginos and Zevo. */ /obj/item/melee/duelenergy/halberd + name = "energy halberd" + desc = "For when a normal halberd just isnt enough." icon_state = "halberd" - base_icon_state = "halberd" - icon = 'icons/obj/weapon/energy.dmi' + base_icon_state = "halberd"' lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "energy halberd" - desc = "For when a normal halberd just isnt enough." w_class = WEIGHT_CLASS_BULKY light_range = 4 - -/obj/item/melee/duelenergy/halberd/attack(mob/target, mob/living/carbon/human/user) - ..() - if(HAS_TRAIT(src, TRAIT_WIELDED) && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) - impale(user) - return - -/obj/item/melee/duelenergy/halberd/proc/impale(mob/living/user) - to_chat(user, "You swing around a bit before losing your balance and impaling yourself on [src].") - if(HAS_TRAIT(src, TRAIT_WIELDED)) - user.take_bodypart_damage(20,25,check_armor = TRUE) - else - user.adjustStaminaLoss(25) - - -/obj/item/melee/duelenergy/halberd/IsReflect() - if(HAS_TRAIT(src, TRAIT_WIELDED)) - return 1 - -/obj/item/melee/duelenergy/halberd/ignition_effect(atom/A, mob/user) - // same as /obj/item/melee/transforming/energy, mostly - if(!HAS_TRAIT(src, TRAIT_WIELDED)) - return "" - var/in_mouth = "" - if(iscarbon(user)) - var/mob/living/carbon/C = user - if(C.wear_mask) - in_mouth = ", barely missing [user.p_their()] nose" - . = "[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process." - playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) - add_fingerprint(user) - + impale_flavor_text = "swing" + hack_flavor_text = "HLBRDRNBW_ENGAGE" /obj/item/melee/duelenergy/halberd/green possible_colors = list("green") @@ -224,14 +187,3 @@ /obj/item/melee/duelenergy/halberd/yellow possible_colors = list("yellow") -/obj/item/melee/duelenergy/halberd/attackby(obj/item/W, mob/user, params) - if(W.tool_behaviour == TOOL_MULTITOOL) - if(!hacked) - hacked = TRUE - to_chat(user, "HLBRDRNBW_ENGAGE") - sword_color = "rainbow" - update_appearance() - else - to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.") - else - return ..() From 28fcdaf268c75fef0d2eb14731e8f1bc79ce120d Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 30 Sep 2024 16:56:49 -0500 Subject: [PATCH 098/102] few things broke. those are fixed now --- code/datums/components/melee/charged.dm | 2 +- code/game/objects/items/melee/charged.dm | 87 --------------------- code/game/objects/items/melee/dualenergy.dm | 4 +- code/game/objects/items/toys.dm | 2 +- shiptest.dme | 3 + 5 files changed, 7 insertions(+), 91 deletions(-) delete mode 100644 code/game/objects/items/melee/charged.dm diff --git a/code/datums/components/melee/charged.dm b/code/datums/components/melee/charged.dm index 27ecac223930..2319977a4a0d 100644 --- a/code/datums/components/melee/charged.dm +++ b/code/datums/components/melee/charged.dm @@ -27,7 +27,7 @@ list/attack_verb_on, inhand_icon_change = TRUE, _allowed_cells = list(), - _preload_cell_type = /obj/item/stock_parts/cell/melee, + _preload_cell_type = /obj/item/stock_parts/cell, _cell_hit_cost = 1000, _can_remove_cell = FALSE, _no_cell_icon = FALSE diff --git a/code/game/objects/items/melee/charged.dm b/code/game/objects/items/melee/charged.dm deleted file mode 100644 index 32a536108a5d..000000000000 --- a/code/game/objects/items/melee/charged.dm +++ /dev/null @@ -1,87 +0,0 @@ -/obj/item/melee/charged - force = 0 - var/active_force = 10 - - var/obj/item/stock_parts/cell/cell - var/allowed_cells = list() - var/preload_cell_type = /obj/item/stock_parts/cell/melee //if not empty the sabre starts with this type of cell - var/cell_hit_cost = 1000 - var/activate_sound = "sparks" - -/obj/item/melee/charged/Initialize() - . = ..() - if(preload_cell_type) - if(preload_cell_type in allowed_cells) - cell = new preload_cell_type(src) - -/obj/item/melee/charged/ComponentInitialize() - AddComponent( \ - /datum/component/transforming, \ - force_on = active_force, \ - ) - RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) - -/obj/item/melee/charged/Destroy() - if(cell) - QDEL_NULL(cell) - return ..() - -/obj/item/melee/charged/proc/on_transform() - SIGNAL_HANDLER - - playsound(src, activate_sound, 75, TRUE, -1) - -/obj/item/melee/charged/proc/deductcharge(chrgdeductamt) - if(cell) - //Note this value returned is significant, as it will determine - //if a stun is applied or not - . = cell.use(chrgdeductamt) - if(turned_on && cell.charge < cell_hit_cost) - //we're below minimum, turn off - SEND_SIGNAL(src, COSMIG_ITEM_FORCE_TRANSFORM, src) - update_appearance() - playsound(src, activate_sound, 75, TRUE, -1) - -/obj/item/melee/charged/update_icon_state() - if(turned_on) - icon_state = "[initial(icon_state)]_on" - return ..() - if(!cell) - icon_state = "[initial(icon_state)]_nocell" - return ..() - icon_state = "[initial(icon_state)]" - return ..() - -/obj/item/melee/charged/examine(mob/user) - . = ..() - if(cell) - . += span_notice("\The [src] is [round(cell.percent())]% charged.") - else - . += span_warning("\The [src] does not have a power source installed.") - -/obj/item/melee/charged/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/stock_parts/cell)) - var/obj/item/stock_parts/cell/C = W - if(cell) - to_chat(user, span_notice("[src] already has a cell!")) - else - if(C.maxcharge < cell_hit_cost) - to_chat(user, span_notice("[src] requires a higher capacity cell.")) - return - if(!user.transferItemToLoc(W, src)) - return - cell = W - to_chat(user, span_notice("You install a cell in [src].")) - update_appearance() - else - return ..() - -/obj/item/melee/charged/screwdriver_act(mob/living/user, obj/item/I) - . = ..() - if(cell && can_remove_cell) - cell.update_appearance() - cell.forceMove(get_turf(src)) - cell = null - to_chat(user, span_notice("You remove the cell from [src].")) - turned_on = FALSE - update_appearance() diff --git a/code/game/objects/items/melee/dualenergy.dm b/code/game/objects/items/melee/dualenergy.dm index b53427503639..7776b078f13e 100644 --- a/code/game/objects/items/melee/dualenergy.dm +++ b/code/game/objects/items/melee/dualenergy.dm @@ -19,7 +19,7 @@ var/sword_color = "green" var/hacked = FALSE var/list/possible_colors = list("red", "blue", "green", "purple", "yellow") - var/impale_flavor_text "twirl" + var/impale_flavor_text = "twirl" var/hack_flavor_text = "" /obj/item/melee/duelenergy/Initialize() @@ -164,7 +164,7 @@ name = "energy halberd" desc = "For when a normal halberd just isnt enough." icon_state = "halberd" - base_icon_state = "halberd"' + base_icon_state = "halberd" lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' w_class = WEIGHT_CLASS_BULKY diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index ff8146f3632d..6599b34d30e4 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -307,7 +307,7 @@ var/obj/item/melee/duelenergy/saber/toy/newSaber = new /obj/item/melee/duelenergy/saber/toy(user.loc) if(hacked) // That's right, we'll only check the "original" "sword". newSaber.hacked = TRUE - newSaber.saber_color = "rainbow" + newSaber.sword_color = "rainbow" qdel(W) qdel(src) else if(W.tool_behaviour == TOOL_MULTITOOL) diff --git a/shiptest.dme b/shiptest.dme index c137712a4aee..2d47741e5703 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1318,6 +1318,9 @@ #include "code\game\objects\items\implants\implantchair.dm" #include "code\game\objects\items\implants\implanter.dm" #include "code\game\objects\items\implants\implantpad.dm" +#include "code\game\objects\items\implants\implantuplink.dm" +#include "code\game\objects\items\melee\axe.dm" +#include "code\game\objects\items\melee\chainsaw.dm" #include "code\game\objects\items\melee\dualenergy.dm" #include "code\game\objects\items\melee\energy.dm" #include "code\game\objects\items\melee\knife.dm" From 78b3f4ec3d28d70b08b09928b585c3556a132d1f Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 30 Sep 2024 17:44:40 -0500 Subject: [PATCH 099/102] yea --- code/game/objects/items/melee/dualenergy.dm | 1 - .../objects/items/melee/{misc.dm => melee.dm} | 118 +++++++++++++++++ code/game/objects/items/melee/sword.dm | 30 ++++- code/game/objects/items/melee/weaponry.dm | 119 ------------------ code/game/objects/items/shields.dm | 35 +++--- shiptest.dme | 3 +- 6 files changed, 164 insertions(+), 142 deletions(-) rename code/game/objects/items/melee/{misc.dm => melee.dm} (63%) delete mode 100644 code/game/objects/items/melee/weaponry.dm diff --git a/code/game/objects/items/melee/dualenergy.dm b/code/game/objects/items/melee/dualenergy.dm index 7776b078f13e..7b0546b86915 100644 --- a/code/game/objects/items/melee/dualenergy.dm +++ b/code/game/objects/items/melee/dualenergy.dm @@ -186,4 +186,3 @@ /obj/item/melee/duelenergy/halberd/yellow possible_colors = list("yellow") - diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/melee.dm similarity index 63% rename from code/game/objects/items/melee/misc.dm rename to code/game/objects/items/melee/melee.dm index 13d4ac99fe18..89f8ad44c07a 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/melee.dm @@ -195,3 +195,121 @@ bug.death(1) else qdel(target) + +/obj/item/wirerod + name = "wired rod" + desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit." + icon = 'icons/obj/weapon/spear.dmi' + icon_state = "wiredrod" + item_state = "rods" + flags_1 = CONDUCT_1 + force = 9 + throwforce = 10 + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list(/datum/material/iron=1150, /datum/material/glass=75) + attack_verb = list("hit", "bludgeoned", "whacked", "bonked") + +/obj/item/wirerod/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/shard)) + var/obj/item/melee/spear/S = new /obj/item/melee/spear + + remove_item_from_storage(user) + if (!user.transferItemToLoc(I, S)) + return + S.CheckParts(list(I)) + qdel(src) + + user.put_in_hands(S) + to_chat(user, "You fasten the glass shard to the top of the rod with the cable.") + + else if(istype(I, /obj/item/assembly/igniter) && !(HAS_TRAIT(I, TRAIT_NODROP))) + var/obj/item/melee/baton/cattleprod/P = new /obj/item/melee/baton/cattleprod + + remove_item_from_storage(user) + + to_chat(user, "You fasten [I] to the top of the rod with the cable.") + + qdel(I) + qdel(src) + + user.put_in_hands(P) + else + return ..() + +/obj/item/throwing_star + name = "throwing star" + desc = "An ancient weapon still used to this day, due to its ease of lodging itself into its victim's body parts." + icon_state = "throwingstar" + item_state = "eshield0" + lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' + force = 2 + throwforce = 20 //20 + 2 (WEIGHT_CLASS_SMALL) * 4 (EMBEDDED_IMPACT_PAIN_MULTIPLIER) = 28 damage on hit due to guaranteed embedding + throw_speed = 4 + embedding = list("pain_mult" = 4, "embed_chance" = 100, "fall_chance" = 0, "embed_chance_turf_mod" = 15) + armour_penetration = 40 + + w_class = WEIGHT_CLASS_SMALL + sharpness = IS_SHARP + custom_materials = list(/datum/material/iron=500, /datum/material/glass=500) + resistance_flags = FIRE_PROOF + +/obj/item/throwing_star/stamina + name = "shock throwing star" + desc = "An aerodynamic disc designed to cause excruciating pain when stuck inside fleeing targets, hopefully without causing fatal harm." + throwforce = 5 + embedding = list("pain_chance" = 5, "embed_chance" = 100, "fall_chance" = 0, "jostle_chance" = 10, "pain_stam_pct" = 0.8, "jostle_pain_mult" = 3) + +/obj/item/throwing_star/toy + name = "toy throwing star" + desc = "An aerodynamic disc strapped with adhesive for sticking to people, good for playing pranks and getting yourself killed by security." + sharpness = IS_BLUNT + force = 0 + throwforce = 0 + embedding = list("pain_mult" = 0, "jostle_pain_mult" = 0, "embed_chance" = 100, "fall_chance" = 0) + +/obj/item/throwing_star/magspear + name = "magnetic spear" + desc = "A reusable spear that is typically loaded into kinetic spearguns." + icon = 'icons/obj/ammo_bullets.dmi' + icon_state = "magspear" + throwforce = 25 //kills regular carps in one hit + force = 10 + throw_range = 0 //throwing these invalidates the speargun + attack_verb = list("stabbed", "ripped", "gored", "impaled") + embedding = list("pain_mult" = 8, "embed_chance" = 100, "fall_chance" = 0, "impact_pain_mult" = 15) //55 damage+embed on hit + +/obj/item/mounted_chainsaw + name = "mounted chainsaw" + desc = "A chainsaw that has replaced your arm." + icon_state = "chainsaw_on" + item_state = "mounted_chainsaw" + lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' + item_flags = ABSTRACT | DROPDEL + w_class = WEIGHT_CLASS_HUGE + force = 24 + throwforce = 0 + throw_range = 0 + throw_speed = 0 + sharpness = IS_SHARP + attack_verb = list("sawed", "torn", "cut", "chopped", "diced") + hitsound = 'sound/weapons/chainsawhit.ogg' + tool_behaviour = TOOL_SAW + toolspeed = 1 + +/obj/item/mounted_chainsaw/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) + +/obj/item/mounted_chainsaw/Destroy() + var/obj/item/bodypart/part + new /obj/item/chainsaw(get_turf(src)) + if(iscarbon(loc)) + var/mob/living/carbon/holder = loc + var/index = holder.get_held_index_of_item(src) + if(index) + part = holder.hand_bodyparts[index] + . = ..() + if(part) + part.drop_limb() diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 888d5104239f..b81a3ecba372 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -27,7 +27,7 @@ _stamina_constant = self_stam_const, \ _stamina_coefficient = self_stam_coef, \ _parryable_attack_types = NON_PROJECTILE_ATTACKS, \ - _riposte = riposte, \ + _riposte = riposte, \ _requires_activation = parry_transformed, \ ) @@ -36,7 +36,7 @@ if(attack_type == PROJECTILE_ATTACK) final_block_chance = projectile_block_chance //Don't bring a sword to a gunfight return ..() - + /obj/item/melee/sword/claymore name = "claymore" desc = "What are you standing around staring at this for? Get to killing!" @@ -80,7 +80,31 @@ /obj/item/melee/sword/mass/ComponentInitialize() . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=20, force_wielded=22, icon_wielded="[base_icon_state]1") + AddComponent(/datum/component/two_handed, force_unwielded = 20, force_wielded = 22, icon_wielded = "[base_icon_state]_w") + +/obj/item/melee/sword/mass/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + . = ..() + if(.) + on_block(owner, hitby, attack_text, damage, attack_type) + +/obj/item/melee/sword/mass/proc/on_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) + if (obj_integrity <= damage) + var/turf/T = get_turf(owner) + T.visible_message("[hitby] destroys [src]!") + qdel(src) + return FALSE + take_damage(damage) + +/obj/item/melee/sword/mass/examine(mob/user) + . = ..() + var/healthpercent = round((obj_integrity/max_integrity) * 100, 1) + switch(healthpercent) + if(50 to 99) + . += "It looks slightly damaged." + if(25 to 50) + . += "It appears heavily damaged." + if(0 to 25) + . += "It's falling apart!" /obj/item/melee/sword/katana name = "katana" diff --git a/code/game/objects/items/melee/weaponry.dm b/code/game/objects/items/melee/weaponry.dm deleted file mode 100644 index 11c1b118570b..000000000000 --- a/code/game/objects/items/melee/weaponry.dm +++ /dev/null @@ -1,119 +0,0 @@ - - -/obj/item/wirerod - name = "wired rod" - desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit." - icon = 'icons/obj/weapon/spear.dmi' - icon_state = "wiredrod" - item_state = "rods" - flags_1 = CONDUCT_1 - force = 9 - throwforce = 10 - w_class = WEIGHT_CLASS_NORMAL - custom_materials = list(/datum/material/iron=1150, /datum/material/glass=75) - attack_verb = list("hit", "bludgeoned", "whacked", "bonked") - -/obj/item/wirerod/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/shard)) - var/obj/item/melee/spear/S = new /obj/item/melee/spear - - remove_item_from_storage(user) - if (!user.transferItemToLoc(I, S)) - return - S.CheckParts(list(I)) - qdel(src) - - user.put_in_hands(S) - to_chat(user, "You fasten the glass shard to the top of the rod with the cable.") - - else if(istype(I, /obj/item/assembly/igniter) && !(HAS_TRAIT(I, TRAIT_NODROP))) - var/obj/item/melee/baton/cattleprod/P = new /obj/item/melee/baton/cattleprod - - remove_item_from_storage(user) - - to_chat(user, "You fasten [I] to the top of the rod with the cable.") - - qdel(I) - qdel(src) - - user.put_in_hands(P) - else - return ..() - -/obj/item/throwing_star - name = "throwing star" - desc = "An ancient weapon still used to this day, due to its ease of lodging itself into its victim's body parts." - icon_state = "throwingstar" - item_state = "eshield0" - lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - force = 2 - throwforce = 20 //20 + 2 (WEIGHT_CLASS_SMALL) * 4 (EMBEDDED_IMPACT_PAIN_MULTIPLIER) = 28 damage on hit due to guaranteed embedding - throw_speed = 4 - embedding = list("pain_mult" = 4, "embed_chance" = 100, "fall_chance" = 0, "embed_chance_turf_mod" = 15) - armour_penetration = 40 - - w_class = WEIGHT_CLASS_SMALL - sharpness = IS_SHARP - custom_materials = list(/datum/material/iron=500, /datum/material/glass=500) - resistance_flags = FIRE_PROOF - -/obj/item/throwing_star/stamina - name = "shock throwing star" - desc = "An aerodynamic disc designed to cause excruciating pain when stuck inside fleeing targets, hopefully without causing fatal harm." - throwforce = 5 - embedding = list("pain_chance" = 5, "embed_chance" = 100, "fall_chance" = 0, "jostle_chance" = 10, "pain_stam_pct" = 0.8, "jostle_pain_mult" = 3) - -/obj/item/throwing_star/toy - name = "toy throwing star" - desc = "An aerodynamic disc strapped with adhesive for sticking to people, good for playing pranks and getting yourself killed by security." - sharpness = IS_BLUNT - force = 0 - throwforce = 0 - embedding = list("pain_mult" = 0, "jostle_pain_mult" = 0, "embed_chance" = 100, "fall_chance" = 0) - -/obj/item/throwing_star/magspear - name = "magnetic spear" - desc = "A reusable spear that is typically loaded into kinetic spearguns." - icon = 'icons/obj/ammo_bullets.dmi' - icon_state = "magspear" - throwforce = 25 //kills regular carps in one hit - force = 10 - throw_range = 0 //throwing these invalidates the speargun - attack_verb = list("stabbed", "ripped", "gored", "impaled") - embedding = list("pain_mult" = 8, "embed_chance" = 100, "fall_chance" = 0, "impact_pain_mult" = 15) //55 damage+embed on hit - -/obj/item/mounted_chainsaw - name = "mounted chainsaw" - desc = "A chainsaw that has replaced your arm." - icon_state = "chainsaw_on" - item_state = "mounted_chainsaw" - lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' - item_flags = ABSTRACT | DROPDEL - w_class = WEIGHT_CLASS_HUGE - force = 24 - throwforce = 0 - throw_range = 0 - throw_speed = 0 - sharpness = IS_SHARP - attack_verb = list("sawed", "torn", "cut", "chopped", "diced") - hitsound = 'sound/weapons/chainsawhit.ogg' - tool_behaviour = TOOL_SAW - toolspeed = 1 - -/obj/item/mounted_chainsaw/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) - -/obj/item/mounted_chainsaw/Destroy() - var/obj/item/bodypart/part - new /obj/item/chainsaw(get_turf(src)) - if(iscarbon(loc)) - var/mob/living/carbon/holder = loc - var/index = holder.get_held_index_of_item(src) - if(index) - part = holder.hand_bodyparts[index] - . = ..() - if(part) - part.drop_limb() diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 81484bc4e13e..ea691b9b3d4f 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -1,32 +1,23 @@ /obj/item/shield name = "shield" icon = 'icons/obj/shields.dmi' - block_chance = 50 - block_cooldown_time = 0 SECONDS - armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) - var/transparent = FALSE // makes beam projectiles pass through the shield - -/obj/item/shield/proc/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) - return TRUE - -/obj/item/shield/riot - name = "riot shield" - desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder." - icon_state = "riot" lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' + block_chance = 50 + block_cooldown_time = 0 SECONDS slot_flags = ITEM_SLOT_BACK force = 10 throwforce = 5 throw_speed = 2 throw_range = 3 w_class = WEIGHT_CLASS_BULKY - custom_materials = list(/datum/material/glass=7500, /datum/material/iron=1000) attack_verb = list("shoved", "bashed") + armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) var/cooldown = 0 //shield bash cooldown. based on world.time - transparent = TRUE - max_integrity = 75 - material_flags = MATERIAL_NO_EFFECTS + var/transparent = FALSE // makes beam projectiles pass through the shield + +/obj/item/shield/proc/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) + return TRUE /obj/item/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(transparent && (hitby.pass_flags & PASSGLASS)) @@ -35,10 +26,20 @@ final_block_chance += 30 if(attack_type == LEAP_ATTACK) final_block_chance = 100 - . = .() + . = ..() if(.) on_shield_block(owner, hitby, attack_text, damage, attack_type) +/obj/item/shield/riot + name = "riot shield" + desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder." + icon_state = "riot" + custom_materials = list(/datum/material/glass=7500, /datum/material/iron=1000) + + transparent = TRUE + max_integrity = 75 + material_flags = MATERIAL_NO_EFFECT + /obj/item/shield/riot/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/melee/baton)) if(cooldown < world.time - 25) diff --git a/shiptest.dme b/shiptest.dme index 2d47741e5703..cddc81392f67 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1324,14 +1324,13 @@ #include "code\game\objects\items\melee\dualenergy.dm" #include "code\game\objects\items\melee\energy.dm" #include "code\game\objects\items\melee\knife.dm" -#include "code\game\objects\items\melee\misc.dm" +#include "code\game\objects\items\melee\melee.dm" #include "code\game\objects\items\melee\powerfist.dm" #include "code\game\objects\items\melee\spear.dm" #include "code\game\objects\items\melee\stunbaton.dm" #include "code\game\objects\items\melee\sword.dm" #include "code\game\objects\items\melee\teleprod.dm" #include "code\game\objects\items\melee\trickweapon.dm" -#include "code\game\objects\items\melee\weaponry.dm" #include "code\game\objects\items\robot\ai_upgrades.dm" #include "code\game\objects\items\robot\robot_items.dm" #include "code\game\objects\items\robot\robot_parts.dm" From 63852fa20679fe346240c735e00e0f270b97113b Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 30 Sep 2024 18:58:54 -0500 Subject: [PATCH 100/102] mass sword stuff... --- code/game/objects/items/melee/sword.dm | 32 +++++--- code/game/objects/items/shields.dm | 106 +++++++++++++------------ 2 files changed, 80 insertions(+), 58 deletions(-) diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index b81a3ecba372..56be7626f2e2 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -76,7 +76,9 @@ base_icon_state = "machete" force = 20 throwforce = 15 - max_integrity = 50 + max_integrity = 300 + integrity_failure = 0.50 + var/broken = FALSE /obj/item/melee/sword/mass/ComponentInitialize() . = ..() @@ -88,23 +90,35 @@ on_block(owner, hitby, attack_text, damage, attack_type) /obj/item/melee/sword/mass/proc/on_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) - if (obj_integrity <= damage) - var/turf/T = get_turf(owner) - T.visible_message("[hitby] destroys [src]!") - qdel(src) - return FALSE take_damage(damage) +/obj/item/melee/sword/mass/welder_act(mob/living/user, obj/item/I) + . = ..() + if(broken) + if(I.use_tool(src, user, 0, volume = 40)) + name = src::name + broken = FALSE + obj_integrity = max_integrity + return TRUE + +/obj/item/melee/sword/mass/obj_break(damage_flag) + . = ..() + if(!broken) + if(isliving(loc)) + loc.balloon_alert(loc, "[src] cracks!") + name = "broken [src::name]" + broken = TRUE + /obj/item/melee/sword/mass/examine(mob/user) . = ..() var/healthpercent = round((obj_integrity/max_integrity) * 100, 1) switch(healthpercent) if(50 to 99) - . += "It looks slightly damaged." + . += span_info("It looks slightly damaged.") if(25 to 50) - . += "It appears heavily damaged." + . += span_info("It appears heavily damaged.") if(0 to 25) - . += "It's falling apart!" + . += span_warning("It's falling apart!") /obj/item/melee/sword/katana name = "katana" diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index ea691b9b3d4f..8a83fa9f6ad9 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -1,3 +1,5 @@ +#define BATON_BASH_COOLDOWN (3 SECONDS) + /obj/item/shield name = "shield" icon = 'icons/obj/shields.dmi' @@ -13,13 +15,33 @@ w_class = WEIGHT_CLASS_BULKY attack_verb = list("shoved", "bashed") armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) - var/cooldown = 0 //shield bash cooldown. based on world.time - var/transparent = FALSE // makes beam projectiles pass through the shield - -/obj/item/shield/proc/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) - return TRUE + /// makes beam projectiles pass through the shield + var/transparent = FALSE + /// if the shield will break by sustaining damage + var/breakable_by_damage = TRUE + /// what the shield leaves behind when it breaks + var/shield_break_leftover = /obj/item/stack/sheet/mineral/wood + /// sound the shield makes when it breaks + var/shield_break_sound = 'sound/effects/bang.ogg' + /// baton bash cooldown + COOLDOWN_DECLARE(baton_bash) + /// is shield bashable? + var/is_bashable = TRUE + /// sound when a shield is bashed + var/shield_bash_sound = 'sound/effects/shieldbash.ogg' + +/obj/item/shield/examine(mob/user) + . = ..() + var/healthpercent = round((obj_integrity/max_integrity) * 100, 1) + switch(healthpercent) + if(50 to 99) + . += span_info("It looks slightly damaged.") + if(25 to 50) + . += span_info("It appears heavily damaged.") + if(0 to 25) + . += span_warning("It's falling apart!") -/obj/item/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) +/obj/item/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE) if(transparent && (hitby.pass_flags & PASSGLASS)) return FALSE if(attack_type == THROWN_PROJECTILE_ATTACK) @@ -28,7 +50,19 @@ final_block_chance = 100 . = ..() if(.) - on_shield_block(owner, hitby, attack_text, damage, attack_type) + on_shield_block(owner, hitby, attack_text, damage, attack_type, damage_type) + +/obj/item/shield/proc/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE) + if(!breakable_by_damage || (damage_type != BRUTE && damage_type != BURN)) + return TRUE + take_damage(damage) + +/obj/item/shield/obj_destruction(damage_flag) + playsound(src, shield_break_sound, 50) + new shield_break_leftover(get_turf(src)) + if(isliving(loc)) + loc.balloon_alert(loc, "shield broken!") + return ..() /obj/item/shield/riot name = "riot shield" @@ -38,14 +72,17 @@ transparent = TRUE max_integrity = 75 - material_flags = MATERIAL_NO_EFFECT + material_flags = MATERIAL_NO_EFFECTS + + shield_break_sound = 'sound/effects/glassbr3.ogg' + shield_break_leftover = /obj/item/shard /obj/item/shield/riot/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/melee/baton)) - if(cooldown < world.time - 25) - user.visible_message("[user] bashes [src] with [W]!") - playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, TRUE) - cooldown = world.time + if(COOLDOWN_FINISHED(src, baton_bash)) + user.visible_message(span_warning("[user] bashes [src] with [W]!")) + playsound(src, shield_bash_sound, 50, TRUE) + COOLDOWN_START(src, baton_bash, BATON_BASH_COOLDOWN) else if(istype(W, /obj/item/stack/sheet/mineral/titanium)) if (obj_integrity >= max_integrity) to_chat(user, "[src] is already in perfect condition.") @@ -57,31 +94,6 @@ else return ..() -/obj/item/shield/riot/examine(mob/user) - . = ..() - var/healthpercent = round((obj_integrity/max_integrity) * 100, 1) - switch(healthpercent) - if(50 to 99) - . += "It looks slightly damaged." - if(25 to 50) - . += "It appears heavily damaged." - if(0 to 25) - . += "It's falling apart!" - -/obj/item/shield/riot/proc/shatter(mob/living/carbon/human/owner) - playsound(owner, 'sound/effects/glassbr3.ogg', 100) - new /obj/item/shard((get_turf(src))) - -/obj/item/shield/riot/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) - if (obj_integrity <= damage) - var/turf/T = get_turf(owner) - T.visible_message("[hitby] destroys [src]!") - shatter(owner) - qdel(src) - return FALSE - take_damage(damage) - return ..() - /obj/item/shield/riot/roman name = "\improper Roman shield" desc = "Bears an inscription on the inside: \"Romanes venio domus\"." @@ -92,6 +104,8 @@ transparent = FALSE custom_materials = list(/datum/material/iron=8500) max_integrity = 65 + shield_break_leftover = /obj/item/stack/sheet/metal + shield_break_sound = 'sound/effects/grillehit.ogg' /obj/item/shield/riot/roman/fake desc = "Bears an inscription on the inside: \"Romanes venio domus\". It appears to be a bit flimsy." @@ -99,10 +113,6 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) max_integrity = 30 -/obj/item/shield/riot/roman/shatter(mob/living/carbon/human/owner) - playsound(owner, 'sound/effects/grillehit.ogg', 100) - new /obj/item/stack/sheet/metal(get_turf(src)) - /obj/item/shield/riot/buckler name = "wooden buckler" desc = "A medieval wooden buckler." @@ -116,10 +126,8 @@ transparent = FALSE max_integrity = 55 w_class = WEIGHT_CLASS_NORMAL - -/obj/item/shield/riot/buckler/shatter(mob/living/carbon/human/owner) - playsound(owner, 'sound/effects/bang.ogg', 50) - new /obj/item/stack/sheet/mineral/wood(get_turf(src)) + shield_break_leftover = /obj/item/stack/sheet/mineral/wood + shield_break_sound = 'sound/effects/bang.ogg' /obj/item/shield/riot/flash name = "strobe shield" @@ -201,6 +209,7 @@ throwforce = 3 throw_speed = 3 base_icon_state = "eshield" // [base_icon_state]1 for expanded, [base_icon_state]0 for contracted + breakable_by_damage = FALSE var/on_force = 10 var/on_throwforce = 8 var/on_throw_speed = 2 @@ -294,13 +303,12 @@ block_chance = 25 max_integrity = 70 w_class = WEIGHT_CLASS_BULKY + shield_break_leftover = /obj/item/stack/sheet/animalhide/goliath_hide + shield_break_sound = 'sound/effects/bang.ogg' /obj/item/shield/riot/goliath/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) if(isliving(hitby)) // If attacker is a simple mob. damage *= 0.5 . = ..() -/obj/item/shield/riot/goliath/shatter(mob/living/carbon/human/owner) - playsound(owner, 'sound/effects/bang.ogg', 50) - new /obj/item/stack/sheet/animalhide/goliath_hide(get_turf(src)) - qdel(src) +#undef BATON_BASH_COOLDOWN From 5f429b7a2d29a2c391998a3934cf196c48bc671b Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 30 Sep 2024 20:21:57 -0500 Subject: [PATCH 101/102] sound design --- code/game/objects/items/melee/axe.dm | 5 +++-- code/game/objects/items/melee/melee.dm | 16 ++++++++++++++++ code/game/objects/items/melee/powerfist.dm | 2 -- sound/weapons/melee/baton_hit.ogg | Bin 0 -> 8038 bytes sound/weapons/melee/blade_hit1.ogg | Bin 0 -> 15244 bytes sound/weapons/melee/blade_hit2.ogg | Bin 0 -> 14177 bytes sound/weapons/melee/blade_pickup.ogg | Bin 0 -> 12171 bytes sound/weapons/melee/blade_pickup2.ogg | Bin 0 -> 8591 bytes sound/weapons/melee/general_grip.ogg | Bin 0 -> 6058 bytes sound/weapons/melee/general_pickup.ogg | Bin 0 -> 6518 bytes sound/weapons/melee/genericblunt_hit.ogg | Bin 0 -> 8229 bytes sound/weapons/melee/hatchet_hit.ogg | Bin 0 -> 12644 bytes sound/weapons/melee/heavy_pickup.ogg | Bin 0 -> 8307 bytes sound/weapons/melee/heavyaxe_hit1.ogg | Bin 0 -> 11738 bytes sound/weapons/melee/heavyaxe_hit2.ogg | Bin 0 -> 13521 bytes sound/weapons/melee/heavyblade_hit.ogg | Bin 0 -> 12853 bytes sound/weapons/melee/heavyblunt_hit1.ogg | Bin 0 -> 11788 bytes sound/weapons/melee/heavyblunt_hit2.ogg | Bin 0 -> 10751 bytes sound/weapons/melee/heavyblunt_hit3.ogg | Bin 0 -> 17925 bytes sound/weapons/melee/heavyblunt_pickup.ogg | Bin 0 -> 6740 bytes sound/weapons/melee/knife_hit1.ogg | Bin 0 -> 11908 bytes sound/weapons/melee/knife_hit2.ogg | Bin 0 -> 12556 bytes sound/weapons/melee/knife_pickup1.ogg | Bin 0 -> 26371 bytes sound/weapons/melee/knife_pickup2.ogg | Bin 0 -> 21674 bytes sound/weapons/melee/pipe_hit.ogg | Bin 0 -> 8454 bytes sound/weapons/melee/plastic_slam.ogg | Bin 0 -> 9355 bytes sound/weapons/melee/powerfist_hit1.ogg | Bin 0 -> 10854 bytes sound/weapons/melee/powerfist_hit2.ogg | Bin 0 -> 12523 bytes sound/weapons/melee/powerfist_hit3.ogg | Bin 0 -> 9720 bytes sound/weapons/melee/powerfist_pickup.ogg | Bin 0 -> 8979 bytes sound/weapons/melee/punch_1.ogg | Bin 0 -> 30955 bytes sound/weapons/melee/punch_2.ogg | Bin 0 -> 27177 bytes sound/weapons/melee/punch_3.ogg | Bin 0 -> 27667 bytes sound/weapons/melee/ripper_hit1.ogg | Bin 0 -> 16100 bytes sound/weapons/melee/ripper_hit2.ogg | Bin 0 -> 15014 bytes sound/weapons/melee/ripper_hit3.ogg | Bin 0 -> 14311 bytes sound/weapons/melee/saw_loop.ogg | Bin 0 -> 8772 bytes sound/weapons/melee/saw_start.ogg | Bin 0 -> 21772 bytes sound/weapons/melee/shishkebab_hit1.ogg | Bin 0 -> 13612 bytes sound/weapons/melee/shishkebab_hit2.ogg | Bin 0 -> 13381 bytes sound/weapons/melee/slam.ogg | Bin 0 -> 11505 bytes sound/weapons/melee/stab_hit.ogg | Bin 0 -> 12398 bytes sound/weapons/melee/wooden_hit1.ogg | Bin 0 -> 8038 bytes sound/weapons/melee/wooden_hit2.ogg | Bin 0 -> 9531 bytes sound/weapons/melee/wooden_hit3.ogg | Bin 0 -> 7862 bytes sound/weapons/melee/wooden_pickup.ogg | Bin 0 -> 7674 bytes 46 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 sound/weapons/melee/baton_hit.ogg create mode 100644 sound/weapons/melee/blade_hit1.ogg create mode 100644 sound/weapons/melee/blade_hit2.ogg create mode 100644 sound/weapons/melee/blade_pickup.ogg create mode 100644 sound/weapons/melee/blade_pickup2.ogg create mode 100644 sound/weapons/melee/general_grip.ogg create mode 100644 sound/weapons/melee/general_pickup.ogg create mode 100644 sound/weapons/melee/genericblunt_hit.ogg create mode 100644 sound/weapons/melee/hatchet_hit.ogg create mode 100644 sound/weapons/melee/heavy_pickup.ogg create mode 100644 sound/weapons/melee/heavyaxe_hit1.ogg create mode 100644 sound/weapons/melee/heavyaxe_hit2.ogg create mode 100644 sound/weapons/melee/heavyblade_hit.ogg create mode 100644 sound/weapons/melee/heavyblunt_hit1.ogg create mode 100644 sound/weapons/melee/heavyblunt_hit2.ogg create mode 100644 sound/weapons/melee/heavyblunt_hit3.ogg create mode 100644 sound/weapons/melee/heavyblunt_pickup.ogg create mode 100644 sound/weapons/melee/knife_hit1.ogg create mode 100644 sound/weapons/melee/knife_hit2.ogg create mode 100644 sound/weapons/melee/knife_pickup1.ogg create mode 100644 sound/weapons/melee/knife_pickup2.ogg create mode 100644 sound/weapons/melee/pipe_hit.ogg create mode 100644 sound/weapons/melee/plastic_slam.ogg create mode 100644 sound/weapons/melee/powerfist_hit1.ogg create mode 100644 sound/weapons/melee/powerfist_hit2.ogg create mode 100644 sound/weapons/melee/powerfist_hit3.ogg create mode 100644 sound/weapons/melee/powerfist_pickup.ogg create mode 100644 sound/weapons/melee/punch_1.ogg create mode 100644 sound/weapons/melee/punch_2.ogg create mode 100644 sound/weapons/melee/punch_3.ogg create mode 100644 sound/weapons/melee/ripper_hit1.ogg create mode 100644 sound/weapons/melee/ripper_hit2.ogg create mode 100644 sound/weapons/melee/ripper_hit3.ogg create mode 100644 sound/weapons/melee/saw_loop.ogg create mode 100644 sound/weapons/melee/saw_start.ogg create mode 100644 sound/weapons/melee/shishkebab_hit1.ogg create mode 100644 sound/weapons/melee/shishkebab_hit2.ogg create mode 100644 sound/weapons/melee/slam.ogg create mode 100644 sound/weapons/melee/stab_hit.ogg create mode 100644 sound/weapons/melee/wooden_hit1.ogg create mode 100644 sound/weapons/melee/wooden_hit2.ogg create mode 100644 sound/weapons/melee/wooden_hit3.ogg create mode 100644 sound/weapons/melee/wooden_pickup.ogg diff --git a/code/game/objects/items/melee/axe.dm b/code/game/objects/items/melee/axe.dm index 6c81add449f7..13e47d448dc4 100644 --- a/code/game/objects/items/melee/axe.dm +++ b/code/game/objects/items/melee/axe.dm @@ -8,7 +8,8 @@ slot_flags = ITEM_SLOT_BACK attack_cooldown = HEAVY_WEAPON_CD attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") - hitsound = 'sound/weapons/bladeslice.ogg' + hitsound = list('sound/weapons/melee/heavyaxe_hit1.ogg', 'sound/weapons/melee/heavyaxe_hit2.ogg') + pickup_sound = 'sound/weapons/melee/heavy_pickup.ogg' sharpness = IS_SHARP max_integrity = 200 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) @@ -18,7 +19,7 @@ /obj/item/melee/axe/ComponentInitialize() . = ..() - AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools + AddComponent(/datum/component/butchering, 100, 80, 0 , 'sound/weapons/bladeslice.ogg') //axes are not known for being precision butchering tools AddComponent(/datum/component/two_handed, force_unwielded = force, force_wielded = force_wielded, icon_wielded="[base_icon_state]_w") /obj/item/melee/axe/update_icon_state() diff --git a/code/game/objects/items/melee/melee.dm b/code/game/objects/items/melee/melee.dm index 89f8ad44c07a..325f30c62479 100644 --- a/code/game/objects/items/melee/melee.dm +++ b/code/game/objects/items/melee/melee.dm @@ -196,6 +196,22 @@ else qdel(target) +/obj/item/melee/brass_knuckles + name = "spiked brass knuckles" + desc = "spikey." + icon_state = "powerfist" + item_state = "powerfist" + hitsound = 'sound/weapons/melee/stab_hit.ogg' + pickup_sound = 'sound/weapons/melee/general_pickup.ogg' + flags_1 = CONDUCT_1 + attack_verb = list("punched", "jabed", "clocked", "nailed", "bludgeoned", "whacked", "bonked") + force = 20 + throwforce = 10 + throw_range = 7 + w_class = WEIGHT_CLASS_SMALL + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 40) + resistance_flags = FIRE_PROOF + /obj/item/wirerod name = "wired rod" desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit." diff --git a/code/game/objects/items/melee/powerfist.dm b/code/game/objects/items/melee/powerfist.dm index 13d1d10230f0..c89f056cbb3f 100644 --- a/code/game/objects/items/melee/powerfist.dm +++ b/code/game/objects/items/melee/powerfist.dm @@ -3,8 +3,6 @@ desc = "A metal gauntlet with a piston-powered ram ontop for that extra 'ompfh' in your punch." icon_state = "powerfist" item_state = "powerfist" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' flags_1 = CONDUCT_1 attack_verb = list("whacked", "fisted", "power-punched") force = 20 diff --git a/sound/weapons/melee/baton_hit.ogg b/sound/weapons/melee/baton_hit.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c27f2c1471956433cebeb0e92ab23a2c307e8480 GIT binary patch literal 8038 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 J{vUVn{{pMrN{avh literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/blade_pickup.ogg b/sound/weapons/melee/blade_pickup.ogg new file mode 100644 index 0000000000000000000000000000000000000000..10998e0ff01f229ab25555a36c033447e3de74d1 GIT binary patch literal 12171 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 WZ2w=|qOETk--^FwB~_?UWBfl5kuClJ literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/general_grip.ogg b/sound/weapons/melee/general_grip.ogg new file mode 100644 index 0000000000000000000000000000000000000000..892de54f16a3c0890a87229bc99151bb5bbe3098 GIT binary patch literal 6058 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 QzmR&X`xXX%2MOE%0hGS`(EtDd literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/general_pickup.ogg b/sound/weapons/melee/general_pickup.ogg new file mode 100644 index 0000000000000000000000000000000000000000..53294457837d397b264ae994ba9866576c03b02a GIT binary patch literal 6518 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 S6!B`eY6Keqe$j(%|NjBC^vQPs literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/genericblunt_hit.ogg b/sound/weapons/melee/genericblunt_hit.ogg new file mode 100644 index 0000000000000000000000000000000000000000..43cc0c13373770925c6de8a6952066f05da13540 GIT binary patch literal 8229 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/heavy_pickup.ogg b/sound/weapons/melee/heavy_pickup.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b26f8043901e0cab2e128adcbf5cdef4daf0e848 GIT binary patch literal 8307 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 z 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/heavyblunt_hit1.ogg b/sound/weapons/melee/heavyblunt_hit1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d6f9f117993bb464b2f45909e0c2a3ca1038ca5b GIT binary patch literal 11788 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/heavyblunt_hit2.ogg b/sound/weapons/melee/heavyblunt_hit2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ed2356b3d433cacf6762debc79918aef16999a13 GIT binary patch literal 10751 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 {B8#WESBPZ||06t9wQ58CQhI3zk682y5`8a;)@ z)>2%TtcWQ`;*BbdKC<2xSIxyM9BjI^w={hfSw_R{__W6DrADiQHtM4O;V@jd=S{?Z zZs0KncZ0CLj#ZiP)iZ0tktM7bzR4`5sI(HR-f*{_>0wv%5fZ8ii?wvXsm-%=lj-of z#luUqiVTPv5aIV%MM?-;m`kJ-+Z8UdYlMHaYYATPY`<}kpg}jnX+IAY@0Dj<9O4`9 z9GiRT^)!o|+Ch9mv|#PGedhhP_0=eksc9)p4P13baZ<=uZ?Ki5S8Rl%9_>vQ5aI1T$;q0F`{`(l3PX_2T(!UDCl&wOurORL&6j{li4=gTt6(}4t=e2tnl zo`+2OO2RIf7;Z5bD#i4pyYch3zW&?&6E5LKV^tGxjwX{!yB0sLOm36Jvq%-RH*_?- zaQW5{Cv*lFpstgYB9YpkAdfF?YWqZYh11_SvbH{_t*UyfAt}hHwt9EKs#6Oknd5T@ zTi3}K(=}$P4c{j35(cG}YQ}iu`v6w7I&gjLHpc%6fv^~~tCX3F@D+SqVkl)T1n>TG z(Q$evS3fF0Ol5iflLnT5SRA*#9w9ccU)Rz`WSn4(k!4@1ZLUZ$BfUO8?1NFJ#V(}% z&cK8nT3ay?uG$v&-YBabN58#yi5~8lR>L?+F%i@$;Lqpi>g5+m7hkEO^3i+cky_toS^s-%Ten+g+2nZQ9G} zkkU%8(v7Nz7!oDn^3Gpx6n%`|1cImHINTL+$Hw@K`07oCDvdlR=0ad}Ms?YD`Ibx% zpX*YVtKAh9jz(VI_V1|)zyAI)gx7iLt2UbvsoQJVGqQNv1sn!gui5kC zt<-DLAMCx0nJrR67U2ic+>bK{xRgA%qYbX-=#NJpg}IsfP$pK=ZsE&rtm|pE*%a~v zL^+>v(jpZK)~`24LbT3^FcKx0Ry@-R6Vmvb#Y_^|ZwL>Wq;q>q4&u!-kiPfX{x{M*&sND7JK4*>7JgA( zd!Cwpj^?$i>40uwGaV&weSY>~zi)Bt{7C9~w|j5Ks)w{4MkT+I;LT5*Ujcu_C~edAkqDn?zjCF*#e8aA$2<8ss_(#!OBa0W z@%U^apfc(i>S5ia5VBR(;i*`y9AJr=!kNU#{SC@1gy!8M zm12n}F zZIH9>JHajpNY7eicq%PMqK)I0gtd&IralMU4ggWj7MK+1?ini zDUYh3A4I-SyPH;~Eqwe4xKD5^5Po)@rlr3Rq)^ycd+WpxXO4_)YCQkis~S6>+_P$T zWc@fXbB@~T;|qaa?vgYy&3zu`hT3peeqvtTV+Dq`Z2Qj6(uk1HvM17p(pd>xW1EKV z9I|oys><))#5G2dTzH5Vx!%9_+l=j$sxl1j9o!??{*YW_>ZP^PG9CSsFm>PT!KW?3 zF|K=uQm<3`2+0ZLepQM*NFU6}w}%5|U6eqMx5@2eq;hwtF+pR0=fRb_nWWIIO|t6#e~lb8!Jy<^q8?iYIDJt5yX2{Qu6SmH&$o34S5l~2l?K8uI056 ziOlX=#Hrg}5)zrS?J={idW4Nx$TK^|DWG`H3iE}s>u9KD^#H-=Q0uHoDh1}S3QG&T zZqZ}ZW*^G@H!SK@+@AfFQFP&;Kk+)h0V z#ob2d%fEnMdCexiQ(djk$|NJAXNTfstp-K|FT9^WlIEW$d1{8awy?JR-K(mD`5K~C zN_2BR13{1!e~lTU(yW0T5Xjf)!+9*h$Bc+>%F@#d%et{_p=ofeYA3-EcKW(ZYQ1a<}S{r()C*nQ}tdjxkn5@7cKIjwAO}QS=k%S)K zc8K(y-6=XP_tpN2dq**(k}etJ(jN~3(CWP@qhTLOzIVVg!^JRArYmx4o|AT@HAazo zPiF|_27dA-tU(`E$@TJ`k^2VE8`63;3Gf?`sx Y-gj{J69e2y@<@XL99LNk27vf~0TANnw*UYD literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/heavyblunt_hit3.ogg b/sound/weapons/melee/heavyblunt_hit3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..55bed7988aef17b5162f32a593c3bbd10c0d781c GIT binary patch literal 17925 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 DmB6KN literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/heavyblunt_pickup.ogg b/sound/weapons/melee/heavyblunt_pickup.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0a498c8817cfb8f1d5811f7cd8490f0dcc887334 GIT binary patch literal 6740 zcmai1c|26#`@gm+;&y4Jb4?@G0t)Q1>oUa5ZOYw4p9bc&`B%F^)&M7Y^|a7ptv zXokRrXZc8$o;{|JgA_i%1ppv9RpL498Ci|&fEEC7Rx0H!DCHf}F9@_1+Z6$000DrW z7!liRB2Vth*}s6>PguGlQzmth$aO4=%IZ+tjfEO141zlvN z)C=MGmwSK!CH+eZE%fC0y!2E0p(_1!OpNR#-8M>vPA`og*H^q5KcL4bjn9cYr5Os! zmBtIFpHluaD(|D4MUYs$0sZ>)SSxW*4&OpI3)h_jd15UD{c!bua3s4#w?(T@f}?SL zP-OQ;I#3@U zxo2t~%Z2jC@e!?SYOWzZKymH^w#sFHEaw3LScV9~2A28H?Gh|YJYYz%TNG zJUkLX`DRuuo!h`JQZxO%ih}>A|1ll3Bn@KD^T&`n@xW0{M&)%E^M9EM1sCjb zmFka`vyPK{QUJHTu5I6JG&W)6_|4K)#Bsv?m?!4gOv^DE&XJ07q+yU=tthWHG;Iof zq6j^=k@8<1E4^!?4FJ5i$*Z-=skO;l)GLrd7@JFu`rX0o$&3!M(r^#PAR1gGmo&{6982e*+zgdd~IV0RR9ExyJ~&b-cDM&fUJ% z-Lci(UKHt!{QsJcR%GSgRk5^IE~I<{r`X za;<9qxLNZ>NV*K@G$Ftew0r>erWAdX_KBW?BlQnH3m0uWGyEw4Ftc zxnWSQ+9>L((d0J=H>B}%ccdE;+j6&XF%HlA=tKGjA}f+ScwijE;C(GytgGzK|S zgr43&`G_UBBGEJMsOcj}>N<+Hp5iry4O}%ses`F_8c$$?C$VTBEDE*Z;8x^FEexK( zqNfXkQHjB{4V?)LY62Nd!=Pvh!JhX}Uh63n*vz@Y;1iy~Ug8O;jZ7bE;SvTl;~DIE z!~>l5p=QocVf{;toRJ_h>Zvx$6N@_GiK0&FOyF3^GyNi-bW^R)}Qf0dLF0*Ux zXV)Eg&Bq_T;Um3wUbkt!>577P$4HGtFo!jnU9N4|}h&zz*V{I>L9ObC9fi-9K!pK>d+2yZ5V+VRvzY!55W_{NEBr} z86JiY^DaMy$Jdt-LhB!#n(De&ozzd@~7$aqEx0aPOrPg3DdGj z9Db8P8ZKg#kU-=Q+2s+t$l7(m7*%l0@AXrlU zwH;~TE}C+jY(aY!q5a!}=Rx6n!9MF)Y9aOnHD!?+JVWoGd>WxNZIf>OX#2d~8^a`j z;R68i7y#hWsNxqnND&4ufmI>bKUb6I3SwNJyUKM~p8*XTH{*d7j_UKka0MU_htpy} zaRmq-aOAxghQlEuxBx&z53F0SDwXf*v9g6N%^d*J7mtJftPX!o3A8N-y-FmteX=QH zWLJlQk@5jK1R{ydWa9sDm>)p@>~cCf)bZ6s5{cPCA%j67kySe>ADQ5Q#2hBWw|hw) zWL40m%-%cT>tG0`+oIoq)xB$FyZ2fXvqSx7uO`1W8}OD_5HRJ^ZOn^7Xp0>W9kK(U z96*}J9#}fWd=D%mA7KZp!wG}s`YrfbJ!vkX#Hzgz4v=7DiSWR{Gtz%<|2`M+0ZcfiH{g-FPaJ;(_#3=t2g!IBgSK4NLbMB zEW~`MG+odDwCR@m-e7PEx^?SLwrFpG3CSCSV2Psh6sd;Eb%@mS#b zT^FPQ0Q91K1MaYYe&Dk}i~P8k4(Sj#Ck&zZ`fG=Nksv`!#WKq*Z z2bHaE=exW&m;Z`Dp5Rs1%x;51p}SA;hzCHSyMGFtAz3*dg3CCAmWfr6vE8Qc_gBnv$J;P)bTcJ|{gRDMLb1Qc6cxv`x%;Ii ztTvCxs42x}MbmDfJzo4i$H1HoIb9dW*t+@ksAv1!yGRD7_Kel(1C@PAkdrHvtT>6e z#1-9dbJB#Z1;*H?p-l6m#_FTxvXg+rWGd&j;^Z9(Mv>nZavgp-r(FHZ*Pof*_?0)3 zD$>8FG69Sa@2#B_9*+UzSv;jP=+~tQ^rs}1q%EfMcg(bSaQLAJ(vaBedsj z-g;NyO2yWEQ%LjNSmMUw!qVf1>$HZPv3yqm6KwXAyQhW2cYCIT_|7yuS#SB!xr~Y> z_a!_#W?mpaW#{#s{Mfwu@!2`@i}nxodt*~msj45&kXknA^P5DE`LX6SeW(Y(caOLnv47p$oSk-~KD?@8-grPesH3+GvToI$Pqyp6CxG z&zPPv$>GqeJuKk6ydggo5w(Fyr8)R|xY(o<-c}e|a!MN*WaaSqIw{0Bno#k}V;gk) zuiqXnID49$zqTaLv0r5Pmtk|=)|<*T#C<33wHqUuorYq;DQ!ZBGFztWta^92ERN_# zn{$hIR4RCJdmtpAtSpnXm#cI9P!9KRRS2Re^UF^{;%bS?H8`e~ypgS}Y$d^u{n}vC z)ePZ<8J!m`IPZ{}SMxs1fj2aqy)S=JF)vW`Isyzci60f*_$YiqT9dnG*MogD3D1`iMx$_z^kze-5o!dK*#A}b{M z5>+oca2Zh%wPP#FW~Q7$kBTEDcka}hh$90qdWSuC20q=j%iIUMF6i()pz`UU7Igo{ z+NzGq`~Dj&mwGCu7jV?)7Es6|%0W zK+f?-JGT(}1j~0! zv=CISM>jl4f#Py_G{r+^emar&6w{*S!UifKt;Kl2(0pKR1~?)(E`a@ZeJ^^aVCTE` zS;FPzM|!cRwRm#Nppg@ck#cFXeZ`tqgxPtxX);yiwebBb9%&B_8?*?ewH}+FztSJo z^Dfdw;iW^`)LXF~K7~s-nDmRQhu?=_MIv&aYFa#VmE$x>I|THxCEMA%gr4)fx_y0;OlXSxf4Puyv`}<`6-mU0ih2uh<^%hxuhpRFy zLlhj)NJF5xED6G?E=Srv8^lqLq8Kd&o>>=uujbRmKA>Wryw8kGOvaI zVqLC;L#XlPgGyzKI=QwS>sw1(y2696qU$790;=bGTvSt{_n+I=J0Wr<#aVr?@O|JQ zG+p=BGl@7u3$19qULmGoCrbW~i_0fNzBHe`J?vz=+i!Bz1Uk1f(fbJ3LoRgdKqdtr z>b)mbh=*}7Oo+}x3on~<7;=ZJXBPbc^sQsu=fZ_YU-Z1%BY3{PW$}T#0j@`r2>|ZY z*w~GAp`h9oWoDV{K2gOqlW~-O-D<)<_i5D+ADb@&r+!sQ#$|pxrdz$T{_G2880~x= ze9QdKbo6nZ+at6%O^EIgK+{Pi5a1I<=P(Zpg%Hq=B?#p-}{xji?r{>H`a zis;#tUkIC@QX?N@>^LluUj2skoR&iGjwft?aKL>@RG>!~&-pg2KHQ1kx^!LA)m~+v zLA$`qB87cKH!H<1j}Lb5UT;ozkCmN|J`B|actmR6wq<&(MsHpFY;vaquLsPoElxJP zVJ?;aZGuecUL)MzGS5ipq}*6ATZ|=U{p@RHhYZ_Gy7A83SiFA3hMxK6&T!w-p7!?z z3kEN9o{t~e)KzX23TNY&$V@5<4_z~ z$zm1krjicvnN9+me(vUs+4?fg813X1h5469v$Ez@==-u(@m?yL2{#^ymYBYQkMdt1 zc4LPWJ1q0gS@>52J4syCVz4~1f)rffHgCAXjo1kZf%v@DhDIg1>KWCV-t8~7KOPT! z`9w07*!GfgdfcMM2ut-l1b5JQSH7luM(Fp=+LF@e(ZaF5-TQq5H#`=2dK-El*t)G> zR6Qus6E{%gd)fBG;A6WRugGe?2|=U%*QA%=uDMx1m|DEjaD9q2fh{$ukZj#Ad-%Ga zOm;YdI+ea(Y};05phFnh(6x5%?9Q}bx8v^{`en#6(s+5r;O$Fg@J;^8^KUoqno6F2 z5YdOpFV~Q5O_Y1~+Cnj{O{c4&#w)wbI&CkH&5q;|{wty4t(8xKb7$7@*9uOGlzSc0 zUW;jmlSylAQ>Qcg9$3B5<fJNZyn>#&J;8~(jMQ7#($f#Eo9sRI7x%D=4x4Mh)@Jig z-a}`D**#%gG*7J?Ukcapnu9{B2Mg;h-*|XqHns&QdwkgpO981d-nE&+nmwl8TW-s_ zLdAG@XGf7i#ml^M&oRG#yim1qh^p~K6dW`W8HvDmCDCOQMY-TlMf6eM5yHh;ir(MG z$=mbkJN}Q7JHu$xz|ZkQVsZITJzj^3ec$UBLKpsW<|kSX+lr6-0Pv@I@!MN$8WpYX z2@XSnjQfRi2kwa!^D10ngFjseSP$i7BRF;hW}d+!)oh=ZS6?Ou-|&%?n^-u#J#!3j zOBqhRWuy4do*-ef1&1{#TrW{e*0Q{n%2*J^<0tpYU=KVySFW_1N-y0 zohb)auvtvcS1G~+n+&+A%n6>h)vse_2i_lMRrxf#coHqbT+YY?T}i0A?BSqO5yd~2OXY%^PEQ&b9*JzxIw`qd%e87Wz~o-x zU!RPojaHB3MPH2hsqZm>+z+rP?~s8|k%xEgMqu`*;`KCG|@A2^jK{a31@0CW%rhwe>xg# z;n$6O>fgiXYZ9I&cJ-d=iCN9c+~?LOyd2sk8by1{Gk?D@RI(o5A0EMdXR`xH?Qo;J zP!|NBSN~*qyr?KGPd|$V9)rbT2Cv!E(o=rMIAf+)^(8Owjoj}z6d)TMM!pjW;W%mH@{#JsiA^>Vh>YefsANW*e;X=lteZr8 zcvshw=rCIH<$3d4YBpB%Q91dMgb4?o;*x!jCOkxc1w2!_#u$AKE5~xg4 z$_Mu!rUXCQ#O+jBp~=$Kiu(QRX`tI2-iNBvWB}EB0K2%*v++;lKh5@Qt$mMV4 z3FeDb!)KPJvsoK`t`vC0Kxk+ymNw+!>7R8V?JSWo^GW*Z#n3yb<%s^|2$L!HSvdQ+ zal~8LNI(jFgKkGWrK{uVP-D;{xUVZQrIk1L^eZ2p=&LSnGGD{{nc}>;*Q}Dfin#R6 zqxYUFYxmIod`4sTasKxtY%GD$8W5O?Fm;;*mGG>tm!k2?sdM5yXpyb{ywQQ zYs8p$=}l)Kq!Tz^aOUlpk12H?z%~+peR$|Myd$d0PA> z2$mzg_okpC3W8Wsupafijpy8V@B8#V-23VM-u}(nS+i!%nwkHsnOU>J&d<*QfCB$M z8@m56GS9|dLKGnO;ME%H3Gm?;(U(sagE4%(r{;6Xvq_4XEQ zJWAGqMdZt4XRrfgym;Fj%GydLLc&n(su${@Rp(r8&;^rL`FN3hwhgf-o1IEW$T*}C zd$ZY0x`0ZAsNt%-Lk5#z(pJE^){>Lsb)hCAi@ApPwxKhK30X{m3Wxo4hHlOro2bBH zvja_Df=$v}vGF3Y6FjHwes<7MvQ0t&3jk25C74ubeByN|Kmh=FF(KnQAw$_9%gajo zw+c85C;;dPMO$T}2OII$Q<~P(X7)~JX7!w$K1UvYu${0}Z>epoG)7fkg)FuU>5V~% zxbgv55F!gg7Yg<{V{a3tby)soX9QwBGKlT2B2OO^nMlUg}3d<-e zJC89>4j3pGcv9Al_eX{c)mWC5WwKvkvmN`ah*$p^IRXH1@n|*!m+c(uN!WT8NMO)piGfBnkB4lTV`FnZnUoz1c^?$1>9(vV-hRC zStkC*j|)x@LdKhCVzF&G8CO{lK18f8hW>^VEZklo#)BL)%ZUF>{TyS=ml z7X3eli3J<%u$S)*!&`>q2eUM-E>f*;8jnsJ+iscJqiv@h%@0JFKWR3f&$fLKVLKn; zlR1b7DsC-Cp)MA+oNkcO|=DqRRK_Z0L|c7_nbz^YUKVg@@n~u0&+a2Ip3%X&B+2`(13F%kU-KhkmU=>s`v*EfLk8G zU5y6QZ*%|v8z5U8tq7)n^Z%`%j7muU+IITK%63C)`CPTse~r3FD=wvgN$J1U$iJ2U zZAtgH6c?)2AX^z zmwg~qk>UWr4t`RRrVH8b8g#pBa#R&*0m8pqiaQH!4R$B4G9aHo2e%q@NkE}r{seVg z$2PfiEl<^WeA7miov38|prS|Qs_V|%puw4;+#0;owy1vP80b%B~xaC>u_jeHhe>i=8w z)oqmdw$RZD3>mQhit2>TCaJbgPKOWVoG0X0f^}aHQAqzPx$@^$)`GkE5QXLh1{vUS z1*xsAtB_TSo;*ui(JUkBrDS_ob zzyz>j02gaU?89*OGi%UZV31Pbm`YwNxX7mT<#NWXh%#Oy25aTnY1`2To7uM=PY^49 z2NmE!4$Ag3i7N5i)v~8R6-fYaTmsK^_p*UixUxw?;&nK{h5*P6FINzNLci2}?|}R@ z5X$^YRVxtaLbcS&!A)a3wD}~}>Ed?5Hpc1?q`*9goKur#YN>xd2+VKT4n!W#tt5g| zFr@80zm30-Olxp{?W@~ONXG*piaF=6)z%(c09|zhE&vom<(w_`iL%0)+djhs12|MH zk1d3&K+~DT_-r-;bZ<;303b*uNVIH|1i%3O1epnjC*WB0K^(WaFq?lvmVdIpW&a~D zK0w<^A9%UC>;TE>{kVxZM}FFlX#T_%5WgZtl5^~;!&WF zRLmHFb-^r%?r$0Rx|GG0!;G{qz)pqSeRwkLqi6x=oda%fNn8rYtX ze`JiB@@%%%?`q)8$#1W4jES0zle9;f;0{GD7{)*Wd(atUCFoXKPzF);Mk2#N?Z%vh zLAiXdtWst6#T+_+9@~Z~s1=cBWle0AFl5w#cMrt&?I#x8aU^N(+~Or+9JUWMjiZ?2 z(axRFIEsI0t^gp05|@C`JY$vKK8M~$hMMe%Qb6DkCJ4_kfDga46fakJvRg7FGvU}Hds5U>{jcqpt=Y2LMlwvK^`hf6Ov zz5<|&!oh$Yd?0Wv7WjGs_!j-gu|2w)TGy2EN@{qrw)XW) zxm5+#Sc2C5+c$SnD9r>l5{XPyBk5>UcWGK*=rvEUi_Qsa zefn14;-;B3M{dvc+!V}YtaM8C35cF(_(qJpbLi7zDaSR3*qxhSadkMmTmy<6Z&KZ3 zJe8?a#Kk64B(F(uO+LBVZq92^0v-bnaD@{_eRM1RPsSys9po@E|>D$;a z()4rNpPdM-(6N3LsPRpy9vwUVp(DiBrB0fwoNMp`eOwUWlK%7ogv9j$o<~}ke2#^R z7k3bb(YKuXO8PoL ze^qRMFvQ$YRs#JMpe}#R3(?UoS`TSixAL1P$fdzcuZb9X*VW-8M0fYy$aYg5Jyg0L zv}m^D{2qY%G#WjBdd+?X_sWMqhjeuk2bX;A@P|%U2QAa-&p8;oG;4m${L_h3X15)6 zAcn+6464YD@r%k7G2FV8+IsPMI^;u5!iregOfl?ejsI&^tzd&mG*LN@p=wU(a^#JE z?SY%7oi9sCHB)YM!KdNP(2>a|I0hNO`QN^74>M%M+K6NH)j*D)d3iyE?ylL$>8 zO9&-%1t*r9#Ti_ADDdlcuLxWWm9v=q@>YlkUneZSVz*n_dk;w)i;}eJ=j0;&CX6Rq z@Ogj-%1jH5-6fZ4A^R}P=2IpL|%#g5GYYgSg>rhZGC78z2c=4qTROwE{`sReQy^^cwktW zl6Q#Cn1T#@Z+@)2f>Y8FmO%#VEkAAuAYtWJXgg0XD_}a5ozCp#9ZL0p3EWqczYfIp zzUVTzy54t)N13PuTC{WIxtM(jz#yI?TDDK@p|$EnLz!*gTONEt0`jng zjaWB6kT~N1DQfGTXuhEr$zC73^eb6iTwB3hv{Ot8H5O{Sf@TZ2aLc(KOJ?z9_X&DLgGLkEt*1Q?I-cG(SNKSMSx+>p>7%=_Nj@KD* z=g5u9+!fCp-JiMJz%JIqQKBq2?u~*G)z?t{*3Vx@oQ~*M@tdV(D$B>X+WQL49=xC* zMk9%4bI+UOG&9Q0&72%??Fm055q#YH;g5+1duB$Rbg6+mGaxJo&q)#sz(u(MTV#kR zmL93pk=Y^i*|1VWF&uHjlcA9O;&pD_$pKt*DlQV6^QZlApuHBwUS%GBWm&(E5qq(p z+(*W2a51K=&;o+Exm7mwQ65z$Hz3QFS%&iRM5YV=F}lF=wM@FG;IX7n%Y}pqy83mi zocWZ=M`oSu6PMXXABo=QYjXDlK-ndSfQ3zSaDR(DK9_VEBhSd)jpD<$d^biEk7lH{ z(}5@NoMiM68?J8qhAgE?D8OveIj_wB+DOtVbFL5$LZr1i|FUyBMdYdAFJ@~Jg&e1K z`D!YIgqr5Y0kS~f)nXEhx4F;4hLJV-WTiE6kJg~p)ptS85#GyA4!h;*^Kb8?nUS2i zcV4Vlss@gbE_-aHzI&*wrSZ({@L$rOs*f*(=MO^+AM0II^mKt`3&|!u@|`k8265RY zWyjIBGuJK!4$v}v)ugY4$(Q-9HSJu+lw-)9LT2(849OBv1r0<+H}QF!eB~mWj0x?5 z86V!Kh*Fu`PSQ#-?7vo;pK6;_$kRpPBM%K$Ceh?+y?^h%toQy zS;=YGUZdSpnM-?tb>OVRQN8^+`}2Zk9uHRebbM#lEf4n%P7%G*Q;ohgi?|$3@q;!< zWUn+mg#L}uCx>EsQW6?j3|zjqfcM4bV5*hQH-mPA`MbwdZKujJJp-Qw@$tRaPspp6 zn(lJkWAH!}r)7Nn?ev!w+KXFO*ztGMlC5vQG&|8W9gdt_e7f8`<7%6Sx?Cj2o9(}q zUaW*f*_S^wGFr;hg&wk*x;|;j-BX`cfBpIC=Ee_8(S9b7`k2l?qr_Hg1%bKON3Tfr8P-34zbNm(!am_oUtIgGE}!jx@I`SpqQJ|v z?FskZ*q&*#ZptB&k#F^*r<|US#OXl2yEl#rtR&k~QQ|Q0=!%VNGX}gb75kXW!%4tb z!np~!C@Eh1;FYE5NYN!(#}`$q>`O%|ck6eH7oTSn)Ed39Js2GHgrG_972nz0SxsI{ zN{#t}%LcDI*+G29%L3yWem|Dx!z8$ZpAyq$AO-vF%x3E%k}_K>PEsB41ScVw0l>@kEsk! zhnZJjphFQ5K9p`<$@x&V@!4-l{>_uZg7D?6^+P|1cQ+N@8fg zT@r2EBJjexiaKfiWYk;mGpo3(i6`m+-o%9JXe=x8v5DWdDesuhx9EA*fJAfOL_y;2 zwIWFA5rO5hV}zJT4JDC=4IU?I`um*7umNaeT-(m!jT>CE4vXp3-287r-GVEoavlD< zd;)N$_Hw41$X`G;M49VBg_bkjg*{>`t${~2Oa_3Q?t3gU-M4rKh-FvnL3S78fHx>Q zX>_23WOm@0fQ(IRXGy#Yl?9&^@H&;dH)liuOW(zNjQGp8=}sE1BVRLZX{`5nAnhlAg6WO zML|-O6=q)Nva6{RvRGwhS|8ci&ZQ#Gf4|;3*F?GVm{Ot-@BUDeTQUqjU9YlXz0>I< z%$p@NdkVM#ae#28Vpi4(Vp1qIUtwK}UvTkN7aCM^vi{hX#7{}@qZd_(d@6AtpmIz8 z^0IOMS&V=u(1dZ3?!aVo4?fLVhxgkgFKd>^7VrU@`B_q>^2NxVeV&4S4?JRFRc$d< z4+1aGr00a`Hp{?}<7b6`LG`o>}P+MRCN6fgA)=?iMK)0p&iop)xj>Y5gAgAe}#Nsvl%a`N~wLP zpJep~K-&q6X%(Usf5AvE;}ZL_;Vgdlg0<+LUaD&D7B51fCjHb8MBxh#il7TdDW59h=w)a6{BVL?*O?P#gS&#UX_NC{mQASO3D4uE;l$u|qYkrMf zbDjd>k)=}-%=ie&Uyu&YlI71Qm6eVhsmo}YNr;(#(A!Fpci6XavF7OCQLhALs4RX! z7ptl_DIWNu)X@9JXNlcR;9zJJC&O3wBef16K!j~gxHh~lx#@mKxT6?d=`4X`!2!>9 zsh(M3U4=?qVaU+euY{=0boP%ia_&L(r+xEx)@$k=D715{zMgglz`01BX z1w-xt+)n1<5)pQ%-U(p>0+Wn^s`db`C?~0cIDo0%O`=M}a1ivkLcDgNa`;YJ3KZ@G zVEvO3lbF)yq+Dl->f~F&3ob_*Kz}OqKj$Zwb7oHygI0_L#k`tCeWy^QSVs+t~COPxLrz!x6ng*#%-Og8m!V+5(`#U~^w5Y0X zlFB~>6pIfGD#R+GMXJ9R;cv(D0Mm=D)4ftj7tHgYN`xavFR_iO2bdq+>WeH`(z0?e zyt++tkCKFoNyZU+mc>{xth;fC^y;8z#ih$TA5jG1lcF7bAnl_{<2u03D%!KtG7%NA z%Ipul%b4*Lm*x!l*@-se3PxqJ>WrQ<@Ww*D*hm8QnWZKHXOMamds{JAZjQ zb)?|UXS?_CuS}RcSOuxBr8%t_tv+=umzRsNPU{bCHbw4*2V_zAX;_uj**N!kykz@m zU&zCygbQs=>=M46bk=nuDUl*cHZeaqHIbFBtmk3OoAwax^Qq>e+yshB1E|Bf*Xu?c zJ0L4lud@a!9;k#7G-Of)hk#`9WRrnOmgCr5ea#IY$SVQe(BY+ZolOupeWl zYVV^I4WonZo%Li*w;sb-c=q-@hXdr;B@d=$_0v^`zq;DR)u@qzZvXY%`5py<9}|M# zg-g9Y-e34*o{u2Oo#$4$@qJ=I&GHIMqchXP-COz0%QtY5zLm~MuYR9n-iK0JWr5$H z7vPW1{^#cf@XIf73b^vnQbSpFmo`aFRYg@*O_xmGrKwF;RUs;?YEd)^D(YHff{HTu zqpqT?jMpM*DXD5{@6z1WcCWo3uc@t}q)FCR-*vzF76fi<#}&(uVYJQdS7!;ynklVb zINz|!>_a~nIop3FaO%& zJ>ZFN`?P-#w=7O+M#x&pxM;^Jtfk^aq+3k0qjh}cu%j|b1U{`Hua|q|Swqq(bu6S} zf@P(LHZvE%NqXhZMG5?6=-V}S@7{};!+pNFkz?Q?wh1nCYUrau9(aiP_w=09MxZf6 z&~8%t;m>l)EWPTBV;isFXmoGW_0Mqr3f2vGn3A9g%|@I==BH#U3qN-54|j2sg2Tr>PYH~B z2Hp=GsFcAtZV^yrbY3aaW5yyhP^8WM`>!24FpwV;RN{TA?W;4oNA7qF`>=!R7+1vm!mznLVW?{@#)ishvtcANwEa@VLNO%Gx)$c#9~k8>y{O%>oo4%|SYjgY(U7F}YaCev-y@>Qm!ObBzqzd z^)6*wGp|W6YpPbiLTEIiw?lvkmks68%|b-GrMoA}(<<~4AH4*jD^p3k2TOjg?xW@q zGh^AwZpG*`g~$Ucb)Z58$sE>*AS6P zX$=E7GJT!pgOr;F&2cY&^z-_-16it8XG19J7#{Frq-5h~p6RnY3kOfJcO+YQ>ZjGX zBX7!7O_??tY8;lCoOz}1ebHhw+%;INXM#OjSW+Q$Z=n!hZROw|m*cog5>H|xf7A%u ziN;=zD3FZsQ5}Y?jJTRD+E_N91G)%$kbNT?AvlM4R{L!ULcf&5h46?!WScNMM{HuA z`&CiCC6yL3WU}eHq|j!H3gQYT;g%8OTIQ)dL4|P_N8?k3`vO}d;T>BeO*GMTijE8- z(H>=+oiS~mIK57*J@nYq^FG0COmA>_edX~%ls+)Rye06-b^RmtEH9yHkmB2++w37* z(RGvYhpF@0-t_F4#M1>KVHW-&?>ZivC&D!lZ)_~lPxCSm_ZOI|@big{Cz+^~=5T!8 zg^csZ0!Vc^QywyYf&0RMtr5x6Gxs**{ht!jJQvQ#jRxa~GhK~X2eoYlQd|PmE~una z0QBh9!Z!bRTRlPdOfYDKq!Ppfuzi5;$@@{w*wh_s&D(_G#}!ueqTgX}1-(5_>t)gK z7I7V11acNtW_eOwxagFS$4yL_{P?a+j`97aQn5>paA;o#Ee*0#R5UtWa)0yQwO8oL z_Lf^DyHm$}P5CsZIXu6-!Z_ogpCYJg47xg=Wv_vR36PUI3)l9Dm*Fz=q@`D1?^>_j z2@!=)zmAuwd|<)}y^cgxGxXqf)redY8TYvAThsGT@#l2&y;~{$wVxR<ygJgmRlBj6EzA(12GlG>fXDx>zm&aQpillbQEVf;EQ$6LU5eRc1~@rNa*i zX3fW=mq|TaS^{sz&b|zP+1K|(?f|}%Bou0-WRddI)ZUl-3Oii+vpe;x6EHKvn%32s z*(zc00y^WlnaVi-FHb%|@@mY^?l%)ZcjAHnedx$k{iQ9sT4X7cY1_N8|Z;!PoMQ|B5v>400>w^3rpBnv*TA9MMwNs_v z1sb8UyId4{dl>ncC8pj3`5)gC9g~qZ*Q1_RUIm(`u82Nn9yi?3rg2lHJ&(bcNJxc5 zcK2w;9pP6ID5)5K+k~BjFE+Q*6L0*m59mtBk*;9T@H$P8Fa{exnlFoSHe28Qi zT`?neu5vAP1~WVC{c)&z=P#RasTz}e%+vPhbntebZEn%koM4qyIeb{;2f2rvfTlNl zCikQvygu}Fr0lmj^Q@rq9FS)FSvFpP{>t63-vKdC_t zj1pJ<`q&Ye7Cmoqqy?4mVxd&q zW|qI&v{;*Tuh~HRvUT9sKbA9OddnIa7&}Ki_HA+8>Z*!sUO{t;sH)oT-J_SR%#zx3gp*GEzunhBJ%YPuwvd8t$c8k*RETq2GD;*iYTn#Q`hye;e_d23+YpfvmlaSySas($5W21q3nEP!n2U-OEj)Oq(&7&6 zTBY7pl&)yemF7g%bfbn>j*fC47XEzm>3guR-aPpCP)TQzKD=l@8;_G6?!B17C+I}B z6%k2cGSVdN7-{$cJkmmM_Z2gxD^huQw5zTTRm$Ym3d-X7=i1cF)nve7y^hUjvXpQb z@#C0}WtxwrTm4e~MooWibyE&ux&KAMYpwBM3E^JN&6ek9HFMi&Y@{fy#s}8+#Q;XQ z8{^~Tv)OAhu4Vjw5lV)1v)x6A4*5r~McV#M!po9ICJMWYD#W~2CR~&!++ExmJ^pUV zIvvX&oN_6|{9?_r!xq5Em}Z-wzw_O{5;b*{lq8bRSJx#6AKv@q?cUkZ(SSz@V{h_L zXm>v}KAdz73Libnr(k?eYD=$4YaQi*5n0Y`E4B6N{1}O}p6ZlP86LHO81|2N96vYS zZ32;>b+{knX!o-)_|7Ga5`QdQO_gAi+Zn2QCOD+>uA=YlG;)9QjmHa$Yv2c)*NNM7 zm+8RkdI->YVF*Ld@a!3BCBI^4eQB#)#N)Z?E|3CuzOwgC_Af>^L3Ob$mJxeVY1(|} zEJ(7~UVOXhaCgso7G|&X%7j4NanUoRuXQbcvqm%Ao|Bqn*&YLIQ`+(ft7*_ZTuDcr zdAFG-y4-}E>@6M;TA8YMDmwJNqwKfJ_uj7vgX%{gG$dt@|8<-1pu`Oe3^&uN+r?oRnk_o)u9; z?={a<{Wx=pAAe))e50Wus?U+s-`-@F7gQPHlyxzfh!+_H{k_?*n7_S5Yq|Go>_OC<);?y#CNQhsmm^|$|o84L~?S$tUD|~v85H0NE<~+6WtJt!Q`*9e`n76Dx55VJ}O7cn%M} z!`66PG4IN*kP<8)jRpkDk=7Tz6gk4e^SNaZ#i)eW5h04Wv){irR_LYO={jS)3(S4} z;Ab2BGPiswd9TqgE;Vyst_dgqqFf#+du6q}G|zsMUlle=!mRz7p^&Bk@0OQ4dG6eo z(pp71*y3Vz|BbQsVr=FYsLg9+#H63aTka>uyQcjaIU^-R!CBhD($gAEj!mvmxN{uZ z=jV<*-kv@eA;Ih=Zy%|f-Ue-xy6JV8gr>%RA=>)WFV%ls_#yu4+hxstVvwLX2r8+A z|47uHUEn?CXZhmB(O<vIwe8B%#StTV= ztu99BjjxDd^xfST+Xhxa;C(GhsiFJ!?sb+bUjP0%T*NPa>x=EuXw2f%#ok+Ygf%rE za!%|re&2C(2)nx%SwfUvs2qdny??*h%oDp7;GytET5Wny;aHgB!N_l+i(N1=;p2Jj kKWAR&wTzhTJ9IV2KbU8=_VMYfH&^C1Mqa{rG(hx!0Sw|{82|tP literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/knife_hit2.ogg b/sound/weapons/melee/knife_hit2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e331b0feef27905bf1469d12b4e5067cdd98c4a2 GIT binary patch literal 12556 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 K9%Ui`!v6vL3_wBv literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/knife_pickup2.ogg b/sound/weapons/melee/knife_pickup2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bcaf5c56a0c834a86b7ae338637e3e3814b3775a GIT binary patch literal 21674 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�VO7=?|_n)d#h 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 HPC)+)S@^dK literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/powerfist_hit1.ogg b/sound/weapons/melee/powerfist_hit1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..edde6357f95ec32e08be9c9072793996cf6dca62 GIT binary patch literal 10854 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/powerfist_hit2.ogg b/sound/weapons/melee/powerfist_hit2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cee9d0b9488aae72564e265d5f0f56cf08cf1801 GIT binary patch literal 12523 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 Cnsf&M literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/powerfist_pickup.ogg b/sound/weapons/melee/powerfist_pickup.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8c71c27941326e7b923723aa0fef75bb7869121e GIT binary patch literal 8979 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/punch_1.ogg b/sound/weapons/melee/punch_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c4d7fdf6cff41abad18da2fc0c6ab085c49a9658 GIT binary patch literal 30955 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/melee/punch_2.ogg b/sound/weapons/melee/punch_2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f6f0d1a7da31348a489691fcddb25555aa3c7353 GIT binary patch literal 27177 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