diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index cf5902cb0a..fd1ce21cc4 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1417,3 +1417,10 @@ GLOBAL_PROTECT(valid_HTTPSGet) mob_occupant = brain.brainmob return mob_occupant + +//counts the number of bits in Byond's 16-bit width field +//in constant time and memory! +/proc/BitCount(bitfield) + var/temp = bitfield - ((bitfield>>1)&46811) - ((bitfield>>2)&37449) //0133333 and 0111111 respectively + temp = ((temp + (temp>>3))&29127) % 63 //070707 + return temp diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm index aece468dd6..3e19ec6da3 100644 --- a/code/game/objects/items/devices/PDA/PDA_types.dm +++ b/code/game/objects/items/devices/PDA/PDA_types.dm @@ -22,7 +22,7 @@ icon_state = "NONE" ttone = "data" fon = 0 - detonate = 0 + detonatable = FALSE /obj/item/device/pda/ai/attack_self(mob/user) if ((honkamt > 0) && (prob(60)))//For clown virus. @@ -119,7 +119,7 @@ default_cartridge = /obj/item/weapon/cartridge/captain inserted_item = /obj/item/weapon/pen/fountain/captain icon_state = "pda-captain" - detonate = 0 + detonatable = FALSE /obj/item/device/pda/cargo name = "cargo technician PDA" diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm.rej b/code/game/objects/items/devices/PDA/PDA_types.dm.rej new file mode 100644 index 0000000000..745a8b8e48 --- /dev/null +++ b/code/game/objects/items/devices/PDA/PDA_types.dm.rej @@ -0,0 +1,10 @@ +diff a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm (rejected hunks) +@@ -121,7 +121,7 @@ + default_cartridge = /obj/item/weapon/cartridge/captain + inserted_item = /obj/item/weapon/pen/fountain/captain + icon_state = "pda-captain" +- detonatable = 0 ++ detonatable = FALSE + + /obj/item/device/pda/cargo + name = "cargo technician PDA" diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index 17c66cac10..12adc99d6a 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -21,7 +21,7 @@ name = "\improper Honkworks 5.0 cartridge" icon_state = "cart-clown" desc = "A data cartridge for portable microcomputers. It smells vaguely of banannas" - access_clown = 1 + access = CART_CLOWN /obj/item/weapon/cartridge/virus/clown/send_virus(obj/item/device/pda/target, mob/living/U) if(charges <= 0) @@ -37,7 +37,7 @@ /obj/item/weapon/cartridge/virus/mime name = "\improper Gestur-O 1000 cartridge" icon_state = "cart-mi" - access_mime = 1 + access = CART_MIME /obj/item/weapon/cartridge/virus/mime/send_virus(obj/item/device/pda/target, mob/living/U) if(charges <= 0) @@ -54,7 +54,7 @@ /obj/item/weapon/cartridge/virus/syndicate name = "\improper Detomatix cartridge" icon_state = "cart" - access_remote_door = 1 + access = CART_REMOTE_DOOR remote_door_id = "smindicate" //Make sure this matches the syndicate shuttle's shield/door id!! //don't ask about the name, testing. charges = 4 @@ -66,15 +66,12 @@ charges-- var/difficulty = 0 if(target.cartridge) - difficulty += target.cartridge.access_medical - difficulty += target.cartridge.access_security - difficulty += target.cartridge.access_engine - difficulty += target.cartridge.access_clown - difficulty += target.cartridge.access_janitor - difficulty += target.cartridge.access_manifest * 2 + difficulty += BitCount(target.cartridge.access&(CART_MEDICAL | CART_SECURITY | CART_ENGINE | CART_CLOWN | CART_JANITOR | CART_MANIFEST)) + if(target.cartridge.access & CART_MANIFEST) + difficulty++ //if cartridge has manifest access it has extra snowflake difficulty else difficulty += 2 - if(prob(difficulty * 15) || (target.hidden_uplink)) + if(!target.detonatable || prob(difficulty * 15) || (target.hidden_uplink)) U.show_message("An error flashes on your [src].", 1) else U.show_message("Success!", 1)